sockethub 4.1.0 → 5.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/bin/sockethub +23 -20
  2. package/coverage/tmp/coverage-15699-1646422276150-0.json +1 -0
  3. package/dist/bootstrap/init.js +1 -1
  4. package/dist/bootstrap/init.js.map +1 -1
  5. package/dist/bootstrap/platforms.js +14 -18
  6. package/dist/janitor.js +11 -5
  7. package/dist/janitor.js.map +1 -1
  8. package/dist/middleware/create-activity-object.js.map +1 -1
  9. package/dist/middleware/expand-activity-stream.js +33 -0
  10. package/dist/middleware/expand-activity-stream.js.map +1 -0
  11. package/dist/middleware/expand-activity-stream.test.data.js +360 -0
  12. package/dist/middleware/expand-activity-stream.test.data.js.map +1 -0
  13. package/dist/middleware/store-credentials.js +1 -1
  14. package/dist/middleware/store-credentials.js.map +1 -1
  15. package/dist/middleware/validate.js +30 -104
  16. package/dist/middleware/validate.js.map +1 -1
  17. package/dist/middleware/validate.test.data.js +151 -111
  18. package/dist/middleware/validate.test.data.js.map +1 -1
  19. package/dist/middleware.js +47 -77
  20. package/dist/middleware.js.map +1 -1
  21. package/dist/platform-instance.js +47 -54
  22. package/dist/platform-instance.js.map +1 -1
  23. package/dist/platform.js +29 -10
  24. package/dist/platform.js.map +1 -1
  25. package/dist/process-manager.js +5 -2
  26. package/dist/process-manager.js.map +1 -1
  27. package/dist/routes.js +3 -5
  28. package/dist/routes.js.map +1 -1
  29. package/dist/sockethub-client.js +2604 -0
  30. package/dist/sockethub-client.js.map +1 -0
  31. package/dist/sockethub-client.min.js +2 -0
  32. package/dist/sockethub-client.min.js.LICENSE.txt +24 -0
  33. package/dist/sockethub.js +67 -36
  34. package/dist/sockethub.js.map +1 -1
  35. package/package.json +40 -36
  36. package/src/bootstrap/init.ts +6 -2
  37. package/src/bootstrap/platforms.js +14 -18
  38. package/src/crypto.ts +3 -3
  39. package/src/janitor.ts +18 -10
  40. package/src/middleware/create-activity-object.ts +1 -2
  41. package/src/middleware/expand-activity-stream.test.data.ts +365 -0
  42. package/src/middleware/expand-activity-stream.test.ts +78 -0
  43. package/src/middleware/expand-activity-stream.ts +27 -0
  44. package/src/middleware/store-credentials.test.ts +12 -12
  45. package/src/middleware/store-credentials.ts +4 -4
  46. package/src/middleware/validate.test.data.ts +154 -120
  47. package/src/middleware/validate.test.ts +7 -10
  48. package/src/middleware/validate.ts +30 -123
  49. package/src/middleware.test.ts +59 -26
  50. package/src/middleware.ts +44 -76
  51. package/src/platform-instance.test.ts +8 -10
  52. package/src/platform-instance.ts +58 -57
  53. package/src/platform.ts +30 -14
  54. package/src/process-manager.ts +7 -4
  55. package/src/routes.ts +3 -6
  56. package/src/serve.ts +1 -1
  57. package/src/sockethub-client.test.ts +235 -0
  58. package/src/sockethub-client.ts +164 -0
  59. package/src/sockethub.ts +75 -68
  60. package/views/examples/dummy.ejs +6 -6
  61. package/views/examples/feeds.ejs +8 -8
  62. package/views/examples/irc.ejs +64 -58
  63. package/views/examples/shared.js +31 -29
  64. package/views/examples/xmpp.ejs +48 -57
  65. package/webpack.minified.config.js +14 -0
  66. package/webpack.normal.config.js +14 -0
  67. package/coverage/tmp/coverage-24546-1630615250805-0.json +0 -1
  68. package/dist/client/sockethub-client.js +0 -171
  69. package/dist/client/sockethub-client.js.map +0 -1
  70. package/src/client/sockethub-client.js +0 -178
  71. package/test/middleware-suite.js +0 -101
@@ -1,171 +0,0 @@
1
- (function (global, factory) {
2
- if (typeof module === 'object' && typeof module.exports === 'object') {
3
- var ASFactory = require('activity-streams');
4
- module.exports = (global.document) ? factory(global, ASFactory) : factory({}, ASFactory);
5
- }
6
- else {
7
- // @ts-ignore
8
- if (!global.ASFactory) {
9
- throw new Error('sockethub-client.js depends on the activity-streams module.');
10
- }
11
- // @ts-ignore
12
- factory(global, global.ASFactory);
13
- }
14
- }((typeof window !== 'undefined') ? window : this, function (scope, ASFactory) {
15
- function SockethubClient(socket) {
16
- var _this = this;
17
- this.socket = socket;
18
- this.ActivityStreams = ASFactory({ specialObjs: ['credentials'] });
19
- this.online = false;
20
- this.debug = false;
21
- this.__registerSocketIOHandlers();
22
- this.ActivityStreams.on('activity-object-create', function (obj) {
23
- socket.emit('activity-object', obj);
24
- });
25
- socket.on('activity-object', function (obj) {
26
- _this.ActivityStreams.Object.create(obj);
27
- });
28
- }
29
- SockethubClient.prototype.log = function (msg, obj) {
30
- if (this.debug) {
31
- console.log(msg, obj);
32
- }
33
- };
34
- SockethubClient.prototype.__handlers = {
35
- // wrapping the `on` method in order to automatically unpack Activity Streams objects
36
- // that come in on the 'messages' channel, so that app developers don't need to.
37
- message: [],
38
- completed: [],
39
- failed: [],
40
- reconnecting: [],
41
- reconnect_failed: [],
42
- connect: [],
43
- reconnect: [],
44
- disconnect: []
45
- };
46
- SockethubClient.prototype.__registerSocketIOHandlers = function () {
47
- var _this = this;
48
- var storedCredentials = new Map(), storedActivityObjects = new Map(), storedConnects = new Map(), storedJoins = new Map();
49
- // middleware for events which don't deal in AS objects
50
- var callHandler = function (event) {
51
- return function (obj) {
52
- if (event === 'reconnect') {
53
- _this.online = true;
54
- _this.__replay('activity-object', storedActivityObjects);
55
- _this.__replay('credentials', storedCredentials);
56
- _this.__replay('message', storedConnects);
57
- _this.__replay('message', storedJoins);
58
- }
59
- else if (event === 'connect') {
60
- _this.online = true;
61
- }
62
- else if (event === 'disconnect') {
63
- _this.online = false;
64
- }
65
- for (var _i = 0, _a = _this.__handlers[event]; _i < _a.length; _i++) {
66
- var cb = _a[_i];
67
- cb(obj);
68
- }
69
- };
70
- };
71
- // register for events that give us information on connection status
72
- this.socket.on('reconnecting', callHandler('reconnecting'));
73
- this.socket.on('reconnect_failed', callHandler('reconnect_failed'));
74
- this.socket.on('connect', callHandler('connect'));
75
- this.socket.on('reconnect', callHandler('reconnect'));
76
- this.socket.on('disconnect', callHandler('disconnect'));
77
- // do our middle-ware stuff then call the stored handler
78
- this.socket.on('message', this.__unpackAndCallHandler('message'));
79
- this.socket.on('completed', this.__unpackAndCallHandler('completed'));
80
- this.socket.on('failed', this.__unpackAndCallHandler('failed'));
81
- // we over-ride socketIO's emit method in order to catch credentials, activity-objects,
82
- // and joins, and store them for replay if we connect.
83
- // joins are only stored until confirmation is received that it was sent, then we remove it
84
- // from the map.
85
- this.socket._emit = this.socket.emit;
86
- this.socket.emit = function (channel, content) {
87
- if (typeof channel !== 'string') {
88
- throw new Error('emit function requires a channel name [string] to be specified as the'
89
- + ' first parameter.');
90
- }
91
- switch (channel) {
92
- case 'credentials':
93
- if ((content.object) && (content.object['@type'] === 'credentials')) {
94
- storedCredentials.set(content.actor['@id'] || content.actor, content);
95
- }
96
- break;
97
- case 'activity-object':
98
- if (content['@id']) {
99
- storedActivityObjects.set(content['@id'], content);
100
- }
101
- break;
102
- case 'message':
103
- if (_this.online) {
104
- // either store or delete the specified content onto the storedJoins map,
105
- // for reply once we're back online.
106
- if (content['@type'] === 'join') {
107
- storedJoins['set'](_this.__getKey(content), content);
108
- }
109
- else if (content['@type'] === 'leave') {
110
- storedJoins['delete'](_this.__getKey(content), content);
111
- }
112
- if (content['@type'] === 'connect') {
113
- storedConnects['set'](_this.__getKey(content), content);
114
- }
115
- else if (content['@type'] === 'disconnect') {
116
- storedConnects['delete'](_this.__getKey(content), content);
117
- }
118
- }
119
- else {
120
- // reject message if we're not online
121
- _this.socket._emit('failed', content);
122
- }
123
- break;
124
- }
125
- _this.socket._emit(channel, content);
126
- };
127
- this.socket._on = this.socket.on;
128
- this.socket.on = function (event, cb) {
129
- if (Object.keys(_this.__handlers).includes(event)) {
130
- // store the desired message channel callback, because we use our own first
131
- _this.__handlers[event].push(cb);
132
- }
133
- else {
134
- // pass on any other handlers
135
- _this.socket._on(event, cb);
136
- }
137
- };
138
- };
139
- SockethubClient.prototype.__replay = function (name, asMap) {
140
- var _this = this;
141
- asMap.forEach(function (obj) {
142
- _this.log("replaying " + name, obj);
143
- _this.socket._emit(name, obj);
144
- });
145
- };
146
- // use as a middleware to receive incoming Sockethub messages and unpack them
147
- // using the ActivityStreams library before passing them along to the app.
148
- SockethubClient.prototype.__unpackAndCallHandler = function (event) {
149
- var _this = this;
150
- return function (obj) {
151
- var unpackedObject = _this.ActivityStreams.Stream(obj);
152
- for (var _i = 0, _a = _this.__handlers[event]; _i < _a.length; _i++) {
153
- var cb = _a[_i];
154
- cb(unpackedObject);
155
- }
156
- };
157
- };
158
- SockethubClient.prototype.__getKey = function (content) {
159
- var actor = content.actor['@id'] || content.actor;
160
- var target = content.target ? content.target['@id'] || content.target : '';
161
- return actor + '-' + target;
162
- };
163
- if (typeof define === 'function' && define.amd) {
164
- define([], function () {
165
- return SockethubClient;
166
- });
167
- }
168
- scope.SockethubClient = SockethubClient;
169
- return SockethubClient;
170
- }));
171
- //# sourceMappingURL=sockethub-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sockethub-client.js","sourceRoot":"","sources":["../../src/client/sockethub-client.js"],"names":[],"mappings":"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"}
@@ -1,178 +0,0 @@
1
- (function (global, factory) {
2
-
3
- if ( typeof module === 'object' && typeof module.exports === 'object' ) {
4
- let ASFactory = require('activity-streams');
5
- module.exports = (global.document) ? factory(global, ASFactory) : factory({}, ASFactory);
6
- } else {
7
- // @ts-ignore
8
- if (! global.ASFactory) {
9
- throw new Error('sockethub-client.js depends on the activity-streams module.');
10
- }
11
- // @ts-ignore
12
- factory(global, global.ASFactory);
13
- }
14
-
15
- }((typeof window !== 'undefined') ? window : this, function (scope, ASFactory) {
16
-
17
- function SockethubClient(socket) {
18
- this.socket = socket;
19
- this.ActivityStreams = ASFactory({specialObjs: ['credentials']});
20
- this.online = false;
21
- this.debug = false;
22
-
23
- this.__registerSocketIOHandlers();
24
-
25
- this.ActivityStreams.on('activity-object-create', (obj) => {
26
- socket.emit('activity-object', obj);
27
- });
28
-
29
- socket.on('activity-object', (obj) => {
30
- this.ActivityStreams.Object.create(obj);
31
- });
32
- }
33
-
34
- SockethubClient.prototype.log = function (msg, obj) {
35
- if (this.debug) {
36
- console.log(msg, obj);
37
- }
38
- };
39
-
40
- SockethubClient.prototype.__handlers = {
41
- // wrapping the `on` method in order to automatically unpack Activity Streams objects
42
- // that come in on the 'messages' channel, so that app developers don't need to.
43
- message: [],
44
- completed: [],
45
- failed: [],
46
- reconnecting: [],
47
- reconnect_failed: [],
48
- connect: [],
49
- reconnect: [],
50
- disconnect: []
51
- };
52
-
53
- SockethubClient.prototype.__registerSocketIOHandlers = function () {
54
- let storedCredentials = new Map(),
55
- storedActivityObjects = new Map(),
56
- storedConnects = new Map(),
57
- storedJoins = new Map();
58
-
59
- // middleware for events which don't deal in AS objects
60
- const callHandler = (event) => {
61
- return (obj) => {
62
- if (event === 'reconnect') {
63
- this.online = true;
64
- this.__replay('activity-object', storedActivityObjects);
65
- this.__replay('credentials', storedCredentials);
66
- this.__replay('message', storedConnects);
67
- this.__replay('message', storedJoins);
68
- } else if (event === 'connect') {
69
- this.online = true;
70
- } else if (event === 'disconnect') {
71
- this.online = false;
72
- }
73
- for (let cb of this.__handlers[event]) {
74
- cb(obj);
75
- }
76
- };
77
- };
78
-
79
- // register for events that give us information on connection status
80
- this.socket.on('reconnecting', callHandler('reconnecting'));
81
- this.socket.on('reconnect_failed', callHandler('reconnect_failed'));
82
- this.socket.on('connect', callHandler('connect'));
83
- this.socket.on('reconnect', callHandler('reconnect'));
84
- this.socket.on('disconnect', callHandler('disconnect'));
85
-
86
- // do our middle-ware stuff then call the stored handler
87
- this.socket.on('message', this.__unpackAndCallHandler('message'));
88
- this.socket.on('completed', this.__unpackAndCallHandler('completed'));
89
- this.socket.on('failed', this.__unpackAndCallHandler('failed'));
90
-
91
- // we over-ride socketIO's emit method in order to catch credentials, activity-objects,
92
- // and joins, and store them for replay if we connect.
93
- // joins are only stored until confirmation is received that it was sent, then we remove it
94
- // from the map.
95
- this.socket._emit = this.socket.emit;
96
- this.socket.emit = (channel, content) => {
97
- if (typeof channel !== 'string') {
98
- throw new Error('emit function requires a channel name [string] to be specified as the'
99
- + ' first parameter.');
100
- }
101
- switch (channel) {
102
- case 'credentials':
103
- if ((content.object) && (content.object['@type'] === 'credentials')) {
104
- storedCredentials.set(content.actor['@id'] || content.actor, content);
105
- }
106
- break;
107
- case 'activity-object':
108
- if (content['@id']) {
109
- storedActivityObjects.set(content['@id'], content);
110
- }
111
- break;
112
- case 'message':
113
- if (this.online) {
114
- // either store or delete the specified content onto the storedJoins map,
115
- // for reply once we're back online.
116
- if (content['@type'] === 'join') {
117
- storedJoins['set'](this.__getKey(content), content);
118
- } else if (content['@type'] === 'leave') {
119
- storedJoins['delete'](this.__getKey(content), content);
120
- } if (content['@type'] === 'connect') {
121
- storedConnects['set'](this.__getKey(content), content);
122
- } else if (content['@type'] === 'disconnect') {
123
- storedConnects['delete'](this.__getKey(content), content);
124
- }
125
- } else {
126
- // reject message if we're not online
127
- this.socket._emit('failed', content);
128
- }
129
- break;
130
- }
131
- this.socket._emit(channel, content);
132
- };
133
-
134
- this.socket._on = this.socket.on;
135
- this.socket.on = (event, cb) => {
136
- if (Object.keys(this.__handlers).includes(event)) {
137
- // store the desired message channel callback, because we use our own first
138
- this.__handlers[event].push(cb);
139
- } else {
140
- // pass on any other handlers
141
- this.socket._on(event, cb);
142
- }
143
- };
144
- };
145
-
146
- SockethubClient.prototype.__replay = function (name, asMap) {
147
- asMap.forEach((obj) => {
148
- this.log(`replaying ${name}`, obj);
149
- this.socket._emit(name, obj);
150
- });
151
- };
152
-
153
- // use as a middleware to receive incoming Sockethub messages and unpack them
154
- // using the ActivityStreams library before passing them along to the app.
155
- SockethubClient.prototype.__unpackAndCallHandler = function (event) {
156
- return (obj) => {
157
- let unpackedObject = this.ActivityStreams.Stream(obj);
158
- for (let cb of this.__handlers[event]) {
159
- cb(unpackedObject);
160
- }
161
- };
162
- };
163
-
164
- SockethubClient.prototype.__getKey = function (content) {
165
- let actor = content.actor['@id'] || content.actor;
166
- let target = content.target ? content.target['@id'] || content.target : '';
167
- return actor + '-' + target;
168
- };
169
-
170
- if ( typeof define === 'function' && define.amd ) {
171
- define([], function () {
172
- return SockethubClient;
173
- });
174
- }
175
-
176
- scope.SockethubClient = SockethubClient;
177
- return SockethubClient;
178
- }));
@@ -1,101 +0,0 @@
1
- if (typeof define !== 'function') {
2
- let define = require('amdefine')(module);
3
- }
4
- define(['require', '../dist/middleware'], function (require, Middleware) {
5
- return [
6
- {
7
- desc: 'src/middleware',
8
- abortOnFail: true,
9
- beforeEach: function (env, test) {
10
- env.middleware = new Middleware.default((...params) => {
11
- this.fail(params);
12
- });
13
- test.done();
14
- },
15
- tests: [
16
- {
17
- desc: 'basic 1 input param',
18
- run: function (env, test) {
19
- test.assertType(env.middleware.chain, 'function');
20
- const m = env.middleware.chain((next, input) => {
21
- next(true, input);
22
- }, (input) => {
23
- test.assert(input, 'alacadabra');
24
- });
25
- m('alacadabra');
26
- }
27
- },
28
-
29
- {
30
- desc: 'basic 1 input param with error',
31
- run: function (env, test) {
32
- const middleware = new Middleware.default((err, input) => {
33
- test.assertAnd(err, 'incorrect input');
34
- test.assert(input, 'foobar');
35
- });
36
- const m = middleware.chain((next, input) => {
37
- next(false, 'incorrect input', input);
38
- }, (input) => {
39
- test.fail('should not reach final function in chain');
40
- });
41
- m('foobar');
42
- }
43
- },
44
-
45
- {
46
- desc: 'basic 1 input param, 5 funcs',
47
- run: function (env, test) {
48
-
49
- const m = env.middleware.chain((next, input) => {
50
- next(true, ++input);
51
- }, (next, input) => {
52
- next(true, ++input);
53
- }, (next, input) => {
54
- next(true, ++input);
55
- }, (next, input) => {
56
- next(true, ++input);
57
- }, (input) => {
58
- test.assert(input, 4);
59
- });
60
- m(0);
61
- }
62
- },
63
-
64
- {
65
- desc: 'basic 2 inputs param, 2 funcs',
66
- run: function (env, test) {
67
- const cb = function () {
68
- test.done();
69
- };
70
- const m = env.middleware.chain((next, input, cb) => {
71
- next(true, ++input, cb);
72
- }, (input, cb) => {
73
- test.assertAnd(input, 1);
74
- cb();
75
- });
76
- m(0, cb);
77
- }
78
- },
79
-
80
- {
81
- desc: 'basic 4 input params, 5 funcs',
82
- run: function (env, test) {
83
-
84
- const m = env.middleware.chain((next, input1, input2, input3, input4) => {
85
- next(true, ++input1, input2, input3, input4);
86
- }, (next, input1, input2, input3, input4) => {
87
- next(true, input1, ++input2, input3, input4);
88
- }, (next, input1, input2, input3, input4) => {
89
- next(true, input1, input2, ++input3, input4);
90
- }, (next, input1, input2, input3, input4) => {
91
- next(true, input1, input2, input3, ++input4);
92
- }, (input1, input2, input3, input4) => {
93
- test.assert([input1, input2, input3, input4], [1, 1, 4, 6]);
94
- });
95
- m(0, 0, 2, 5);
96
- }
97
- }
98
- ]
99
- }
100
- ];
101
- });