web-csv-toolbox 0.13.0-next-7d51d5285be9cffa5103de58469d8de0c98959d7 → 0.13.0-next-9da8ea20512f2a1e07c4d78092cecedb63cd5455

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 (189) hide show
  1. package/README.md +6 -6
  2. package/dist/CSVLexer.js.map +1 -1
  3. package/dist/CSVLexerTransformer.d.ts +12 -14
  4. package/dist/CSVLexerTransformer.js +10 -14
  5. package/dist/CSVLexerTransformer.js.map +1 -1
  6. package/dist/CSVRecordAssembler.d.ts +2 -2
  7. package/dist/CSVRecordAssembler.js +62 -44
  8. package/dist/CSVRecordAssembler.js.map +1 -1
  9. package/dist/CSVRecordAssemblerTransformer.d.ts +10 -10
  10. package/dist/CSVRecordAssemblerTransformer.js +4 -4
  11. package/dist/CSVRecordAssemblerTransformer.js.map +1 -1
  12. package/dist/_virtual/web_csv_toolbox_wasm_bg.wasm.js +1 -1
  13. package/dist/assertCommonOptions.js.map +1 -1
  14. package/dist/common/constants.js.map +1 -1
  15. package/dist/common/errors.js.map +1 -1
  16. package/dist/common/types.d.ts +311 -14
  17. package/dist/commonParseErrorHandling.js.map +1 -1
  18. package/dist/constants.js.map +1 -1
  19. package/dist/createWorker.node.d.ts +2 -0
  20. package/dist/createWorker.web.d.ts +2 -0
  21. package/dist/execution/EnginePresets.d.ts +143 -0
  22. package/dist/execution/EnginePresets.js +129 -0
  23. package/dist/execution/EnginePresets.js.map +1 -0
  24. package/dist/execution/InternalEngineConfig.d.ts +89 -0
  25. package/dist/execution/InternalEngineConfig.js +175 -0
  26. package/dist/execution/InternalEngineConfig.js.map +1 -0
  27. package/dist/execution/main/parseBinaryInMain.d.ts +12 -0
  28. package/dist/execution/main/parseStreamInMain.d.ts +12 -0
  29. package/dist/execution/main/parseStringInMain.d.ts +12 -0
  30. package/dist/execution/main/parseUint8ArrayStreamInMain.d.ts +12 -0
  31. package/dist/execution/wasm/parseBinaryInWASM.d.ts +18 -0
  32. package/dist/execution/wasm/parseBinaryInWASM.js +15 -0
  33. package/dist/execution/wasm/parseBinaryInWASM.js.map +1 -0
  34. package/dist/execution/wasm/parseStringInWASM.d.ts +16 -0
  35. package/dist/execution/worker/helpers/ReusableWorkerPool.d.ts +152 -0
  36. package/dist/execution/worker/helpers/ReusableWorkerPool.js +238 -0
  37. package/dist/execution/worker/helpers/ReusableWorkerPool.js.map +1 -0
  38. package/dist/execution/worker/helpers/TransientWorkerPool.d.ts +89 -0
  39. package/dist/execution/worker/helpers/WorkerManager.d.ts +27 -0
  40. package/dist/execution/worker/helpers/WorkerPool.d.ts +50 -0
  41. package/dist/execution/worker/helpers/WorkerSession.d.ts +78 -0
  42. package/dist/execution/worker/helpers/WorkerSession.js +58 -0
  43. package/dist/execution/worker/helpers/WorkerSession.js.map +1 -0
  44. package/dist/execution/worker/helpers/createWorker.node.d.ts +8 -0
  45. package/dist/execution/worker/helpers/createWorker.node.js +15 -0
  46. package/dist/execution/worker/helpers/createWorker.node.js.map +1 -0
  47. package/dist/execution/worker/helpers/createWorker.web.d.ts +8 -0
  48. package/dist/execution/worker/helpers/createWorker.web.js +11 -0
  49. package/dist/execution/worker/helpers/createWorker.web.js.map +1 -0
  50. package/dist/execution/worker/helpers/worker.node.d.ts +1 -0
  51. package/dist/execution/worker/helpers/worker.node.js +11 -0
  52. package/dist/execution/worker/helpers/worker.node.js.map +1 -0
  53. package/dist/execution/worker/helpers/worker.shared.d.ts +90 -0
  54. package/dist/execution/worker/helpers/worker.shared.js +241 -0
  55. package/dist/execution/worker/helpers/worker.shared.js.map +1 -0
  56. package/dist/execution/worker/helpers/worker.web.d.ts +1 -0
  57. package/dist/execution/worker/helpers/worker.web.js +16 -0
  58. package/dist/execution/worker/helpers/worker.web.js.map +1 -0
  59. package/dist/execution/worker/parseBinaryInWorker.node.d.ts +8 -0
  60. package/dist/execution/worker/parseBinaryInWorker.node.js +24 -0
  61. package/dist/execution/worker/parseBinaryInWorker.node.js.map +1 -0
  62. package/dist/execution/worker/parseBinaryInWorker.web.d.ts +8 -0
  63. package/dist/execution/worker/parseBinaryInWorker.web.js +24 -0
  64. package/dist/execution/worker/parseBinaryInWorker.web.js.map +1 -0
  65. package/dist/execution/worker/parseBinaryInWorkerWASM.node.d.ts +8 -0
  66. package/dist/execution/worker/parseBinaryInWorkerWASM.node.js +24 -0
  67. package/dist/execution/worker/parseBinaryInWorkerWASM.node.js.map +1 -0
  68. package/dist/execution/worker/parseBinaryInWorkerWASM.web.d.ts +8 -0
  69. package/dist/execution/worker/parseBinaryInWorkerWASM.web.js +24 -0
  70. package/dist/execution/worker/parseBinaryInWorkerWASM.web.js.map +1 -0
  71. package/dist/execution/worker/parseStreamInWorker.node.d.ts +15 -0
  72. package/dist/execution/worker/parseStreamInWorker.node.js +26 -0
  73. package/dist/execution/worker/parseStreamInWorker.node.js.map +1 -0
  74. package/dist/execution/worker/parseStreamInWorker.web.d.ts +12 -0
  75. package/dist/execution/worker/parseStreamInWorker.web.js +25 -0
  76. package/dist/execution/worker/parseStreamInWorker.web.js.map +1 -0
  77. package/dist/execution/worker/parseStringInWorker.node.d.ts +11 -0
  78. package/dist/execution/worker/parseStringInWorker.node.js +24 -0
  79. package/dist/execution/worker/parseStringInWorker.node.js.map +1 -0
  80. package/dist/execution/worker/parseStringInWorker.web.d.ts +11 -0
  81. package/dist/execution/worker/parseStringInWorker.web.js +24 -0
  82. package/dist/execution/worker/parseStringInWorker.web.js.map +1 -0
  83. package/dist/execution/worker/parseStringInWorkerWASM.node.d.ts +8 -0
  84. package/dist/execution/worker/parseStringInWorkerWASM.node.js +24 -0
  85. package/dist/execution/worker/parseStringInWorkerWASM.node.js.map +1 -0
  86. package/dist/execution/worker/parseStringInWorkerWASM.web.d.ts +8 -0
  87. package/dist/execution/worker/parseStringInWorkerWASM.web.js +24 -0
  88. package/dist/execution/worker/parseStringInWorkerWASM.web.js.map +1 -0
  89. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.d.ts +12 -0
  90. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.js +26 -0
  91. package/dist/execution/worker/parseUint8ArrayStreamInWorker.node.js.map +1 -0
  92. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.d.ts +9 -0
  93. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.js +25 -0
  94. package/dist/execution/worker/parseUint8ArrayStreamInWorker.web.js.map +1 -0
  95. package/dist/execution/worker/strategies/MessageStreamingStrategy.d.ts +17 -0
  96. package/dist/execution/worker/strategies/MessageStreamingStrategy.js +58 -0
  97. package/dist/execution/worker/strategies/MessageStreamingStrategy.js.map +1 -0
  98. package/dist/execution/worker/strategies/TransferableStreamStrategy.d.ts +25 -0
  99. package/dist/execution/worker/strategies/TransferableStreamStrategy.js +159 -0
  100. package/dist/execution/worker/strategies/TransferableStreamStrategy.js.map +1 -0
  101. package/dist/execution/worker/strategies/WorkerStrategy.d.ts +27 -0
  102. package/dist/execution/worker/strategies/WorkerStrategySelector.d.ts +43 -0
  103. package/dist/execution/worker/strategies/WorkerStrategySelector.js +89 -0
  104. package/dist/execution/worker/strategies/WorkerStrategySelector.js.map +1 -0
  105. package/dist/execution/worker/utils/messageHandler.d.ts +21 -0
  106. package/dist/execution/worker/utils/messageHandler.js +109 -0
  107. package/dist/execution/worker/utils/messageHandler.js.map +1 -0
  108. package/dist/execution/worker/utils/serializeOptions.d.ts +9 -0
  109. package/dist/execution/worker/utils/serializeOptions.js +14 -0
  110. package/dist/execution/worker/utils/serializeOptions.js.map +1 -0
  111. package/dist/execution/worker/utils/streamCollector.node.d.ts +14 -0
  112. package/dist/execution/worker/utils/streamCollector.node.js +78 -0
  113. package/dist/execution/worker/utils/streamCollector.node.js.map +1 -0
  114. package/dist/execution/worker/utils/workerUtils.d.ts +14 -0
  115. package/dist/execution/worker/utils/workerUtils.js +25 -0
  116. package/dist/execution/worker/utils/workerUtils.js.map +1 -0
  117. package/dist/getOptionsFromResponse.constants.node.d.ts +10 -0
  118. package/dist/getOptionsFromResponse.constants.node.js +8 -0
  119. package/dist/getOptionsFromResponse.constants.node.js.map +1 -0
  120. package/dist/getOptionsFromResponse.constants.web.d.ts +30 -0
  121. package/dist/getOptionsFromResponse.constants.web.js +7 -0
  122. package/dist/getOptionsFromResponse.constants.web.js.map +1 -0
  123. package/dist/getOptionsFromResponse.d.ts +2 -1
  124. package/dist/getOptionsFromResponse.js +5 -9
  125. package/dist/getOptionsFromResponse.js.map +1 -1
  126. package/dist/loadWASM.js.map +1 -1
  127. package/dist/loadWASM.web.js.map +1 -1
  128. package/dist/parse.d.ts +1 -1
  129. package/dist/parse.js +29 -5
  130. package/dist/parse.js.map +1 -1
  131. package/dist/parseBinary.d.ts +2 -1
  132. package/dist/parseBinary.js +32 -3
  133. package/dist/parseBinary.js.map +1 -1
  134. package/dist/parseBinaryInWorker.node.d.ts +2 -0
  135. package/dist/parseBinaryInWorker.web.d.ts +2 -0
  136. package/dist/parseBinaryInWorkerWASM.node.d.ts +2 -0
  137. package/dist/parseBinaryInWorkerWASM.web.d.ts +2 -0
  138. package/dist/parseBinaryToArraySync.d.ts +2 -1
  139. package/dist/parseBinaryToArraySync.js.map +1 -1
  140. package/dist/parseBinaryToIterableIterator.d.ts +2 -1
  141. package/dist/parseBinaryToIterableIterator.js.map +1 -1
  142. package/dist/parseBinaryToStream.d.ts +2 -1
  143. package/dist/parseBinaryToStream.js.map +1 -1
  144. package/dist/parseResponse.d.ts +1 -1
  145. package/dist/parseResponse.js +15 -8
  146. package/dist/parseResponse.js.map +1 -1
  147. package/dist/parseResponseToStream.d.ts +2 -1
  148. package/dist/parseResponseToStream.js.map +1 -1
  149. package/dist/parseStreamInWorker.node.d.ts +2 -0
  150. package/dist/parseStreamInWorker.web.d.ts +2 -0
  151. package/dist/parseString.d.ts +31 -0
  152. package/dist/parseString.js +27 -1
  153. package/dist/parseString.js.map +1 -1
  154. package/dist/parseStringInWorker.node.d.ts +2 -0
  155. package/dist/parseStringInWorker.web.d.ts +2 -0
  156. package/dist/parseStringInWorkerWASM.node.d.ts +2 -0
  157. package/dist/parseStringInWorkerWASM.web.d.ts +2 -0
  158. package/dist/parseStringStream.d.ts +43 -1
  159. package/dist/parseStringStream.js +24 -3
  160. package/dist/parseStringStream.js.map +1 -1
  161. package/dist/parseStringStreamToStream.js.map +1 -1
  162. package/dist/parseStringToArraySync.js.map +1 -1
  163. package/dist/parseStringToArraySyncWASM.js.map +1 -1
  164. package/dist/parseStringToIterableIterator.js.map +1 -1
  165. package/dist/parseStringToStream.js.map +1 -1
  166. package/dist/parseUint8ArrayStream.d.ts +4 -3
  167. package/dist/parseUint8ArrayStream.js +24 -3
  168. package/dist/parseUint8ArrayStream.js.map +1 -1
  169. package/dist/parseUint8ArrayStreamInWorker.node.d.ts +2 -0
  170. package/dist/parseUint8ArrayStreamInWorker.web.d.ts +2 -0
  171. package/dist/parseUint8ArrayStreamToStream.d.ts +2 -1
  172. package/dist/parseUint8ArrayStreamToStream.js +11 -5
  173. package/dist/parseUint8ArrayStreamToStream.js.map +1 -1
  174. package/dist/utils/convertBinaryToString.js.map +1 -1
  175. package/dist/utils/convertIterableIteratorToAsync.js.map +1 -1
  176. package/dist/utils/convertStreamToAsyncIterableIterator.js +2 -2
  177. package/dist/utils/convertStreamToAsyncIterableIterator.js.map +1 -1
  178. package/dist/utils/convertThisAsyncIterableIteratorToArray.d.ts +1 -1
  179. package/dist/utils/convertThisAsyncIterableIteratorToArray.js.map +1 -1
  180. package/dist/utils/escapeRegExp.js.map +1 -1
  181. package/dist/utils/parseMime.js.map +1 -1
  182. package/dist/utils/pipeline.js.map +1 -1
  183. package/dist/web-csv-toolbox.d.ts +4 -0
  184. package/dist/web-csv-toolbox.js +3 -0
  185. package/dist/web-csv-toolbox.js.map +1 -1
  186. package/dist/web_csv_toolbox_wasm_bg.wasm +0 -0
  187. package/dist/worker.node.d.ts +1 -0
  188. package/dist/worker.web.d.ts +1 -0
  189. package/package.json +53 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.node.js","sources":["../../../../src/execution/worker/helpers/worker.node.ts"],"sourcesContent":["// @ts-nocheck - Node.js-specific file, skip in tsc --noEmit\nimport { parentPort } from \"node:worker_threads\";\nimport { type ParseRequest, createMessageHandler } from \"./worker.shared.ts\";\n\n/**\n * Node.js Worker Threads implementation for CSV parsing.\n * Uses the Worker Threads API (Node.js).\n *\n * @internal\n */\n\nif (!parentPort) {\n throw new Error(\"This module must be run in a Worker Thread context\");\n}\n\n// Create message handler with Node.js Worker Threads context\nconst messageHandler = createMessageHandler(parentPort);\n\n// Register message listener (Node.js Worker Threads API)\n// In Node.js, message data is passed directly, not wrapped in event.data\nparentPort.on(\"message\", (message: ParseRequest) => {\n messageHandler(message);\n});\n"],"names":[],"mappings":";;;AAWA,IAAI,CAAC,UAAA,EAAY;AACf,EAAA,MAAM,IAAI,MAAM,oDAAoD,CAAA;AACtE;AAGA,MAAM,cAAA,GAAiB,qBAAqB,UAAU,CAAA;AAItD,UAAA,CAAW,EAAA,CAAG,SAAA,EAAW,CAAC,OAAA,KAA0B;AAClD,EAAA,cAAA,CAAe,OAAO,CAAA;AACxB,CAAC,CAAA"}
