@sockethub/server 5.0.0-alpha.4 → 5.0.0-alpha.6

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 (105) hide show
  1. package/README.md +54 -60
  2. package/bin/sockethub +4 -3
  3. package/package.json +42 -54
  4. package/res/socket.io.js +4908 -0
  5. package/res/sockethub-client.js +602 -0
  6. package/res/sockethub-client.min.js +19 -0
  7. package/sockethub.config.example.json +2 -3
  8. package/src/bootstrap/init.d.ts +16 -13
  9. package/src/bootstrap/init.test.ts +211 -0
  10. package/src/bootstrap/init.ts +152 -76
  11. package/src/bootstrap/load-platforms.ts +151 -0
  12. package/src/config.test.ts +27 -22
  13. package/src/config.ts +82 -86
  14. package/src/defaults.json +24 -16
  15. package/src/index.ts +61 -22
  16. package/src/janitor.test.ts +191 -169
  17. package/src/janitor.ts +141 -118
  18. package/src/listener.ts +148 -58
  19. package/src/middleware/create-activity-object.test.ts +28 -8
  20. package/src/middleware/create-activity-object.ts +16 -10
  21. package/src/middleware/expand-activity-stream.test.data.ts +331 -345
  22. package/src/middleware/expand-activity-stream.test.ts +65 -66
  23. package/src/middleware/expand-activity-stream.ts +26 -21
  24. package/src/middleware/store-credentials.test.ts +74 -60
  25. package/src/middleware/store-credentials.ts +14 -8
  26. package/src/middleware/validate.test.data.ts +240 -242
  27. package/src/middleware/validate.test.ts +39 -78
  28. package/src/middleware/validate.ts +62 -36
  29. package/src/middleware.test.ts +168 -138
  30. package/src/middleware.ts +57 -55
  31. package/src/platform-instance.test.ts +508 -214
  32. package/src/platform-instance.ts +324 -231
  33. package/src/platform.test.ts +375 -0
  34. package/src/platform.ts +306 -117
  35. package/src/process-manager.ts +75 -51
  36. package/src/routes.test.ts +43 -89
  37. package/src/routes.ts +40 -78
  38. package/src/sentry.test.ts +106 -0
  39. package/src/sentry.ts +19 -0
  40. package/src/sockethub.ts +190 -129
  41. package/src/util.ts +5 -0
  42. package/coverage/tmp/coverage-39338-1663949520416-0.json +0 -1
  43. package/dist/bootstrap/init.d.ts +0 -18
  44. package/dist/bootstrap/init.js +0 -64
  45. package/dist/bootstrap/init.js.map +0 -1
  46. package/dist/bootstrap/platforms.js +0 -75
  47. package/dist/config.d.ts +0 -12
  48. package/dist/config.js +0 -107
  49. package/dist/config.js.map +0 -1
  50. package/dist/defaults.json +0 -28
  51. package/dist/index.d.ts +0 -1
  52. package/dist/index.js +0 -29
  53. package/dist/index.js.map +0 -1
  54. package/dist/janitor.d.ts +0 -30
  55. package/dist/janitor.js +0 -120
  56. package/dist/janitor.js.map +0 -1
  57. package/dist/listener.d.ts +0 -31
  58. package/dist/listener.js +0 -94
  59. package/dist/listener.js.map +0 -1
  60. package/dist/middleware/create-activity-object.d.ts +0 -8
  61. package/dist/middleware/create-activity-object.js +0 -19
  62. package/dist/middleware/create-activity-object.js.map +0 -1
  63. package/dist/middleware/expand-activity-stream.d.ts +0 -3
  64. package/dist/middleware/expand-activity-stream.js +0 -36
  65. package/dist/middleware/expand-activity-stream.js.map +0 -1
  66. package/dist/middleware/expand-activity-stream.test.data.d.ts +0 -480
  67. package/dist/middleware/expand-activity-stream.test.data.js +0 -360
  68. package/dist/middleware/expand-activity-stream.test.data.js.map +0 -1
  69. package/dist/middleware/store-credentials.d.ts +0 -3
  70. package/dist/middleware/store-credentials.js +0 -9
  71. package/dist/middleware/store-credentials.js.map +0 -1
  72. package/dist/middleware/validate.d.ts +0 -2
  73. package/dist/middleware/validate.js +0 -56
  74. package/dist/middleware/validate.js.map +0 -1
  75. package/dist/middleware/validate.test.data.d.ts +0 -532
  76. package/dist/middleware/validate.test.data.js +0 -263
  77. package/dist/middleware/validate.test.data.js.map +0 -1
  78. package/dist/middleware.d.ts +0 -21
  79. package/dist/middleware.js +0 -56
  80. package/dist/middleware.js.map +0 -1
  81. package/dist/platform-instance.d.ts +0 -78
  82. package/dist/platform-instance.js +0 -226
  83. package/dist/platform-instance.js.map +0 -1
  84. package/dist/platform.d.ts +0 -6
  85. package/dist/platform.js +0 -176
  86. package/dist/platform.js.map +0 -1
  87. package/dist/process-manager.d.ts +0 -11
  88. package/dist/process-manager.js +0 -82
  89. package/dist/process-manager.js.map +0 -1
  90. package/dist/routes.d.ts +0 -13
  91. package/dist/routes.js +0 -83
  92. package/dist/routes.js.map +0 -1
  93. package/dist/sockethub.d.ts +0 -18
  94. package/dist/sockethub.js +0 -112
  95. package/dist/sockethub.js.map +0 -1
  96. package/src/bootstrap/platforms.js +0 -75
  97. package/test/init-suite.js +0 -41
  98. package/test/sockethub-suite.js +0 -25
  99. package/tsconfig.json +0 -18
  100. package/views/examples/dummy.ejs +0 -95
  101. package/views/examples/feeds.ejs +0 -90
  102. package/views/examples/irc.ejs +0 -239
  103. package/views/examples/shared.js +0 -72
  104. package/views/examples/xmpp.ejs +0 -217
  105. package/views/index.ejs +0 -17
