Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

stratumn-agent

Package Overview
Dependencies
Maintainers
1
Versions
43
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

stratumn-agent - npm Package Compare versions

Comparing version 0.12.3 to 0.12.4-dev

Dockerfile.development.alpine

38

lib/create.js

@@ -27,5 +27,5 @@ 'use strict';

var _nodeUuid = require('node-uuid');
var _uuid = require('uuid');
var _nodeUuid2 = _interopRequireDefault(_nodeUuid);
var _uuid2 = _interopRequireDefault(_uuid);

@@ -60,3 +60,3 @@ var _stratumnMockAgent = require('stratumn-mock-agent');

* @param {StoreClient} storeClient - the store client
* @param {fossilizerClient} [fossilizerClient] - the fossilizer client
* @param {FossilizerClient} [fossilizerClient] - the fossilizer client
* @param {object} [opts] - options

@@ -66,2 +66,3 @@ * @param {object} [opts.agentUrl] - agent root url

* @param {string} [opts.salt] - a unique salt
* @param {number} [opts.reconnectTimeout=5000] - web socket reconnect timeout in milliseconds
* @returns {Client} a store HTTP client

@@ -90,12 +91,25 @@ */

function saveSegment(segment1) {
return storeClient.saveSegment(segment1).then(fossilizeSegment).then(function (segment2) {
// Call didAppend event if present.
if (_typeof(actions.events) === 'object' && typeof actions.events.didAppend === 'function') {
(0, _stratumnMockAgent.mockAgent)(actions, segment2.link).events.didAppend(segment2);
}
return segment2;
});
return storeClient.saveSegment(segment1).then(fossilizeSegment);
}
// Set up events.
storeClient.on('open', function () {
return console.log('store: web socket open');
});
storeClient.on('close', function () {
return console.log('store: web socket closed');
});
storeClient.on('error', function (err) {
return console.error('store: ' + err.stack);
});
storeClient.on('message', function (msg) {
var name = msg.type;
if (_typeof(actions.events) === 'object' && typeof actions.events[name] === 'function') {
actions.events[name](msg.data);
}
});
// Connect to store web socket.
storeClient.connect(opts.reconnectTimeout || 5000);
return {

@@ -131,3 +145,3 @@ /**

var initialLink = { meta: { mapId: _nodeUuid2.default.v4() } };
var initialLink = { meta: { mapId: _uuid2.default.v4() } };

@@ -134,0 +148,0 @@ return (_mockAgent = (0, _stratumnMockAgent.mockAgent)(actions, initialLink)).init.apply(_mockAgent, args).catch(function (err) {

@@ -7,19 +7,8 @@ 'use strict';

exports.default = memoryStore;
/*
Stratumn Agent Javascript Library
Copyright (C) 2016 Stratumn SAS
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
var _events = require('events');
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
var _events2 = _interopRequireDefault(_events);
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -33,4 +22,10 @@ /**

return {
var emitter = Object.assign(new _events2.default(), {
/**
* Does nothing since memory store doesn't use a web socket.
*/
connect: function connect() {},
/**
* Gets information about the store.

@@ -57,2 +52,7 @@ * @returns {Promise} a promise that resolve with the information

segments[segment.meta.linkHash] = JSON.parse(JSON.stringify(segment));
emitter.emit('message', {
type: 'didSave',
data: JSON.parse(JSON.stringify(segment))
});
emitter.emit.bind(emitter, 'didSave', JSON.parse(JSON.stringify(segment)));
return Promise.resolve(segment);

@@ -199,3 +199,21 @@ },

}
};
}
});
return emitter;
} /*
Stratumn Agent Javascript Library
Copyright (C) 2016 Stratumn SAS
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

@@ -8,2 +8,6 @@ 'use strict';

var _events = require('events');
var _events2 = _interopRequireDefault(_events);
var _superagent = require('superagent');

@@ -13,2 +17,6 @@

var _ws = require('ws');
var _ws2 = _interopRequireDefault(_ws);
var _makeQueryString = require('./makeQueryString');

@@ -26,2 +34,10 @@

* Creates a store HTTP client.
*
* The client is an EventEmitter and emits the following events:
* - 'open': the web socket connection was open
* - 'close': the web socket connection was closed
* - 'error': a web socket error occured
* - 'message': any message from web socket
* - 'didSave': a segment was saved
*
* @param {string} url - the base URL of the store

@@ -31,3 +47,32 @@ * @returns {Client} a store HTTP client

function storeHttpClient(url) {
return {
// Web socket URL.
var wsUrl = url.replace(/^http/, 'ws') + '/websocket';
// Web socket instance.
var ws = null;
// Use event emitter instance as base object.
var emitter = new _events2.default();
function _connect(reconnectTimeout) {
ws = new _ws2.default(wsUrl);
ws.on('open', emitter.emit.bind(emitter, 'open'));
ws.on('close', function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
ws.removeAllListeners();
emitter.emit.apply(emitter, ['close'].concat(args));
setTimeout(_connect.bind(null, reconnectTimeout), reconnectTimeout);
});
ws.on('error', emitter.emit.bind(emitter, 'error'));
ws.on('message', function (msg) {
// Emit both event for message and event for message type.
emitter.emit('message', msg);
emitter.emit(msg.type, msg.data);
});
}
return Object.assign(emitter, {
/**

@@ -47,2 +92,14 @@ * Gets information about the store.

/**
* Connects to the web socket and starts emitting events.
* @param {number} reconnectTimeout - time to wait to reconnect in milliseconds
*/
connect: function connect(reconnectTimeout) {
if (ws) {
return;
}
_connect(reconnectTimeout);
},
/**
* Creates or updates a segment.

@@ -122,3 +179,3 @@ * @param {object} segment - the segment

}
};
});
} /*

@@ -125,0 +182,0 @@ Stratumn Agent Javascript Library

{
"name": "stratumn-agent",
"version": "0.12.3",
"version": "0.12.4-dev",
"description": "",

@@ -38,6 +38,7 @@ "main": "lib/index.js",

"express": "^4.14.0",
"node-uuid": "^1.4.7",
"request": "^2.73.0",
"stratumn-mock-agent": "^1.1.0",
"superagent": "^2.1.0"
"superagent": "^2.1.0",
"uuid": "^3.0.0",
"ws": "^2.0.0"
},

@@ -44,0 +45,0 @@ "devDependencies": {

@@ -19,3 +19,3 @@ /*

import uuid from 'node-uuid';
import uuid from 'uuid';
import { mockAgent } from 'stratumn-mock-agent';

@@ -35,3 +35,3 @@ import getActionsInfo from './getActionsInfo';

* @param {StoreClient} storeClient - the store client
* @param {fossilizerClient} [fossilizerClient] - the fossilizer client
* @param {FossilizerClient} [fossilizerClient] - the fossilizer client
* @param {object} [opts] - options

@@ -41,2 +41,3 @@ * @param {object} [opts.agentUrl] - agent root url

* @param {string} [opts.salt] - a unique salt
* @param {number} [opts.reconnectTimeout=5000] - web socket reconnect timeout in milliseconds
* @returns {Client} a store HTTP client

@@ -65,14 +66,19 @@ */

.saveSegment(segment1)
.then(fossilizeSegment)
.then(segment2 => {
// Call didAppend event if present.
if (typeof actions.events === 'object' &&
typeof actions.events.didAppend === 'function') {
mockAgent(actions, segment2.link).events.didAppend(segment2);
}
return segment2;
});
.then(fossilizeSegment);
}
// Set up events.
storeClient.on('open', () => console.log('store: web socket open'));
storeClient.on('close', () => console.log('store: web socket closed'));
storeClient.on('error', err => console.error(`store: ${err.stack}`));
storeClient.on('message', msg => {
const name = msg.type;
if (typeof actions.events === 'object' && typeof actions.events[name] === 'function') {
actions.events[name](msg.data);
}
});
// Connect to store web socket.
storeClient.connect(opts.reconnectTimeout || 5000);
return {

@@ -79,0 +85,0 @@ /**

@@ -19,2 +19,4 @@ /*

import EventEmitter from 'events';
/**

@@ -27,4 +29,10 @@ * Creates a memory store, for testing only.

return {
const emitter = Object.assign(new EventEmitter(), {
/**
* Does nothing since memory store doesn't use a web socket.
*/
connect() {
},
/**
* Gets information about the store.

@@ -50,2 +58,7 @@ * @returns {Promise} a promise that resolve with the information

segments[segment.meta.linkHash] = JSON.parse(JSON.stringify(segment));
emitter.emit('message', {
type: 'didSave',
data: JSON.parse(JSON.stringify(segment))
});
emitter.emit.bind(emitter, 'didSave', JSON.parse(JSON.stringify(segment)));
return Promise.resolve(segment);

@@ -184,3 +197,5 @@ },

}
};
});
return emitter;
}

@@ -19,3 +19,5 @@ /*

import EventEmitter from 'events';
import request from 'superagent';
import WebSocket from 'ws';
import makeQueryString from './makeQueryString';

@@ -26,2 +28,10 @@ import handleResponse from './handleResponse';

* Creates a store HTTP client.
*
* The client is an EventEmitter and emits the following events:
* - 'open': the web socket connection was open
* - 'close': the web socket connection was closed
* - 'error': a web socket error occured
* - 'message': any message from web socket
* - 'didSave': a segment was saved
*
* @param {string} url - the base URL of the store

@@ -31,3 +41,28 @@ * @returns {Client} a store HTTP client

export default function storeHttpClient(url) {
return {
// Web socket URL.
const wsUrl = `${url.replace(/^http/, 'ws')}/websocket`;
// Web socket instance.
let ws = null;
// Use event emitter instance as base object.
const emitter = new EventEmitter();
function connect(reconnectTimeout) {
ws = new WebSocket(wsUrl);
ws.on('open', emitter.emit.bind(emitter, 'open'));
ws.on('close', (...args) => {
ws.removeAllListeners();
emitter.emit('close', ...args);
setTimeout(connect.bind(null, reconnectTimeout), reconnectTimeout);
});
ws.on('error', emitter.emit.bind(emitter, 'error'));
ws.on('message', msg => {
// Emit both event for message and event for message type.
emitter.emit('message', msg);
emitter.emit(msg.type, msg.data);
});
}
return Object.assign(emitter, {
/**

@@ -46,2 +81,13 @@ * Gets information about the store.

/**
* Connects to the web socket and starts emitting events.
* @param {number} reconnectTimeout - time to wait to reconnect in milliseconds
*/
connect(reconnectTimeout) {
if (ws) {
return;
}
connect(reconnectTimeout);
},
/**
* Creates or updates a segment.

@@ -118,3 +164,3 @@ * @param {object} segment - the segment

}
};
});
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc