web-csv-toolbox 0.13.0-next-7d51d5285be9cffa5103de58469d8de0c98959d7 → 0.13.0-next-b21b6d89a7a3f18dcbf79ec04ffefde0d7ff4c4c

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 (183) hide show
  1. package/README.md +6 -6
  2. package/dist/CSVLexer.js.map +1 -1
  3. package/dist/CSVLexerTransformer.js.map +1 -1
  4. package/dist/CSVRecordAssembler.js.map +1 -1
  5. package/dist/CSVRecordAssemblerTransformer.js.map +1 -1
  6. package/dist/_virtual/web_csv_toolbox_wasm_bg.wasm.js +1 -1
  7. package/dist/assertCommonOptions.js.map +1 -1
  8. package/dist/common/constants.js.map +1 -1
  9. package/dist/common/errors.js.map +1 -1
  10. package/dist/common/types.d.ts +311 -14
  11. package/dist/commonParseErrorHandling.js.map +1 -1
  12. package/dist/constants.js.map +1 -1
  13. package/dist/createWorker.node.d.ts +2 -0
  14. package/dist/createWorker.web.d.ts +2 -0
  15. package/dist/execution/EnginePresets.d.ts +143 -0
  16. package/dist/execution/EnginePresets.js +129 -0
  17. package/dist/execution/EnginePresets.js.map +1 -0
  18. package/dist/execution/InternalEngineConfig.d.ts +89 -0
  19. package/dist/execution/InternalEngineConfig.js +175 -0
  20. package/dist/execution/InternalEngineConfig.js.map +1 -0
  21. package/dist/execution/main/parseBinaryInMain.d.ts +12 -0
  22. package/dist/execution/main/parseStreamInMain.d.ts +12 -0
  23. package/dist/execution/main/parseStringInMain.d.ts +12 -0
  24. package/dist/execution/main/parseUint8ArrayStreamInMain.d.ts +12 -0
  25. package/dist/execution/wasm/parseBinaryInWASM.d.ts +18 -0
  26. package/dist/execution/wasm/parseBinaryInWASM.js +15 -0
  27. package/dist/execution/wasm/parseBinaryInWASM.js.map +1 -0
  28. package/dist/execution/wasm/parseStringInWASM.d.ts +16 -0
  29. package/dist/execution/worker/helpers/ReusableWorkerPool.d.ts +152 -0
  30. package/dist/execution/worker/helpers/ReusableWorkerPool.js +238 -0
  31. package/dist/execution/worker/helpers/ReusableWorkerPool.js.map +1 -0
  32. package/dist/execution/worker/helpers/TransientWorkerPool.d.ts +89 -0
  33. package/dist/execution/worker/helpers/WorkerManager.d.ts +27 -0
  34. package/dist/execution/worker/helpers/WorkerPool.d.ts +50 -0
  35. package/dist/execution/worker/helpers/WorkerSession.d.ts +78 -0
  36. package/dist/execution/worker/helpers/WorkerSession.js +58 -0
  37. package/dist/execution/worker/helpers/WorkerSession.js.map +1 -0
  38. package/dist/execution/worker/helpers/createWorker.node.d.ts +8 -0
  39. package/dist/execution/worker/helpers/createWorker.node.js +15 -0
  40. package/dist/execution/worker/helpers/createWorker.node.js.map +1 -0
  41. package/dist/execution/worker/helpers/createWorker.web.d.ts +8 -0
  42. package/dist/execution/worker/helpers/createWorker.web.js +11 -0
  43. package/dist/execution/worker/helpers/createWorker.web.js.map +1 -0
  44. package/dist/execution/worker/helpers/worker.node.d.ts +1 -0
  45. package/dist/execution/worker/helpers/worker.node.js +11 -0
  46. package/dist/execution/worker/helpers/worker.node.js.map +1 -0
  47. package/dist/execution/worker/helpers/worker.shared.d.ts +90 -0
  48. package/dist/execution/worker/helpers/worker.shared.js +241 -0
  49. package/dist/execution/worker/helpers/worker.shared.js.map +1 -0
  50. package/dist/execution/worker/helpers/worker.web.d.ts +1 -0
  51. package/dist/execution/worker/helpers/worker.web.js +16 -0
  52. package/dist/execution/worker/helpers/worker.web.js.map +1 -0
  53. package/dist/execution/worker/parseBinaryInWorker.node.d.ts +8 -0
  54. package/dist/execution/worker/parseBinaryInWorker.node.js +24 -0
  55. package/dist/execution/worker/parseBinaryInWorker.node.js.map +1 -0
  56. package/dist/execution/worker/parseBinaryInWorker.web.d.ts +8 -0
  57. package/dist/execution/worker/parseBinaryInWorker.web.js +24 -0
  58. package/dist/execution/worker/parseBinaryInWorker.web.js.map +1 -0
  59. package/dist/execution/worker/parseBinaryInWorkerWASM.node.d.ts +8 -0
  60. package/dist/execution/worker/parseBinaryInWorkerWASM.node.js +24 -0
  61. package/dist/execution/worker/parseBinaryInWorkerWASM.node.js.map +1 -0
  62. package/dist/execution/worker/parseBinaryInWorkerWASM.web.d.ts +8 -0
  63. package/dist/execution/worker/parseBinaryInWorkerWASM.web.js +24 -0
  64. package/dist/execution/worker/parseBinaryInWorkerWASM.web.js.map +1 -0
  65. package/dist/execution/worker/parseStreamInWorker.node.d.ts +15 -0
  66. package/dist/execution/worker/parseStreamInWorker.node.js +26 -0
  67. package/dist/execution/worker/parseStreamInWorker.node.js.map +1 -0
  68. package/dist/execution/worker/parseStreamInWorker.web.d.ts +12 -0
  69. package/dist/execution/worker/parseStreamInWorker.web.js +25 -0
  70. package/dist/execution/worker/parseStreamInWorker.web.js.map +1 -0
  71. package/dist/execution/worker/parseStringInWorker.node.d.ts +11 -0
  72. package/dist/execution/worker/parseStringInWorker.node.js +24 -0
  73. package/dist/execution/worker/parseStringInWorker.node.js.map +1 -0
  74. package/dist/execution/worker/parseStringInWorker.web.d.ts +11 -0
  75. package/dist/execution/worker/parseStringInWorker.web.js +24 -0
  76. package/dist/execution/worker/parseStringInWorker.web.js.map +1 -0
  77. package/dist/execution/worker/parseStringInWorkerWASM.node.d.ts +8 -0
  78. package/dist/execution/worker/parseStringInWorkerWASM.node.js +24 -0
  79. package/dist/execution/worker/parseStringInWorkerWASM.node.js.map +1 -0
  80. package/dist/execution/worker/parseStringInWorkerWASM.web.d.ts +8 -0
  81. package/dist/execution/worker/parseStringInWorkerWASM.web.js +24 -0
  82. package/dist/execution/worker/parseStringInWorkerWASM.web.js.map +1 -0
  83. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.d.ts +12 -0
  84. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.js +26 -0
  85. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.js.map +1 -0
  86. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.d.ts +9 -0
  87. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.js +25 -0
  88. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.js.map +1 -0
  89. package/dist/execution/worker/strategies/MessageStreamingStrategy.d.ts +17 -0
  90. package/dist/execution/worker/strategies/MessageStreamingStrategy.js +58 -0
  91. package/dist/execution/worker/strategies/MessageStreamingStrategy.js.map +1 -0
  92. package/dist/execution/worker/strategies/TransferableStreamStrategy.d.ts +25 -0
  93. package/dist/execution/worker/strategies/TransferableStreamStrategy.js +159 -0
  94. package/dist/execution/worker/strategies/TransferableStreamStrategy.js.map +1 -0
  95. package/dist/execution/worker/strategies/WorkerStrategy.d.ts +27 -0
  96. package/dist/execution/worker/strategies/WorkerStrategySelector.d.ts +43 -0
  97. package/dist/execution/worker/strategies/WorkerStrategySelector.js +89 -0
  98. package/dist/execution/worker/strategies/WorkerStrategySelector.js.map +1 -0
  99. package/dist/execution/worker/utils/messageHandler.d.ts +21 -0
  100. package/dist/execution/worker/utils/messageHandler.js +109 -0
  101. package/dist/execution/worker/utils/messageHandler.js.map +1 -0
  102. package/dist/execution/worker/utils/serializeOptions.d.ts +9 -0
  103. package/dist/execution/worker/utils/serializeOptions.js +14 -0
  104. package/dist/execution/worker/utils/serializeOptions.js.map +1 -0
  105. package/dist/execution/worker/utils/streamCollector.node.d.ts +14 -0
  106. package/dist/execution/worker/utils/streamCollector.node.js +78 -0
  107. package/dist/execution/worker/utils/streamCollector.node.js.map +1 -0
  108. package/dist/execution/worker/utils/workerUtils.d.ts +14 -0
  109. package/dist/execution/worker/utils/workerUtils.js +25 -0
  110. package/dist/execution/worker/utils/workerUtils.js.map +1 -0
  111. package/dist/getOptionsFromResponse.constants.node.d.ts +10 -0
  112. package/dist/getOptionsFromResponse.constants.node.js +8 -0
  113. package/dist/getOptionsFromResponse.constants.node.js.map +1 -0
  114. package/dist/getOptionsFromResponse.constants.web.d.ts +30 -0
  115. package/dist/getOptionsFromResponse.constants.web.js +7 -0
  116. package/dist/getOptionsFromResponse.constants.web.js.map +1 -0
  117. package/dist/getOptionsFromResponse.d.ts +2 -1
  118. package/dist/getOptionsFromResponse.js +5 -9
  119. package/dist/getOptionsFromResponse.js.map +1 -1
  120. package/dist/loadWASM.js.map +1 -1
  121. package/dist/loadWASM.web.js.map +1 -1
  122. package/dist/parse.d.ts +1 -1
  123. package/dist/parse.js +29 -5
  124. package/dist/parse.js.map +1 -1
  125. package/dist/parseBinary.d.ts +2 -1
  126. package/dist/parseBinary.js +32 -3
  127. package/dist/parseBinary.js.map +1 -1
  128. package/dist/parseBinaryInWorker.node.d.ts +2 -0
  129. package/dist/parseBinaryInWorker.web.d.ts +2 -0
  130. package/dist/parseBinaryInWorkerWASM.node.d.ts +2 -0
  131. package/dist/parseBinaryInWorkerWASM.web.d.ts +2 -0
  132. package/dist/parseBinaryToArraySync.d.ts +2 -1
  133. package/dist/parseBinaryToArraySync.js.map +1 -1
  134. package/dist/parseBinaryToIterableIterator.d.ts +2 -1
  135. package/dist/parseBinaryToIterableIterator.js.map +1 -1
  136. package/dist/parseBinaryToStream.d.ts +2 -1
  137. package/dist/parseBinaryToStream.js.map +1 -1
  138. package/dist/parseResponse.d.ts +1 -1
  139. package/dist/parseResponse.js +15 -8
  140. package/dist/parseResponse.js.map +1 -1
  141. package/dist/parseResponseToStream.d.ts +2 -1
  142. package/dist/parseResponseToStream.js.map +1 -1
  143. package/dist/parseStreamInWorker.node.d.ts +2 -0
  144. package/dist/parseStreamInWorker.web.d.ts +2 -0
  145. package/dist/parseString.d.ts +31 -0
  146. package/dist/parseString.js +27 -1
  147. package/dist/parseString.js.map +1 -1
  148. package/dist/parseStringInWorker.node.d.ts +2 -0
  149. package/dist/parseStringInWorker.web.d.ts +2 -0
  150. package/dist/parseStringInWorkerWASM.node.d.ts +2 -0
  151. package/dist/parseStringInWorkerWASM.web.d.ts +2 -0
  152. package/dist/parseStringStream.d.ts +43 -1
  153. package/dist/parseStringStream.js +24 -3
  154. package/dist/parseStringStream.js.map +1 -1
  155. package/dist/parseStringStreamToStream.js.map +1 -1
  156. package/dist/parseStringToArraySync.js.map +1 -1
  157. package/dist/parseStringToArraySyncWASM.js.map +1 -1
  158. package/dist/parseStringToIterableIterator.js.map +1 -1
  159. package/dist/parseStringToStream.js.map +1 -1
  160. package/dist/parseUint8ArrayStream.d.ts +4 -3
  161. package/dist/parseUint8ArrayStream.js +24 -3
  162. package/dist/parseUint8ArrayStream.js.map +1 -1
  163. package/dist/parseUint8ArrayStreamInWorker.node.d.ts +2 -0
  164. package/dist/parseUint8ArrayStreamInWorker.web.d.ts +2 -0
  165. package/dist/parseUint8ArrayStreamToStream.d.ts +2 -1
  166. package/dist/parseUint8ArrayStreamToStream.js +11 -5
  167. package/dist/parseUint8ArrayStreamToStream.js.map +1 -1
  168. package/dist/utils/convertBinaryToString.js.map +1 -1
  169. package/dist/utils/convertIterableIteratorToAsync.js.map +1 -1
  170. package/dist/utils/convertStreamToAsyncIterableIterator.js +2 -2
  171. package/dist/utils/convertStreamToAsyncIterableIterator.js.map +1 -1
  172. package/dist/utils/convertThisAsyncIterableIteratorToArray.d.ts +1 -1
  173. package/dist/utils/convertThisAsyncIterableIteratorToArray.js.map +1 -1
  174. package/dist/utils/escapeRegExp.js.map +1 -1
  175. package/dist/utils/parseMime.js.map +1 -1
  176. package/dist/utils/pipeline.js.map +1 -1
  177. package/dist/web-csv-toolbox.d.ts +4 -0
  178. package/dist/web-csv-toolbox.js +3 -0
  179. package/dist/web-csv-toolbox.js.map +1 -1
  180. package/dist/web_csv_toolbox_wasm_bg.wasm +0 -0
  181. package/dist/worker.node.d.ts +1 -0
  182. package/dist/worker.web.d.ts +1 -0
  183. package/package.json +53 -10
