@loaders.gl/worker-utils 3.3.0-alpha.1 → 3.3.0-alpha.11

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 (142) hide show
  1. package/dist/es5/index.js +39 -50
  2. package/dist/es5/index.js.map +1 -1
  3. package/dist/es5/lib/async-queue/async-queue.js +15 -22
  4. package/dist/es5/lib/async-queue/async-queue.js.map +1 -1
  5. package/dist/es5/lib/env-utils/assert.js.map +1 -1
  6. package/dist/es5/lib/env-utils/globals.js +7 -4
  7. package/dist/es5/lib/env-utils/globals.js.map +1 -1
  8. package/dist/es5/lib/env-utils/version.js +3 -3
  9. package/dist/es5/lib/env-utils/version.js.map +1 -1
  10. package/dist/es5/lib/library-utils/library-utils.js +6 -45
  11. package/dist/es5/lib/library-utils/library-utils.js.map +1 -1
  12. package/dist/es5/lib/node/require-utils.node.js +0 -22
  13. package/dist/es5/lib/node/require-utils.node.js.map +1 -1
  14. package/dist/es5/lib/node/worker_threads-browser.js +13 -9
  15. package/dist/es5/lib/node/worker_threads-browser.js.map +1 -1
  16. package/dist/es5/lib/node/worker_threads.js +15 -6
  17. package/dist/es5/lib/node/worker_threads.js.map +1 -1
  18. package/dist/es5/lib/process-utils/child-process-proxy.js +6 -49
  19. package/dist/es5/lib/process-utils/child-process-proxy.js.map +1 -1
  20. package/dist/es5/lib/process-utils/process-utils.js +0 -7
  21. package/dist/es5/lib/process-utils/process-utils.js.map +1 -1
  22. package/dist/es5/lib/worker-api/create-worker.js +40 -96
  23. package/dist/es5/lib/worker-api/create-worker.js.map +1 -1
  24. package/dist/es5/lib/worker-api/get-worker-url.js +2 -7
  25. package/dist/es5/lib/worker-api/get-worker-url.js.map +1 -1
  26. package/dist/es5/lib/worker-api/process-on-worker.js +15 -41
  27. package/dist/es5/lib/worker-api/process-on-worker.js.map +1 -1
  28. package/dist/es5/lib/worker-api/validate-worker-version.js +0 -4
  29. package/dist/es5/lib/worker-api/validate-worker-version.js.map +1 -1
  30. package/dist/es5/lib/worker-farm/worker-body.js +13 -30
  31. package/dist/es5/lib/worker-farm/worker-body.js.map +1 -1
  32. package/dist/es5/lib/worker-farm/worker-farm.js +21 -32
  33. package/dist/es5/lib/worker-farm/worker-farm.js.map +1 -1
  34. package/dist/es5/lib/worker-farm/worker-job.js +9 -13
  35. package/dist/es5/lib/worker-farm/worker-job.js.map +1 -1
  36. package/dist/es5/lib/worker-farm/worker-pool.js +18 -51
  37. package/dist/es5/lib/worker-farm/worker-pool.js.map +1 -1
  38. package/dist/es5/lib/worker-farm/worker-thread.js +24 -37
  39. package/dist/es5/lib/worker-farm/worker-thread.js.map +1 -1
  40. package/dist/es5/lib/worker-utils/get-loadable-worker-url.js +1 -5
  41. package/dist/es5/lib/worker-utils/get-loadable-worker-url.js.map +1 -1
  42. package/dist/es5/lib/worker-utils/get-transfer-list.js +22 -10
  43. package/dist/es5/lib/worker-utils/get-transfer-list.js.map +1 -1
  44. package/dist/es5/lib/worker-utils/remove-nontransferable-options.js +12 -21
  45. package/dist/es5/lib/worker-utils/remove-nontransferable-options.js.map +1 -1
  46. package/dist/es5/types.js.map +1 -1
  47. package/dist/es5/workers/null-worker.js +0 -6
  48. package/dist/es5/workers/null-worker.js.map +1 -1
  49. package/dist/esm/index.js +9 -1
  50. package/dist/esm/index.js.map +1 -1
  51. package/dist/esm/lib/async-queue/async-queue.js +1 -14
  52. package/dist/esm/lib/async-queue/async-queue.js.map +1 -1
  53. package/dist/esm/lib/env-utils/assert.js +2 -0
  54. package/dist/esm/lib/env-utils/assert.js.map +1 -1
  55. package/dist/esm/lib/env-utils/globals.js +9 -1
  56. package/dist/esm/lib/env-utils/globals.js.map +1 -1
  57. package/dist/esm/lib/env-utils/version.js +4 -3
  58. package/dist/esm/lib/env-utils/version.js.map +1 -1
  59. package/dist/esm/lib/library-utils/library-utils.js +10 -12
  60. package/dist/esm/lib/library-utils/library-utils.js.map +1 -1
  61. package/dist/esm/lib/node/require-utils.node.js +7 -9
  62. package/dist/esm/lib/node/require-utils.node.js.map +1 -1
  63. package/dist/esm/lib/node/worker_threads-browser.js +6 -1
  64. package/dist/esm/lib/node/worker_threads-browser.js.map +1 -1
  65. package/dist/esm/lib/node/worker_threads.js +4 -0
  66. package/dist/esm/lib/node/worker_threads.js.map +1 -1
  67. package/dist/esm/lib/process-utils/child-process-proxy.js +13 -25
  68. package/dist/esm/lib/process-utils/child-process-proxy.js.map +1 -1
  69. package/dist/esm/lib/process-utils/process-utils.js +3 -5
  70. package/dist/esm/lib/process-utils/process-utils.js.map +1 -1
  71. package/dist/esm/lib/worker-api/create-worker.js +4 -14
  72. package/dist/esm/lib/worker-api/create-worker.js.map +1 -1
  73. package/dist/esm/lib/worker-api/get-worker-url.js +6 -5
  74. package/dist/esm/lib/worker-api/get-worker-url.js.map +1 -1
  75. package/dist/esm/lib/worker-api/process-on-worker.js +9 -13
  76. package/dist/esm/lib/worker-api/process-on-worker.js.map +1 -1
  77. package/dist/esm/lib/worker-api/validate-worker-version.js +3 -2
  78. package/dist/esm/lib/worker-api/validate-worker-version.js.map +1 -1
  79. package/dist/esm/lib/worker-farm/worker-body.js +1 -13
  80. package/dist/esm/lib/worker-farm/worker-body.js.map +1 -1
  81. package/dist/esm/lib/worker-farm/worker-farm.js +9 -14
  82. package/dist/esm/lib/worker-farm/worker-farm.js.map +1 -1
  83. package/dist/esm/lib/worker-farm/worker-job.js +2 -9
  84. package/dist/esm/lib/worker-farm/worker-job.js.map +1 -1
  85. package/dist/esm/lib/worker-farm/worker-pool.js +8 -31
  86. package/dist/esm/lib/worker-farm/worker-pool.js.map +1 -1
  87. package/dist/esm/lib/worker-farm/worker-thread.js +5 -25
  88. package/dist/esm/lib/worker-farm/worker-thread.js.map +1 -1
  89. package/dist/esm/lib/worker-utils/get-loadable-worker-url.js +2 -3
  90. package/dist/esm/lib/worker-utils/get-loadable-worker-url.js.map +1 -1
  91. package/dist/esm/lib/worker-utils/get-transfer-list.js +26 -9
  92. package/dist/esm/lib/worker-utils/get-transfer-list.js.map +1 -1
  93. package/dist/esm/lib/worker-utils/remove-nontransferable-options.js +13 -18
  94. package/dist/esm/lib/worker-utils/remove-nontransferable-options.js.map +1 -1
  95. package/dist/esm/types.js.map +1 -1
  96. package/dist/esm/workers/null-worker.js.map +1 -1
  97. package/dist/index.d.ts +1 -1
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +2 -1
  100. package/dist/lib/library-utils/library-utils.js +5 -1
  101. package/dist/lib/node/worker_threads-browser.d.ts +5 -2
  102. package/dist/lib/node/worker_threads-browser.d.ts.map +1 -1
  103. package/dist/lib/node/worker_threads-browser.js +4 -1
  104. package/dist/lib/node/worker_threads.d.ts +4 -1
  105. package/dist/lib/node/worker_threads.d.ts.map +1 -1
  106. package/dist/lib/node/worker_threads.js +21 -1
  107. package/dist/lib/process-utils/child-process-proxy.d.ts +1 -1
  108. package/dist/lib/process-utils/child-process-proxy.d.ts.map +1 -1
  109. package/dist/lib/process-utils/child-process-proxy.js +5 -1
  110. package/dist/lib/worker-api/create-worker.d.ts +1 -1
  111. package/dist/lib/worker-api/create-worker.d.ts.map +1 -1
  112. package/dist/lib/worker-api/create-worker.js +1 -1
  113. package/dist/lib/worker-api/process-on-worker.d.ts +1 -1
  114. package/dist/lib/worker-api/process-on-worker.d.ts.map +1 -1
  115. package/dist/lib/worker-api/process-on-worker.js +2 -2
  116. package/dist/lib/worker-farm/worker-farm.d.ts +1 -1
  117. package/dist/lib/worker-farm/worker-farm.d.ts.map +1 -1
  118. package/dist/lib/worker-farm/worker-farm.js +8 -8
  119. package/dist/lib/worker-farm/worker-pool.d.ts +4 -4
  120. package/dist/lib/worker-farm/worker-pool.d.ts.map +1 -1
  121. package/dist/lib/worker-farm/worker-pool.js +4 -4
  122. package/dist/lib/worker-farm/worker-thread.d.ts +4 -5
  123. package/dist/lib/worker-farm/worker-thread.d.ts.map +1 -1
  124. package/dist/lib/worker-farm/worker-thread.js +8 -6
  125. package/dist/lib/worker-utils/get-transfer-list.d.ts +5 -0
  126. package/dist/lib/worker-utils/get-transfer-list.d.ts.map +1 -1
  127. package/dist/lib/worker-utils/get-transfer-list.js +27 -1
  128. package/dist/lib/worker-utils/remove-nontransferable-options.d.ts +3 -3
  129. package/dist/lib/worker-utils/remove-nontransferable-options.d.ts.map +1 -1
  130. package/dist/lib/worker-utils/remove-nontransferable-options.js +18 -26
  131. package/dist/null-worker.js.map +1 -1
  132. package/dist/types.d.ts +9 -9
  133. package/dist/types.d.ts.map +1 -1
  134. package/package.json +3 -3
  135. package/src/index.ts +1 -1
  136. package/src/lib/node/{worker_threads-browser.js → worker_threads-browser.ts} +6 -1
  137. package/src/lib/node/worker_threads.ts +6 -0
  138. package/src/lib/worker-api/process-on-worker.ts +2 -2
  139. package/src/lib/worker-farm/worker-thread.ts +10 -5
  140. package/src/lib/worker-utils/get-transfer-list.ts +28 -0
  141. package/src/lib/worker-utils/remove-nontransferable-options.ts +17 -25
  142. package/src/lib/node/worker_threads.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa,GAAG;IAE1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,oBAAY,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,GAAG,CAAC;AAElG,oBAAY,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAC9B,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB;;GAEG;AACH,oBAAY,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAmBF,oBAAY,iBAAiB,GACzB,SAAS,GACT,MAAM,GACN,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,YAAY,GACZ,cAAc,CAAC;AAEnB,oBAAY,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,oBAAY,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAE1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,GAAG,CAAC;AAElG,MAAM,MAAM,gBAAgB,GAAG,CAC7B,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAC9B,OAAO,CAAC,EAAE,aAAa,KACpB,aAAa,CAAC,GAAG,CAAC,CAAC;AAExB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,OAAO,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AAmBF,MAAM,MAAM,iBAAiB,GACzB,SAAS,GACT,MAAM,GACN,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,YAAY,GACZ,cAAc,CAAC;AAEnB,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,OAAO,CAAC,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACzB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/worker-utils",
