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

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 (132) 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 +3 -6
  15. package/dist/es5/lib/node/worker_threads-browser.js.map +1 -1
  16. package/dist/es5/lib/node/worker_threads.js +0 -2
  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 +22 -36
  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 +1 -0
  64. package/dist/esm/lib/node/worker_threads-browser.js.map +1 -1
  65. package/dist/esm/lib/node/worker_threads.js.map +1 -1
  66. package/dist/esm/lib/process-utils/child-process-proxy.js +13 -25
  67. package/dist/esm/lib/process-utils/child-process-proxy.js.map +1 -1
  68. package/dist/esm/lib/process-utils/process-utils.js +3 -5
  69. package/dist/esm/lib/process-utils/process-utils.js.map +1 -1
  70. package/dist/esm/lib/worker-api/create-worker.js +4 -14
  71. package/dist/esm/lib/worker-api/create-worker.js.map +1 -1
  72. package/dist/esm/lib/worker-api/get-worker-url.js +6 -5
  73. package/dist/esm/lib/worker-api/get-worker-url.js.map +1 -1
  74. package/dist/esm/lib/worker-api/process-on-worker.js +9 -13
  75. package/dist/esm/lib/worker-api/process-on-worker.js.map +1 -1
  76. package/dist/esm/lib/worker-api/validate-worker-version.js +3 -2
  77. package/dist/esm/lib/worker-api/validate-worker-version.js.map +1 -1
  78. package/dist/esm/lib/worker-farm/worker-body.js +1 -13
  79. package/dist/esm/lib/worker-farm/worker-body.js.map +1 -1
  80. package/dist/esm/lib/worker-farm/worker-farm.js +9 -14
  81. package/dist/esm/lib/worker-farm/worker-farm.js.map +1 -1
  82. package/dist/esm/lib/worker-farm/worker-job.js +2 -9
  83. package/dist/esm/lib/worker-farm/worker-job.js.map +1 -1
  84. package/dist/esm/lib/worker-farm/worker-pool.js +8 -31
  85. package/dist/esm/lib/worker-farm/worker-pool.js.map +1 -1
  86. package/dist/esm/lib/worker-farm/worker-thread.js +3 -24
  87. package/dist/esm/lib/worker-farm/worker-thread.js.map +1 -1
  88. package/dist/esm/lib/worker-utils/get-loadable-worker-url.js +2 -3
  89. package/dist/esm/lib/worker-utils/get-loadable-worker-url.js.map +1 -1
  90. package/dist/esm/lib/worker-utils/get-transfer-list.js +26 -9
  91. package/dist/esm/lib/worker-utils/get-transfer-list.js.map +1 -1
  92. package/dist/esm/lib/worker-utils/remove-nontransferable-options.js +13 -18
  93. package/dist/esm/lib/worker-utils/remove-nontransferable-options.js.map +1 -1
  94. package/dist/esm/types.js.map +1 -1
  95. package/dist/esm/workers/null-worker.js.map +1 -1
  96. package/dist/index.d.ts +1 -1
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +2 -1
  99. package/dist/lib/library-utils/library-utils.js +5 -1
  100. package/dist/lib/node/worker_threads.js +5 -1
  101. package/dist/lib/process-utils/child-process-proxy.d.ts +1 -1
  102. package/dist/lib/process-utils/child-process-proxy.d.ts.map +1 -1
  103. package/dist/lib/process-utils/child-process-proxy.js +5 -1
  104. package/dist/lib/worker-api/create-worker.d.ts +1 -1
  105. package/dist/lib/worker-api/create-worker.d.ts.map +1 -1
  106. package/dist/lib/worker-api/process-on-worker.d.ts +1 -1
  107. package/dist/lib/worker-api/process-on-worker.d.ts.map +1 -1
  108. package/dist/lib/worker-api/process-on-worker.js +2 -2
  109. package/dist/lib/worker-farm/worker-farm.d.ts +1 -1
  110. package/dist/lib/worker-farm/worker-farm.d.ts.map +1 -1
  111. package/dist/lib/worker-farm/worker-farm.js +8 -8
  112. package/dist/lib/worker-farm/worker-pool.d.ts +4 -4
  113. package/dist/lib/worker-farm/worker-pool.d.ts.map +1 -1
  114. package/dist/lib/worker-farm/worker-pool.js +4 -4
  115. package/dist/lib/worker-farm/worker-thread.d.ts +1 -1
  116. package/dist/lib/worker-farm/worker-thread.d.ts.map +1 -1
  117. package/dist/lib/worker-farm/worker-thread.js +5 -4
  118. package/dist/lib/worker-utils/get-transfer-list.d.ts +5 -0
  119. package/dist/lib/worker-utils/get-transfer-list.d.ts.map +1 -1
  120. package/dist/lib/worker-utils/get-transfer-list.js +27 -1
  121. package/dist/lib/worker-utils/remove-nontransferable-options.d.ts +3 -3
  122. package/dist/lib/worker-utils/remove-nontransferable-options.d.ts.map +1 -1
  123. package/dist/lib/worker-utils/remove-nontransferable-options.js +18 -26
  124. package/dist/null-worker.js.map +1 -1
  125. package/dist/types.d.ts +9 -9
  126. package/dist/types.d.ts.map +1 -1
  127. package/package.json +2 -2
  128. package/src/index.ts +1 -1
  129. package/src/lib/worker-api/process-on-worker.ts +2 -2
  130. package/src/lib/worker-farm/worker-thread.ts +4 -1
  131. package/src/lib/worker-utils/get-transfer-list.ts +28 -0
  132. package/src/lib/worker-utils/remove-nontransferable-options.ts +17 -25
@@ -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
  }