@@ -0,0 +1,89 @@
1
+ import { EngineConfig, EngineFallbackInfo, WorkerCommunicationStrategy } from '../common/types.ts';
2
+ import { WorkerPool } from './worker/helpers/WorkerPool.ts';
3
+ /**
4
+ * Engine flags bitmask (internal use).
5
+ * @internal
6
+ */
7
+ export declare enum EngineFlags {
8
+ WORKER = 1,// 0b00001 = 1
9
+ WASM = 2,// 0b00010 = 2
10
+ STREAM_TRANSFER = 4,// 0b00100 = 4
11
+ MESSAGE_STREAMING = 8,// 0b01000 = 8
12
+ STRICT = 16
13
+ }
14
+ /**
15
+ * Internal engine configuration manager.
16
+ *
17
+ * Manages engine configuration using bitmask for efficient flag operations.
18
+ *
19
+ * @internal
20
+ */
21
+ export declare class InternalEngineConfig {
22
+ private bitmask;
23
+ readonly workerURL?: string | URL;
24
+ readonly workerPool?: WorkerPool;
25
+ readonly onFallback?: (info: EngineFallbackInfo) => void;
26
+ constructor(config?: EngineConfig);
27
+ /**
28
+ * Private constructor for cloning.
29
+ */
30
+ private static fromBitmask;
31
+ private parse;
32
+ private applyDefaults;
33
+ private validate;
34
+ /**
35
+ * Check if a flag is set.
36
+ */
37
+ private hasFlag;
38
+ /**
39
+ * Add a flag.
40
+ */
41
+ private addFlag;
42
+ /**
43
+ * Remove a flag.
44
+ */
45
+ private removeFlag;
46
+ /**
47
+ * Check if worker execution is enabled.
48
+ */
49
+ hasWorker(): boolean;
50
+ /**
51
+ * Check if WASM is enabled.
52
+ */
53
+ hasWasm(): boolean;
54
+ /**
55
+ * Check if stream transfer is enabled.
56
+ */
57
+ hasStreamTransfer(): boolean;
58
+ /**
59
+ * Check if message streaming is enabled.
60
+ */
61
+ hasMessageStreaming(): boolean;
62
+ /**
63
+ * Check if strict mode is enabled.
64
+ */
65
+ hasStrict(): boolean;
66
+ /**
67
+ * Get worker communication strategy.
68
+ */
69
+ getWorkerStrategy(): WorkerCommunicationStrategy | undefined;
70
+ /**
71
+ * Create a fallback configuration.
72
+ *
73
+ * Converts stream-transfer to message-streaming and disables strict mode.
74
+ */
75
+ createFallbackConfig(): InternalEngineConfig;
76
+ /**
77
+ * Convert to EngineConfig.
78
+ */
79
+ toConfig(): EngineConfig;
80
+ /**
81
+ * Get bitmask for debugging.
82
+ * @internal
83
+ */
84
+ getBitmask(): number;
85
+ /**
86
+ * String representation for debugging.
87
+ */
88
+ toString(): string;
89
+ }
@@ -0,0 +1,175 @@
1
+ class InternalEngineConfig {
2
+ bitmask = 0;
3
+ workerURL;
4
+ workerPool;
5
+ onFallback;
6
+ constructor(config) {
7
+ if (config) {
8
+ this.workerURL = config.workerURL;
9
+ this.workerPool = config.workerPool;
10
+ this.onFallback = config.onFallback;
11
+ this.parse(config);
12
+ }
13
+ this.applyDefaults();
14
+ this.validate();
15
+ }
16
+ /**
17
+ * Private constructor for cloning.
18
+ */
19
+ static fromBitmask(bitmask, workerURL, workerPool, onFallback) {
20
+ const instance = Object.create(InternalEngineConfig.prototype);
21
+ instance.bitmask = bitmask;
22
+ instance.workerURL = workerURL;
23
+ instance.workerPool = workerPool;
24
+ instance.onFallback = onFallback;
25
+ return instance;
26
+ }
27
+ parse(config) {
28
+ if (config.worker) {
29
+ this.bitmask |= 1 /* WORKER */;
30
+ }
31
+ if (config.wasm) {
32
+ this.bitmask |= 2 /* WASM */;
33
+ }
34
+ if (config.workerStrategy === "stream-transfer") {
35
+ this.bitmask |= 4 /* STREAM_TRANSFER */;
36
+ } else if (config.workerStrategy === "message-streaming") {
37
+ this.bitmask |= 8 /* MESSAGE_STREAMING */;
38
+ }
39
+ if (config.strict) {
40
+ this.bitmask |= 16 /* STRICT */;
41
+ }
42
+ }
43
+ applyDefaults() {
44
+ if (this.hasWorker() && !this.hasStreamTransfer() && !this.hasMessageStreaming()) {
45
+ this.bitmask |= 8 /* MESSAGE_STREAMING */;
46
+ }
47
+ }
48
+ validate() {
49
+ if ((this.hasStreamTransfer() || this.hasMessageStreaming()) && !this.hasWorker()) {
50
+ throw new Error("workerStrategy requires worker: true in engine config");
51
+ }
52
+ if (this.hasStrict() && !this.hasStreamTransfer()) {
53
+ throw new Error(
54
+ 'strict requires workerStrategy: "stream-transfer" in engine config'
55
+ );
56
+ }
57
+ }
58
+ /**
59
+ * Check if a flag is set.
60
+ */
61
+ hasFlag(flag) {
62
+ return (this.bitmask & flag) !== 0;
63
+ }
64
+ /**
65
+ * Add a flag.
66
+ */
67
+ addFlag(flag) {
68
+ this.bitmask |= flag;
69
+ }
70
+ /**
71
+ * Remove a flag.
72
+ */
73
+ removeFlag(flag) {
74
+ this.bitmask &= ~flag;
75
+ }
76
+ /**
77
+ * Check if worker execution is enabled.
78
+ */
79
+ hasWorker() {
80
+ return this.hasFlag(1 /* WORKER */);
81
+ }
82
+ /**
83
+ * Check if WASM is enabled.
84
+ */
85
+ hasWasm() {
86
+ return this.hasFlag(2 /* WASM */);
87
+ }
88
+ /**
89
+ * Check if stream transfer is enabled.
90
+ */
91
+ hasStreamTransfer() {
92
+ return this.hasFlag(4 /* STREAM_TRANSFER */);
93
+ }
94
+ /**
95
+ * Check if message streaming is enabled.
96
+ */
97
+ hasMessageStreaming() {
98
+ return this.hasFlag(8 /* MESSAGE_STREAMING */);
99
+ }
100
+ /**
101
+ * Check if strict mode is enabled.
102
+ */
103
+ hasStrict() {
104
+ return this.hasFlag(16 /* STRICT */);
105
+ }
106
+ /**
107
+ * Get worker communication strategy.
108
+ */
109
+ getWorkerStrategy() {
110
+ if (this.hasStreamTransfer()) {
111
+ return "stream-transfer";
112
+ }
113
+ if (this.hasMessageStreaming()) {
114
+ return "message-streaming";
115
+ }
116
+ return void 0;
117
+ }
118
+ /**
119
+ * Create a fallback configuration.
120
+ *
121
+ * Converts stream-transfer to message-streaming and disables strict mode.
122
+ */
123
+ createFallbackConfig() {
124
+ let fallbackBitmask = this.bitmask;
125
+ if ((fallbackBitmask & 4 /* STREAM_TRANSFER */) !== 0) {
126
+ fallbackBitmask &= -5 /* STREAM_TRANSFER */;
127
+ fallbackBitmask |= 8 /* MESSAGE_STREAMING */;
128
+ }
129
+ if ((fallbackBitmask & 16 /* STRICT */) !== 0) {
130
+ fallbackBitmask &= -17 /* STRICT */;
131
+ }
132
+ return InternalEngineConfig.fromBitmask(
133
+ fallbackBitmask,
134
+ this.workerURL,
135
+ this.workerPool,
136
+ this.onFallback
137
+ );
138
+ }
139
+ /**
140
+ * Convert to EngineConfig.
141
+ */
142
+ toConfig() {
143
+ return {
144
+ worker: this.hasWorker() || void 0,
145
+ workerURL: this.workerURL,
146
+ workerPool: this.workerPool,
147
+ wasm: this.hasWasm() || void 0,
148
+ workerStrategy: this.getWorkerStrategy(),
149
+ strict: this.hasStrict() || void 0,
150
+ onFallback: this.onFallback
151
+ };
152
+ }
153
+ /**
154
+ * Get bitmask for debugging.
155
+ * @internal
156
+ */
157
+ getBitmask() {
158
+ return this.bitmask;
159
+ }
160
+ /**
161
+ * String representation for debugging.
162
+ */
163
+ toString() {
164
+ const parts = [];
165
+ if (this.hasWorker()) parts.push("worker");
166
+ if (this.hasWasm()) parts.push("wasm");
167
+ if (this.hasStreamTransfer()) parts.push("stream-transfer");
168
+ if (this.hasMessageStreaming()) parts.push("message-streaming");
169
+ if (this.hasStrict()) parts.push("strict");
170
+ return parts.join(" + ") || "main";
171
+ }
172
+ }
173
+
174
+ export { InternalEngineConfig };
175
+ //# sourceMappingURL=InternalEngineConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalEngineConfig.js","sources":["../../src/execution/InternalEngineConfig.ts"],"sourcesContent":["import type {\n EngineConfig,\n EngineFallbackInfo,\n WorkerCommunicationStrategy,\n} from \"../common/types.ts\";\nimport type { WorkerPool } from \"./worker/helpers/WorkerPool.ts\";\n\n/**\n * Engine flags bitmask (internal use).\n * @internal\n */\nexport enum EngineFlags {\n WORKER = 1 << 0, // 0b00001 = 1\n WASM = 1 << 1, // 0b00010 = 2\n STREAM_TRANSFER = 1 << 2, // 0b00100 = 4\n MESSAGE_STREAMING = 1 << 3, // 0b01000 = 8\n STRICT = 1 << 4, // 0b10000 = 16\n}\n\n/**\n * Internal engine configuration manager.\n *\n * Manages engine configuration using bitmask for efficient flag operations.\n *\n * @internal\n */\nexport class InternalEngineConfig {\n private bitmask = 0;\n readonly workerURL?: string | URL;\n readonly workerPool?: WorkerPool;\n readonly onFallback?: (info: EngineFallbackInfo) => void;\n\n constructor(config?: EngineConfig) {\n if (config) {\n this.workerURL = config.workerURL;\n this.workerPool = config.workerPool;\n this.onFallback = config.onFallback;\n this.parse(config);\n }\n\n this.applyDefaults();\n this.validate();\n }\n\n /**\n * Private constructor for cloning.\n */\n private static fromBitmask(\n bitmask: number,\n workerURL?: string | URL,\n workerPool?: WorkerPool,\n onFallback?: (info: EngineFallbackInfo) => void,\n ): InternalEngineConfig {\n const instance = Object.create(InternalEngineConfig.prototype);\n instance.bitmask = bitmask;\n (instance as { workerURL?: string | URL }).workerURL = workerURL;\n (instance as { workerPool?: WorkerPool }).workerPool = workerPool;\n (\n instance as { onFallback?: (info: EngineFallbackInfo) => void }\n ).onFallback = onFallback;\n return instance;\n }\n\n private parse(config: EngineConfig): void {\n if (config.worker) {\n this.bitmask |= EngineFlags.WORKER;\n }\n\n if (config.wasm) {\n this.bitmask |= EngineFlags.WASM;\n }\n\n if (config.workerStrategy === \"stream-transfer\") {\n this.bitmask |= EngineFlags.STREAM_TRANSFER;\n } else if (config.workerStrategy === \"message-streaming\") {\n this.bitmask |= EngineFlags.MESSAGE_STREAMING;\n }\n\n if (config.strict) {\n this.bitmask |= EngineFlags.STRICT;\n }\n }\n\n private applyDefaults(): void {\n // Worker without explicit strategy -> default to message-streaming\n if (\n this.hasWorker() &&\n !this.hasStreamTransfer() &&\n !this.hasMessageStreaming()\n ) {\n this.bitmask |= EngineFlags.MESSAGE_STREAMING;\n }\n }\n\n private validate(): void {\n // workerStrategy requires worker\n if (\n (this.hasStreamTransfer() || this.hasMessageStreaming()) &&\n !this.hasWorker()\n ) {\n throw new Error(\"workerStrategy requires worker: true in engine config\");\n }\n\n // strict requires stream-transfer\n if (this.hasStrict() && !this.hasStreamTransfer()) {\n throw new Error(\n 'strict requires workerStrategy: \"stream-transfer\" in engine config',\n );\n }\n }\n\n /**\n * Check if a flag is set.\n */\n private hasFlag(flag: EngineFlags): boolean {\n return (this.bitmask & flag) !== 0;\n }\n\n /**\n * Add a flag.\n */\n private addFlag(flag: EngineFlags): void {\n this.bitmask |= flag;\n }\n\n /**\n * Remove a flag.\n */\n private removeFlag(flag: EngineFlags): void {\n this.bitmask &= ~flag;\n }\n\n /**\n * Check if worker execution is enabled.\n */\n hasWorker(): boolean {\n return this.hasFlag(EngineFlags.WORKER);\n }\n\n /**\n * Check if WASM is enabled.\n */\n hasWasm(): boolean {\n return this.hasFlag(EngineFlags.WASM);\n }\n\n /**\n * Check if stream transfer is enabled.\n */\n hasStreamTransfer(): boolean {\n return this.hasFlag(EngineFlags.STREAM_TRANSFER);\n }\n\n /**\n * Check if message streaming is enabled.\n */\n hasMessageStreaming(): boolean {\n return this.hasFlag(EngineFlags.MESSAGE_STREAMING);\n }\n\n /**\n * Check if strict mode is enabled.\n */\n hasStrict(): boolean {\n return this.hasFlag(EngineFlags.STRICT);\n }\n\n /**\n * Get worker communication strategy.\n */\n getWorkerStrategy(): WorkerCommunicationStrategy | undefined {\n if (this.hasStreamTransfer()) {\n return \"stream-transfer\";\n }\n if (this.hasMessageStreaming()) {\n return \"message-streaming\";\n }\n return undefined;\n }\n\n /**\n * Create a fallback configuration.\n *\n * Converts stream-transfer to message-streaming and disables strict mode.\n */\n createFallbackConfig(): InternalEngineConfig {\n let fallbackBitmask = this.bitmask;\n\n // Stream transfer -> message streaming\n if ((fallbackBitmask & EngineFlags.STREAM_TRANSFER) !== 0) {\n fallbackBitmask &= ~EngineFlags.STREAM_TRANSFER;\n fallbackBitmask |= EngineFlags.MESSAGE_STREAMING;\n }\n\n // Disable strict mode\n if ((fallbackBitmask & EngineFlags.STRICT) !== 0) {\n fallbackBitmask &= ~EngineFlags.STRICT;\n }\n\n return InternalEngineConfig.fromBitmask(\n fallbackBitmask,\n this.workerURL,\n this.workerPool,\n this.onFallback,\n );\n }\n\n /**\n * Convert to EngineConfig.\n */\n toConfig(): EngineConfig {\n return {\n worker: this.hasWorker() || undefined,\n workerURL: this.workerURL,\n workerPool: this.workerPool,\n wasm: this.hasWasm() || undefined,\n workerStrategy: this.getWorkerStrategy(),\n strict: this.hasStrict() || undefined,\n onFallback: this.onFallback,\n };\n }\n\n /**\n * Get bitmask for debugging.\n * @internal\n */\n getBitmask(): number {\n return this.bitmask;\n }\n\n /**\n * String representation for debugging.\n */\n toString(): string {\n const parts: string[] = [];\n if (this.hasWorker()) parts.push(\"worker\");\n if (this.hasWasm()) parts.push(\"wasm\");\n if (this.hasStreamTransfer()) parts.push(\"stream-transfer\");\n if (this.hasMessageStreaming()) parts.push(\"message-streaming\");\n if (this.hasStrict()) parts.push(\"strict\");\n return parts.join(\" + \") || \"main\";\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV binary in main thread.
5
+ * This is the default binary parsing implementation.
6
+ *
7
+ * @internal
8
+ * @param binary CSV binary to parse (Uint8Array or ArrayBuffer)
9
+ * @param options Parsing options
10
+ * @returns Async iterable iterator of records
11
+ */
12
+ export declare function parseBinaryInMain<Header extends ReadonlyArray<string>, Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION>(binary: Uint8Array | ArrayBuffer, options?: ParseBinaryOptions<Header, Delimiter, Quotation>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,12 @@
1
+ import { CSVRecord, ParseOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV stream in main thread.
5
+ * This is the default streaming implementation.
6
+ *
7
+ * @internal
8
+ * @param stream CSV string stream to parse
9
+ * @param options Parsing options
10
+ * @returns Async iterable iterator of records
11
+ */
12
+ export declare function parseStreamInMain<Header extends ReadonlyArray<string>, Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION>(stream: ReadableStream<string>, options?: ParseOptions<Header, Delimiter, Quotation>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,12 @@
1
+ import { CSVRecord, ParseOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV string in main thread.
5
+ * This is the default implementation.
6
+ *
7
+ * @internal
8
+ * @param csv CSV string to parse
9
+ * @param options Parsing options
10
+ * @returns Async iterable iterator of records
11
+ */
12
+ export declare function parseStringInMain<Header extends ReadonlyArray<string>, Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION>(csv: string, options?: ParseOptions<Header, Delimiter, Quotation>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,12 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV Uint8Array stream in main thread.
5
+ * This is the default streaming implementation.
6
+ *
7
+ * @internal
8
+ * @param stream CSV Uint8Array stream to parse
9
+ * @param options Parsing options
10
+ * @returns Async iterable iterator of records
11
+ */
12
+ export declare function parseUint8ArrayStreamInMain<Header extends ReadonlyArray<string>, Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION>(stream: ReadableStream<Uint8Array>, options?: ParseBinaryOptions<Header, Delimiter, Quotation>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,18 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ /**
3
+ * Parse CSV binary using WebAssembly in main thread.
4
+ *
5
+ * @internal
6
+ * @param binary CSV binary to parse
7
+ * @param options Parsing options
8
+ * @returns Async iterable iterator of records
9
+ * @throws {RangeError} If the binary size exceeds maxBinarySize limit or charset is not supported.
10
+ * @throws {TypeError} If the encoded data is not valid for the specified charset.
11
+ *
12
+ * @remarks
13
+ * Converts binary to string then uses WASM parser.
14
+ * WASM parser has limitations:
15
+ * - Only supports UTF-8 encoding
16
+ * - Only supports double-quote (") as quotation character
17
+ */
18
+ export declare function parseBinaryInWASM<Header extends ReadonlyArray<string>>(binary: Uint8Array | ArrayBuffer, options?: ParseBinaryOptions<Header>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,15 @@
1
+ import { parseStringToArraySyncWASM } from '../../parseStringToArraySyncWASM.js';
2
+ import { convertBinaryToString } from '../../utils/convertBinaryToString.js';
3
+
4
+ function parseBinaryInWASM(binary, options) {
5
+ const csv = convertBinaryToString(binary, options ?? {});
6
+ const records = parseStringToArraySyncWASM(csv, options);
7
+ return (async function* () {
8
+ for (const record of records) {
9
+ yield record;
10
+ }
11
+ })();
12
+ }
13
+
14
+ export { parseBinaryInWASM };
15
+ //# sourceMappingURL=parseBinaryInWASM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBinaryInWASM.js","sources":["../../../src/execution/wasm/parseBinaryInWASM.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"../../common/types.ts\";\nimport { parseStringToArraySyncWASM } from \"../../parseStringToArraySyncWASM.ts\";\nimport { convertBinaryToString } from \"../../utils/convertBinaryToString.ts\";\n\n/**\n * Parse CSV binary using WebAssembly in main thread.\n *\n * @internal\n * @param binary CSV binary to parse\n * @param options Parsing options\n * @returns Async iterable iterator of records\n * @throws {RangeError} If the binary size exceeds maxBinarySize limit or charset is not supported.\n * @throws {TypeError} If the encoded data is not valid for the specified charset.\n *\n * @remarks\n * Converts binary to string then uses WASM parser.\n * WASM parser has limitations:\n * - Only supports UTF-8 encoding\n * - Only supports double-quote (\") as quotation character\n */\nexport function parseBinaryInWASM<Header extends ReadonlyArray<string>>(\n binary: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n // Convert binary to string with proper option handling\n const csv = convertBinaryToString(binary, options ?? {});\n\n // Use WASM parser\n const records = parseStringToArraySyncWASM(csv, options);\n\n // Convert array to async iterator\n return (async function* () {\n for (const record of records) {\n yield record;\n }\n })();\n}\n"],"names":[],"mappings":";;;AAoBO,SAAS,iBAAA,CACd,QACA,OAAA,EAC0C;AAE1C,EAAA,MAAM,GAAA,GAAM,qBAAA,CAAsB,MAAA,EAAQ,OAAA,IAAW,EAAE,CAAA;AAGvD,EAAA,MAAM,OAAA,GAAU,0BAAA,CAA2B,GAAA,EAAK,OAAO,CAAA;AAGvD,EAAA,OAAA,CAAQ,mBAAmB;AACzB,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,MAAA;AAAA,IACR;AAAA,EACF,CAAA,GAAG;AACL;;;;"}
@@ -0,0 +1,16 @@
1
+ import { CSVRecord, ParseOptions } from '../../common/types.ts';
2
+ /**
3
+ * Parse CSV string using WebAssembly in main thread.
4
+ *
5
+ * @internal
6
+ * @param csv CSV string to parse
7
+ * @param options Parsing options
8
+ * @returns Async iterable iterator of records
9
+ *
10
+ * @remarks
11
+ * WASM parser has limitations:
12
+ * - Only supports UTF-8 encoding
13
+ * - Only supports double-quote (") as quotation character
14
+ * - Synchronous operation (no streaming)
15
+ */
16
+ export declare function parseStringInWASM<Header extends ReadonlyArray<string>>(csv: string, options?: ParseOptions<Header>): AsyncIterableIterator<CSVRecord<Header>>;
@@ -0,0 +1,152 @@
1
+ import { WorkerPool } from './WorkerPool.ts';
2
+ /**
3
+ * Options for configuring the ReusableWorkerPool.
4
+ */
5
+ export interface ReusableWorkerPoolOptions {
6
+ /**
7
+ * Maximum number of worker instances in the pool.
8
+ *
9
+ * @default 1
10
+ *
11
+ * @remarks
12
+ * **Security Recommendation:**
13
+ * For production applications that accept user uploads, set this to a reasonable limit (e.g., 2-4)
14
+ * to prevent resource exhaustion attacks. Without limits, malicious users could spawn unlimited
15
+ * workers by uploading multiple large CSV files simultaneously, leading to memory exhaustion and DoS.
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * // Recommended for production
20
+ * const pool = new ReusableReusableWorkerPool({ maxWorkers: 4 });
21
+ * ```
22
+ */
23
+ maxWorkers?: number;
24
+ /**
25
+ * Custom worker URL to use for all workers in the pool.
26
+ */
27
+ workerURL?: string | URL;
28
+ }
29
+ export declare class ReusableWorkerPool implements WorkerPool, Disposable {
30
+ private workers;
31
+ private requestId;
32
+ private currentWorkerIndex;
33
+ private readonly maxWorkers;
34
+ private readonly customWorkerURL?;
35
+ private pendingWorkerCreations;
36
+ private pendingCreationsByURL;
37
+ private disposed;
38
+ private nextPendingId;
39
+ /**
40
+ * Create a new ReusableWorkerPool.
41
+ *
42
+ * @param options - Configuration options for the pool
43
+ */
44
+ constructor(options?: ReusableWorkerPoolOptions);
45
+ /**
46
+ * Get a worker instance from the pool using round-robin load balancing.
47
+ *
48
+ * @param workerURL - Optional custom worker URL (overrides pool's workerURL)
49
+ * @returns A worker instance from the pool
50
+ * @internal
51
+ */
52
+ getWorker(workerURL?: string | URL): Promise<Worker>;
53
+ /**
54
+ * Get the next request ID for this pool.
55
+ *
56
+ * @returns The next request ID
57
+ * @internal
58
+ */
59
+ getNextRequestId(): number;
60
+ /**
61
+ * Release a worker back to the pool.
62
+ * For ReusableWorkerPool, this does nothing as workers are kept alive and reused.
63
+ *
64
+ * @param _worker - The worker to release
65
+ * @internal
66
+ */
67
+ releaseWorker(_worker: Worker): void;
68
+ /**
69
+ * Get the current number of workers in the pool.
70
+ *
71
+ * @returns The number of active workers
72
+ */
73
+ get size(): number;
74
+ /**
75
+ * Check if the pool has reached its maximum capacity.
76
+ *
77
+ * @returns True if the pool is at maximum capacity, false otherwise
78
+ *
79
+ * @remarks
80
+ * This method is useful for implementing early rejection of requests
81
+ * when the worker pool is saturated, preventing resource exhaustion.
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * import { Hono } from 'hono';
86
+ * import { ReusableWorkerPool } from 'web-csv-toolbox';
87
+ *
88
+ * const pool = new ReusableWorkerPool({ maxWorkers: 4 });
89
+ *
90
+ * app.post('/validate-csv', async (c) => {
91
+ * // Early rejection if pool is saturated
92
+ * if (pool.isFull()) {
93
+ * return c.json({ error: 'Service busy, please try again later' }, 503);
94
+ * }
95
+ *
96
+ * // Process CSV...
97
+ * });
98
+ * ```
99
+ */
100
+ isFull(): boolean;
101
+ /**
102
+ * Terminate all workers in the pool and clean up resources.
103
+ *
104
+ * This method should be called when the pool is no longer needed,
105
+ * typically during application shutdown.
106
+ *
107
+ * @example
108
+ * ```ts
109
+ * const pool = new ReusableWorkerPool({ maxWorkers: 4 });
110
+ *
111
+ * // When shutting down
112
+ * pool.terminate();
113
+ * ```
114
+ *
115
+ * @example With Hono
116
+ * ```ts
117
+ * import { Hono } from 'hono';
118
+ * import { ReusableWorkerPool } from 'web-csv-toolbox';
119
+ *
120
+ * const app = new Hono();
121
+ * const pool = new ReusableWorkerPool({ maxWorkers: 4 });
122
+ *
123
+ * app.onShutdown(() => {
124
+ * pool.terminate();
125
+ * });
126
+ * ```
127
+ */
128
+ terminate(): void;
129
+ /**
130
+ * Dispose of the worker pool, terminating all workers.
131
+ *
132
+ * This method is called automatically when using the `using` syntax.
133
+ * For manual cleanup, use {@link terminate} instead.
134
+ *
135
+ * @example With `using` syntax (automatic cleanup)
136
+ * ```ts
137
+ * using pool = new ReusableWorkerPool({ maxWorkers: 4 });
138
+ * // Workers are automatically terminated when leaving scope
139
+ * ```
140
+ *
141
+ * @example Manual cleanup
142
+ * ```ts
143
+ * const pool = new ReusableWorkerPool({ maxWorkers: 4 });
144
+ * try {
145
+ * // Use pool
146
+ * } finally {
147
+ * pool.terminate(); // Preferred over pool[Symbol.dispose]()
148
+ * }
149
+ * ```
150
+ */
151
+ [Symbol.dispose](): void;
152
+ }