3
- "version": "3.3.0-alpha.1",
3
+ "version": "3.3.0-alpha.11",
4
4
  "description": "Utilities for running tasks on worker threads",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -27,7 +27,7 @@
27
27
  "browser": {
28
28
  "child_process": false,
29
29
  "fs": false,
30
- "./src/lib/node/worker_threads.js": "./src/lib/node/worker_threads-browser.js",
30
+ "./src/lib/node/worker_threads.ts": "./src/lib/node/worker_threads-browser.ts",
31
31
  "./dist/lib/node/worker_threads.js": "./dist/lib/node/worker_threads-browser.js",
32
32
  "./dist/es5/lib/node/worker_threads.js": "./dist/es5/lib/node/worker_threads-browser.js",
33
33
  "./dist/esm/lib/node/worker_threads.js": "./dist/esm/lib/node/worker_threads-browser.js",
@@ -49,5 +49,5 @@
49
49
  "dependencies": {
50
50
  "@babel/runtime": "^7.3.1"
51
51
  },
52
- "gitHead": "85ed2df7d17dd0d204c8bd8feb44779f70bc693b"
52
+ "gitHead": "1863a8875f63d578c0fdf5bdb3b7d6827f799db9"
53
53
  }
package/src/index.ts CHANGED
@@ -31,7 +31,7 @@ export {createWorker} from './lib/worker-api/create-worker';
31
31
  // WORKER UTILS - EXPORTS