@@ -1,18 +0,0 @@
1
- export interface IInitObject {
2
- version: string;
3
- platforms: Map<string, {
4
- id: string;
5
- moduleName: string;
6
- config: {
7
- persist?: boolean;
8
- };
9
- schemas: {
10
- credentials?: object;
11
- messages?: object;
12
- };
13
- version: string;
14
- types: Array<string>;
15
- }>;
16
- }
17
- declare const init: IInitObject;
18
- export default init;
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const debug_1 = __importDefault(require("debug"));
7
- const config_1 = __importDefault(require("../config"));
8
- const platforms_1 = __importDefault(require("./platforms"));
9
- const log = (0, debug_1.default)('sockethub:server:bootstrap:init');
10
- log('running init routines');
11
- // eslint-disable-next-line @typescript-eslint/no-var-requires
12
- const packageJSON = require('./../../package.json');
13
- const platforms = (0, platforms_1.default)(config_1.default.get('platforms'));
14
- if (config_1.default.get('info')) {
15
- // eslint-disable-next-line security-node/detect-crlf
16
- console.log('sockethub ' + packageJSON.version);
17
- console.log();
18
- // eslint-disable-next-line security-node/detect-crlf
19
- console.log('websocket: ws://' + config_1.default.get('sockethub:host') + ':'
20
- + config_1.default.get('sockethub:port')
21
- + config_1.default.get('sockethub:path'));
22
- console.log();
23
- // eslint-disable-next-line security-node/detect-crlf
24
- console.log('examples: ' + (config_1.default.get('examples:enabled') ?
25
- 'http://' +
26
- config_1.default.get('public:host') + ':' + config_1.default.get('public:port') + config_1.default.get('public:path')
27
- : 'disabled'));
28
- console.log();
29
- if (config_1.default.get('redis:url')) {
30
- // eslint-disable-next-line security-node/detect-crlf
31
- console.log('redis URL: ' + config_1.default.get('redis:url'));
32
- }
33
- else {
34
- // eslint-disable-next-line security-node/detect-crlf
35
- console.log('redis: ' + config_1.default.get('redis:host') + ':' + config_1.default.get('redis:port'));
36
- }
37
- console.log();
38
- // eslint-disable-next-line security-node/detect-crlf
39
- console.log('platforms: ' + Array.from(platforms.keys()).join(', '));
40
- if (platforms.size > 0) {
41
- for (const platform of platforms.values()) {
42
- console.log();
43
- // eslint-disable-next-line security-node/detect-crlf
44
- console.log(platform.moduleName);
45
- // eslint-disable-next-line security-node/detect-crlf
46
- console.log(' name: ' + platform.id + ' version: ' + platform.version);
47
- // eslint-disable-next-line security-node/detect-crlf
48
- console.log(' AS types: ' + platform.types.join(', '));
49
- }
50
- console.log();
51
- process.exit();
52
- }
53
- else {
54
- console.log();
55
- process.exit();
56
- }
57
- }
58
- log('finished init routines');
59
- const init = {
60
- version: packageJSON.version,
61
- platforms: platforms
62
- };
63
- exports.default = init;
64
- //# sourceMappingURL=/bootstrap/init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"/","sources":["bootstrap/init.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- /**
2
- * bootstrap/platforms.js
3
- *
4
- * A Singleton responsible for finding and loading all valid Sockethub
5
- * platforms, and whitelisting or blacklisting (or neither) based on the
6
- * config.
7
- */
8
- const debug = require('debug'),
9
- schemas = require('@sockethub/schemas').default;
10
-
11
- const log = debug('sockethub:server:bootstrap:platforms');
12
-
13
- log('loading platforms');
14
-
15
- // if the platform schema lists valid types it implements (essentially methods/verbs for
16
- // Sockethub to call) then add it to the supported types list.
17
- function platformListsSupportedTypes(p) {
18
- return ((p.schema.messages.properties) && (p.schema.messages.properties.type) &&
19
- (p.schema.messages.properties.type.enum) &&
20
- (p.schema.messages.properties.type.enum.length > 0));
21
- }
22
-
23
- module.exports = function platformLoad(platformsList, requireModule) {
24
- if (!requireModule) {
25
- requireModule = require;
26
- }
27
- // load platforms from config.platforms
28
- const platforms = new Map();
29
-
30
- if (platformsList.length <= 0) {
31
- throw new Error('No platforms defined. Please check your sockethub.config.json');
32
- }
33
-
34
- for (let moduleName of platformsList) {
35
- log(`loading ${moduleName}`);
36
- // try to load platform
37
- // eslint-disable-next-line security-node/detect-non-literal-require-calls
38
- const P = requireModule(moduleName);
39
- const p = new P();
40
- let types = [];
41
-
42
- const err = schemas.validatePlatformSchema(p.schema);
43
- if (err) {
44
- throw new Error(`${moduleName} ${err}`);
45
- } else if (typeof p.config !== 'object') {
46
- throw new Error(
47
- `${moduleName} platform must have a config property that is an object.`);
48
- } else {
49
- if (p.schema.credentials) {
50
- // register the platforms credentials schema
51
- types.push('credentials');
52
- } else {
53
- p.config.noCredentials = true;
54
- }
55
- }
56
-
57
- if (platformListsSupportedTypes(p)) {
58
- types = [...types, ...p.schema.messages.properties.type.enum];
59
- }
60
-
61
- const platformName = p.schema.name;
62
- platforms.set(platformName, {
63
- id: platformName,
64
- moduleName: moduleName,
65
- config: p.config,
66
- schemas: {
67
- credentials: p.schema.credentials || {},
68
- messages: p.schema.messages || {}
69
- },
70
- version: p.schema.version,
71
- types: types
72
- });
73
- }
74
- return platforms;
75
- };
package/dist/config.d.ts DELETED
@@ -1,12 +0,0 @@
1
- export declare type ActivityStreamConfigOptions = {
2
- warnOnUnknownObjectProperties?: boolean;
3
- failOnUnknownObjectProperties?: boolean;
4
- specialObjs?: object;
5
- customProps?: object;
6
- };
7
- export declare class Config {
8
- constructor();
9
- get: (key: string) => unknown;
10
- }
11
- declare const config: Config;
12
- export default config;
package/dist/config.js DELETED
@@ -1,107 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.Config = void 0;
30
- const nconf_1 = __importDefault(require("nconf"));
31
- const debug_1 = require("debug");
32
- const fs = __importStar(require("fs"));
33
- const log = (0, debug_1.debug)('sockethub:server:bootstrap:config');
34
- class Config {
35
- constructor() {
36
- this.get = (key) => nconf_1.default.get(key);
37
- log('initializing config');
38
- // assign config loading priorities (command-line, environment, cfg, defaults)
39
- nconf_1.default.argv({
40
- 'info': {
41
- type: 'boolean',
42
- describe: 'Display Sockethub runtime information'
43
- },
44
- 'examples': {
45
- type: 'boolean',
46
- describe: 'Enable the examples pages served at [host]:[port]/examples'
47
- },
48
- 'config': {
49
- alias: 'c',
50
- default: '',
51
- describe: 'Path to sockethub.config.json'
52
- },
53
- 'port': {
54
- alias: 'sockethub.port'
55
- },
56
- 'host': {
57
- alias: 'sockethub.host'
58
- },
59
- 'redis_host': {
60
- alias: 'redis.host'
61
- },
62
- 'redis_port': {
63
- alias: 'redis.port'
64
- },
65
- 'redis_url': {
66
- alias: 'redis.url'
67
- }
68
- });
69
- nconf_1.default.env();
70
- // get value of flags defined by any command-line params
71
- const examples = nconf_1.default.get('examples');
72
- // Load the main config
73
- let configFile = nconf_1.default.get('config');
74
- if (configFile) {
75
- if (!fs.existsSync(configFile)) {
76
- throw new Error(`Config file not found: ${configFile}`);
77
- }
78
- }
79
- else {
80
- configFile = __dirname + '/../sockethub.config.json';
81
- }
82
- nconf_1.default.file(configFile);
83
- // only override config file if explicitly mentioned in command-line params
84
- nconf_1.default.set('examples:enabled', (examples ? true : nconf_1.default.get('examples:enabled')));
85
- // load defaults
86
- // eslint-disable-next-line @typescript-eslint/no-var-requires
87
- const defaults = require(__dirname + '/defaults.json');
88
- nconf_1.default.defaults(defaults);
89
- nconf_1.default.required(['platforms']);
90
- function defaultEnvParams(host, port, prop) {
91
- nconf_1.default.set(prop + ':host', host);
92
- nconf_1.default.set(prop + ':port', port);
93
- }
94
- defaultEnvParams(process.env.HOST || nconf_1.default.get('sockethub:host'), process.env.PORT || nconf_1.default.get('sockethub:port'), 'sockethub');
95
- defaultEnvParams(process.env.REDIS_HOST || nconf_1.default.get('redis:host'), process.env.REDIS_PORT || nconf_1.default.get('redis:port'), 'redis');
96
- // allow a redis://user:host:port url, takes precedence
97
- if (process.env.REDIS_URL) {
98
- nconf_1.default.set('redis:url', process.env.REDIS_URL);
99
- nconf_1.default.clear('redis:host');
100
- nconf_1.default.clear('redis:port');
101
- }
102
- }
103
- }
104
- exports.Config = Config;
105
- const config = new Config();
106
- exports.default = config;
107
- //# sourceMappingURL=/config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"/","sources":["config.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- {
2
- "activity-streams": {
3
- "opts": {
4
- "specialObjs": [ "credentials" ]
5
- }
6
- },
7
- "examples": {
8
- "enabled": false,
9
- "secret": 1234567890
10
- },
11
- "sockethub": {
12
- "port": 10550,
13
- "host": "localhost",
14
- "path": "/sockethub"
15
- },
16
- "log_file": "",
17
- "platforms": [],
18
- "public": {
19
- "protocol": "http",
20
- "host": "localhost",
21
- "port": 10550,
22
- "path": "/"
23
- },
24
- "redis": {
25
- "host": "127.0.0.1",
26
- "port": 6379
27
- }
28
- }
package/dist/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
package/dist/index.js DELETED
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const sockethub_1 = __importDefault(require("./sockethub"));
7
- const sockethub = new sockethub_1.default();
8
- module.exports = async () => {
9
- process.once('uncaughtException', function (err) {
10
- console.log('UNCAUGHT EXCEPTION');
11
- // eslint-disable-next-line security-node/detect-crlf
12
- console.log(err.stack);
13
- process.exit(1);
14
- });
15
- process.once('SIGTERM', function () {
16
- console.log('Received TERM signal. Exiting.');
17
- process.exit(0);
18
- });
19
- process.once('SIGINT', function () {
20
- console.log('Received INT signal. Exiting.');
21
- process.exit(0);
22
- });
23
- process.once('exit', async function () {
24
- console.log('destroying all platform instances');
25
- await sockethub.shutdown();
26
- });
27
- sockethub.boot();
28
- };
29
- //# sourceMappingURL=/index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":";;;;;AAAA,4DAAoC;AAEpC,MAAM,SAAS,GAAG,IAAI,mBAAS,EAAE,CAAC;AAElC,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;IAC1B,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG;QAC7C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,qDAAqD;QACrD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;QACtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK;QACxB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC,CAAC"}
package/dist/janitor.d.ts DELETED
@@ -1,30 +0,0 @@
1
- import { SocketInstance } from "./listener";
2
- declare class Janitor {
3
- cycleInterval: number;
4
- cycleCount: number;
5
- reportCount: number;
6
- protected stopTriggered: boolean;
7
- protected sockets: Array<SocketInstance>;
8
- private cycleRunning;
9
- /**
10
- * Every TICK the `Janitor` will compare existing platform instances with `socket.ids`
11
- * (aka. `sessionId`). If all of the `sessionIds` associated with a `platformInstance` have
12
- * no corresponding `socket.id` (from the `http.io` `socket.io` instance), then the
13
- * `platformInstance` will first be flagged, if after the next `cycleInterval` the same
14
- * state is determined, the platform will be destroyed (this allows for page
15
- * refreshes not destroying platform instances)
16
- */
17
- start(): void;
18
- stop(): Promise<void>;
19
- private removeSessionCallbacks;
20
- private removeStaleSocketSessions;
21
- private removeStaleSocketSession;
22
- private removeStalePlatformInstance;
23
- private socketExists;
24
- private delay;
25
- private getSockets;
26
- private performStaleCheck;
27
- private clean;
28
- }
29
- declare const janitor: Janitor;
30
- export default janitor;
package/dist/janitor.js DELETED
@@ -1,120 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const debug_1 = __importDefault(require("debug"));
7
- const platform_instance_1 = require("./platform-instance");
8
- const listener_1 = __importDefault(require("./listener"));
9
- const rmLog = (0, debug_1.default)('sockethub:server:janitor');
10
- class Janitor {
11
- constructor() {
12
- this.cycleInterval = 15000;
13
- this.cycleCount = 0; // a counter for each cycleInterval
14
- this.reportCount = 0; // number of times a report is printed
15
- this.stopTriggered = false;
16
- this.cycleRunning = false;
17
- }
18
- /**
19
- * Every TICK the `Janitor` will compare existing platform instances with `socket.ids`
20
- * (aka. `sessionId`). If all of the `sessionIds` associated with a `platformInstance` have
21
- * no corresponding `socket.id` (from the `http.io` `socket.io` instance), then the
22
- * `platformInstance` will first be flagged, if after the next `cycleInterval` the same
23
- * state is determined, the platform will be destroyed (this allows for page
24
- * refreshes not destroying platform instances)
25
- */
26
- start() {
27
- rmLog('initializing');
28
- this.clean().then(() => {
29
- rmLog('cleaning cycle started');
30
- });
31
- }
32
- async stop() {
33
- this.stopTriggered = true;
34
- rmLog('stopping, terminating all sessions');
35
- for (const platformInstance of platform_instance_1.platformInstances.values()) {
36
- this.removeStaleSocketSessions(platformInstance);
37
- await this.removeStalePlatformInstance(platformInstance);
38
- await platformInstance.shutdown();
39
- }
40
- }
41
- removeSessionCallbacks(platformInstance, sessionId) {
42
- for (const key in platformInstance.sessionCallbacks) {
43
- platformInstance.process.removeListener(key, platformInstance.sessionCallbacks[key].get(sessionId));
44
- platformInstance.sessionCallbacks[key].delete(sessionId);
45
- }
46
- }
47
- removeStaleSocketSessions(platformInstance) {
48
- for (const sessionId of platformInstance.sessions.values()) {
49
- if ((this.stopTriggered) || (!this.socketExists(sessionId))) {
50
- this.removeStaleSocketSession(platformInstance, sessionId);
51
- }
52
- }
53
- }
54
- removeStaleSocketSession(platformInstance, sessionId) {
55
- rmLog(`removing ${!this.stopTriggered ? 'stale ' : ''}socket session reference ${sessionId}
56
- in platform instance ${platformInstance.id}`);
57
- platformInstance.sessions.delete(sessionId);
58
- this.removeSessionCallbacks(platformInstance, sessionId);
59
- }
60
- async removeStalePlatformInstance(platformInstance) {
61
- if ((platformInstance.flaggedForTermination) || (this.stopTriggered)) {
62
- rmLog(`terminating platform instance ${platformInstance.id}`);
63
- await platformInstance.shutdown(); // terminate
64
- }
65
- else {
66
- rmLog(`flagging for termination platform instance ${platformInstance.id} ` +
67
- `(no registered sessions found)`);
68
- platformInstance.flaggedForTermination = true;
69
- }
70
- }
71
- socketExists(sessionId) {
72
- for (const socket of this.sockets) {
73
- if (socket.id === sessionId) {
74
- return true;
75
- }
76
- }
77
- return false;
78
- }
79
- async delay(ms) {
80
- return await new Promise(resolve => setTimeout(resolve, ms));
81
- }
82
- async getSockets() {
83
- return await listener_1.default.io.fetchSockets();
84
- }
85
- async performStaleCheck(platformInstance) {
86
- this.removeStaleSocketSessions(platformInstance);
87
- // Static platforms are for global use, not tied to a unique to session / eg. credentials)
88
- if (!platformInstance.global) {
89
- if ((!platformInstance.initialized) || (platformInstance.sessions.size === 0)) {
90
- // either the platform failed to initialize, or there are no more sessions linked to it
91
- await this.removeStalePlatformInstance(platformInstance);
92
- }
93
- }
94
- }
95
- async clean() {
96
- if (this.stopTriggered) {
97
- this.cycleRunning = false;
98
- return;
99
- }
100
- else if (this.cycleRunning) {
101
- throw new Error('janitor cleanup cycle called while already running');
102
- }
103
- this.cycleRunning = true;
104
- this.cycleCount++;
105
- this.sockets = await this.getSockets();
106
- if (!(this.cycleCount % 4)) {
107
- this.reportCount++;
108
- rmLog(`socket sessions: ${this.sockets.length} platform instances: ${platform_instance_1.platformInstances.size}`);
109
- }
110
- for (const platformInstance of platform_instance_1.platformInstances.values()) {
111
- await this.performStaleCheck(platformInstance);
112
- }
113
- this.cycleRunning = false;
114
- await this.delay(this.cycleInterval);
115
- return this.clean();
116
- }
117
- }
118
- const janitor = new Janitor();
119
- exports.default = janitor;
120
- //# sourceMappingURL=/janitor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"janitor.js","sourceRoot":"/","sources":["janitor.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,2DAA0E;AAC1E,0DAAsD;AAEtD,MAAM,KAAK,GAAG,IAAA,eAAK,EAAC,0BAA0B,CAAC,CAAC;AAEhD,MAAM,OAAO;IAAb;QACE,kBAAa,GAAG,KAAK,CAAC;QACtB,eAAU,GAAG,CAAC,CAAC,CAAG,mCAAmC;QACrD,gBAAW,GAAG,CAAC,CAAC,CAAE,sCAAsC;QAC9C,kBAAa,GAAG,KAAK,CAAC;QAExB,iBAAY,GAAG,KAAK,CAAC;IAqH/B,CAAC;IAnHC;;;;;;;OAOG;IACH,KAAK;QACH,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC5C,KAAK,MAAM,gBAAgB,IAAI,qCAAiB,CAAC,MAAM,EAAE,EAAE;YACzD,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;YACzD,MAAM,gBAAgB,CAAC,QAAQ,EAAE,CAAC;SACnC;IACH,CAAC;IAEO,sBAAsB,CAAC,gBAAkC,EAAE,SAAiB;QAClF,KAAK,MAAM,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,EAAE;YACnD,gBAAgB,CAAC,OAAO,CAAC,cAAc,CACrC,GAAG,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9D,gBAAgB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC1D;IACH,CAAC;IAEO,yBAAyB,CAC/B,gBAAkC;QAElC,KAAK,MAAM,SAAS,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE;YAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC3D,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;aAC5D;SACF;IACH,CAAC;IAEO,wBAAwB,CAAC,gBAAkC,EAAE,SAAiB;QACpF,KAAK,CACH,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,4BAA4B,SAAS;iCACzD,gBAAgB,CAAC,EAAE,EAAE,CACjD,CAAC;QACF,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEO,KAAK,CAAC,2BAA2B,CAAC,gBAAkC;QAC1E,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YACpE,KAAK,CAAC,iCAAiC,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,MAAM,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY;SAChD;aAAM;YACL,KAAK,CAAC,8CAA8C,gBAAgB,CAAC,EAAE,GAAG;gBACxE,gCAAgC,CAAC,CAAC;YACpC,gBAAgB,CAAC,qBAAqB,GAAG,IAAI,CAAC;SAC/C;IACH,CAAC;IAEO,YAAY,CAAC,SAAiB;QACpC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE;gBAC3B,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,EAAE;QACpB,OAAO,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,OAAO,MAAM,kBAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,gBAAkC;QAChE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;QACjD,0FAA0F;QAC1F,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;gBAC7E,uFAAuF;gBACvF,MAAM,IAAI,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;aAC1D;SACF;IACH,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,OAAO;SACR;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;SACvE;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAEvC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,KAAK,CACH,oBAAoB,IAAI,CAAC,OAAO,CAAC,MAAM,wBAAwB,qCAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5F;QAED,KAAK,MAAM,gBAAgB,IAAI,qCAAiB,CAAC,MAAM,EAAE,EAAE;YACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,kBAAe,OAAO,CAAC"}
@@ -1,31 +0,0 @@
1
- /// <reference types="node" />
2
- import * as HTTP from 'http';
3
- import { Server } from 'socket.io';
4
- /**
5
- * Handles the initialization and access of Sockethub resources.
6
- *
7
- * - HTTP Server
8
- * - Express (serves resources and example routes)
9
- * - Socket.io (bidirectional websocket communication)
10
- */
11
- declare class Listener {
12
- io: Server;
13
- http: HTTP.Server;
14
- /**
15
- * Starts the services needed for Sockethub to operate. After this command completes,
16
- * the `http` and `io` class properties will be set.
17
- */
18
- start(): void;
19
- private startHttp;
20
- private static initExpress;
21
- }
22
- declare const listener: Listener;
23
- interface EmitFunction {
24
- (type: string, data: unknown): any;
25
- }
26
- export interface SocketInstance {
27
- id: string;
28
- emit: EmitFunction;
29
- }
30
- export declare function getSocket(sessionId: string): Promise<SocketInstance>;
31
- export default listener;
package/dist/listener.js DELETED
@@ -1,94 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getSocket = void 0;
30
- const debug_1 = __importDefault(require("debug"));
31
- const body_parser_1 = __importDefault(require("body-parser"));
32
- const express_1 = __importDefault(require("express"));
33
- const HTTP = __importStar(require("http"));
34
- const socket_io_1 = require("socket.io");
35
- const config_1 = __importDefault(require("./config"));
36
- const routes_1 = __importDefault(require("./routes"));
37
- const log = (0, debug_1.default)('sockethub:server:listener');
38
- /**
39
- * Handles the initialization and access of Sockethub resources.
40
- *
41
- * - HTTP Server
42
- * - Express (serves resources and example routes)
43
- * - Socket.io (bidirectional websocket communication)
44
- */
45
- class Listener {
46
- /**
47
- * Starts the services needed for Sockethub to operate. After this command completes,
48
- * the `http` and `io` class properties will be set.
49
- */
50
- start() {
51
- // initialize express and socket.io objects
52
- const app = Listener.initExpress();
53
- this.http = new HTTP.Server(app);
54
- this.io = new socket_io_1.Server(this.http, {
55
- path: config_1.default.get('sockethub:path'),
56
- cors: {
57
- origin: "*",
58
- methods: ["GET", "POST"]
59
- }
60
- });
61
- routes_1.default.setup(app);
62
- this.startHttp();
63
- }
64
- startHttp() {
65
- this.http.listen(config_1.default.get('sockethub:port'), config_1.default.get('sockethub:host'), () => {
66
- log(`sockethub listening on ` +
67
- `${config_1.default.get('sockethub:host')}:${config_1.default.get('sockethub:port')}`);
68
- });
69
- }
70
- static initExpress() {
71
- const app = (0, express_1.default)();
72
- // templating engines
73
- app.set('view engine', 'ejs');
74
- // use bodyParser
75
- app.use(body_parser_1.default.urlencoded({ extended: true }));
76
- app.use(body_parser_1.default.json());
77
- return app;
78
- }
79
- }
80
- const listener = new Listener();
81
- async function getSocket(sessionId) {
82
- const sockets = await listener.io.fetchSockets();
83
- return new Promise((resolve, reject) => {
84
- for (const socket of sockets) {
85
- if (sessionId === socket.id) {
86
- return resolve(socket);
87
- }
88
- }
89
- return reject(`unable to find socket for sessionId ${sessionId}`);
90
- });
91
- }
92
- exports.getSocket = getSocket;
93
- exports.default = listener;
94
- //# sourceMappingURL=/listener.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"listener.js","sourceRoot":"/","sources":["listener.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AACrC,sDAA8B;AAC9B,2CAA6B;AAC7B,yCAAmC;AAEnC,sDAA8B;AAC9B,sDAA8B;AAE9B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,2BAA2B,CAAC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,QAAQ;IAIZ;;;OAGG;IACH,KAAK;QACH,2CAA2C;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,kBAAM,CAAC,IAAI,CAAC,IAAI,EAAE;YAC9B,IAAI,EAAE,gBAAM,CAAC,GAAG,CAAC,gBAAgB,CAAW;YAC5C,IAAI,EAAE;gBACJ,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,CAAE,KAAK,EAAE,MAAM,CAAE;aAC3B;SACF,CAAC,CAAC;QACH,gBAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEO,SAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,gBAAM,CAAC,GAAG,CAAC,gBAAgB,CAAW,EAAE,GAAG,EAAE;YAC1F,GAAG,CAAC,yBAAyB;gBAC3B,GAAG,gBAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,gBAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,WAAW;QACxB,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACtB,qBAAqB;QACrB,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC9B,iBAAiB;QACjB,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;QACjD,GAAG,CAAC,GAAG,CAAC,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAWzB,KAAK,UAAU,SAAS,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAA0B,MAAM,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;IACxE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,IAAI,SAAS,KAAK,MAAM,CAAC,EAAE,EAAE;gBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;aACxB;SACF;QACD,OAAO,MAAM,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,8BAUC;AAED,kBAAe,QAAQ,CAAC"}
@@ -1,8 +0,0 @@
1
- import { IActivityStream } from "@sockethub/schemas";
2
- import { MiddlewareChainInterface } from "../middleware";
3
- /**
4
- * A simple middleware wrapper for the activity-streams Object.create method.
5
- * @param obj
6
- * @param done
7
- */
8
- export default function createActivityObject(obj: IActivityStream, done: MiddlewareChainInterface): void;