@koeroesi86/node-worker-express 23.3.4419247067-main → 23.3.4508640840-main

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.
@@ -1,3 +1,4 @@
1
+ import { MiddlewareOptions } from '../types';
1
2
  export declare enum WORKER_EVENT {
2
3
  REQUEST = "WORKER_REQUEST",
3
4
  REQUEST_ACKNOWLEDGE = "WORKER_REQUEST_ACK",
@@ -9,3 +10,9 @@ export declare enum WORKER_EVENT {
9
10
  WS_CONNECTION_CLOSE = "WS_CONNECTION_CLOSE",
10
11
  WS_CONNECTION_CLOSE_ACKNOWLEDGE = "WS_CONNECTION_CLOSE_ACK"
11
12
  }
13
+ export declare const ForbiddenPaths: readonly string[];
14
+ export declare enum Protocols {
15
+ http = "HTTP",
16
+ websocket = "WS"
17
+ }
18
+ export declare const DefaultOptions: MiddlewareOptions;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ var fs = require('fs/promises');
4
+
5
+ const fileExists = (fileName) => fs
6
+ .access(fileName, fs.constants.R_OK)
7
+ .then(() => true)
8
+ .catch(() => false);
9
+
10
+ exports.fileExists = fileExists;
11
+ //# sourceMappingURL=fileExists-a913e146.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileExists-a913e146.js","sources":["../src/utils/fileExists.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAEA,MAAM,UAAU,GAAG,CAAC,QAAgB,KAClC,EAAE;KACC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;AACnC,KAAA,IAAI,CAAC,MAAM,IAAI,CAAC;AAChB,KAAA,KAAK,CAAC,MAAM,KAAK;;;;"}
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var path = require('path');
4
+
5
+ exports.WORKER_EVENT = void 0;
6
+ (function (WORKER_EVENT) {
7
+ WORKER_EVENT["REQUEST"] = "WORKER_REQUEST";
8
+ WORKER_EVENT["REQUEST_ACKNOWLEDGE"] = "WORKER_REQUEST_ACK";
9
+ WORKER_EVENT["RESPONSE"] = "WORKER_RESPONSE";
10
+ WORKER_EVENT["RESPONSE_EMIT"] = "WORKER_RESPONSE_EMIT";
11
+ WORKER_EVENT["RESPONSE_ACKNOWLEDGE"] = "WORKER_RESPONSE_ACK";
12
+ WORKER_EVENT["WS_MESSAGE_RECEIVE"] = "WS_MESSAGE_RECEIVE";
13
+ WORKER_EVENT["WS_MESSAGE_SEND"] = "WS_MESSAGE_SEND";
14
+ WORKER_EVENT["WS_CONNECTION_CLOSE"] = "WS_CONNECTION_CLOSE";
15
+ WORKER_EVENT["WS_CONNECTION_CLOSE_ACKNOWLEDGE"] = "WS_CONNECTION_CLOSE_ACK";
16
+ })(exports.WORKER_EVENT || (exports.WORKER_EVENT = {}));
17
+ const ForbiddenPaths = ['..'];
18
+ exports.Protocols = void 0;
19
+ (function (Protocols) {
20
+ Protocols["http"] = "HTTP";
21
+ Protocols["websocket"] = "WS";
22
+ })(exports.Protocols || (exports.Protocols = {}));
23
+ const DefaultOptions = {
24
+ root: '',
25
+ limit: 0,
26
+ limitPerPath: 0,
27
+ limitRequestBody: 1000000,
28
+ limitRequestTimeout: 5000,
29
+ idleCheckTimeout: 5,
30
+ onStdout: () => { },
31
+ onStderr: () => { },
32
+ onExit: () => { },
33
+ onForbiddenPath: (request, response) => {
34
+ response.writeHead(500, { 'Content-Type': 'text/plain' });
35
+ response.end();
36
+ request.connection.destroy();
37
+ throw new Error('Forbidden path');
38
+ },
39
+ index: [],
40
+ env: {},
41
+ staticWorker: path.resolve(__dirname, './staticWorker.js'),
42
+ cwd: process.cwd(),
43
+ };
44
+
45
+ exports.DefaultOptions = DefaultOptions;
46
+ exports.ForbiddenPaths = ForbiddenPaths;
47
+ //# sourceMappingURL=index-749bd23e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-749bd23e.js","sources":["../src/constants/index.ts"],"sourcesContent":[null],"names":["WORKER_EVENT","Protocols"],"mappings":";;;;AAGYA,8BAUX;AAVD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,gBAA0B,CAAA;AAC1B,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,oBAA0C,CAAA;AAC1C,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,iBAA4B,CAAA;AAC5B,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,sBAAsC,CAAA;AACtC,IAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,qBAA4C,CAAA;AAC5C,IAAA,YAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,YAAA,CAAA,iCAAA,CAAA,GAAA,yBAA2D,CAAA;AAC7D,CAAC,EAVWA,oBAAY,KAAZA,oBAAY,GAUvB,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,cAAc,GAAsB,CAAC,IAAI,EAAW;AAErDC,2BAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,IAAgB,CAAA;AAClB,CAAC,EAHWA,iBAAS,KAATA,iBAAS,GAGpB,EAAA,CAAA,CAAA,CAAA;AAEY,MAAA,cAAc,GAAsB;AAC/C,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,gBAAgB,EAAE,OAAO;AACzB,IAAA,mBAAmB,EAAE,IAAI;AACzB,IAAA,gBAAgB,EAAE,CAAC;AACnB,IAAA,QAAQ,EAAE,MAAK,GAAG;AAClB,IAAA,QAAQ,EAAE,MAAK,GAAG;AAClB,IAAA,MAAM,EAAE,MAAK,GAAG;AAChB,IAAA,eAAe,EAAE,CAAC,OAAO,EAAE,QAAQ,KAAI;QACrC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;QAC1D,QAAQ,CAAC,GAAG,EAAE,CAAC;AACf,QAAA,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACnC;AACD,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,GAAG,EAAE,EAAE;IACP,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,mBAAmB,CAAC;AAC1D,IAAA,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;;;;;;"}
package/dist/index.js CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  var uuid = require('uuid');
4
4
  var path = require('path');
5
- var fs = require('fs');
6
5
  var url = require('url');
7
- var index = require('./index-aad82b3f.js');
6
+ var index = require('./index-749bd23e.js');
8
7
  var Worker = require('@koeroesi86/node-worker');
8
+ var fs = require('fs/promises');
9
+ var fileExists = require('./fileExists-a913e146.js');
9
10
 
10
11
  const pools = [];
11
12
  process.once('exit', () => {
@@ -21,66 +22,62 @@ const createWorkerCommand = (workerPath) => {
21
22
  };
22
23
  class WorkerPool {
23
24
  constructor({ overallLimit = 0, idleCheckTimeout = 5, onExit = () => { } }) {
25
+ this.onClose = () => {
26
+ Object.keys(this.workers).forEach((workerPath) => {
27
+ const current = this.workers[workerPath];
28
+ Object.keys(current).forEach((id) => {
29
+ current[id].terminate();
30
+ });
31
+ });
32
+ };
33
+ this.getNonBusyId = (workerPath) => {
34
+ return this.workers[workerPath]
35
+ ? Object.keys(this.workers[workerPath] || {}).find((id) => {
36
+ return true; // !this.workers[workerPath][id].busy;
37
+ })
38
+ : undefined;
39
+ };
40
+ this.getWorkerCountForPath = (p) => {
41
+ return this.workers[p] ? Object.keys(this.workers[p]).length : 0;
42
+ };
43
+ this.getWorkerCount = () => {
44
+ return Object.keys(this.workers).reduce((result, current) => this.getWorkerCountForPath(current) + result, 0);
45
+ };
46
+ this.isBeyondLimit = (workerPath, limit) => {
47
+ return ((this.workers[workerPath] && limit > 0 && this.getWorkerCountForPath(workerPath) >= limit) ||
48
+ (this.overallLimit > 0 && this.getWorkerCount() >= this.overallLimit));
49
+ };
50
+ this.getWorker = async (workerPath, options = {}, limit = 0) => {
51
+ const nonBusyId = this.getNonBusyId(workerPath);
52
+ // TODO: tidy up
53
+ if (nonBusyId !== undefined) {
54
+ return this.workers[workerPath][nonBusyId];
55
+ }
56
+ else if (this.isBeyondLimit(workerPath, limit) || this.creating) {
57
+ await new Promise((r) => setTimeout(r, this.idleCheckTimeout));
58
+ return this.getWorker(workerPath, options, limit);
59
+ }
60
+ this.creating = true;
61
+ const id = uuid.v4();
62
+ const instance = new Worker(createWorkerCommand(workerPath), options);
63
+ if (!this.workers[workerPath]) {
64
+ this.workers[workerPath] = {};
65
+ }
66
+ instance.addEventListenerOnce('close', (code) => {
67
+ this.workers[workerPath][id] = null;
68
+ delete this.workers[workerPath][id];
69
+ this.onExit(code, workerPath, id);
70
+ });
71
+ this.workers[workerPath][id] = instance;
72
+ this.creating = false;
73
+ return instance;
74
+ };
24
75
  this.overallLimit = overallLimit;
25
76
  this.idleCheckTimeout = idleCheckTimeout;
26
77
  this.onExit = onExit;
27
78
  this.workers = {};
28
79
  pools.push(this);
29
- this._creating = false;
30
- this.getWorker = this.getWorker.bind(this);
31
- this.onClose = this.onClose.bind(this);
32
- this.getNonBusyId = this.getNonBusyId.bind(this);
33
- this.getWorkerCount = this.getWorkerCount.bind(this);
34
- }
35
- onClose() {
36
- Object.keys(this.workers).forEach((workerPath) => {
37
- const current = this.workers[workerPath];
38
- Object.keys(current).forEach((id) => {
39
- current[id].terminate();
40
- });
41
- });
42
- }
43
- getNonBusyId(workerPath) {
44
- return this.workers[workerPath]
45
- ? Object.keys(this.workers[workerPath] || {}).find((id) => {
46
- return !this.workers[workerPath][id].busy;
47
- })
48
- : undefined;
49
- }
50
- getWorkerCountForPath(p) {
51
- return this.workers[p] ? Object.keys(this.workers[p]).length : 0;
52
- }
53
- getWorkerCount() {
54
- return Object.keys(this.workers).reduce((result, current) => this.getWorkerCountForPath(current) + result, 0);
55
- }
56
- isBeyondLimit(workerPath, limit) {
57
- return ((this.workers[workerPath] && limit > 0 && this.getWorkerCountForPath(workerPath) >= limit) ||
58
- (this.overallLimit > 0 && this.getWorkerCount() >= this.overallLimit));
59
- }
60
- async getWorker(workerPath, options = {}, limit = 0) {
61
- const nonBusyId = this.getNonBusyId(workerPath);
62
- // TODO: tidy up
63
- if (nonBusyId !== undefined) {
64
- return this.workers[workerPath][nonBusyId];
65
- }
66
- else if (this.isBeyondLimit(workerPath, limit) || this._creating) {
67
- await new Promise((r) => setTimeout(r, this.idleCheckTimeout));
68
- return this.getWorker(workerPath, options, limit);
69
- }
70
- this._creating = true;
71
- const id = uuid.v4();
72
- const instance = new Worker(createWorkerCommand(workerPath), options);
73
- if (!this.workers[workerPath]) {
74
- this.workers[workerPath] = {};
75
- }
76
- instance.addEventListenerOnce('close', (code) => {
77
- this.workers[workerPath][id] = null;
78
- delete this.workers[workerPath][id];
79
- this.onExit(code, workerPath, id);
80
- });
81
- this.workers[workerPath][id] = instance;
82
- this._creating = false;
83
- return instance;
80
+ this.creating = false;
84
81
  }
85
82
  }
86
83
 
@@ -203,34 +200,55 @@ const createBodyParser = (config = { limitRequestBody: 1000000, shouldError: tru
203
200
  });
204
201
  };
205
202
 
206
- const ForbiddenPaths = ['..'];
207
- const Protocols = {
208
- http: 'HTTP',
209
- websocket: 'WS',
210
- };
211
- const DefaultOptions = {
212
- root: null,
213
- limit: 0,
214
- limitPerPath: 0,
215
- limitRequestBody: 1000000,
216
- limitRequestTimeout: 5000,
217
- idleCheckTimeout: 5,
218
- onStdout: () => { },
219
- onStderr: () => { },
220
- onExit: () => { },
221
- onForbiddenPath: (request, response) => {
222
- response.writeHead(500, { 'Content-Type': 'text/plain' });
223
- response.end();
224
- request.connection.destroy();
225
- },
226
- index: [],
227
- env: {},
228
- staticWorker: path.resolve(__dirname, './staticWorker.js'),
229
- cwd: process.cwd(),
230
- };
203
+ async function resolvePath(rootPath, pathFragments, indexFiles) {
204
+ const currentPathFragments = pathFragments.slice();
205
+ let indexPath = path.join(rootPath, ...currentPathFragments);
206
+ let isWorker = false;
207
+ let pathExists = false;
208
+ let stats;
209
+ for (let i = currentPathFragments.length; i >= 0 && !pathExists; i--) {
210
+ if (pathExists)
211
+ continue;
212
+ currentPathFragments.splice(i);
213
+ const currentPath = path.join(rootPath, ...currentPathFragments);
214
+ pathExists = await fileExists.fileExists(currentPath);
215
+ if (!pathExists)
216
+ continue;
217
+ stats = await fs.stat(currentPath);
218
+ if (stats.isDirectory()) {
219
+ // index fallback
220
+ let checkIndexFilePath = '';
221
+ for (let indexFile of indexFiles) {
222
+ if (checkIndexFilePath) {
223
+ continue;
224
+ }
225
+ const current = path.join(currentPath, indexFile);
226
+ if (await fileExists.fileExists(current)) {
227
+ checkIndexFilePath = indexFile;
228
+ }
229
+ }
230
+ if (checkIndexFilePath) {
231
+ isWorker = true;
232
+ indexPath = path.join(currentPath, checkIndexFilePath);
233
+ }
234
+ else {
235
+ isWorker = true;
236
+ indexPath = path.join(...currentPathFragments);
237
+ }
238
+ }
239
+ else if (stats.isFile() && indexFiles.includes(currentPathFragments[currentPathFragments.length - 1])) {
240
+ isWorker = true;
241
+ }
242
+ if (isWorker) {
243
+ break;
244
+ }
245
+ }
246
+ return { indexPath, isWorker, pathExists, stats };
247
+ }
248
+
231
249
  const workerMiddleware = (options) => {
232
250
  const config = {
233
- ...DefaultOptions,
251
+ ...index.DefaultOptions,
234
252
  ...(options && options),
235
253
  };
236
254
  if (!config.root) {
@@ -252,67 +270,46 @@ const workerMiddleware = (options) => {
252
270
  const pathFragments = pathname.split(/\//gi).filter(Boolean);
253
271
  let currentPathFragments = pathFragments.slice(0);
254
272
  let pathExists = false;
255
- await new Promise((resolve, reject) => {
256
- if (pathFragments.find((p) => ForbiddenPaths.includes(p))) {
257
- config.onForbiddenPath(request, response);
258
- reject();
259
- }
260
- resolve();
261
- });
273
+ if (pathFragments.find((p) => index.ForbiddenPaths.includes(p))) {
274
+ config.onForbiddenPath(request, response);
275
+ return;
276
+ }
262
277
  await Promise.race([new Promise((_res, rej) => setTimeout(rej, config.limitRequestTimeout)), new Promise((res) => bodyParser(request, response, res))]);
263
278
  let indexPath;
264
- if (aliasCache[pathname] && fs.existsSync(aliasCache[pathname])) {
265
- isWorker = true;
279
+ if (aliasCache[pathname] && (await fileExists.fileExists(aliasCache[pathname]))) {
280
+ isWorker = false;
266
281
  indexPath = aliasCache[pathname];
282
+ pathExists = true;
267
283
  }
268
- else if (workerCache[pathname] && fs.existsSync(workerCache[pathname])) {
284
+ else if (workerCache[pathname] && (await fileExists.fileExists(workerCache[pathname]))) {
269
285
  isWorker = true;
270
286
  indexPath = workerCache[pathname];
287
+ pathExists = true;
271
288
  }
272
289
  else {
273
- indexPath = path.join(rootPath, ...currentPathFragments);
274
- for (let i = currentPathFragments.length; i >= 0 && !pathExists; i--) {
275
- if (pathExists)
276
- continue;
277
- currentPathFragments.splice(i);
278
- const currentPath = path.join(rootPath, ...currentPathFragments);
279
- pathExists = fs.existsSync(currentPath);
280
- if (!pathExists)
281
- continue;
282
- const currentStats = fs.statSync(currentPath);
283
- if (pathExists && currentStats.isDirectory()) {
284
- // index fallback
285
- pathExists = !!config.index.find((indexFile) => {
286
- const checkIndexFilePath = path.join(currentPath, indexFile);
287
- if (fs.existsSync(checkIndexFilePath)) {
288
- isWorker = true;
289
- indexPath = checkIndexFilePath;
290
- aliasCache[pathname] = checkIndexFilePath;
291
- setTimeout(() => {
292
- aliasCache[pathname] = '';
293
- delete aliasCache[pathname];
294
- }, 5000);
295
- return true;
296
- }
297
- });
298
- if (pathExists)
299
- break;
300
- }
301
- else if (pathExists && currentStats.isFile()) {
302
- if (config.index.includes(currentPathFragments[currentPathFragments.length - 1])) {
303
- isWorker = true;
304
- workerCache[pathname] = currentPath;
305
- setTimeout(() => {
306
- workerCache[pathname] = '';
307
- delete workerCache[pathname];
308
- }, 5000);
309
- }
310
- }
311
- }
290
+ const resolved = await resolvePath(rootPath, currentPathFragments, config.index);
291
+ indexPath = resolved.indexPath;
292
+ isWorker = resolved.isWorker;
293
+ pathExists = resolved.pathExists;
294
+ }
295
+ if (!pathExists) {
296
+ //
297
+ }
298
+ else if (isWorker) {
299
+ workerCache[pathname] = indexPath;
300
+ setTimeout(() => {
301
+ delete workerCache[pathname];
302
+ }, 5000);
303
+ }
304
+ else {
305
+ aliasCache[pathname] = indexPath;
306
+ setTimeout(() => {
307
+ delete aliasCache[pathname];
308
+ }, 5000);
312
309
  }
313
310
  const event = {
314
311
  httpMethod: request.method.toUpperCase(),
315
- protocol: isWebSocket(request) ? Protocols.websocket : Protocols.http,
312
+ protocol: isWebSocket(request) ? index.Protocols.websocket : index.Protocols.http,
316
313
  path: pathname,
317
314
  pathFragments: pathFragments,
318
315
  queryStringParameters: JSON.parse(JSON.stringify(queryStringParameters)),
@@ -330,7 +327,7 @@ const workerMiddleware = (options) => {
330
327
  : await workerPool.getWorker(config.staticWorker, {
331
328
  cwd: process.cwd(),
332
329
  stdio: ['pipe', 'pipe', 'pipe', 'ipc'],
333
- }, 1);
330
+ }, typeof config.limitPerPath === 'function' ? config.limitPerPath(indexPath) : config.limitPerPath);
334
331
  const requestId = uuid.v4();
335
332
  let firstReceived = false;
336
333
  const requestSocketListener = (data) => {
@@ -347,7 +344,7 @@ const workerMiddleware = (options) => {
347
344
  event: { ...event, frame },
348
345
  });
349
346
  };
350
- if (event.protocol === Protocols.websocket) {
347
+ if (event.protocol === index.Protocols.websocket) {
351
348
  request.socket.on('data', requestSocketListener);
352
349
  }
353
350
  worker.instance.stdout.off('data', config.onStdout);
@@ -387,9 +384,9 @@ const workerMiddleware = (options) => {
387
384
  if (responseEvent.type === index.WORKER_EVENT.WS_MESSAGE_SEND) {
388
385
  request.socket.write(constructWsMessage(responseEvent.event.frame));
389
386
  }
390
- if (responseEvent.type === index.WORKER_EVENT.REQUEST_ACKNOWLEDGE) {
391
- worker.busy = false;
392
- }
387
+ // if (responseEvent.type === WORKER_EVENT.REQUEST_ACKNOWLEDGE) {
388
+ // worker.busy = false;
389
+ // }
393
390
  }
394
391
  };
395
392
  const requestCloseListener = () => {
@@ -421,7 +418,7 @@ const workerMiddleware = (options) => {
421
418
  }
422
419
  };
423
420
  request.on('aborted', cleanupConnection);
424
- if (event.protocol === Protocols.http) {
421
+ if (event.protocol === index.Protocols.http) {
425
422
  request.on('close', cleanupConnection);
426
423
  response.on('finish', cleanupConnection);
427
424
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/workerPool.ts","../src/utils/isWebSocket.ts","../src/utils/parseWsMessage.ts","../src/utils/constructWsMessage.ts","../src/utils/getClientIp.ts","../src/middleware/bodyParser.ts","../src/middleware/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["uuid","WORKER_EVENT"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/workerPool.ts","../src/utils/isWebSocket.ts","../src/utils/parseWsMessage.ts","../src/utils/constructWsMessage.ts","../src/utils/getClientIp.ts","../src/middleware/bodyParser.ts","../src/utils/resolvePath.ts","../src/middleware/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["uuid","fileExists","DefaultOptions","ForbiddenPaths","Protocols","WORKER_EVENT"],"mappings":"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"}
@@ -1,19 +1,4 @@
1
- /// <reference types="node" />
2
1
  import { RequestHandler } from 'express';
3
- type MiddlewareOptions = {
4
- root: string;
5
- limit?: number;
6
- limitPerPath?: number | ((path: string) => number);
7
- limitRequestBody?: number;
8
- limitRequestTimeout?: number;
9
- idleCheckTimeout?: number;
10
- onStdout?: (data: Buffer) => void;
11
- onStderr?: (data: Buffer) => void;
12
- onExit?: void;
13
- index?: string[];
14
- env?: object;
15
- staticWorker?: string;
16
- cwd?: string;
17
- };
2
+ import { MiddlewareOptions } from 'src/types';
18
3
  declare const workerMiddleware: (options: MiddlewareOptions) => RequestHandler;
19
4
  export default workerMiddleware;
@@ -1,154 +1,161 @@
1
1
  'use strict';
2
2
 
3
3
  var path = require('path');
4
- var fs = require('fs');
4
+ var fs = require('fs/promises');
5
+ require('fs');
6
+ require('stream');
7
+ var fileExists = require('./fileExists-a913e146.js');
5
8
  var crypto = require('crypto');
6
9
  var child_process = require('child_process');
7
- require('stream');
8
10
 
9
- let timer;
10
- function debounce(fn = () => { }, timeout = 0) {
11
- if (timer)
12
- clearTimeout(timer);
13
- timer = setTimeout(() => {
14
- timer = undefined;
15
- fn();
16
- }, timeout);
17
- }
11
+ const contentTypes = {
12
+ '.aac': 'audio/aac',
13
+ '.abw': 'application/x-abiword',
14
+ '.arc': 'application/x-freearc',
15
+ '.avi': 'video/x-msvideo',
16
+ '.azw': 'application/vnd.amazon.ebook',
17
+ '.bin': 'application/octet-stream',
18
+ '.bmp': 'image/bmp',
19
+ '.bz': 'application/x-bzip',
20
+ '.bz2': 'application/x-bzip2',
21
+ '.csh': 'application/x-csh',
22
+ '.css': 'text/css',
23
+ '.csv': 'text/csv',
24
+ '.doc': 'application/msword',
25
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
26
+ '.eot': 'application/vnd.ms-fontobject',
27
+ '.epub': 'application/epub+zip',
28
+ '.gz': 'application/gzip',
29
+ '.gif': 'image/gif',
30
+ '.htm': 'text/html',
31
+ '.html': 'text/html',
32
+ '.ico': 'image/vnd.microsoft.icon',
33
+ '.ics': 'text/calendar',
34
+ '.jar': 'application/java-archive',
35
+ '.jpeg': 'image/jpeg',
36
+ '.jpg': 'image/jpeg',
37
+ '.js': 'text/javascript',
38
+ '.json': 'application/json',
39
+ '.jsonld': 'application/ld+json',
40
+ '.mid': 'audio/midi',
41
+ '.midi': 'audio/x-midi',
42
+ '.mjs': 'text/javascript',
43
+ '.mp3': 'audio/mpeg',
44
+ '.mpeg': 'video/mpeg',
45
+ '.mpkg': 'application/vnd.apple.installer+xml',
46
+ '.odp': 'application/vnd.oasis.opendocument.presentation',
47
+ '.ods': 'application/vnd.oasis.opendocument.spreadsheet',
48
+ '.odt': 'application/vnd.oasis.opendocument.text',
49
+ '.oga': 'audio/ogg',
50
+ '.ogv': 'video/ogg',
51
+ '.ogx': 'application/ogg',
52
+ '.opus': 'audio/opus',
53
+ '.otf': 'font/otf',
54
+ '.png': 'image/png',
55
+ '.pdf': 'application/pdf',
56
+ '.php': 'application/php',
57
+ '.ppt': 'application/vnd.ms-powerpoint',
58
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
59
+ '.rar': 'application/vnd.rar',
60
+ '.rtf': 'application/rtf',
61
+ '.sh': 'application/x-sh',
62
+ '.svg': 'image/svg+xml',
63
+ '.swf': 'application/x-shockwave-flash',
64
+ '.tar': 'application/x-tar',
65
+ '.tif': 'image/tiff',
66
+ '.tiff': 'image/tiff',
67
+ '.ts': 'video/mp2t',
68
+ '.ttf': 'font/ttf',
69
+ '.txt': 'text/plain',
70
+ '.vsd': 'application/vnd.visio',
71
+ '.wav': 'audio/wav',
72
+ '.weba': 'audio/webm',
73
+ '.webm': 'video/webm',
74
+ '.webp': 'image/webp',
75
+ '.woff': 'font/woff',
76
+ '.woff2': 'font/woff2',
77
+ '.xhtml': 'application/xhtml+xml',
78
+ '.xls': 'application/vnd.ms-excel',
79
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
80
+ '.xml': 'application/xml',
81
+ '.xul': 'application/vnd.mozilla.xul+xml',
82
+ '.zip': 'application/zip',
83
+ '.3gp': 'video/3gpp',
84
+ '.3g2': 'video/3gpp2',
85
+ '.7z': 'application/x-7z-compressed',
86
+ };
18
87
  function getContentType(extension = '') {
19
- const contentTypes = {
20
- '.aac': 'audio/aac',
21
- '.abw': 'application/x-abiword',
22
- '.arc': 'application/x-freearc',
23
- '.avi': 'video/x-msvideo',
24
- '.azw': 'application/vnd.amazon.ebook',
25
- '.bin': 'application/octet-stream',
26
- '.bmp': 'image/bmp',
27
- '.bz': 'application/x-bzip',
28
- '.bz2': 'application/x-bzip2',
29
- '.csh': 'application/x-csh',
30
- '.css': 'text/css',
31
- '.csv': 'text/csv',
32
- '.doc': 'application/msword',
33
- '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
34
- '.eot': 'application/vnd.ms-fontobject',
35
- '.epub': 'application/epub+zip',
36
- '.gz': 'application/gzip',
37
- '.gif': 'image/gif',
38
- '.htm': 'text/html',
39
- '.html': 'text/html',
40
- '.ico': 'image/vnd.microsoft.icon',
41
- '.ics': 'text/calendar',
42
- '.jar': 'application/java-archive',
43
- '.jpeg': 'image/jpeg',
44
- '.jpg': 'image/jpeg',
45
- '.js': 'text/javascript',
46
- '.json': 'application/json',
47
- '.jsonld': 'application/ld+json',
48
- '.mid': 'audio/midi',
49
- '.midi': 'audio/x-midi',
50
- '.mjs': 'text/javascript',
51
- '.mp3': 'audio/mpeg',
52
- '.mpeg': 'video/mpeg',
53
- '.mpkg': 'application/vnd.apple.installer+xml',
54
- '.odp': 'application/vnd.oasis.opendocument.presentation',
55
- '.ods': 'application/vnd.oasis.opendocument.spreadsheet',
56
- '.odt': 'application/vnd.oasis.opendocument.text',
57
- '.oga': 'audio/ogg',
58
- '.ogv': 'video/ogg',
59
- '.ogx': 'application/ogg',
60
- '.opus': 'audio/opus',
61
- '.otf': 'font/otf',
62
- '.png': 'image/png',
63
- '.pdf': 'application/pdf',
64
- '.php': 'application/php',
65
- '.ppt': 'application/vnd.ms-powerpoint',
66
- '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
67
- '.rar': 'application/vnd.rar',
68
- '.rtf': 'application/rtf',
69
- '.sh': 'application/x-sh',
70
- '.svg': 'image/svg+xml',
71
- '.swf': 'application/x-shockwave-flash',
72
- '.tar': 'application/x-tar',
73
- '.tif': 'image/tiff',
74
- '.tiff': 'image/tiff',
75
- '.ts': 'video/mp2t',
76
- '.ttf': 'font/ttf',
77
- '.txt': 'text/plain',
78
- '.vsd': 'application/vnd.visio',
79
- '.wav': 'audio/wav',
80
- '.weba': 'audio/webm',
81
- '.webm': 'video/webm',
82
- '.webp': 'image/webp',
83
- '.woff': 'font/woff',
84
- '.woff2': 'font/woff2',
85
- '.xhtml': 'application/xhtml+xml',
86
- '.xls': 'application/vnd.ms-excel',
87
- '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
88
- '.xml': 'application/xml',
89
- '.xul': 'application/vnd.mozilla.xul+xml',
90
- '.zip': 'application/zip',
91
- '.3gp': 'video/3gpp',
92
- '.3g2': 'video/3gpp2',
93
- '.7z': 'application/x-7z-compressed',
94
- };
95
88
  return contentTypes[extension] || contentTypes['.txt'];
96
89
  }
97
- function etag(body) {
90
+
91
+ const emptyEtag = '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';
92
+ function getEtag(body) {
98
93
  if (body.length === 0) {
99
94
  // fast-path empty
100
- return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';
95
+ return emptyEtag;
101
96
  }
102
97
  // compute hash of entity
103
- const hash = crypto.createHash('sha1').update(body, 'utf8').digest('base64').substring(0, 27);
98
+ const hash = crypto.createHash('sha1').update(body.toString('utf8'), 'utf8').digest('base64').substring(0, 27);
104
99
  // compute length of entity
105
100
  const len = typeof body === 'string' ? Buffer.byteLength(body, 'utf8') : body.length;
106
101
  return `"${len.toString(16)}-${hash}"`;
107
102
  }
103
+
104
+ // Byte order mark
105
+ const isUtf8 = (body) => body[0] === 0xef && body[1] === 0xbb && body[2] === 0xbf;
106
+ const isUtf16be = (body) => body[0] === 0xfe && body[1] === 0xff;
107
+ const isUtf16le = (body) => body[0] === 0xff && body[1] === 0xfe;
108
108
  // TODO: implement
109
- function getCharset(body, fileName) {
110
- // Byte order mark
111
- if (body[0] === 0xef && body[1] === 0xbb && body[2] === 0xbf)
109
+ async function getCharset(body, fileName) {
110
+ if (isUtf8(body))
112
111
  return 'utf8';
113
- if (body[0] === 0xfe && body[1] === 0xff)
112
+ if (isUtf16be(body))
114
113
  return 'utf16be';
115
- if (body[0] === 0xff && body[1] === 0xfe)
114
+ if (isUtf16le(body))
116
115
  return 'utf16le';
117
116
  if (body.indexOf('') === 0)
118
117
  return 'iso-8859-1';
119
118
  try {
120
- return child_process.execSync(`file -b --mime-encoding ${fileName}`).toString('utf8').trim();
119
+ return child_process.execSync(`file -b --mime-encoding ${fileName}`, { encoding: 'utf8' }).trim();
121
120
  }
122
121
  catch (e) {
123
122
  //
124
123
  }
125
- return false;
124
+ return '';
125
+ }
126
+
127
+ let timer;
128
+ function debounce(fn = () => { }, timeout = 0) {
129
+ if (timer)
130
+ clearTimeout(timer);
131
+ timer = setTimeout(() => {
132
+ timer = undefined;
133
+ fn();
134
+ }, timeout);
126
135
  }
127
- const staticWorker = (event, callback = () => { }) => {
136
+ const staticWorker = async (event, callback = () => { }) => {
128
137
  debounce(() => {
129
138
  console.log('Exiting static worker.');
130
139
  process.exit(0);
131
140
  }, 1000 * 60 * 30);
132
141
  const currentPath = `${event.path.replace(/\.{2,}/, '')}${/\/$/.test(event.path) ? 'index.html' : ''}`;
133
142
  const fileName = path.resolve(event.rootPath, `.${currentPath}`);
134
- if (['GET', 'HEAD'].includes(event.httpMethod) && fs.existsSync(fileName)) {
143
+ if (['GET', 'HEAD'].includes(event.httpMethod) && (await fileExists.fileExists(fileName))) {
135
144
  // TODO: range request
136
- const bodyBuffer = fs.readFileSync(fileName);
137
- const stats = fs.statSync(fileName);
145
+ const bodyBuffer = await fs.readFile(fileName);
146
+ const stats = await fs.stat(fileName);
138
147
  const extension = path.extname(fileName);
139
148
  const contentType = getContentType(extension);
140
- const currentEtag = etag(bodyBuffer);
141
- const charset = getCharset(bodyBuffer, fileName);
149
+ const currentEtag = getEtag(bodyBuffer);
150
+ const charset = await getCharset(bodyBuffer, fileName);
142
151
  const lastModified = new Date(stats.mtime);
143
152
  let isModified = true;
144
153
  if (event.headers['if-none-match'] === currentEtag) {
145
154
  isModified = false;
146
155
  }
147
- else if (event.headers['if-modified-since']) {
156
+ else if (stats.mtime && event.headers['if-modified-since']) {
148
157
  const ifModifiedSince = new Date(event.headers['if-modified-since']);
149
- if (ifModifiedSince.toUTCString() === lastModified.toUTCString()) {
150
- isModified = false;
151
- }
158
+ isModified = ifModifiedSince.toUTCString() !== lastModified.toUTCString();
152
159
  }
153
160
  const response = {
154
161
  statusCode: isModified ? 200 : 304,
@@ -159,12 +166,14 @@ const staticWorker = (event, callback = () => { }) => {
159
166
  ETag: currentEtag,
160
167
  ...(stats.mtime && { 'Last-Modified': lastModified.toUTCString() }),
161
168
  },
162
- body: isModified ? bodyBuffer.toString('base64') : '',
163
- isBase64Encoded: true,
169
+ body: '',
170
+ isBase64Encoded: false,
164
171
  };
165
- {
166
- callback(response);
172
+ if (isModified) {
173
+ response.body = bodyBuffer.toString('base64');
174
+ response.isBase64Encoded = true;
167
175
  }
176
+ callback(response);
168
177
  }
169
178
  else {
170
179
  callback({
@@ -173,7 +182,7 @@ const staticWorker = (event, callback = () => { }) => {
173
182
  'Content-Type': 'text/plain',
174
183
  'Cache-Control': 'public, max-age=0',
175
184
  },
176
- body: `${fileName} does not exist`,
185
+ body: `${currentPath} does not exist`,
177
186
  isBase64Encoded: false,
178
187
  });
179
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"staticWorker.js","sources":["../src/staticWorker.ts"],"sourcesContent":[null],"names":["execSync"],"mappings":"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"}
1
+ {"version":3,"file":"staticWorker.js","sources":["../src/utils/getContentType.ts","../src/utils/getEtag.ts","../src/utils/getCharset.ts","../src/staticWorker.ts"],"sourcesContent":[null,null,null,null],"names":["createHash","execSync","fileExists"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ /// <reference types="node" />
1
2
  import { WORKER_EVENT } from '../constants';
3
+ import { Request, Response } from 'express';
2
4
  export type RequestEvent = {
3
5
  httpMethod: string;
4
6
  protocol: string;
@@ -43,4 +45,20 @@ export type WSFrameEvent = {
43
45
  sendWsMessage: boolean;
44
46
  frame: string;
45
47
  };
46
- export type InvokableWorker = (event: RequestEvent, callback: (e: ResponseEvent) => void) => void;
48
+ export type InvokableWorker = (event: RequestEvent, callback: (e: ResponseEvent) => void) => unknown;
49
+ export interface MiddlewareOptions {
50
+ root: string;
51
+ limit?: number;
52
+ limitPerPath?: number | ((path: string) => number);
53
+ limitRequestBody?: number;
54
+ limitRequestTimeout?: number;
55
+ idleCheckTimeout?: number;
56
+ onStdout?: (data: Buffer) => void;
57
+ onStderr?: (data: Buffer) => void;
58
+ onExit?: (code: number, workerPath: string, id: string) => void;
59
+ onForbiddenPath: (request: Request, response: Response) => unknown;
60
+ index?: string[];
61
+ env?: object;
62
+ staticWorker?: string;
63
+ cwd?: string;
64
+ }
@@ -0,0 +1,2 @@
1
+ declare const fileExists: (fileName: string) => Promise<boolean>;
2
+ export default fileExists;
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ declare function getCharset(body: Buffer, fileName: string): Promise<string>;
3
+ export default getCharset;
@@ -0,0 +1,2 @@
1
+ declare function getContentType(extension?: string): string;
2
+ export default getContentType;
@@ -0,0 +1,3 @@
1
+ /// <reference types="node" />
2
+ declare function getEtag(body: Buffer): string;
3
+ export default getEtag;
@@ -0,0 +1,9 @@
1
+ /// <reference types="node" />
2
+ import { Stats } from 'fs';
3
+ declare function resolvePath(rootPath: string, pathFragments: string[], indexFiles: string[]): Promise<{
4
+ indexPath: string;
5
+ isWorker: boolean;
6
+ pathExists: boolean;
7
+ stats: Stats;
8
+ }>;
9
+ export default resolvePath;
@@ -1,19 +1,21 @@
1
+ import Worker from '@koeroesi86/node-worker';
2
+ interface WorkerPoolParams {
3
+ overallLimit?: number;
4
+ idleCheckTimeout?: number;
5
+ onExit?: (code: number, workerPath: string, id: string) => void;
6
+ }
1
7
  declare class WorkerPool {
2
8
  protected readonly overallLimit: number;
3
9
  protected readonly idleCheckTimeout: number;
4
10
  protected readonly onExit: (code: number, workerPath: string, id: string) => void;
5
- protected readonly workers: {};
6
- private _creating;
7
- constructor({ overallLimit, idleCheckTimeout, onExit }: {
8
- overallLimit?: number;
9
- idleCheckTimeout?: number;
10
- onExit?: () => void;
11
- });
12
- onClose(): void;
13
- getNonBusyId(workerPath: any): string;
14
- getWorkerCountForPath(p: any): number;
15
- getWorkerCount(): number;
16
- isBeyondLimit(workerPath: any, limit: any): boolean;
17
- getWorker(workerPath: any, options?: {}, limit?: number): any;
11
+ protected readonly workers: Record<string, Record<string, Worker>>;
12
+ private creating;
13
+ constructor({ overallLimit, idleCheckTimeout, onExit }: WorkerPoolParams);
14
+ onClose: () => void;
15
+ getNonBusyId: (workerPath: any) => string;
16
+ getWorkerCountForPath: (p: any) => number;
17
+ getWorkerCount: () => number;
18
+ isBeyondLimit: (workerPath: any, limit: any) => boolean;
19
+ getWorker: (workerPath: any, options?: {}, limit?: number) => Promise<Worker>;
18
20
  }
19
21
  export default WorkerPool;
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-aad82b3f.js');
3
+ var index = require('./index-749bd23e.js');
4
+ require('path');
4
5
 
5
- const worker = require(process.argv[2]);
6
+ const worker = require(process.argv.pop());
6
7
  function messageListener(message) {
7
8
  if (message.type === index.WORKER_EVENT.REQUEST) {
8
9
  process.send({
@@ -1 +1 @@
1
- {"version":3,"file":"workerInvoke.js","sources":["../src/workerInvoke.ts"],"sourcesContent":[null],"names":["WORKER_EVENT"],"mappings":";;;;AAGA,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAoB,CAAC;AAE3D,SAAS,eAAe,CAAC,OAAyB,EAAA;AAChD,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,OAAO,EAAE;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAEA,kBAAY,CAAC,mBAAmB;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,QAAQ,GAAG,CAAC,aAA2C,KAAI;AAC/D,YAAA,IAAI,CAAoB,CAAC;YAEzB,IAAI,eAAe,IAAI,aAAa,EAAE;AACpC,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,eAAe;oBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;iBAAM,IAAI,MAAM,IAAI,aAAa,EAAE;AAClC,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,aAAa;oBAChC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,QAAQ;oBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,kBAAkB,EAAE;AACpD,QAAA,MAAM,QAAQ,GAAG,CAAC,aAAa,KAAI;AACjC,YAAA,MAAM,CAAC,GAAsB;gBAC3B,IAAI,EAAEA,kBAAY,CAAC,eAAe;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,gBAAA,KAAK,EAAE,aAAa;aACrB,CAAC;AACF,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,mBAAmB,EAAE;AACrD,QAAA,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,aAA4B,KAAI;YAC1E,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAEA,kBAAY,CAAC,+BAA+B;gBAClD,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,gBAAA,KAAK,EAAE,aAAa;AACrB,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACJ,KAAA;AACH,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;;"}
1
+ {"version":3,"file":"workerInvoke.js","sources":["../src/workerInvoke.ts"],"sourcesContent":[null],"names":["WORKER_EVENT"],"mappings":";;;;;AAGA,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAoB,CAAC;AAE9D,SAAS,eAAe,CAAC,OAAyB,EAAA;AAChD,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,OAAO,EAAE;QACzC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAEA,kBAAY,CAAC,mBAAmB;YACtC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC7B,SAAA,CAAC,CAAC;AACH,QAAA,MAAM,QAAQ,GAAG,CAAC,aAA2C,KAAI;AAC/D,YAAA,IAAI,CAAoB,CAAC;YAEzB,IAAI,eAAe,IAAI,aAAa,EAAE;AACpC,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,eAAe;oBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;iBAAM,IAAI,MAAM,IAAI,aAAa,EAAE;AAClC,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,aAAa;oBAChC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;AAAM,iBAAA;AACL,gBAAA,CAAC,GAAG;oBACF,IAAI,EAAEA,kBAAY,CAAC,QAAQ;oBAC3B,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,oBAAA,KAAK,EAAE,aAAa;iBACrB,CAAC;AACH,aAAA;AACD,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,kBAAkB,EAAE;AACpD,QAAA,MAAM,QAAQ,GAAG,CAAC,aAAa,KAAI;AACjC,YAAA,MAAM,CAAC,GAAsB;gBAC3B,IAAI,EAAEA,kBAAY,CAAC,eAAe;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,gBAAA,KAAK,EAAE,aAAa;aACrB,CAAC;AACF,YAAA,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,SAAC,CAAC;AACF,QAAA,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAA;AAED,IAAA,IAAI,OAAO,CAAC,IAAI,KAAKA,kBAAY,CAAC,mBAAmB,EAAE;AACrD,QAAA,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,aAA4B,KAAI;YAC1E,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAEA,kBAAY,CAAC,+BAA+B;gBAClD,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,gBAAA,KAAK,EAAE,aAAa;AACrB,aAAA,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AACJ,KAAA;AACH,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koeroesi86/node-worker-express",
3
- "version": "v23.03.4419247067-main",
3
+ "version": "v23.03.4508640840-main",
4
4
  "description": "",
5
5
  "main": "dist",
6
6
  "typings": "dist",
@@ -1,15 +0,0 @@
1
- 'use strict';
2
-
3
- exports.WORKER_EVENT = void 0;
4
- (function (WORKER_EVENT) {
5
- WORKER_EVENT["REQUEST"] = "WORKER_REQUEST";
6
- WORKER_EVENT["REQUEST_ACKNOWLEDGE"] = "WORKER_REQUEST_ACK";
7
- WORKER_EVENT["RESPONSE"] = "WORKER_RESPONSE";
8
- WORKER_EVENT["RESPONSE_EMIT"] = "WORKER_RESPONSE_EMIT";
9
- WORKER_EVENT["RESPONSE_ACKNOWLEDGE"] = "WORKER_RESPONSE_ACK";
10
- WORKER_EVENT["WS_MESSAGE_RECEIVE"] = "WS_MESSAGE_RECEIVE";
11
- WORKER_EVENT["WS_MESSAGE_SEND"] = "WS_MESSAGE_SEND";
12
- WORKER_EVENT["WS_CONNECTION_CLOSE"] = "WS_CONNECTION_CLOSE";
13
- WORKER_EVENT["WS_CONNECTION_CLOSE_ACKNOWLEDGE"] = "WS_CONNECTION_CLOSE_ACK";
14
- })(exports.WORKER_EVENT || (exports.WORKER_EVENT = {}));
15
- //# sourceMappingURL=index-aad82b3f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-aad82b3f.js","sources":["../src/constants/index.ts"],"sourcesContent":[null],"names":["WORKER_EVENT"],"mappings":";;AAAYA,8BAUX;AAVD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,SAAA,CAAA,GAAA,gBAA0B,CAAA;AAC1B,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,oBAA0C,CAAA;AAC1C,IAAA,YAAA,CAAA,UAAA,CAAA,GAAA,iBAA4B,CAAA;AAC5B,IAAA,YAAA,CAAA,eAAA,CAAA,GAAA,sBAAsC,CAAA;AACtC,IAAA,YAAA,CAAA,sBAAA,CAAA,GAAA,qBAA4C,CAAA;AAC5C,IAAA,YAAA,CAAA,oBAAA,CAAA,GAAA,oBAAyC,CAAA;AACzC,IAAA,YAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,YAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C,CAAA;AAC3C,IAAA,YAAA,CAAA,iCAAA,CAAA,GAAA,yBAA2D,CAAA;AAC7D,CAAC,EAVWA,oBAAY,KAAZA,oBAAY,GAUvB,EAAA,CAAA,CAAA;;"}