sockethub 5.0.0-alpha.0 → 5.0.0-alpha.3

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 (102) hide show
  1. package/bin/sockethub +2 -29
  2. package/build.js +21 -0
  3. package/package.json +15 -65
  4. package/{dist/defaults.json → sockethub.config.json} +8 -7
  5. package/tsconfig.json +6 -68
  6. package/README.md +0 -98
  7. package/config.json.example +0 -32
  8. package/coverage/tmp/coverage-15699-1646422276150-0.json +0 -1
  9. package/dist/bootstrap/init.js +0 -74
  10. package/dist/bootstrap/init.js.map +0 -1
  11. package/dist/bootstrap/platforms.js +0 -103
  12. package/dist/common.js +0 -20
  13. package/dist/common.js.map +0 -1
  14. package/dist/config.js +0 -60
  15. package/dist/config.js.map +0 -1
  16. package/dist/crypto.js +0 -38
  17. package/dist/crypto.js.map +0 -1
  18. package/dist/janitor.js +0 -98
  19. package/dist/janitor.js.map +0 -1
  20. package/dist/middleware/create-activity-object.js +0 -19
  21. package/dist/middleware/create-activity-object.js.map +0 -1
  22. package/dist/middleware/expand-activity-stream.js +0 -33
  23. package/dist/middleware/expand-activity-stream.js.map +0 -1
  24. package/dist/middleware/expand-activity-stream.test.data.js +0 -360
  25. package/dist/middleware/expand-activity-stream.test.data.js.map +0 -1
  26. package/dist/middleware/store-credentials.js +0 -19
  27. package/dist/middleware/store-credentials.js.map +0 -1
  28. package/dist/middleware/validate.js +0 -77
  29. package/dist/middleware/validate.js.map +0 -1
  30. package/dist/middleware/validate.test.data.js +0 -321
  31. package/dist/middleware/validate.test.data.js.map +0 -1
  32. package/dist/middleware.js +0 -54
  33. package/dist/middleware.js.map +0 -1
  34. package/dist/platform-instance.js +0 -226
  35. package/dist/platform-instance.js.map +0 -1
  36. package/dist/platform.js +0 -186
  37. package/dist/platform.js.map +0 -1
  38. package/dist/process-manager.js +0 -78
  39. package/dist/process-manager.js.map +0 -1
  40. package/dist/routes.js +0 -84
  41. package/dist/routes.js.map +0 -1
  42. package/dist/serve.js +0 -102
  43. package/dist/serve.js.map +0 -1
  44. package/dist/sockethub-client.js +0 -2604
  45. package/dist/sockethub-client.js.map +0 -1
  46. package/dist/sockethub-client.min.js +0 -2
  47. package/dist/sockethub-client.min.js.LICENSE.txt +0 -24
  48. package/dist/sockethub.js +0 -130
  49. package/dist/sockethub.js.map +0 -1
  50. package/dist/store.js +0 -17
  51. package/dist/store.js.map +0 -1
  52. package/src/bootstrap/init.d.ts +0 -8
  53. package/src/bootstrap/init.ts +0 -91
  54. package/src/bootstrap/platforms.js +0 -103
  55. package/src/common.test.ts +0 -54
  56. package/src/common.ts +0 -14
  57. package/src/config.d.ts +0 -2
  58. package/src/config.test.ts +0 -28
  59. package/src/config.ts +0 -72
  60. package/src/crypto.d.ts +0 -5
  61. package/src/crypto.test.ts +0 -41
  62. package/src/crypto.ts +0 -41
  63. package/src/defaults.json +0 -32
  64. package/src/janitor.d.ts +0 -8
  65. package/src/janitor.ts +0 -89
  66. package/src/middleware/create-activity-object.test.ts +0 -10
  67. package/src/middleware/create-activity-object.ts +0 -13
  68. package/src/middleware/expand-activity-stream.test.data.ts +0 -365
  69. package/src/middleware/expand-activity-stream.test.ts +0 -78
  70. package/src/middleware/expand-activity-stream.ts +0 -27
  71. package/src/middleware/store-credentials.test.ts +0 -72
  72. package/src/middleware/store-credentials.ts +0 -16
  73. package/src/middleware/validate.d.ts +0 -1
  74. package/src/middleware/validate.test.data.ts +0 -320
  75. package/src/middleware/validate.test.ts +0 -47
  76. package/src/middleware/validate.ts +0 -49
  77. package/src/middleware.d.ts +0 -21
  78. package/src/middleware.test.ts +0 -148
  79. package/src/middleware.ts +0 -52
  80. package/src/platform-instance.test.ts +0 -237
  81. package/src/platform-instance.ts +0 -236
  82. package/src/platform.ts +0 -189
  83. package/src/process-manager.ts +0 -64
  84. package/src/routes.test.ts +0 -100
  85. package/src/routes.ts +0 -93
  86. package/src/serve.ts +0 -79
  87. package/src/sockethub-client.test.ts +0 -235
  88. package/src/sockethub-client.ts +0 -164
  89. package/src/sockethub.d.ts +0 -1
  90. package/src/sockethub.ts +0 -184
  91. package/src/store.test.ts +0 -26
  92. package/src/store.ts +0 -17
  93. package/test/init-suite.js +0 -41
  94. package/test/sockethub-suite.js +0 -25
  95. package/views/examples/dummy.ejs +0 -93
  96. package/views/examples/feeds.ejs +0 -90
  97. package/views/examples/irc.ejs +0 -239
  98. package/views/examples/shared.js +0 -72
  99. package/views/examples/xmpp.ejs +0 -191
  100. package/views/index.ejs +0 -17
  101. package/webpack.minified.config.js +0 -14
  102. package/webpack.normal.config.js +0 -14