@@ -0,0 +1,90 @@
1
+ import { CSVRecord, ParseBinaryOptions, ParseOptions } from '../../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../../constants.ts';
3
+ /**
4
+ * Base interface for Worker requests
5
+ * @internal
6
+ */
7
+ interface BaseParseRequest {
8
+ id: number;
9
+ useWASM?: boolean;
10
+ resultPort?: MessagePort;
11
+ }
12
+ /**
13
+ * Parse string request
14
+ * @internal
15
+ */
16
+ export interface ParseStringRequest<Header extends ReadonlyArray<string> = readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest {
17
+ type: "parseString";
18
+ data: string;
19
+ options?: ParseOptions<Header, Delimiter, Quotation>;
20
+ }
21
+ /**
22
+ * Parse binary request
23
+ * @internal
24
+ */
25
+ export interface ParseBinaryRequest<Header extends ReadonlyArray<string> = readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest {
26
+ type: "parseBinary";
27
+ data: Uint8Array | ArrayBuffer;
28
+ options?: ParseBinaryOptions<Header, Delimiter, Quotation>;
29
+ }
30
+ /**
31
+ * Parse string stream request
32
+ * @internal
33
+ */
34
+ export interface ParseStringStreamRequest<Header extends ReadonlyArray<string> = readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest {
35
+ type: "parseStream" | "parseStringStream";
36
+ data?: ReadableStream<string>;
37
+ stream?: ReadableStream<string>;
38
+ options?: ParseOptions<Header, Delimiter, Quotation>;
39
+ }
40
+ /**
41
+ * Parse binary stream request
42
+ * @internal
43
+ */
44
+ export interface ParseUint8ArrayStreamRequest<Header extends ReadonlyArray<string> = readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest {
45
+ type: "parseUint8ArrayStream";
46
+ data?: ReadableStream<Uint8Array>;
47
+ stream?: ReadableStream<Uint8Array>;
48
+ options?: ParseBinaryOptions<Header, Delimiter, Quotation>;
49
+ }
50
+ /**
51
+ * Message types for Worker communication.
52
+ * @internal
53
+ */
54
+ export type ParseRequest<Header extends ReadonlyArray<string> = readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> = ParseStringRequest<Header, Delimiter, Quotation> | ParseBinaryRequest<Header, Delimiter, Quotation> | ParseStringStreamRequest<Header, Delimiter, Quotation> | ParseUint8ArrayStreamRequest<Header, Delimiter, Quotation>;
55
+ export interface ParseResponse<Header extends ReadonlyArray<string> = readonly string[]> {
56
+ id: number;
57
+ result?: CSVRecord<Header>[] | ReadableStream<CSVRecord<Header>>;
58
+ error?: string;
59
+ }
60
+ export interface ParseStreamResponse<Header extends ReadonlyArray<string> = readonly string[]> {
61
+ id: number;
62
+ type: "record" | "done" | "error";
63
+ record?: CSVRecord<Header>;
64
+ error?: string;
65
+ }
66
+ /**
67
+ * Worker context interface (unified for Web Workers and Worker Threads)
68
+ * @internal
69
+ */
70
+ export interface WorkerContext<Header extends ReadonlyArray<string> = readonly string[]> {
71
+ postMessage(message: ParseStreamResponse<Header>): void;
72
+ }
73
+ /**
74
+ * Helper to stream records incrementally to avoid memory issues.
75
+ * @internal
76
+ */
77
+ export declare const streamRecordsToMain: <Header extends ReadonlyArray<string> = readonly string[]>(workerContext: WorkerContext<Header>, id: number, records: AsyncIterableIterator<CSVRecord<Header>> | Iterable<CSVRecord<Header>>) => Promise<void>;
78
+ /**
79
+ * Helper to stream records to a MessagePort (for TransferableStream strategy).
80
+ * @internal
81
+ */
82
+ export declare const streamRecordsToPort: <Header extends ReadonlyArray<string> = readonly string[]>(port: MessagePort, records: AsyncIterableIterator<CSVRecord<Header>> | Iterable<CSVRecord<Header>>) => Promise<void>;
83
+ /**
84
+ * Worker message handler for CSV parsing.
85
+ * Handles different parsing strategies (regular, WASM, streaming).
86
+ *
87
+ * @internal
88
+ */
89
+ export declare const createMessageHandler: (workerContext: WorkerContext) => (request: ParseRequest) => Promise<void>;
90
+ export {};
@@ -0,0 +1,241 @@
1
+ const streamRecordsToMain = async (workerContext, id, records) => {
2
+ try {
3
+ for await (const record of records) {
4
+ const response = {
5
+ id,
6
+ type: "record",
7
+ record
8
+ };
9
+ workerContext.postMessage(response);
10
+ }
11
+ const doneResponse = { id, type: "done" };
12
+ workerContext.postMessage(doneResponse);
13
+ } catch (error) {
14
+ const errorResponse = {
15
+ id,
16
+ type: "error",
17
+ error: error instanceof Error ? error.message : String(error)
18
+ };
19
+ workerContext.postMessage(errorResponse);
20
+ }
21
+ };
22
+ const streamRecordsToPort = async (port, records) => {
23
+ try {
24
+ for await (const record of records) {
25
+ port.postMessage({
26
+ type: "record",
27
+ record
28
+ });
29
+ }
30
+ port.postMessage({ type: "done" });
31
+ } catch (error) {
32
+ port.postMessage({
33
+ type: "error",
34
+ error: error instanceof Error ? error.message : String(error)
35
+ });
36
+ }
37
+ };
38
+ const createMessageHandler = (workerContext) => {
39
+ return async (request) => {
40
+ const { id, type, useWASM, resultPort } = request;
41
+ try {
42
+ if (resultPort) {
43
+ if (type === "parseStringStream") {
44
+ const req = request;
45
+ if (req.stream) {
46
+ const { CSVLexerTransformer } = await import('../../../CSVLexerTransformer.js');
47
+ const { CSVRecordAssemblerTransformer } = await import('../../../CSVRecordAssemblerTransformer.js');
48
+ const { convertStreamToAsyncIterableIterator } = await import('../../../utils/convertStreamToAsyncIterableIterator.js');
49
+ const resultStream = req.stream.pipeThrough(new CSVLexerTransformer(req.options)).pipeThrough(new CSVRecordAssemblerTransformer(req.options));
50
+ await streamRecordsToPort(
51
+ resultPort,
52
+ convertStreamToAsyncIterableIterator(resultStream)
53
+ );
54
+ return;
55
+ }
56
+ }
57
+ if (type === "parseUint8ArrayStream") {
58
+ const req = request;
59
+ if (req.stream) {
60
+ const { CSVLexerTransformer } = await import('../../../CSVLexerTransformer.js');
61
+ const { CSVRecordAssemblerTransformer } = await import('../../../CSVRecordAssemblerTransformer.js');
62
+ const { charset, fatal, ignoreBOM, decompression } = req.options ?? {};
63
+ const textStream = decompression ? req.stream.pipeThrough(
64
+ new DecompressionStream(
65
+ decompression
66
+ )
67
+ ).pipeThrough(
68
+ new TextDecoderStream(charset ?? "utf-8", {
69
+ fatal,
70
+ ignoreBOM
71
+ })
72
+ ) : req.stream.pipeThrough(
73
+ new TextDecoderStream(charset ?? "utf-8", {
74
+ fatal,
75
+ ignoreBOM
76
+ })
77
+ );
78
+ const { convertStreamToAsyncIterableIterator } = await import('../../../utils/convertStreamToAsyncIterableIterator.js');
79
+ const resultStream = textStream.pipeThrough(new CSVLexerTransformer(req.options)).pipeThrough(new CSVRecordAssemblerTransformer(req.options));
80
+ await streamRecordsToPort(
81
+ resultPort,
82
+ convertStreamToAsyncIterableIterator(resultStream)
83
+ );
84
+ return;
85
+ }
86
+ }
87
+ }
88
+ if (type === "parseString") {
89
+ const req = request;
90
+ if (typeof req.data === "string") {
91
+ if (useWASM) {
92
+ try {
93
+ const { parseStringToArraySyncWASM } = await import('../../../parseStringToArraySyncWASM.js');
94
+ await streamRecordsToMain(
95
+ workerContext,
96
+ id,
97
+ parseStringToArraySyncWASM(req.data, req.options)
98
+ );
99
+ return;
100
+ } catch (error) {
101
+ const { parseStringToIterableIterator } = await import('../../../parseStringToIterableIterator.js');
102
+ await streamRecordsToMain(
103
+ workerContext,
104
+ id,
105
+ parseStringToIterableIterator(req.data, req.options)
106
+ );
107
+ return;
108
+ }
109
+ } else {
110
+ const { parseStringToIterableIterator } = await import('../../../parseStringToIterableIterator.js');
111
+ await streamRecordsToMain(
112
+ workerContext,
113
+ id,
114
+ parseStringToIterableIterator(req.data, req.options)
115
+ );
116
+ return;
117
+ }
118
+ }
119
+ } else if (type === "parseStream") {
120
+ const req = request;
121
+ if (req.data instanceof ReadableStream) {
122
+ const { CSVLexerTransformer } = await import('../../../CSVLexerTransformer.js');
123
+ const { CSVRecordAssemblerTransformer } = await import('../../../CSVRecordAssemblerTransformer.js');
124
+ const { convertStreamToAsyncIterableIterator } = await import('../../../utils/convertStreamToAsyncIterableIterator.js');
125
+ const resultStream = req.data.pipeThrough(new CSVLexerTransformer(req.options)).pipeThrough(new CSVRecordAssemblerTransformer(req.options));
126
+ await streamRecordsToMain(
127
+ workerContext,
128
+ id,
129
+ convertStreamToAsyncIterableIterator(resultStream)
130
+ );
131
+ return;
132
+ }
133
+ } else if (type === "parseUint8ArrayStream") {
134
+ const req = request;
135
+ if (req.data instanceof ReadableStream) {
136
+ const { CSVLexerTransformer } = await import('../../../CSVLexerTransformer.js');
137
+ const { CSVRecordAssemblerTransformer } = await import('../../../CSVRecordAssemblerTransformer.js');
138
+ const { charset, fatal, ignoreBOM, decompression } = req.options ?? {};
139
+ const textStream = decompression ? req.data.pipeThrough(
140
+ new DecompressionStream(
141
+ decompression
142
+ )
143
+ ).pipeThrough(
144
+ new TextDecoderStream(charset ?? "utf-8", {
145
+ fatal,
146
+ ignoreBOM
147
+ })
148
+ ) : req.data.pipeThrough(
149
+ new TextDecoderStream(charset ?? "utf-8", {
150
+ fatal,
151
+ ignoreBOM
152
+ })
153
+ );
154
+ const { convertStreamToAsyncIterableIterator } = await import('../../../utils/convertStreamToAsyncIterableIterator.js');
155
+ const resultStream = textStream.pipeThrough(new CSVLexerTransformer(req.options)).pipeThrough(new CSVRecordAssemblerTransformer(req.options));
156
+ await streamRecordsToMain(
157
+ workerContext,
158
+ id,
159
+ convertStreamToAsyncIterableIterator(resultStream)
160
+ );
161
+ return;
162
+ }
163
+ } else if (type === "parseBinary") {
164
+ const req = request;
165
+ if (useWASM) {
166
+ try {
167
+ const {
168
+ charset = "utf-8",
169
+ fatal,
170
+ ignoreBOM,
171
+ decompression
172
+ } = req.options ?? {};
173
+ const asBytes = req.data instanceof Uint8Array ? req.data : new Uint8Array(req.data);
174
+ let decoded;
175
+ if (decompression) {
176
+ if (typeof DecompressionStream === "undefined") {
177
+ throw new Error(
178
+ "DecompressionStream is not available in this worker context. Decompress the data on the main thread before passing to worker."
179
+ );
180
+ }
181
+ const decompressed = await new Response(
182
+ new ReadableStream({
183
+ start(c) {
184
+ c.enqueue(asBytes);
185
+ c.close();
186
+ }
187
+ }).pipeThrough(
188
+ new DecompressionStream(
189
+ decompression
190
+ )
191
+ )
192
+ ).arrayBuffer();
193
+ decoded = new TextDecoder(charset, { fatal, ignoreBOM }).decode(
194
+ decompressed
195
+ );
196
+ } else {
197
+ decoded = new TextDecoder(charset, { fatal, ignoreBOM }).decode(
198
+ asBytes
199
+ );
200
+ }
201
+ const { parseStringToArraySyncWASM } = await import('../../../parseStringToArraySyncWASM.js');
202
+ await streamRecordsToMain(
203
+ workerContext,
204
+ id,
205
+ parseStringToArraySyncWASM(decoded, req.options)
206
+ );
207
+ return;
208
+ } catch (error) {
209
+ const { parseBinaryToIterableIterator } = await import('../../../parseBinaryToIterableIterator.js');
210
+ await streamRecordsToMain(
211
+ workerContext,
212
+ id,
213
+ parseBinaryToIterableIterator(req.data, req.options)
214
+ );
215
+ return;
216
+ }
217
+ } else {
218
+ const { parseBinaryToIterableIterator } = await import('../../../parseBinaryToIterableIterator.js');
219
+ await streamRecordsToMain(
220
+ workerContext,
221
+ id,
222
+ parseBinaryToIterableIterator(req.data, req.options)
223
+ );
224
+ return;
225
+ }
226
+ } else {
227
+ throw new Error(`Unsupported parse type: ${type}`);
228
+ }
229
+ } catch (error) {
230
+ const errorResponse = {
231
+ id,
232
+ type: "error",
233
+ error: error instanceof Error ? error.message : String(error)
234
+ };
235
+ workerContext.postMessage(errorResponse);
236
+ }
237
+ };
238
+ };
239
+
240
+ export { createMessageHandler, streamRecordsToMain, streamRecordsToPort };
241
+ //# sourceMappingURL=worker.shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.shared.js","sources":["../../../../src/execution/worker/helpers/worker.shared.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../../common/types.ts\";\nimport type {\n DEFAULT_DELIMITER,\n DEFAULT_QUOTATION,\n} from \"../../../constants.ts\";\n\n/**\n * Base interface for Worker requests\n * @internal\n */\ninterface BaseParseRequest {\n id: number;\n useWASM?: boolean;\n resultPort?: MessagePort;\n}\n\n/**\n * Parse string request\n * @internal\n */\nexport interface ParseStringRequest<\n Header extends ReadonlyArray<string> = readonly string[],\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n> extends BaseParseRequest {\n type: \"parseString\";\n data: string;\n options?: ParseOptions<Header, Delimiter, Quotation>;\n}\n\n/**\n * Parse binary request\n * @internal\n */\nexport interface ParseBinaryRequest<\n Header extends ReadonlyArray<string> = readonly string[],\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n> extends BaseParseRequest {\n type: \"parseBinary\";\n data: Uint8Array | ArrayBuffer;\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>;\n}\n\n/**\n * Parse string stream request\n * @internal\n */\nexport interface ParseStringStreamRequest<\n Header extends ReadonlyArray<string> = readonly string[],\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n> extends BaseParseRequest {\n type: \"parseStream\" | \"parseStringStream\";\n data?: ReadableStream<string>;\n stream?: ReadableStream<string>;\n options?: ParseOptions<Header, Delimiter, Quotation>;\n}\n\n/**\n * Parse binary stream request\n * @internal\n */\nexport interface ParseUint8ArrayStreamRequest<\n Header extends ReadonlyArray<string> = readonly string[],\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n> extends BaseParseRequest {\n type: \"parseUint8ArrayStream\";\n data?: ReadableStream<Uint8Array>;\n stream?: ReadableStream<Uint8Array>;\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>;\n}\n\n/**\n * Message types for Worker communication.\n * @internal\n */\nexport type ParseRequest<\n Header extends ReadonlyArray<string> = readonly string[],\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n> =\n | ParseStringRequest<Header, Delimiter, Quotation>\n | ParseBinaryRequest<Header, Delimiter, Quotation>\n | ParseStringStreamRequest<Header, Delimiter, Quotation>\n | ParseUint8ArrayStreamRequest<Header, Delimiter, Quotation>;\n\nexport interface ParseResponse<\n Header extends ReadonlyArray<string> = readonly string[],\n> {\n id: number;\n result?: CSVRecord<Header>[] | ReadableStream<CSVRecord<Header>>;\n error?: string;\n}\n\nexport interface ParseStreamResponse<\n Header extends ReadonlyArray<string> = readonly string[],\n> {\n id: number;\n type: \"record\" | \"done\" | \"error\";\n record?: CSVRecord<Header>;\n error?: string;\n}\n\n/**\n * Worker context interface (unified for Web Workers and Worker Threads)\n * @internal\n */\nexport interface WorkerContext<\n Header extends ReadonlyArray<string> = readonly string[],\n> {\n postMessage(message: ParseStreamResponse<Header>): void;\n}\n\n/**\n * Helper to stream records incrementally to avoid memory issues.\n * @internal\n */\nexport const streamRecordsToMain = async <\n Header extends ReadonlyArray<string> = readonly string[],\n>(\n workerContext: WorkerContext<Header>,\n id: number,\n records:\n | AsyncIterableIterator<CSVRecord<Header>>\n | Iterable<CSVRecord<Header>>,\n): Promise<void> => {\n try {\n for await (const record of records) {\n const response: ParseStreamResponse<Header> = {\n id,\n type: \"record\",\n record,\n };\n workerContext.postMessage(response);\n }\n // Send done signal\n const doneResponse: ParseStreamResponse<Header> = { id, type: \"done\" };\n workerContext.postMessage(doneResponse);\n } catch (error) {\n const errorResponse: ParseStreamResponse<Header> = {\n id,\n type: \"error\",\n error: error instanceof Error ? error.message : String(error),\n };\n workerContext.postMessage(errorResponse);\n }\n};\n\n/**\n * Helper to stream records to a MessagePort (for TransferableStream strategy).\n * @internal\n */\nexport const streamRecordsToPort = async <\n Header extends ReadonlyArray<string> = readonly string[],\n>(\n port: MessagePort,\n records:\n | AsyncIterableIterator<CSVRecord<Header>>\n | Iterable<CSVRecord<Header>>,\n): Promise<void> => {\n try {\n for await (const record of records) {\n port.postMessage({\n type: \"record\",\n record,\n });\n }\n // Send done signal\n port.postMessage({ type: \"done\" });\n } catch (error) {\n port.postMessage({\n type: \"error\",\n error: error instanceof Error ? error.message : String(error),\n });\n }\n};\n\n/**\n * Worker message handler for CSV parsing.\n * Handles different parsing strategies (regular, WASM, streaming).\n *\n * @internal\n */\nexport const createMessageHandler = (workerContext: WorkerContext) => {\n return async (request: ParseRequest) => {\n const { id, type, useWASM, resultPort } = request;\n\n try {\n // Handle TransferableStream strategy (stream + resultPort)\n if (resultPort) {\n if (type === \"parseStringStream\") {\n // Type guard: ParseStringStreamRequest\n const req = request as ParseStringStreamRequest;\n if (req.stream) {\n // Process string stream with TransferableStream strategy\n const { CSVLexerTransformer } = await import(\n \"../../../CSVLexerTransformer.ts\"\n );\n const { CSVRecordAssemblerTransformer } = await import(\n \"../../../CSVRecordAssemblerTransformer.ts\"\n );\n const { convertStreamToAsyncIterableIterator } = await import(\n \"../../../utils/convertStreamToAsyncIterableIterator.ts\"\n );\n\n const resultStream = req.stream\n .pipeThrough(new CSVLexerTransformer(req.options))\n .pipeThrough(new CSVRecordAssemblerTransformer(req.options));\n\n await streamRecordsToPort(\n resultPort,\n convertStreamToAsyncIterableIterator(resultStream),\n );\n return;\n }\n }\n\n if (type === \"parseUint8ArrayStream\") {\n // Type guard: ParseUint8ArrayStreamRequest\n const req = request as ParseUint8ArrayStreamRequest;\n if (req.stream) {\n // Process binary stream with TransferableStream strategy\n const { CSVLexerTransformer } = await import(\n \"../../../CSVLexerTransformer.ts\"\n );\n const { CSVRecordAssemblerTransformer } = await import(\n \"../../../CSVRecordAssemblerTransformer.ts\"\n );\n\n const { charset, fatal, ignoreBOM, decompression } =\n req.options ?? {};\n\n // Convert binary stream to text stream then parse\n const textStream = decompression\n ? req.stream\n .pipeThrough(\n new DecompressionStream(\n decompression,\n ) as unknown as TransformStream<Uint8Array, Uint8Array>,\n )\n .pipeThrough(\n new TextDecoderStream(charset ?? \"utf-8\", {\n fatal,\n ignoreBOM,\n }) as unknown as TransformStream<Uint8Array, string>,\n )\n : req.stream.pipeThrough(\n new TextDecoderStream(charset ?? \"utf-8\", {\n fatal,\n ignoreBOM,\n }) as unknown as TransformStream<Uint8Array, string>,\n );\n\n const { convertStreamToAsyncIterableIterator } = await import(\n \"../../../utils/convertStreamToAsyncIterableIterator.ts\"\n );\n\n const resultStream = textStream\n .pipeThrough(new CSVLexerTransformer(req.options))\n .pipeThrough(new CSVRecordAssemblerTransformer(req.options));\n\n await streamRecordsToPort(\n resultPort,\n convertStreamToAsyncIterableIterator(resultStream),\n );\n return;\n }\n }\n }\n\n // Handle traditional message-based strategies\n if (type === \"parseString\") {\n // Type guard: ParseStringRequest\n const req = request as ParseStringRequest;\n if (typeof req.data === \"string\") {\n if (useWASM) {\n // Dynamic import WASM implementation\n try {\n const { parseStringToArraySyncWASM } = await import(\n \"../../../parseStringToArraySyncWASM.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseStringToArraySyncWASM(req.data, req.options),\n );\n return;\n } catch (error) {\n // Fall back to regular parser if WASM is not available\n const { parseStringToIterableIterator } = await import(\n \"../../../parseStringToIterableIterator.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseStringToIterableIterator(req.data, req.options),\n );\n return;\n }\n } else {\n // Use regular parser with iterator\n const { parseStringToIterableIterator } = await import(\n \"../../../parseStringToIterableIterator.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseStringToIterableIterator(req.data, req.options),\n );\n return;\n }\n }\n } else if (type === \"parseStream\") {\n // Type guard: ParseStringStreamRequest\n const req = request as ParseStringStreamRequest;\n if (req.data instanceof ReadableStream) {\n // Stream processing (WASM not supported for streams)\n const { CSVLexerTransformer } = await import(\n \"../../../CSVLexerTransformer.ts\"\n );\n const { CSVRecordAssemblerTransformer } = await import(\n \"../../../CSVRecordAssemblerTransformer.ts\"\n );\n const { convertStreamToAsyncIterableIterator } = await import(\n \"../../../utils/convertStreamToAsyncIterableIterator.ts\"\n );\n\n const resultStream = req.data\n .pipeThrough(new CSVLexerTransformer(req.options))\n .pipeThrough(new CSVRecordAssemblerTransformer(req.options));\n\n // Convert stream to async iterable and stream records incrementally\n await streamRecordsToMain(\n workerContext,\n id,\n convertStreamToAsyncIterableIterator(resultStream),\n );\n return;\n }\n } else if (type === \"parseUint8ArrayStream\") {\n // Type guard: ParseUint8ArrayStreamRequest\n const req = request as ParseUint8ArrayStreamRequest;\n if (req.data instanceof ReadableStream) {\n // Binary stream processing\n const { CSVLexerTransformer } = await import(\n \"../../../CSVLexerTransformer.ts\"\n );\n const { CSVRecordAssemblerTransformer } = await import(\n \"../../../CSVRecordAssemblerTransformer.ts\"\n );\n\n const { charset, fatal, ignoreBOM, decompression } =\n req.options ?? {};\n\n // Convert binary stream to text stream then parse\n const textStream = decompression\n ? req.data\n .pipeThrough(\n new DecompressionStream(\n decompression,\n ) as unknown as TransformStream<Uint8Array, Uint8Array>,\n )\n .pipeThrough(\n new TextDecoderStream(charset ?? \"utf-8\", {\n fatal,\n ignoreBOM,\n }) as unknown as TransformStream<Uint8Array, string>,\n )\n : req.data.pipeThrough(\n new TextDecoderStream(charset ?? \"utf-8\", {\n fatal,\n ignoreBOM,\n }) as unknown as TransformStream<Uint8Array, string>,\n );\n\n const { convertStreamToAsyncIterableIterator } = await import(\n \"../../../utils/convertStreamToAsyncIterableIterator.ts\"\n );\n\n const resultStream = textStream\n .pipeThrough(new CSVLexerTransformer(req.options))\n .pipeThrough(new CSVRecordAssemblerTransformer(req.options));\n\n // Convert stream to async iterable and stream records incrementally\n await streamRecordsToMain(\n workerContext,\n id,\n convertStreamToAsyncIterableIterator(resultStream),\n );\n return;\n }\n } else if (type === \"parseBinary\") {\n // Type guard: ParseBinaryRequest\n const req = request as ParseBinaryRequest;\n\n if (useWASM) {\n // Convert (and optionally decompress) then use WASM\n try {\n const {\n charset = \"utf-8\",\n fatal,\n ignoreBOM,\n decompression,\n } = req.options ?? {};\n const asBytes =\n req.data instanceof Uint8Array\n ? req.data\n : new Uint8Array(req.data);\n let decoded: string;\n if (decompression) {\n // Check for DecompressionStream support (may not be available in all Worker contexts)\n if (typeof DecompressionStream === \"undefined\") {\n throw new Error(\n \"DecompressionStream is not available in this worker context. \" +\n \"Decompress the data on the main thread before passing to worker.\",\n );\n }\n const decompressed = await new Response(\n new ReadableStream<Uint8Array>({\n start(c) {\n c.enqueue(asBytes);\n c.close();\n },\n }).pipeThrough(\n new DecompressionStream(\n decompression,\n ) as unknown as TransformStream<Uint8Array, Uint8Array>,\n ),\n ).arrayBuffer();\n decoded = new TextDecoder(charset, { fatal, ignoreBOM }).decode(\n decompressed,\n );\n } else {\n decoded = new TextDecoder(charset, { fatal, ignoreBOM }).decode(\n asBytes,\n );\n }\n const { parseStringToArraySyncWASM } = await import(\n \"../../../parseStringToArraySyncWASM.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseStringToArraySyncWASM(decoded, req.options),\n );\n return;\n } catch (error) {\n // Fall back to regular parser if WASM is not available\n const { parseBinaryToIterableIterator } = await import(\n \"../../../parseBinaryToIterableIterator.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseBinaryToIterableIterator(req.data, req.options),\n );\n return;\n }\n } else {\n // Use regular binary parser with iterator\n const { parseBinaryToIterableIterator } = await import(\n \"../../../parseBinaryToIterableIterator.ts\"\n );\n await streamRecordsToMain(\n workerContext,\n id,\n parseBinaryToIterableIterator(req.data, req.options),\n );\n return;\n }\n } else {\n throw new Error(`Unsupported parse type: ${type}`);\n }\n } catch (error) {\n const errorResponse: ParseStreamResponse = {\n id,\n type: \"error\",\n error: error instanceof Error ? error.message : String(error),\n };\n workerContext.postMessage(errorResponse);\n }\n };\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ import { createMessageHandler } from './worker.shared.js';
2
+
3
+ if (typeof globalThis !== "undefined") {
4
+ if (!globalThis.__vitest_browser_runner__) {
5
+ globalThis.__vitest_browser_runner__ = { wrapDynamicImport: (f) => f() };
6
+ }
7
+ }
8
+ const workerContext = self;
9
+ const messageHandler = createMessageHandler(workerContext);
10
+ workerContext.addEventListener(
11
+ "message",
12
+ (event) => {
13
+ messageHandler(event.data);
14
+ }
15
+ );
16
+ //# sourceMappingURL=worker.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.web.js","sources":["../../../../src/execution/worker/helpers/worker.web.ts"],"sourcesContent":["// @ts-nocheck - Web Worker-specific file, skip in tsc --noEmit\n// Workaround for Vitest browser mode: ensure wrapDynamicImport is available\n// See: https://github.com/vitest-dev/vitest/issues/6552\nif (typeof globalThis !== \"undefined\") {\n // @ts-ignore - Vitest browser mode global\n if (!globalThis.__vitest_browser_runner__) {\n // @ts-ignore\n globalThis.__vitest_browser_runner__ = { wrapDynamicImport: (f) => f() };\n }\n}\n\nimport { type ParseRequest, createMessageHandler } from \"./worker.shared.ts\";\n\n/**\n * Web Worker implementation for CSV parsing.\n * Uses the Web Workers API (browser, Deno).\n *\n * @internal\n */\n\n// Web Worker context (self)\nconst workerContext = self as unknown as DedicatedWorkerGlobalScope;\n\n// Create message handler with Web Worker context\nconst messageHandler = createMessageHandler(workerContext);\n\n// Register message listener (Web Workers API)\nworkerContext.addEventListener(\n \"message\",\n (event: MessageEvent<ParseRequest>) => {\n messageHandler(event.data);\n },\n);\n"],"names":[],"mappings":";;AAGA,IAAI,OAAO,eAAe,WAAA,EAAa;AAErC,EAAA,IAAI,CAAC,WAAW,yBAAA,EAA2B;AAEzC,IAAA,UAAA,CAAW,4BAA4B,EAAE,iBAAA,EAAmB,CAAC,CAAA,KAAM,GAAE,EAAE;AAAA,EACzE;AACF;AAYA,MAAM,aAAA,GAAgB,IAAA;AAGtB,MAAM,cAAA,GAAiB,qBAAqB,aAAa,CAAA;AAGzD,aAAA,CAAc,gBAAA;AAAA,EACZ,SAAA;AAAA,EACA,CAAC,KAAA,KAAsC;AACrC,IAAA,cAAA,CAAe,MAAM,IAAI,CAAA;AAAA,EAC3B;AACF,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV binary in Worker thread (Node.js).
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function parseBinaryInWorker<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,24 @@
1
+ import { WorkerSession } from './helpers/WorkerSession.js';
2
+ import { sendWorkerMessage } from './utils/messageHandler.js';
3
+ import { serializeOptions } from './utils/serializeOptions.js';
4
+
5
+ async function* parseBinaryInWorker(binary, options) {
6
+ using session = await WorkerSession.create({
7
+ workerPool: options?.engine?.workerPool,
8
+ workerURL: options?.engine?.workerURL
9
+ });
10
+ yield* sendWorkerMessage(
11
+ session.getWorker(),
12
+ {
13
+ id: session.getNextRequestId(),
14
+ type: "parseBinary",
15
+ data: binary,
16
+ options: serializeOptions(options),
17
+ useWASM: false
18
+ },
19
+ options
20
+ );
21
+ }
22
+
23
+ export { parseBinaryInWorker };
24
+ //# sourceMappingURL=parseBinaryInWorker.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBinaryInWorker.node.js","sources":["../../../src/execution/worker/parseBinaryInWorker.node.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"../../constants.ts\";\nimport { WorkerSession } from \"./helpers/WorkerSession.ts\";\nimport { sendWorkerMessage } from \"./utils/messageHandler.ts\";\nimport { serializeOptions } from \"./utils/serializeOptions.ts\";\n\n/**\n * Parse CSV binary in Worker thread (Node.js).\n *\n * @internal\n */\nexport async function* parseBinaryInWorker<\n Header extends ReadonlyArray<string>,\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n>(\n binary: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n using session = await WorkerSession.create({\n workerPool: options?.engine?.workerPool,\n workerURL: options?.engine?.workerURL,\n });\n\n yield* sendWorkerMessage<CSVRecord<Header>>(\n session.getWorker(),\n {\n id: session.getNextRequestId(),\n type: \"parseBinary\",\n data: binary,\n options: serializeOptions(options),\n useWASM: false,\n },\n options as ParseOptions<Header> | ParseBinaryOptions<Header> | undefined,\n );\n}\n"],"names":[],"mappings":";;;;AAeA,gBAAuB,mBAAA,CAKrB,QACA,OAAA,EAC0C;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,MAAA,CAAO;AAAA,IACzC,UAAA,EAAY,SAAS,MAAA,EAAQ,UAAA;AAAA,IAC7B,SAAA,EAAW,SAAS,MAAA,EAAQ;AAAA,GAC7B,CAAA;AAED,EAAA,OAAO,iBAAA;AAAA,IACL,QAAQ,SAAA,EAAU;AAAA,IAClB;AAAA,MACE,EAAA,EAAI,QAAQ,gBAAA,EAAiB;AAAA,MAC7B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,MACjC,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,8 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV binary in Worker thread (Browser/Deno).
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function parseBinaryInWorker<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,24 @@
1
+ import { WorkerSession } from './helpers/WorkerSession.js';
2
+ import { sendWorkerMessage } from './utils/messageHandler.js';
3
+ import { serializeOptions } from './utils/serializeOptions.js';
4
+
5
+ async function* parseBinaryInWorker(binary, options) {
6
+ using session = await WorkerSession.create({
7
+ workerPool: options?.engine?.workerPool,
8
+ workerURL: options?.engine?.workerURL
9
+ });
10
+ yield* sendWorkerMessage(
11
+ session.getWorker(),
12
+ {
13
+ id: session.getNextRequestId(),
14
+ type: "parseBinary",
15
+ data: binary,
16
+ options: serializeOptions(options),
17
+ useWASM: false
18
+ },
19
+ options
20
+ );
21
+ }
22
+
23
+ export { parseBinaryInWorker };
24
+ //# sourceMappingURL=parseBinaryInWorker.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBinaryInWorker.web.js","sources":["../../../src/execution/worker/parseBinaryInWorker.web.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"../../constants.ts\";\nimport { WorkerSession } from \"./helpers/WorkerSession.ts\";\nimport { sendWorkerMessage } from \"./utils/messageHandler.ts\";\nimport { serializeOptions } from \"./utils/serializeOptions.ts\";\n\n/**\n * Parse CSV binary in Worker thread (Browser/Deno).\n *\n * @internal\n */\nexport async function* parseBinaryInWorker<\n Header extends ReadonlyArray<string>,\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n>(\n binary: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n using session = await WorkerSession.create({\n workerPool: options?.engine?.workerPool,\n workerURL: options?.engine?.workerURL,\n });\n\n yield* sendWorkerMessage<CSVRecord<Header>>(\n session.getWorker(),\n {\n id: session.getNextRequestId(),\n type: \"parseBinary\",\n data: binary,\n options: serializeOptions(options),\n useWASM: false,\n },\n options as ParseOptions<Header> | ParseBinaryOptions<Header> | undefined,\n );\n}\n"],"names":[],"mappings":";;;;AAeA,gBAAuB,mBAAA,CAKrB,QACA,OAAA,EAC0C;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,MAAA,CAAO;AAAA,IACzC,UAAA,EAAY,SAAS,MAAA,EAAQ,UAAA;AAAA,IAC7B,SAAA,EAAW,SAAS,MAAA,EAAQ;AAAA,GAC7B,CAAA;AAED,EAAA,OAAO,iBAAA;AAAA,IACL,QAAQ,SAAA,EAAU;AAAA,IAClB;AAAA,MACE,EAAA,EAAI,QAAQ,gBAAA,EAAiB;AAAA,MAC7B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,MACjC,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,8 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV binary in Worker thread using WASM (Node.js).
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function parseBinaryInWorkerWASM<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,24 @@
1
+ import { WorkerSession } from './helpers/WorkerSession.js';
2
+ import { sendWorkerMessage } from './utils/messageHandler.js';
3
+ import { serializeOptions } from './utils/serializeOptions.js';
4
+
5
+ async function* parseBinaryInWorkerWASM(binary, options) {
6
+ using session = await WorkerSession.create({
7
+ workerPool: options?.engine?.workerPool,
8
+ workerURL: options?.engine?.workerURL
9
+ });
10
+ yield* sendWorkerMessage(
11
+ session.getWorker(),
12
+ {
13
+ id: session.getNextRequestId(),
14
+ type: "parseBinary",
15
+ data: binary,
16
+ options: serializeOptions(options),
17
+ useWASM: true
18
+ },
19
+ options
20
+ );
21
+ }
22
+
23
+ export { parseBinaryInWorkerWASM };
24
+ //# sourceMappingURL=parseBinaryInWorkerWASM.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBinaryInWorkerWASM.node.js","sources":["../../../src/execution/worker/parseBinaryInWorkerWASM.node.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"../../constants.ts\";\nimport { WorkerSession } from \"./helpers/WorkerSession.ts\";\nimport { sendWorkerMessage } from \"./utils/messageHandler.ts\";\nimport { serializeOptions } from \"./utils/serializeOptions.ts\";\n\n/**\n * Parse CSV binary in Worker thread using WASM (Node.js).\n *\n * @internal\n */\nexport async function* parseBinaryInWorkerWASM<\n Header extends ReadonlyArray<string>,\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n>(\n binary: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n using session = await WorkerSession.create({\n workerPool: options?.engine?.workerPool,\n workerURL: options?.engine?.workerURL,\n });\n\n yield* sendWorkerMessage<CSVRecord<Header>>(\n session.getWorker(),\n {\n id: session.getNextRequestId(),\n type: \"parseBinary\",\n data: binary,\n options: serializeOptions(options),\n useWASM: true,\n },\n options as ParseOptions<Header> | ParseBinaryOptions<Header> | undefined,\n );\n}\n"],"names":[],"mappings":";;;;AAeA,gBAAuB,uBAAA,CAKrB,QACA,OAAA,EAC0C;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,MAAA,CAAO;AAAA,IACzC,UAAA,EAAY,SAAS,MAAA,EAAQ,UAAA;AAAA,IAC7B,SAAA,EAAW,SAAS,MAAA,EAAQ;AAAA,GAC7B,CAAA;AAED,EAAA,OAAO,iBAAA;AAAA,IACL,QAAQ,SAAA,EAAU;AAAA,IAClB;AAAA,MACE,EAAA,EAAI,QAAQ,gBAAA,EAAiB;AAAA,MAC7B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,MACjC,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,8 @@
1
+ import { CSVRecord, ParseBinaryOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV binary in Worker thread using WASM (Browser/Deno).
5
+ *
6
+ * @internal
7
+ */
8
+ export declare function parseBinaryInWorkerWASM<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,24 @@
1
+ import { WorkerSession } from './helpers/WorkerSession.js';
2
+ import { sendWorkerMessage } from './utils/messageHandler.js';
3
+ import { serializeOptions } from './utils/serializeOptions.js';
4
+
5
+ async function* parseBinaryInWorkerWASM(binary, options) {
6
+ using session = await WorkerSession.create({
7
+ workerPool: options?.engine?.workerPool,
8
+ workerURL: options?.engine?.workerURL
9
+ });
10
+ yield* sendWorkerMessage(
11
+ session.getWorker(),
12
+ {
13
+ id: session.getNextRequestId(),
14
+ type: "parseBinary",
15
+ data: binary,
16
+ options: serializeOptions(options),
17
+ useWASM: true
18
+ },
19
+ options
20
+ );
21
+ }
22
+
23
+ export { parseBinaryInWorkerWASM };
24
+ //# sourceMappingURL=parseBinaryInWorkerWASM.web.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseBinaryInWorkerWASM.web.js","sources":["../../../src/execution/worker/parseBinaryInWorkerWASM.web.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"../../constants.ts\";\nimport { WorkerSession } from \"./helpers/WorkerSession.ts\";\nimport { sendWorkerMessage } from \"./utils/messageHandler.ts\";\nimport { serializeOptions } from \"./utils/serializeOptions.ts\";\n\n/**\n * Parse CSV binary in Worker thread using WASM (Browser/Deno).\n *\n * @internal\n */\nexport async function* parseBinaryInWorkerWASM<\n Header extends ReadonlyArray<string>,\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n>(\n binary: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n using session = await WorkerSession.create({\n workerPool: options?.engine?.workerPool,\n workerURL: options?.engine?.workerURL,\n });\n\n yield* sendWorkerMessage<CSVRecord<Header>>(\n session.getWorker(),\n {\n id: session.getNextRequestId(),\n type: \"parseBinary\",\n data: binary,\n options: serializeOptions(options),\n useWASM: true,\n },\n options as ParseOptions<Header> | ParseBinaryOptions<Header> | undefined,\n );\n}\n"],"names":[],"mappings":";;;;AAeA,gBAAuB,uBAAA,CAKrB,QACA,OAAA,EAC0C;AAC1C,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,MAAA,CAAO;AAAA,IACzC,UAAA,EAAY,SAAS,MAAA,EAAQ,UAAA;AAAA,IAC7B,SAAA,EAAW,SAAS,MAAA,EAAQ;AAAA,GAC7B,CAAA;AAED,EAAA,OAAO,iBAAA;AAAA,IACL,QAAQ,SAAA,EAAU;AAAA,IAClB;AAAA,MACE,EAAA,EAAI,QAAQ,gBAAA,EAAiB;AAAA,MAC7B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,MACjC,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,15 @@
1
+ import { CSVRecord, ParseOptions } from '../../common/types.ts';
2
+ import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../constants.ts';
3
+ /**
4
+ * Parse CSV stream in Worker thread (Node.js).
5
+ * Collects stream into string first, then sends to worker.
6
+ *
7
+ * Note: Node.js Worker Threads do not support ReadableStream transfer,
8
+ * so we collect the stream into a string first.
9
+ *
10
+ * @internal
11
+ * @param stream CSV string stream to parse
12
+ * @param options Parsing options
13
+ * @returns Async iterable iterator of records
14
+ */
15
+ export declare function parseStreamInWorker<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,26 @@
1
+ import { WorkerSession } from './helpers/WorkerSession.js';
2
+ import { sendWorkerMessage } from './utils/messageHandler.js';
3
+ import { serializeOptions } from './utils/serializeOptions.js';
4
+ import { collectStringStream } from './utils/streamCollector.node.js';
5
+
6
+ async function* parseStreamInWorker(stream, options) {
7
+ const csvString = await collectStringStream(stream, options?.signal);
8
+ using session = await WorkerSession.create({
9
+ workerPool: options?.engine?.workerPool,
10
+ workerURL: options?.engine?.workerURL
11
+ });
12
+ yield* sendWorkerMessage(
13
+ session.getWorker(),
14
+ {
15
+ id: session.getNextRequestId(),
16
+ type: "parseString",
17
+ data: csvString,
18
+ options: serializeOptions(options),
19
+ useWASM: false
20
+ },
21
+ options
22
+ );
23
+ }
24
+
25
+ export { parseStreamInWorker };
26
+ //# sourceMappingURL=parseStreamInWorker.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseStreamInWorker.node.js","sources":["../../../src/execution/worker/parseStreamInWorker.node.ts"],"sourcesContent":["import type {\n CSVRecord,\n ParseBinaryOptions,\n ParseOptions,\n} from \"../../common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"../../constants.ts\";\nimport { WorkerSession } from \"./helpers/WorkerSession.ts\";\nimport { sendWorkerMessage } from \"./utils/messageHandler.ts\";\nimport { serializeOptions } from \"./utils/serializeOptions.ts\";\nimport { collectStringStream } from \"./utils/streamCollector.node.ts\";\n\n/**\n * Parse CSV stream in Worker thread (Node.js).\n * Collects stream into string first, then sends to worker.\n *\n * Note: Node.js Worker Threads do not support ReadableStream transfer,\n * so we collect the stream into a string first.\n *\n * @internal\n * @param stream CSV string stream to parse\n * @param options Parsing options\n * @returns Async iterable iterator of records\n */\nexport async function* parseStreamInWorker<\n Header extends ReadonlyArray<string>,\n Delimiter extends string = DEFAULT_DELIMITER,\n Quotation extends string = DEFAULT_QUOTATION,\n>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n // Node.js: Collect stream into string first\n const csvString = await collectStringStream(stream, options?.signal);\n\n using session = await WorkerSession.create({\n workerPool: options?.engine?.workerPool,\n workerURL: options?.engine?.workerURL,\n });\n\n yield* sendWorkerMessage<CSVRecord<Header>>(\n session.getWorker(),\n {\n id: session.getNextRequestId(),\n type: \"parseString\",\n data: csvString,\n options: serializeOptions(options),\n useWASM: false,\n },\n options as ParseOptions<Header> | ParseBinaryOptions<Header> | undefined,\n );\n}\n"],"names":[],"mappings":";;;;;AAuBA,gBAAuB,mBAAA,CAKrB,QACA,OAAA,EAC0C;AAE1C,EAAA,MAAM,SAAA,GAAY,MAAM,mBAAA,CAAoB,MAAA,EAAQ,SAAS,MAAM,CAAA;AAEnE,EAAA,MAAM,OAAA,GAAU,MAAM,aAAA,CAAc,MAAA,CAAO;AAAA,IACzC,UAAA,EAAY,SAAS,MAAA,EAAQ,UAAA;AAAA,IAC7B,SAAA,EAAW,SAAS,MAAA,EAAQ;AAAA,GAC7B,CAAA;AAED,EAAA,OAAO,iBAAA;AAAA,IACL,QAAQ,SAAA,EAAU;AAAA,IAClB;AAAA,MACE,EAAA,EAAI,QAAQ,gBAAA,EAAiB;AAAA,MAC7B,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS,iBAAiB,OAAO,CAAA;AAAA,MACjC,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AACF;;;;"}