32
32
  export {getWorkerURL} from './lib/worker-api/get-worker-url';
33
33
  export {validateWorkerVersion} from './lib/worker-api/validate-worker-version';
34
- export {getTransferList} from './lib/worker-utils/get-transfer-list';
34
+ export {getTransferList, getTransferListForWriter} from './lib/worker-utils/get-transfer-list';
35
35
 
36
36
  // LIBRARY UTILS
37
37
  export {getLibraryUrl, loadLibrary} from './lib/library-utils/library-utils';
@@ -2,6 +2,11 @@
2
2
  // These fills are non-functional, and just intended to ensure that
3
3
  // `import 'worker_threads` doesn't break browser builds.
4
4
  // The replacement is done in package.json browser field
5
- export class Worker {}
5
+ export class Worker {
6
+ terminate() {}
7
+ }
8
+
9
+ export {Worker as NodeWorker};
10
+ export {Worker as NodeWorkerType};
6
11
 
7
12
  export const parentPort = null;
@@ -0,0 +1,6 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import * as WorkerThreads from 'worker_threads';
4
+ export * from 'worker_threads';
5
+ export const NodeWorker = WorkerThreads.Worker;
6
+ export type NodeWorkerType = WorkerThreads.Worker;
@@ -7,8 +7,8 @@ import type {
7
7
  } from '../../types';