package/dist/platform.js DELETED
@@ -1,186 +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 object_hash_1 = __importDefault(require("object-hash"));
8
- const config_1 = __importDefault(require("./config"));
9
- const bull_1 = __importDefault(require("bull"));
10
- const common_1 = require("./common");
11
- const store_1 = require("./store");
12
- // command-line params
13
- const parentId = process.argv[2];
14
- const platformName = process.argv[3];
15
- let identifier = process.argv[4];
16
- const loggerPrefix = `sockethub:platform:${platformName}:${identifier}`;
17
- let logger = (0, debug_1.default)(loggerPrefix);
18
- const PlatformModule = require(`sockethub-platform-${platformName}`);
19
- let queueStarted = false;
20
- let parentSecret1, parentSecret2;
21
- logger(`platform handler initialized for ${platformName} ${identifier}`);
22
- /**
23
- * Handle any uncaught errors from the platform by alerting the worker and shutting down.
24
- */
25
- process.on('uncaughtException', (err) => {
26
- console.log('EXCEPTION IN PLATFORM');
27
- // eslint-disable-next-line security-node/detect-crlf
28
- console.log(err.stack);
29
- process.send(['error', err.toString()]);
30
- process.exit(1);
31
- });
32
- /**
33
- * Incoming messages from the worker to this platform. Data is an array, the first property is the
34
- * method to call, the rest are params.
35
- */
36
- process.on('message', (data) => {
37
- if (data[0] === 'secrets') {
38
- parentSecret1 = data[1].parentSecret1;
39
- parentSecret2 = data[1].parentSecret2;
40
- startQueueListener();
41
- }
42
- });
43
- /**
44
- * Initialize platform module
45
- */
46
- const platformSession = {
47
- debug: (0, debug_1.default)(`sockethub:platform:${platformName}:${identifier}`),
48
- sendToClient: getSendFunction('message'),
49
- updateActor: updateActor
50
- };
51
- const platform = new PlatformModule(platformSession);
52
- /**
53
- * Get the credentials stored for this user in this sessions store, if given the correct
54
- * sessionSecret.
55
- * @param actorId
56
- * @param sessionId
57
- * @param sessionSecret
58
- * @param cb
59
- */
60
- function getCredentials(actorId, sessionId, sessionSecret, cb) {
61
- if (platform.config.noCredentials) {
62
- return cb();
63
- }
64
- const store = (0, store_1.getSessionStore)(parentId, parentSecret1, sessionId, sessionSecret);
65
- store.get(actorId, (err, credentials) => {
66
- if (platform.config.persist) {
67
- // don't continue if we don't get credentials
68
- if (err) {
69
- return cb(err);
70
- }
71
- }
72
- else if (!credentials) {
73
- // also skip if this is a non-persist platform with no credentials
74
- return cb();
75
- }
76
- if (platform.credentialsHash) {
77
- if (platform.credentialsHash !== (0, object_hash_1.default)(credentials.object)) {
78
- return cb('provided credentials do not match existing platform instance for actor '
79
- + platform.actor.id);
80
- }
81
- }
82
- else {
83
- platform.credentialsHash = (0, object_hash_1.default)(credentials.object);
84
- }
85
- cb(undefined, credentials);
86
- });
87
- }
88
- /**
89
- * Returns a function used to handle completed jobs from the platform code (the `done` callback).
90
- * @param secret the secret used to decrypt credentials
91
- */
92
- function getJobHandler(secret) {
93
- return (job, done) => {
94
- const jobData = (0, common_1.decryptJobData)(job, secret);
95
- const jobLog = (0, debug_1.default)(`${loggerPrefix}:${jobData.sessionId}`);
96
- jobLog(`received ${jobData.title} ${jobData.msg.type}`);
97
- const sessionSecret = jobData.msg.sessionSecret;
98
- delete jobData.msg.sessionSecret;
99
- return getCredentials(jobData.msg.actor.id, jobData.sessionId, sessionSecret, (err, credentials) => {
100
- if (err) {
101
- return done(new Error(err));
102
- }
103
- let jobCallbackCalled = false;
104
- const doneCallback = (err, result) => {
105
- if (jobCallbackCalled) {
106
- return;
107
- }
108
- jobCallbackCalled = true;
109
- if (err) {
110
- jobLog(`errored ${jobData.title} ${jobData.msg.type}`);
111
- let errMsg;
112
- // some error objects (eg. TimeoutError) don't interoplate correctly to human-readable
113
- // so we have to do this little dance
114
- try {
115
- errMsg = err.toString();
116
- }
117
- catch (e) {
118
- errMsg = err;
119
- }
120
- done(new Error(errMsg));
121
- }
122
- else {
123
- jobLog(`completed ${jobData.title} ${jobData.msg.type}`);
124
- done(null, result);
125
- }
126
- };
127
- if ((Array.isArray(platform.config.requireCredentials)) &&
128
- (platform.config.requireCredentials.includes(jobData.msg.type))) {
129
- // add the credentials object if this method requires it
130
- platform[jobData.msg.type](jobData.msg, credentials, doneCallback);
131
- }
132
- else if (platform.config.persist) {
133
- if (platform.initialized) {
134
- platform[jobData.msg.type](jobData.msg, doneCallback);
135
- }
136
- else {
137
- done(new Error(`${jobData.msg.type} called on uninitialized platform`));
138
- }
139
- }
140
- else {
141
- platform[jobData.msg.type](jobData.msg, doneCallback);
142
- }
143
- });
144
- };
145
- }
146
- /**
147
- * Get an function which sends a message to the parent thread (PlatformInstance). The platform
148
- * can call that function to send messages back to the client.
149
- * @param command string containing the type of command to be sent. 'message' or 'close'
150
- */
151
- function getSendFunction(command) {
152
- return function (msg, special) {
153
- process.send([command, msg, special]);
154
- };
155
- }
156
- /**
157
- * When a user changes it's actor name, the channel identifier changes, we need to ensure that
158
- * both the queue thread (listening on the channel for jobs) and the logging object are updated.
159
- * @param credentials
160
- */
161
- function updateActor(credentials) {
162
- identifier = (0, common_1.getPlatformId)(platformName, credentials.actor.id);
163
- logger(`platform actor updated to ${credentials.actor.id} identifier ${identifier}`);
164
- logger = (0, debug_1.default)(`sockethub:platform:${identifier}`);
165
- platform.credentialsHash = (0, object_hash_1.default)(credentials.object);
166
- platform.debug = (0, debug_1.default)(`sockethub:platform:${platformName}:${identifier}`);
167
- process.send(['updateActor', undefined, identifier]);
168
- startQueueListener(true);
169
- }
170
- /**
171
- * starts listening on the queue for incoming jobs
172
- * @param refresh boolean if the param is true, we re-init the queue.process
173
- * (used when identifier changes)
174
- */
175
- function startQueueListener(refresh = false) {
176
- const secret = parentSecret1 + parentSecret2;
177
- if ((queueStarted) && (!refresh)) {
178
- logger('start queue called multiple times, skipping');
179
- return;
180
- }
181
- const queue = new bull_1.default(parentId + identifier, { redis: config_1.default.get('redis') });
182
- queueStarted = true;
183
- logger('listening on the queue for incoming jobs');
184
- queue.process(getJobHandler(secret));
185
- }
186
- //# sourceMappingURL=/platform.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform.js","sourceRoot":"/","sources":["platform.ts"],"names":[],"mappings":"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"}
@@ -1,78 +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
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const init_1 = __importDefault(require("./bootstrap/init"));
26
- const platform_instance_1 = __importStar(require("./platform-instance"));
27
- const common_1 = require("./common");
28
- class ProcessManager {
29
- constructor(parentId, parentSecret1, parentSecret2) {
30
- this.parentId = parentId;
31
- this.parentSecret1 = parentSecret1;
32
- this.parentSecret2 = parentSecret2;
33
- }
34
- get(platform, actorId, sessionId) {
35
- const platformDetails = init_1.default.platforms.get(platform);
36
- let pi;
37
- if (platformDetails.config.persist) {
38
- // ensure process is started - one for each actor
39
- pi = this.ensureProcess(platform, sessionId, actorId);
40
- }
41
- else {
42
- // ensure process is started - one for all jobs
43
- pi = this.ensureProcess(platform);
44
- }
45
- pi.config = platformDetails.config;
46
- return pi;
47
- }
48
- createPlatformInstance(identifier, platform, actor) {
49
- const secrets = [
50
- 'secrets', {
51
- parentSecret1: this.parentSecret1,
52
- parentSecret2: this.parentSecret2
53
- }
54
- ];
55
- const platformInstanceConfig = {
56
- identifier: identifier,
57
- platform: platform,
58
- parentId: this.parentId,
59
- actor: actor
60
- };
61
- const platformInstance = new platform_instance_1.default(platformInstanceConfig);
62
- platformInstance.initQueue(this.parentSecret1 + this.parentSecret2);
63
- platformInstance.process.send(secrets);
64
- return platformInstance;
65
- }
66
- ensureProcess(platform, sessionId, actor) {
67
- const identifier = (0, common_1.getPlatformId)(platform, actor);
68
- const platformInstance = platform_instance_1.platformInstances.get(identifier) ||
69
- this.createPlatformInstance(identifier, platform, actor);
70
- if (sessionId) {
71
- platformInstance.registerSession(sessionId);
72
- }
73
- platform_instance_1.platformInstances.set(identifier, platformInstance);
74
- return platformInstance;
75
- }
76
- }
77
- exports.default = ProcessManager;
78
- //# sourceMappingURL=/process-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-manager.js","sourceRoot":"/","sources":["process-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAoC;AACpC,yEAC4F;AAC5F,qCAAyC;AAEzC,MAAM,cAAc;IAKlB,YAAY,QAAgB,EAAE,aAAqB,EAAE,aAAqB;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,OAAe,EAAE,SAAkB;QACvD,MAAM,eAAe,GAAG,cAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC;QAEP,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE;YAClC,iDAAiD;YACjD,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SACvD;aAAM;YACL,+CAA+C;YAC/C,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACnC;QACD,EAAE,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sBAAsB,CAAC,UAAkB,EAAE,QAAgB,EACpC,KAAc;QAC3C,MAAM,OAAO,GAAsB;YACjC,SAAS,EAAE;gBACT,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC;SACF,CAAC;QACF,MAAM,sBAAsB,GAA2B;YACrD,UAAU,EAAE,UAAU;YACtB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,KAAK;SACb,CAAC;QACF,MAAM,gBAAgB,GAAG,IAAI,2BAAgB,CAAC,sBAAsB,CAAC,CAAC;QACtE,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;QACpE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,SAAkB,EAAE,KAAc;QACxE,MAAM,UAAU,GAAG,IAAA,sBAAa,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,qCAAiB,CAAC,GAAG,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnE,IAAI,SAAS,EAAE;YACb,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;SAC7C;QACD,qCAAiB,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;QACpD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF;AAED,kBAAe,cAAc,CAAC"}
package/dist/routes.js DELETED
@@ -1,84 +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
- exports.examplePages = exports.examplePaths = exports.basePaths = void 0;
7
- const path_1 = __importDefault(require("path"));
8
- const config_1 = __importDefault(require("./config"));
9
- const debug_1 = __importDefault(require("debug"));
10
- const debug_scope = process.env.DEBUG || '', logger = (0, debug_1.default)('sockethub:routes'), address = config_1.default.get('public:protocol') + '://' +
11
- config_1.default.get('public:host') + ':' +
12
- config_1.default.get('public:port') +
13
- config_1.default.get('public:path');
14
- exports.basePaths = {
15
- '/sockethub-client.js': path_1.default.resolve(`${__dirname}/../dist/sockethub-client.js`),
16
- '/sockethub-client.min.js': path_1.default.resolve(`${__dirname}/../dist/sockethub-client.min.js`),
17
- '/sockethub-client.js.map': path_1.default.resolve(`${__dirname}/../dist/sockethub-client.js.map`),
18
- '/socket.io.js': path_1.default.resolve(`${__dirname}/../node_modules/socket.io/client-dist/socket.io.js`),
19
- '/socket.io.js.map': path_1.default.resolve(`${__dirname}/../node_modules/socket.io/client-dist/socket.io.js.map`),
20
- };
21
- exports.examplePaths = {
22
- '/jquery.js': path_1.default.resolve(`${__dirname}/../node_modules/jquery/dist/jquery.min.js`),
23
- '/jquery.min.map': path_1.default.resolve(`${__dirname}/../node_modules/jquery/dist/jquery.min.map`),
24
- '/examples/shared.js': path_1.default.resolve(`${__dirname}/../views/examples/shared.js`)
25
- };
26
- exports.examplePages = {
27
- '/': path_1.default.resolve(`${__dirname}/../views/index.ejs`),
28
- '/examples/dummy': path_1.default.resolve(`${__dirname}/../views/examples/dummy.ejs`),
29
- '/examples/feeds': path_1.default.resolve(`${__dirname}/../views/examples/feeds.ejs`),
30
- '/examples/irc': path_1.default.resolve(`${__dirname}/../views/examples/irc.ejs`),
31
- '/examples/xmpp': path_1.default.resolve(`${__dirname}/../views/examples/xmpp.ejs`)
32
- };
33
- function prepFileRoutes(pathMap) {
34
- let _routes = [];
35
- Object.keys(pathMap).forEach((key) => {
36
- _routes.push({
37
- meta: {
38
- method: 'GET',
39
- path: key
40
- },
41
- route: (req, res) => {
42
- logger(`serving resource ${req.url}`);
43
- res.setHeader('Access-Control-Allow-Origin', '*');
44
- res.sendFile(pathMap[req.url]);
45
- }
46
- });
47
- });
48
- return _routes;
49
- }
50
- const baseRoutes = prepFileRoutes(exports.basePaths);
51
- const exampleRoutes = prepFileRoutes(exports.examplePaths);
52
- Object.keys(exports.examplePages).forEach((key) => {
53
- exampleRoutes.push({
54
- meta: {
55
- method: 'GET',
56
- path: key
57
- },
58
- route: (req, res) => {
59
- logger(`serving page ${req.url}`);
60
- res.render(exports.examplePages[req.url], {
61
- debug_scope: debug_scope,
62
- address: address,
63
- });
64
- }
65
- });
66
- });
67
- function addRoute(app) {
68
- return (route) => {
69
- app[route.meta.method.toLowerCase()](route.meta.path, route.route);
70
- };
71
- }
72
- /**
73
- * Setup
74
- */
75
- const routes = {
76
- setup: function (app, examplesEnabled = config_1.default.get('examples:enabled')) {
77
- baseRoutes.forEach(addRoute(app));
78
- if (examplesEnabled) {
79
- exampleRoutes.forEach(addRoute(app));
80
- }
81
- }
82
- };
83
- exports.default = routes;
84
- //# sourceMappingURL=/routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"/","sources":["routes.ts"],"names":[],"mappings":"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"}
package/dist/serve.js DELETED
@@ -1,102 +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
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23
- return new (P || (P = Promise))(function (resolve, reject) {
24
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27
- step((generator = generator.apply(thisArg, _arguments || [])).next());
28
- });
29
- };
30
- var __importDefault = (this && this.__importDefault) || function (mod) {
31
- return (mod && mod.__esModule) ? mod : { "default": mod };
32
- };
33
- Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.getSocket = void 0;
35
- const debug_1 = __importDefault(require("debug"));
36
- const body_parser_1 = __importDefault(require("body-parser"));
37
- const express_1 = __importDefault(require("express"));
38
- const HTTP = __importStar(require("http"));
39
- const socket_io_1 = require("socket.io");
40
- const config_1 = __importDefault(require("./config"));
41
- const routes_1 = __importDefault(require("./routes"));
42
- const log = (0, debug_1.default)('sockethub:services:http');
43
- /**
44
- * Handles the initialization and access of service objects.
45
- *
46
- * - HTTP Server
47
- * - Express (service resources and example routes)
48
- * - Socket.io (bidirectional websocket communication)
49
- */
50
- class Serve {
51
- /**
52
- * Starts the services needed for sockethub to operate. After this command completes,
53
- * the `http` and `io` class properties will be set.
54
- */
55
- start() {
56
- // initialize express and socket.io objects
57
- const app = Serve.initExpress();
58
- this.http = new HTTP.Server(app);
59
- this.io = new socket_io_1.Server(this.http, {
60
- path: config_1.default.get('service:path'),
61
- cors: {
62
- origin: "*",
63
- methods: ["GET", "POST"]
64
- }
65
- });
66
- routes_1.default.setup(app);
67
- this.startListener();
68
- }
69
- startListener() {
70
- this.http.listen(config_1.default.get('service:port'), config_1.default.get('service:host'), () => {
71
- log(`sockethub listening on ` +
72
- `http://${config_1.default.get('service:host')}:${config_1.default.get('service:port')}`);
73
- });
74
- }
75
- ;
76
- static initExpress() {
77
- let app = (0, express_1.default)();
78
- // templating engines
79
- app.set('view engine', 'ejs');
80
- // use bodyParser
81
- app.use(body_parser_1.default.urlencoded({ extended: true }));
82
- app.use(body_parser_1.default.json());
83
- return app;
84
- }
85
- }
86
- const serve = new Serve();
87
- function getSocket(sessionId) {
88
- return __awaiter(this, void 0, void 0, function* () {
89
- const sockets = yield serve.io.fetchSockets();
90
- return new Promise((resolve, reject) => {
91
- for (let socket of sockets) {
92
- if (sessionId === socket.id) {
93
- return resolve(socket);
94
- }
95
- }
96
- return reject(`unable to find socket for sessionId ${sessionId}`);
97
- });
98
- });
99
- }
100
- exports.getSocket = getSocket;
101
- exports.default = serve;
102
- //# sourceMappingURL=/serve.js.map
package/dist/serve.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"/","sources":["serve.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AACrC,sDAA8B;AAC9B,2CAA6B;AAC7B,yCAAmC;AAEnC,sDAA8B;AAC9B,sDAA8B;AAE9B,MAAM,GAAG,GAAG,IAAA,eAAK,EAAC,yBAAyB,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,KAAK;IAIT;;;OAGG;IACH,KAAK;QACH,2CAA2C;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAChC,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,cAAc,CAAC;YAChC,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,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,gBAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE;YAC5E,GAAG,CAAC,yBAAyB;gBAC3B,UAAU,gBAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,gBAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAAA,CAAC;IAEM,MAAM,CAAC,WAAW;QACxB,IAAI,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;QACpB,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,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;AAO1B,SAAsB,SAAS,CAAC,SAAiB;;QAC/C,MAAM,OAAO,GAA0B,MAAM,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;QACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;gBAC1B,IAAI,SAAS,KAAK,MAAM,CAAC,EAAE,EAAE;oBAC3B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;iBACxB;aACF;YACD,OAAO,MAAM,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAVD,8BAUC;AAED,kBAAe,KAAK,CAAC"}