@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.
- package/README.md +54 -60
- package/bin/sockethub +4 -3
- package/package.json +42 -54
- package/res/socket.io.js +4908 -0
- package/res/sockethub-client.js +602 -0
- package/res/sockethub-client.min.js +19 -0
- package/sockethub.config.example.json +2 -3
- package/src/bootstrap/init.d.ts +16 -13
- package/src/bootstrap/init.test.ts +211 -0
- package/src/bootstrap/init.ts +152 -76
- package/src/bootstrap/load-platforms.ts +151 -0
- package/src/config.test.ts +27 -22
- package/src/config.ts +82 -86
- package/src/defaults.json +24 -16
- package/src/index.ts +61 -22
- package/src/janitor.test.ts +191 -169
- package/src/janitor.ts +141 -118
- package/src/listener.ts +148 -58
- package/src/middleware/create-activity-object.test.ts +28 -8
- package/src/middleware/create-activity-object.ts +16 -10
- package/src/middleware/expand-activity-stream.test.data.ts +331 -345
- package/src/middleware/expand-activity-stream.test.ts +65 -66
- package/src/middleware/expand-activity-stream.ts +26 -21
- package/src/middleware/store-credentials.test.ts +74 -60
- package/src/middleware/store-credentials.ts +14 -8
- package/src/middleware/validate.test.data.ts +240 -242
- package/src/middleware/validate.test.ts +39 -78
- package/src/middleware/validate.ts +62 -36
- package/src/middleware.test.ts +168 -138
- package/src/middleware.ts +57 -55
- package/src/platform-instance.test.ts +508 -214
- package/src/platform-instance.ts +324 -231
- package/src/platform.test.ts +375 -0
- package/src/platform.ts +306 -117
- package/src/process-manager.ts +75 -51
- package/src/routes.test.ts +43 -89
- package/src/routes.ts +40 -78
- package/src/sentry.test.ts +106 -0
- package/src/sentry.ts +19 -0
- package/src/sockethub.ts +190 -129
- package/src/util.ts +5 -0
- package/coverage/tmp/coverage-39338-1663949520416-0.json +0 -1
- package/dist/bootstrap/init.d.ts +0 -18
- package/dist/bootstrap/init.js +0 -64
- package/dist/bootstrap/init.js.map +0 -1
- package/dist/bootstrap/platforms.js +0 -75
- package/dist/config.d.ts +0 -12
- package/dist/config.js +0 -107
- package/dist/config.js.map +0 -1
- package/dist/defaults.json +0 -28
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -29
- package/dist/index.js.map +0 -1
- package/dist/janitor.d.ts +0 -30
- package/dist/janitor.js +0 -120
- package/dist/janitor.js.map +0 -1
- package/dist/listener.d.ts +0 -31
- package/dist/listener.js +0 -94
- package/dist/listener.js.map +0 -1
- package/dist/middleware/create-activity-object.d.ts +0 -8
- package/dist/middleware/create-activity-object.js +0 -19
- package/dist/middleware/create-activity-object.js.map +0 -1
- package/dist/middleware/expand-activity-stream.d.ts +0 -3
- package/dist/middleware/expand-activity-stream.js +0 -36
- package/dist/middleware/expand-activity-stream.js.map +0 -1
- package/dist/middleware/expand-activity-stream.test.data.d.ts +0 -480
- package/dist/middleware/expand-activity-stream.test.data.js +0 -360
- package/dist/middleware/expand-activity-stream.test.data.js.map +0 -1
- package/dist/middleware/store-credentials.d.ts +0 -3
- package/dist/middleware/store-credentials.js +0 -9
- package/dist/middleware/store-credentials.js.map +0 -1
- package/dist/middleware/validate.d.ts +0 -2
- package/dist/middleware/validate.js +0 -56
- package/dist/middleware/validate.js.map +0 -1
- package/dist/middleware/validate.test.data.d.ts +0 -532
- package/dist/middleware/validate.test.data.js +0 -263
- package/dist/middleware/validate.test.data.js.map +0 -1
- package/dist/middleware.d.ts +0 -21
- package/dist/middleware.js +0 -56
- package/dist/middleware.js.map +0 -1
- package/dist/platform-instance.d.ts +0 -78
- package/dist/platform-instance.js +0 -226
- package/dist/platform-instance.js.map +0 -1
- package/dist/platform.d.ts +0 -6
- package/dist/platform.js +0 -176
- package/dist/platform.js.map +0 -1
- package/dist/process-manager.d.ts +0 -11
- package/dist/process-manager.js +0 -82
- package/dist/process-manager.js.map +0 -1
- package/dist/routes.d.ts +0 -13
- package/dist/routes.js +0 -83
- package/dist/routes.js.map +0 -1
- package/dist/sockethub.d.ts +0 -18
- package/dist/sockethub.js +0 -112
- package/dist/sockethub.js.map +0 -1
- package/src/bootstrap/platforms.js +0 -75
- package/test/init-suite.js +0 -41
- package/test/sockethub-suite.js +0 -25
- package/tsconfig.json +0 -18
- package/views/examples/dummy.ejs +0 -95
- package/views/examples/feeds.ejs +0 -90
- package/views/examples/irc.ejs +0 -239
- package/views/examples/shared.js +0 -72
- package/views/examples/xmpp.ejs +0 -217
- package/views/index.ejs +0 -17
package/dist/bootstrap/init.d.ts
DELETED
|
@@ -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;
|
package/dist/bootstrap/init.js
DELETED
|
@@ -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
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"/","sources":["config.ts"],"names":[],"mappings":"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"}
|
package/dist/defaults.json
DELETED
|
@@ -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
|
package/dist/janitor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"janitor.js","sourceRoot":"/","sources":["janitor.ts"],"names":[],"mappings":"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"}
|
package/dist/listener.d.ts
DELETED
|
@@ -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
|
package/dist/listener.js.map
DELETED
|
@@ -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;
|