8
8
  import type WorkerJob from '../worker-farm/worker-job';
9
9
  import WorkerFarm from '../worker-farm/worker-farm';
10
- import {removeNontransferableOptions} from '../worker-utils/remove-nontransferable-options';
11
10
  import {getWorkerURL, getWorkerName} from './get-worker-url';
11
+ import {getTransferListForWriter} from '../worker-utils/get-transfer-list';
12
12
 
13
13
  type ProcessOnWorkerOptions = WorkerOptions & {
14
14
  jobName?: string;
@@ -58,7 +58,7 @@ export async function processOnWorker(
58
58
  );
59
59
 
60
60
  // Kick off the processing in the worker
61
- const transferableOptions = removeNontransferableOptions(options);
61
+ const transferableOptions = getTransferListForWriter(options);
62
62
  job.postMessage('process', {input: data, options: transferableOptions});
63
63
 
64
64
  const result = await job.result;
@@ -1,4 +1,6 @@
1
- import {Worker as NodeWorker} from '../node/worker_threads';
1
+ // loaders.gl, MIT license
2
+
3
+ import {NodeWorker, NodeWorkerType} from '../node/worker_threads';
2
4
  import {isBrowser} from '../env-utils/globals';
3
5
  import {assert} from '../env-utils/assert';
4
6
  import {getLoadableWorkerURL} from '../worker-utils/get-loadable-worker-url';
@@ -20,7 +22,7 @@ export default class WorkerThread {
20
22
  readonly source: string | undefined;
21
23
  readonly url: string | undefined;
22
24
  terminated: boolean = false;
23
- worker: Worker | NodeWorker;
25
+ worker: Worker | NodeWorkerType;
24
26
  onMessage: (message: any) => void;
25
27
  onError: (error: Error) => void;
26
28
 
@@ -28,7 +30,10 @@ export default class WorkerThread {
28
30
 
29
31
  /** Checks if workers are supported on this platform */
30
32
  static isSupported(): boolean {
31
- return (typeof Worker !== 'undefined' && isBrowser) || typeof NodeWorker !== undefined;
33
+ return (
34
+ (typeof Worker !== 'undefined' && isBrowser) ||
35
+ (typeof NodeWorker !== 'undefined' && !isBrowser)
36
+ );
32
37
  }
33
38
 
34
39
  constructor(props: WorkerThreadProps) {
@@ -121,8 +126,8 @@ export default class WorkerThread {
121
126
  * Creates a worker thread in node.js
122
127
  * @todo https://nodejs.org/api/async_hooks.html#async-resource-worker-pool
123
128
  */
124
- _createNodeWorker(): NodeWorker {
125
- let worker: NodeWorker;
129
+ _createNodeWorker(): NodeWorkerType {
130
+ let worker: NodeWorkerType;
126
131
  if (this.url) {
127
132
  // Make sure relative URLs start with './'
128
133
  const absolute = this.url.includes(':/') || this.url.startsWith('/');
@@ -59,3 +59,31 @@ function isTransferable(object: unknown) {
59
59
  }
60
60
  return false;
61
61
  }
62
+
63
+ /**
64
+ * Recursively drop non serializable values like functions and regexps.
65
+ * @param object
66
+ */
67
+ export function getTransferListForWriter(object: object | null): object {
68
+ if (object === null) {
69
+ return {};
70
+ }
71
+ const clone = Object.assign({}, object);
72
+
73
+ Object.keys(clone).forEach((key) => {
74
+ // Typed Arrays and Arrays are passed with no change
75
+ if (
76
+ typeof object[key] === 'object' &&
77
+ !ArrayBuffer.isView(object[key]) &&
78
+ !(object[key] instanceof Array)
79
+ ) {
80
+ clone[key] = getTransferListForWriter(object[key]);
81
+ } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {
82
+ clone[key] = {};
83
+ } else {
84
+ clone[key] = object[key];
85
+ }
86
+ });
87
+
88
+ return clone;
89
+ }
@@ -1,31 +1,23 @@
1
1
  /**
2
- * Safely stringify JSON (drop non serializable values like functions and regexps)
3
- * @param value
2
+ * Recursively drop non serializable values like functions and regexps.
3
+ * @param object
4
4
  */
5
- export function removeNontransferableOptions(object: object): object {
6
- // options.log object contains functions which cannot be transferred
7
- // TODO - decide how to handle logging on workers
8
- // TODO - warn if options stringification is long
9
- return JSON.parse(stringifyJSON(object));
10
- }
5
+ export function removeNontransferableOptions(object: object | null): object {
6
+ if (object === null) {
7
+ return {};
8
+ }
9
+ const clone = Object.assign({}, object);
11
10
 
12
- function stringifyJSON(v: unknown) {
13
- const cache = new Set();
14
- return JSON.stringify(v, (key, value) => {
15
- if (typeof value === 'object' && value !== null) {
16
- if (cache.has(value)) {
17
- // Circular reference found
18
- try {
19
- // If this value does not reference a parent it can be deduped
20
- return JSON.parse(JSON.stringify(value));
21
- } catch (err) {
22
- // discard key if value cannot be deduped
23
- return undefined;
24
- }
25
- }
26
- // Store value in our set
27
- cache.add(value);
11
+ Object.keys(clone).forEach((key) => {
12
+ // Checking if it is an object and not a typed array.
13
+ if (typeof object[key] === 'object' && !ArrayBuffer.isView(object[key])) {
14
+ clone[key] = removeNontransferableOptions(object[key]);
15
+ } else if (typeof clone[key] === 'function' || clone[key] instanceof RegExp) {
16
+ clone[key] = {};
17
+ } else {
18
+ clone[key] = object[key];
28
19
  }
29
- return value;
30
20
  });
21
+
22
+ return clone;
31
23
  }
@@ -1 +0,0 @@
1
- export * from 'worker_threads';