web-csv-toolbox 0.12.0-next-6e838bd89dfc6fa10aadf1cf5596847051f0fa22 → 0.12.0-next-b221fc714faa4b33d33a3349982a1608d8a19b2f
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.
- package/README.md +3 -22
- package/dist/{types/Lexer.d.ts → Lexer.d.ts} +1 -1
- package/dist/Lexer.js.map +1 -0
- package/dist/LexerTransformer.js.map +1 -0
- package/dist/RecordAssembler.js.map +1 -0
- package/dist/RecordAssemblerTransformer.js.map +1 -0
- package/dist/_virtual/web_csv_toolbox_wasm_bg.wasm.js +4 -0
- package/dist/assertCommonOptions.js.map +1 -0
- package/dist/common/constants.js.map +1 -0
- package/dist/common/errors.js.map +1 -0
- package/dist/commonParseErrorHandling.js.map +1 -0
- package/dist/constants.js.map +1 -0
- package/dist/{types/escapeField.d.ts → escapeField.d.ts} +1 -1
- package/dist/getOptionsFromResponse.js.map +1 -0
- package/dist/loadWASM.js.map +1 -0
- package/dist/loadWASM.web.js.map +1 -0
- package/dist/parse.js.map +1 -0
- package/dist/parseBinary.js.map +1 -0
- package/dist/parseBinaryToArraySync.js.map +1 -0
- package/dist/parseBinaryToIterableIterator.js.map +1 -0
- package/dist/parseBinaryToStream.js.map +1 -0
- package/dist/parseResponse.js.map +1 -0
- package/dist/parseResponseToStream.js.map +1 -0
- package/dist/parseString.js.map +1 -0
- package/dist/parseStringStream.js.map +1 -0
- package/dist/parseStringStreamToStream.js.map +1 -0
- package/dist/parseStringToArraySync.js.map +1 -0
- package/dist/parseStringToArraySyncWASM.js.map +1 -0
- package/dist/parseStringToIterableIterator.js.map +1 -0
- package/dist/parseStringToStream.js.map +1 -0
- package/dist/parseUint8ArrayStream.js.map +1 -0
- package/dist/parseUint8ArrayStreamToStream.js.map +1 -0
- package/dist/utils/convertBinaryToString.js.map +1 -0
- package/dist/utils/convertIterableIteratorToAsync.js.map +1 -0
- package/dist/utils/convertStreamToAsyncIterableIterator.js.map +1 -0
- package/dist/utils/convertThisAsyncIterableIteratorToArray.js.map +1 -0
- package/dist/utils/escapeRegExp.js.map +1 -0
- package/dist/utils/parseMime.js.map +1 -0
- package/dist/utils/pipeline.js.map +1 -0
- package/dist/web_csv_toolbox_wasm_bg.wasm +0 -0
- package/package.json +15 -32
- package/dist/cjs/Lexer.cjs +0 -2
- package/dist/cjs/Lexer.cjs.map +0 -1
- package/dist/cjs/LexerTransformer.cjs +0 -2
- package/dist/cjs/LexerTransformer.cjs.map +0 -1
- package/dist/cjs/RecordAssembler.cjs +0 -2
- package/dist/cjs/RecordAssembler.cjs.map +0 -1
- package/dist/cjs/RecordAssemblerTransformer.cjs +0 -2
- package/dist/cjs/RecordAssemblerTransformer.cjs.map +0 -1
- package/dist/cjs/_virtual/_web-csv-toolbox-wasm.cjs +0 -2
- package/dist/cjs/_virtual/_web-csv-toolbox-wasm.cjs.map +0 -1
- package/dist/cjs/_virtual/web_csv_toolbox_wasm_bg.wasm.cjs +0 -2
- package/dist/cjs/_virtual/web_csv_toolbox_wasm_bg.wasm.cjs.map +0 -1
- package/dist/cjs/assertCommonOptions.cjs +0 -2
- package/dist/cjs/assertCommonOptions.cjs.map +0 -1
- package/dist/cjs/common/constants.cjs +0 -2
- package/dist/cjs/common/constants.cjs.map +0 -1
- package/dist/cjs/common/errors.cjs +0 -2
- package/dist/cjs/common/errors.cjs.map +0 -1
- package/dist/cjs/commonParseErrorHandling.cjs +0 -2
- package/dist/cjs/commonParseErrorHandling.cjs.map +0 -1
- package/dist/cjs/constants.cjs +0 -2
- package/dist/cjs/constants.cjs.map +0 -1
- package/dist/cjs/getOptionsFromResponse.cjs +0 -2
- package/dist/cjs/getOptionsFromResponse.cjs.map +0 -1
- package/dist/cjs/loadWASM.cjs +0 -2
- package/dist/cjs/loadWASM.cjs.map +0 -1
- package/dist/cjs/loadWASM.web.cjs +0 -2
- package/dist/cjs/loadWASM.web.cjs.map +0 -1
- package/dist/cjs/parse.cjs +0 -2
- package/dist/cjs/parse.cjs.map +0 -1
- package/dist/cjs/parseBinary.cjs +0 -2
- package/dist/cjs/parseBinary.cjs.map +0 -1
- package/dist/cjs/parseBinaryToArraySync.cjs +0 -2
- package/dist/cjs/parseBinaryToArraySync.cjs.map +0 -1
- package/dist/cjs/parseBinaryToIterableIterator.cjs +0 -2
- package/dist/cjs/parseBinaryToIterableIterator.cjs.map +0 -1
- package/dist/cjs/parseBinaryToStream.cjs +0 -2
- package/dist/cjs/parseBinaryToStream.cjs.map +0 -1
- package/dist/cjs/parseResponse.cjs +0 -2
- package/dist/cjs/parseResponse.cjs.map +0 -1
- package/dist/cjs/parseResponseToStream.cjs +0 -2
- package/dist/cjs/parseResponseToStream.cjs.map +0 -1
- package/dist/cjs/parseString.cjs +0 -2
- package/dist/cjs/parseString.cjs.map +0 -1
- package/dist/cjs/parseStringStream.cjs +0 -2
- package/dist/cjs/parseStringStream.cjs.map +0 -1
- package/dist/cjs/parseStringStreamToStream.cjs +0 -2
- package/dist/cjs/parseStringStreamToStream.cjs.map +0 -1
- package/dist/cjs/parseStringToArraySync.cjs +0 -2
- package/dist/cjs/parseStringToArraySync.cjs.map +0 -1
- package/dist/cjs/parseStringToArraySyncWASM.cjs +0 -2
- package/dist/cjs/parseStringToArraySyncWASM.cjs.map +0 -1
- package/dist/cjs/parseStringToIterableIterator.cjs +0 -2
- package/dist/cjs/parseStringToIterableIterator.cjs.map +0 -1
- package/dist/cjs/parseStringToStream.cjs +0 -2
- package/dist/cjs/parseStringToStream.cjs.map +0 -1
- package/dist/cjs/parseUint8ArrayStream.cjs +0 -2
- package/dist/cjs/parseUint8ArrayStream.cjs.map +0 -1
- package/dist/cjs/parseUint8ArrayStreamToStream.cjs +0 -2
- package/dist/cjs/parseUint8ArrayStreamToStream.cjs.map +0 -1
- package/dist/cjs/utils/convertBinaryToString.cjs +0 -2
- package/dist/cjs/utils/convertBinaryToString.cjs.map +0 -1
- package/dist/cjs/utils/convertIterableIteratorToAsync.cjs +0 -2
- package/dist/cjs/utils/convertIterableIteratorToAsync.cjs.map +0 -1
- package/dist/cjs/utils/convertStreamToAsyncIterableIterator.cjs +0 -2
- package/dist/cjs/utils/convertStreamToAsyncIterableIterator.cjs.map +0 -1
- package/dist/cjs/utils/convertThisAsyncIterableIteratorToArray.cjs +0 -2
- package/dist/cjs/utils/convertThisAsyncIterableIteratorToArray.cjs.map +0 -1
- package/dist/cjs/utils/escapeRegExp.cjs +0 -2
- package/dist/cjs/utils/escapeRegExp.cjs.map +0 -1
- package/dist/cjs/utils/parseMime.cjs +0 -2
- package/dist/cjs/utils/parseMime.cjs.map +0 -1
- package/dist/cjs/utils/pipeline.cjs +0 -2
- package/dist/cjs/utils/pipeline.cjs.map +0 -1
- package/dist/cjs/web-csv-toolbox.cjs +0 -2
- package/dist/cjs/web-csv-toolbox.cjs.map +0 -1
- package/dist/es/Lexer.js.map +0 -1
- package/dist/es/LexerTransformer.js.map +0 -1
- package/dist/es/RecordAssembler.js.map +0 -1
- package/dist/es/RecordAssemblerTransformer.js.map +0 -1
- package/dist/es/_virtual/web_csv_toolbox_wasm_bg.wasm.js +0 -4
- package/dist/es/assertCommonOptions.js.map +0 -1
- package/dist/es/common/constants.js.map +0 -1
- package/dist/es/common/errors.js.map +0 -1
- package/dist/es/commonParseErrorHandling.js.map +0 -1
- package/dist/es/constants.js.map +0 -1
- package/dist/es/getOptionsFromResponse.js.map +0 -1
- package/dist/es/loadWASM.js.map +0 -1
- package/dist/es/loadWASM.web.js.map +0 -1
- package/dist/es/parse.js.map +0 -1
- package/dist/es/parseBinary.js.map +0 -1
- package/dist/es/parseBinaryToArraySync.js.map +0 -1
- package/dist/es/parseBinaryToIterableIterator.js.map +0 -1
- package/dist/es/parseBinaryToStream.js.map +0 -1
- package/dist/es/parseResponse.js.map +0 -1
- package/dist/es/parseResponseToStream.js.map +0 -1
- package/dist/es/parseString.js.map +0 -1
- package/dist/es/parseStringStream.js.map +0 -1
- package/dist/es/parseStringStreamToStream.js.map +0 -1
- package/dist/es/parseStringToArraySync.js.map +0 -1
- package/dist/es/parseStringToArraySyncWASM.js.map +0 -1
- package/dist/es/parseStringToIterableIterator.js.map +0 -1
- package/dist/es/parseStringToStream.js.map +0 -1
- package/dist/es/parseUint8ArrayStream.js.map +0 -1
- package/dist/es/parseUint8ArrayStreamToStream.js.map +0 -1
- package/dist/es/utils/convertBinaryToString.js.map +0 -1
- package/dist/es/utils/convertIterableIteratorToAsync.js.map +0 -1
- package/dist/es/utils/convertStreamToAsyncIterableIterator.js.map +0 -1
- package/dist/es/utils/convertThisAsyncIterableIteratorToArray.js.map +0 -1
- package/dist/es/utils/escapeRegExp.js.map +0 -1
- package/dist/es/utils/parseMime.js.map +0 -1
- package/dist/es/utils/pipeline.js.map +0 -1
- package/dist/web-csv-toolbox.umd.cjs +0 -2
- package/dist/web-csv-toolbox.umd.cjs.map +0 -1
- /package/dist/{es/Lexer.js → Lexer.js} +0 -0
- /package/dist/{types/LexerTransformer.d.ts → LexerTransformer.d.ts} +0 -0
- /package/dist/{es/LexerTransformer.js → LexerTransformer.js} +0 -0
- /package/dist/{types/RecordAssembler.d.ts → RecordAssembler.d.ts} +0 -0
- /package/dist/{es/RecordAssembler.js → RecordAssembler.js} +0 -0
- /package/dist/{types/RecordAssemblerTransformer.d.ts → RecordAssemblerTransformer.d.ts} +0 -0
- /package/dist/{es/RecordAssemblerTransformer.js → RecordAssemblerTransformer.js} +0 -0
- /package/dist/{es/_virtual → _virtual}/_web-csv-toolbox-wasm.js +0 -0
- /package/dist/{es/_virtual → _virtual}/_web-csv-toolbox-wasm.js.map +0 -0
- /package/dist/{es/_virtual → _virtual}/web_csv_toolbox_wasm_bg.wasm.js.map +0 -0
- /package/dist/{types/assertCommonOptions.d.ts → assertCommonOptions.d.ts} +0 -0
- /package/dist/{es/assertCommonOptions.js → assertCommonOptions.js} +0 -0
- /package/dist/{types/common → common}/constants.d.ts +0 -0
- /package/dist/{es/common → common}/constants.js +0 -0
- /package/dist/{types/common → common}/errors.d.ts +0 -0
- /package/dist/{es/common → common}/errors.js +0 -0
- /package/dist/{types/common → common}/types.d.ts +0 -0
- /package/dist/{types/commonParseErrorHandling.d.ts → commonParseErrorHandling.d.ts} +0 -0
- /package/dist/{es/commonParseErrorHandling.js → commonParseErrorHandling.js} +0 -0
- /package/dist/{types/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/{es/constants.js → constants.js} +0 -0
- /package/dist/{types/getOptionsFromResponse.d.ts → getOptionsFromResponse.d.ts} +0 -0
- /package/dist/{es/getOptionsFromResponse.js → getOptionsFromResponse.js} +0 -0
- /package/dist/{types/loadWASM.d.ts → loadWASM.d.ts} +0 -0
- /package/dist/{es/loadWASM.js → loadWASM.js} +0 -0
- /package/dist/{types/loadWASM.web.d.ts → loadWASM.web.d.ts} +0 -0
- /package/dist/{es/loadWASM.web.js → loadWASM.web.js} +0 -0
- /package/dist/{types/parse.d.ts → parse.d.ts} +0 -0
- /package/dist/{es/parse.js → parse.js} +0 -0
- /package/dist/{types/parseBinary.d.ts → parseBinary.d.ts} +0 -0
- /package/dist/{es/parseBinary.js → parseBinary.js} +0 -0
- /package/dist/{types/parseBinaryToArraySync.d.ts → parseBinaryToArraySync.d.ts} +0 -0
- /package/dist/{es/parseBinaryToArraySync.js → parseBinaryToArraySync.js} +0 -0
- /package/dist/{types/parseBinaryToIterableIterator.d.ts → parseBinaryToIterableIterator.d.ts} +0 -0
- /package/dist/{es/parseBinaryToIterableIterator.js → parseBinaryToIterableIterator.js} +0 -0
- /package/dist/{types/parseBinaryToStream.d.ts → parseBinaryToStream.d.ts} +0 -0
- /package/dist/{es/parseBinaryToStream.js → parseBinaryToStream.js} +0 -0
- /package/dist/{types/parseResponse.d.ts → parseResponse.d.ts} +0 -0
- /package/dist/{es/parseResponse.js → parseResponse.js} +0 -0
- /package/dist/{types/parseResponseToStream.d.ts → parseResponseToStream.d.ts} +0 -0
- /package/dist/{es/parseResponseToStream.js → parseResponseToStream.js} +0 -0
- /package/dist/{types/parseString.d.ts → parseString.d.ts} +0 -0
- /package/dist/{es/parseString.js → parseString.js} +0 -0
- /package/dist/{types/parseStringStream.d.ts → parseStringStream.d.ts} +0 -0
- /package/dist/{es/parseStringStream.js → parseStringStream.js} +0 -0
- /package/dist/{types/parseStringStreamToStream.d.ts → parseStringStreamToStream.d.ts} +0 -0
- /package/dist/{es/parseStringStreamToStream.js → parseStringStreamToStream.js} +0 -0
- /package/dist/{types/parseStringToArraySync.d.ts → parseStringToArraySync.d.ts} +0 -0
- /package/dist/{es/parseStringToArraySync.js → parseStringToArraySync.js} +0 -0
- /package/dist/{types/parseStringToArraySyncWASM.d.ts → parseStringToArraySyncWASM.d.ts} +0 -0
- /package/dist/{es/parseStringToArraySyncWASM.js → parseStringToArraySyncWASM.js} +0 -0
- /package/dist/{types/parseStringToIterableIterator.d.ts → parseStringToIterableIterator.d.ts} +0 -0
- /package/dist/{es/parseStringToIterableIterator.js → parseStringToIterableIterator.js} +0 -0
- /package/dist/{types/parseStringToStream.d.ts → parseStringToStream.d.ts} +0 -0
- /package/dist/{es/parseStringToStream.js → parseStringToStream.js} +0 -0
- /package/dist/{types/parseUint8ArrayStream.d.ts → parseUint8ArrayStream.d.ts} +0 -0
- /package/dist/{es/parseUint8ArrayStream.js → parseUint8ArrayStream.js} +0 -0
- /package/dist/{types/parseUint8ArrayStreamToStream.d.ts → parseUint8ArrayStreamToStream.d.ts} +0 -0
- /package/dist/{es/parseUint8ArrayStreamToStream.js → parseUint8ArrayStreamToStream.js} +0 -0
- /package/dist/{types/utils → utils}/SingleValueReadableStream.d.ts +0 -0
- /package/dist/{types/utils → utils}/convertBinaryToString.d.ts +0 -0
- /package/dist/{es/utils → utils}/convertBinaryToString.js +0 -0
- /package/dist/{types/utils → utils}/convertIterableIteratorToAsync.d.ts +0 -0
- /package/dist/{es/utils → utils}/convertIterableIteratorToAsync.js +0 -0
- /package/dist/{types/utils → utils}/convertStreamToAsyncIterableIterator.d.ts +0 -0
- /package/dist/{es/utils → utils}/convertStreamToAsyncIterableIterator.js +0 -0
- /package/dist/{types/utils → utils}/convertThisAsyncIterableIteratorToArray.d.ts +0 -0
- /package/dist/{es/utils → utils}/convertThisAsyncIterableIteratorToArray.js +0 -0
- /package/dist/{types/utils → utils}/escapeRegExp.d.ts +0 -0
- /package/dist/{es/utils → utils}/escapeRegExp.js +0 -0
- /package/dist/{types/utils → utils}/occurrences.d.ts +0 -0
- /package/dist/{types/utils → utils}/parseMime.d.ts +0 -0
- /package/dist/{es/utils → utils}/parseMime.js +0 -0
- /package/dist/{types/utils → utils}/pipeline.d.ts +0 -0
- /package/dist/{es/utils → utils}/pipeline.js +0 -0
- /package/dist/{types/utils → utils}/types.d.ts +0 -0
- /package/dist/{types/web-csv-toolbox-wasm.d.ts → web-csv-toolbox-wasm.d.ts} +0 -0
- /package/dist/{types/web-csv-toolbox.d.ts → web-csv-toolbox.d.ts} +0 -0
- /package/dist/{es/web-csv-toolbox.js → web-csv-toolbox.js} +0 -0
- /package/dist/{es/web-csv-toolbox.js.map → web-csv-toolbox.js.map} +0 -0
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const dataURL = "data:application/wasm;base64,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QCACQcoBRgRAQQQhAyAIDAILIAMgCk0gBSAIS3JFBEBBASEDIAgMAgtBAkEAIAMgCksbQQAgByAMTRshAyAIDAELQQMhA0EACzYCCCABIAk6AKUDDAYLIAdFDQIgAUEIOgClAwwBC0ECDAMLIAEoAgghAkEAIQggAUEANgIIIAYgAjYCAEEBIQxBAyEDDAMLQQAhCEECDAELQQELIQMLIAAgAzoACCABQQE6AK0DIAAgDDYCDCAAIAg2AgQgACAKIBVqNgIADwtB+/fAAEEoQaT4wAAQTwALqCYDCX8HfgF8AkACQAJAAkACQAJAAkACQCAALQAAQQFrDgUBAgMEBQALIAEoAgAiACgCACAAKAIIIgJrQQNNBEAgACACQQRBAUEBEDEgACgCCCECCyAAIAJBBGo2AgggACgCBCACakHu6rHjBjYAAAwFCyABKAIAIQEgAC0AAUUEQCABKAIAIAEoAggiAGtBBE0EQCABIABBBUEBQQEQMSABKAIIIQALIAEgAEEFajYCCCABKAIEIABqIgBBuI/AACgAADYAACAAQQRqQbyPwAAtAAA6AABBAA8LIAEoAgAgASgCCCIAa0EDTQRAIAEgAEEEQQFBARAxIAEoAgghAAsgASAAQQRqNgIIIAEoAgQgAGpB9OTVqwY2AAAMBAsjAEEwayIFJAAgASgCACEDAkACQAJAAkACQAJAIABBCGoiACgCAEEBaw4CAQIAC0EUIQIgACkDCCILQpDOAFQEQCALIQwMBAsDQCAFQQhqIAJqIgBBBGsgCyALQpDOAIAiDEKQzgB+faciAUH//wNxQeQAbiIEQQF0LwCokUA7AAAgAEECayABIARB5ABsa0H//wNxQQF0LwCokUA7AAAgAkEEayECIAtC/8HXL1YgDCELDQALDAMLQRQhAiAAKQMIIg4gDkI/hyILhSALfSILQpDOAFQEQCALIQwMAgsDQCAFQQhqIAJqIgBBBGsgCyALQpDOAIAiDEKQzgB+faciAUH//wNxQeQAbiIEQQF0LwCokUA7AAAgAEECayABIARB5ABsa0H//wNxQQF0LwCokUA7AAAgAkEEayECIAtC/8HXL1YgDCELDQALDAELIAArAwgiEr1C////////////AINCgICAgICAgPj/AFoEQCADKAIAIAMoAggiAGtBA00EfyADIABBBEEBQQEQ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IgNGBEAgASADQQFBAUEBEDEgASgCCCEDCyABIANBAWoiAjYCCCABKAIEIANqQdsAOgAAAkAgBARAIAUgABAFIgENASAEQRhsQRhrIQMgBUEYaiECA0ACQCAAKAIAIQEgA0UNACABKAIIIgQgASgCAEYEQCABIARBAUEBQQEQMSABKAIIIQQLIAEgBEEBajYCCCABKAIEIARqQSw6AAAgA0EYayEDIAIgABAFIQEgAkEYaiECIAFFDQEMAwsLIAEoAgghAgsgAiABKAIARgRAIAEgAkEBQQFBARAxIAEoAgghAgsgASACQQFqNgIIIAEoAgQgAmpB3QA6AABBACEBCyABC4gCAQZ/IAAoAggiBCECAn9BASABQYABSQ0AGkECIAFBgBBJDQAaQQNBBCABQYCABEkbCyIGIAAoAgAgBGtLBH8gACAEIAYQMyAAKAIIBSACCyAAKAIEaiECAkAgAUGAAU8EQCABQT9xQYB/ciEFIAFBBnYhAyABQYAQSQRAIAIgBToAASACIANBwAFyOgAADAILIAFBDHYhByADQT9xQYB/ciEDIAFB//8DTQRAIAIgBToAAiACIAM6AAEgAiAHQeABcjoAAAwCCyACIAU6AAMgAiADOgACIAIgB0E/cUGAf3I6AAEgAiABQRJ2QXByOgAADAELIAIgAToAAAsgACAEIAZqNgIIQQALoAICA38BfiMAQUBqIgIkACABKAIAQYCAgIB4RgRAIAEoAgwhAyACQSRqIgRBADYCACACQoCAgIAQNwIcIAJBMGogAygCACIDQQhqKQIANwMAIAJBOGogA0EQaikCADcDACACIAMpAgA3AyggAkEcakH0gMEAIAJBKGoQFxogAkEYaiAEKAIAIgM2AgAgAiACKQIcIgU3AxAgAUEIaiADNgIAIAEgBTcCAAsgASkCACEFIAFCgICAgBA3AgAgAkEIaiIDIAFBCGoiASgCADYCACABQQA2AgAgAiAFNwMAQQxBBBB7IgFFBEBBBEEMEIEBAAsgASACKQMANwIAIAFBCGogAygCADYCACAAQZiHwQA2AgQgACABNgIAIAJBQGskAAuiAgEEfyMAQSBrIgUkAEEBIQYCQCAAKAIAIgcgASACIAAoAgQiCCgCDCIBEQEADQACQCAALQAKQYABcUUEQCAHQYKXwQBBASABEQEADQIgAyAAIAQo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AjYCwAEgA0EANgK8ASADIAI2ArABIANBADYCrAEgAyAEKAIIIgI2AsQBIAMgAjYCtAFBASEOIAQoAgwLNgLIASADIA42ArgBIAMgDjYCqAEgA0GoAWoQDQsgBCABNgIMIAQgEDYCCCAEIAE2AgQgBEEDOgAAIBJBAUYNAUEBIQ9BACEUA0AgASECAkACQCAAKAIsIgogACgCKCIETQRAIAogD00NASABIAAoAiQgFGpBBGooAgAiAUsgACgCOCIOIAFJcg0NQQAhDiABIAJrIgRBAEgNCyAAKAI0IQogBEUEQEEBIRAMAwtBASEOIARBARB7IhANAiAEIRAMCwtBACAKIARB2IrAABBOAAsgDyAKQcCOwAAQQAALIAQEQCAQIAIgCmogBPwKAAALIAkgD0YNASAMIBRqIgooAgAhAiAKQQRqKAIAIg4gB0sgAiAOS3INCQJAAkACQAJAIAIgBWogDiACayADQZABahAVIgstAAAOBQMDAwECAAsCfyALKAIEIgJFBEBBACEKQQAMAQsgAyACNgLAASADQQA2ArwBIAMgAjYCsAEgA0EANgKsASADIAsoAggiAjYCxAEgAyACNgK0ASALKAIMIQpBAQshAiADIAo2AsgBIAMgAjYCuAEgAyACNgKoASADQagBahANDAILIAsoAgQiAkUNASALKAIIIAJBARB3DAELIAtBBGoQKiALKAIEIgJFDQAgCygCCCACQRhsQQgQdwsgCyAENgIMIAsgEDYCCCALIAQ2AgQgC0EDOgAAIBRBBGohFCASIA9BAWoiD0cNAAsMAQtB+InAABB4AAsgA0G4AWoiCiADQaABaikDADcDACADQbABaiIEIANBmAFqKQMANwMAIAMgAykDkAE3A6gBIAMoAoQBIhIgAygCfEYEQCMAQRBrIhEkACARQQRqIANB/ABqIgsoAgAiASALKAIEQQQgAUEBdCIBIAFBBE0bIgJBCEEYEC4gESgCBEEBRgRAIBEoAgggESgCDBBoAAsgESgCCCEBIAsgAjYCACALIAE2AgQgEUEQaiQACyADKAKAASASQRhsaiIBIAMpA6gBNwMAIAFBCGogBCkDADcDACABQRBqIAopAwA3AwAgAyASQQFqNgKEASAAKAIwIgEEQCAAKAI0IAFBARB3CyAAKAIgIgEEQCAAKAIkIAFBAnRBBBB3CyAA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NWI1NTdmL3NlcmRlX2pzb24tMS4wLjE0MC9zcmMvc2VyLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nzdi1jb3JlLTAuMS4xMS9zcmMvcmVhZGVyLnJzAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2Nzdi0xLjMuMS9zcmMvcmVhZGVyLnJzAC9ydXN0Yy9mNDY0NzU5MTRkZTYyNjc4NTA5MGEwNWFlMDM3NTc4YWFhMTE5ZmM4L2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAvcnVzdGMvZjQ2NDc1OTE0ZGU2MjY3ODUwOTBhMDVhZTAzNzU3OGFhYTExOWZjOC9saWJyYXJ5L2FsbG9jL3NyYy9jb2xsZWN0aW9ucy9idHJlZS9uYXZpZ2F0ZS5ycwBsaWJyYXJ5L2NvcmUvc3JjL3VuaWNvZGUvcHJpbnRhYmxlLnJzAC9ydXN0Yy9mNDY0NzU5MTRkZTYyNjc4NTA5MGEwNWFlMDM3NTc4YWFhMTE5ZmM4L2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnMAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvY3N2LTEuMy4xL3NyYy9ieXRlX3JlY29yZC5ycwBsaWJyYXJ5L2NvcmUvc3JjL2ZtdC9tb2QucnMAbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9jc3YtY29yZS0wLjEuMTEvc3JjL2xpYi5ycwAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2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KQAAtQsQAAYAAAC7CxAACAAAAMMLEAAKAAAAzQsQAAEAAABFT0Ygd2hpbGUgcGFyc2luZyBhIGxpc3RFT0Ygd2hpbGUgcGFyc2luZyBhbiBvYmplY3RFT0Ygd2hpbGUgcGFyc2luZyBhIHN0cmluZ0VPRiB3aGlsZSBwYXJzaW5nIGEgdmFsdWVleHBlY3RlZCBgOmBleHBlY3RlZCBgLGAgb3IgYF1gZXhwZWN0ZWQgYCxgIG9yIGB9YGV4cGVjdGVkIGlkZW50ZXhwZWN0ZWQgdmFsdWVleHBlY3RlZCBgImBpbnZhbGlkIGVzY2FwZWludmFsaWQgbnVtYmVybnVtYmVyIG91dCBvZiByYW5nZWludmFsaWQgdW5pY29kZSBjb2RlIHBvaW50Y29udHJvbCBjaGFyYWN0ZXIgKFx1MDAwMC1cdTAwMUYpIGZvdW5kIHdoaWxlIHBhcnNpbmcgYSBzdHJpbmdrZXkgbXVzdCBiZSBhIHN0cmluZ2ludmFsaWQgdmFsdWU6IGV4cGVjdGVkIGtleSB0byBiZSBhIG51bWJlciBpbiBxdW90ZXNmbG9hdCBrZXkgbXVzdCBiZSBmaW5pdGUgKGdvdCBOYU4gb3IgKy8taW5mKWxvbmUgbGVhZGluZyBzdXJyb2dhdGUgaW4gaGV4IGVzY2FwZXRyYWlsaW5nIGNvbW1hdHJhaWxpbmcgY2hhcmFjdGVyc3VuZXhwZWN0ZWQgZW5kIG9mIGhleCBlc2NhcGVyZWN1cnNpb24gbGltaXQgZXhjZWVkZWQjAAAADAAAAAQAAAAkAAAAJQAAACEAAAB1dXV1dXV1dWJ0bnVmcnV1dXV1dXV1dXV1dXV1dXV1dQAAIgBBmJ3AAAsBXABBvJ7AAAv4BTAxMjM0NTY3ODlhYmNkZWY7ABAAYAAAAKABAAAuAAAAYXNzZXJ0aW9uIGZhaWxlZDogZWRnZS5oZWlnaHQgPT0gc2VsZi5oZWlnaHQgLSAx8AIQAFsAAAC8AgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCnwAhAAWwAAAFkHAAAFAAAA8AIQAFsAAADWBAAAIwAAAPACEABbAAAAGQUAACQAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5v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cnlkaXJlY3Rvcnkgbm90IGVtcHR5cmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1maWxlc3lzdGVtIGxvb3Agb3IgaW5kaXJlY3Rpb24gbGltaXQgKGUuZy4gc3ltbGluayBsb29wKXN0YWxlIG5ldHdvcmsgZmlsZSBoYW5kbGVpbnZhbGlkIGlucHV0IHBhcmFtZXRlcmludmFsaWQgZGF0YXRpbWVkIG91dHdyaXRlIHplcm9ubyBzdG9yYWdlIHNwYWNlc2VlayBvbiB1bnNlZWthYmxlIGZpbGVxdW90YSBleGNlZWRlZGZpbGUgdG9vIGxhcmdlcmVzb3VyY2UgYnVzeWV4ZWN1dGFibGUgZmlsZSBidXN5ZGVhZGxvY2tjcm9zcy1kZXZpY2UgbGluayBvciByZW5hbWV0b28gbWFueSBsaW5rc2ludmFsaWQgZmlsZW5hbWVhcmd1bWVudCBsaXN0IHRvbyBsb25nb3BlcmF0aW9uIGludGVycnVwdGVkdW5zdXBwb3J0ZWR1bmV4cGVjdGVkIGVuZCBvZiBmaWxlb3V0IG9mIG1lbW9yeWluIHByb2dyZXNzb3RoZXIgZXJyb3J1bmNhdGVnb3JpemVkIGVycm9yb3BlcmF0aW9uIHN1Y2Nlc3NmdWxtZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAAAwQBAAFQAAAEVAEAANAAAAEwQQABgAAABkAQAACQAAAC4AAAAMAAAABAAAADIAAAAzAAAANAAAAAAAAAAIAAAABAAAADUAAAA2AAAANwAAADgAAAA5AAAAEAAAAAQAAAA6AAAAOwAAADwAAAA9AAAAV291bGRCbG9jayAob3MgZXJyb3IgKQAAAQAAAAAAAADOQBAACwAAANlAEAABAAAATm90Rm91bmRQZXJtaXNzaW9uRGVuaWVkQ29ubmVjdGlvblJlZnVzZWRDb25uZWN0aW9uUmVzZXRIb3N0VW5yZWFjaGFibGVOZXR3b3JrVW5yZWFjaGFibGVDb25uZWN0aW9uQWJvcnRlZE5vdENvbm5lY3RlZEFkZHJJblVzZUFkZHJOb3RBdmFpbGFibGVOZXR3b3JrRG93bkJyb2tlblBpcGVBbHJlYWR5RXhpc3RzTm90QURpcmVjdG9yeUlzQURp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";
|
|
2
|
-
|
|
3
|
-
export { dataURL as default };
|
|
4
|
-
//# sourceMappingURL=web_csv_toolbox_wasm_bg.wasm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertCommonOptions.js","sources":["../../src/assertCommonOptions.ts"],"sourcesContent":["import type { CommonOptions } from \"./common/types.ts\";\nimport { CR, LF } from \"./constants.ts\";\n\n/**\n * Asserts that the provided value is a string and satisfies certain conditions.\n * @param value - The value to be checked.\n * @param name - The name of the option.\n * @throws {RangeError} If the value is empty, longer than 1 byte, or includes CR or LF.\n * @throws {TypeError} If the value is not a string.\n */\nfunction assertOptionValue(\n value: string,\n name: string,\n): asserts value is string {\n if (typeof value === \"string\") {\n switch (true) {\n case value.length === 0:\n throw new RangeError(`${name} must not be empty`);\n case value.length > 1:\n throw new RangeError(`${name} must be a single character`);\n case value === LF:\n case value === CR:\n throw new RangeError(`${name} must not include CR or LF`);\n default:\n break;\n }\n } else {\n throw new TypeError(`${name} must be a string`);\n }\n}\n\n/**\n * Asserts that the provided options object contains all the required properties.\n * Throws an error if any required property is missing\n * or if the delimiter and quotation length is not 1 byte character,\n * or if the delimiter is the same as the quotation.\n *\n * @example\n *\n * ```ts\n * assertCommonOptions({\n * quotation: '\"',\n * delimiter: ',',\n * });\n * ```\n *\n * @param options - The options object to be validated.\n * @throws {RangeError} If any required property is missing or if the delimiter is the same as the quotation.\n * @throws {TypeError} If any required property is not a string.\n */\nexport function assertCommonOptions<\n Delimiter extends string,\n Quotation extends string,\n>(\n options: Required<CommonOptions<Delimiter, Quotation>>,\n): asserts options is Required<CommonOptions<Delimiter, Quotation>> {\n for (const name of [\"delimiter\", \"quotation\"] as const) {\n assertOptionValue(options[name], name);\n }\n // @ts-ignore: TS doesn't understand that the values are strings\n if (options.delimiter === options.quotation) {\n throw new RangeError(\n \"delimiter must not be the same as quotation, use different characters\",\n );\n }\n}\n"],"names":[],"mappings":";;AAUA,SAAS,iBAAA,CACP,OACA,IACyB,EAAA;AACzB,EAAI,IAAA,OAAO,UAAU,QAAU,EAAA;AAC7B,IAAA,QAAQ,IAAM;AAAA,MACZ,KAAK,MAAM,MAAW,KAAA,CAAA;AACpB,QAAA,MAAM,IAAI,UAAA,CAAW,CAAG,EAAA,IAAI,CAAoB,kBAAA,CAAA,CAAA;AAAA,MAClD,KAAK,MAAM,MAAS,GAAA,CAAA;AAClB,QAAA,MAAM,IAAI,UAAA,CAAW,CAAG,EAAA,IAAI,CAA6B,2BAAA,CAAA,CAAA;AAAA,MAC3D,KAAK,KAAU,KAAA,EAAA;AAAA,MACf,KAAK,KAAU,KAAA,EAAA;AACb,QAAA,MAAM,IAAI,UAAA,CAAW,CAAG,EAAA,IAAI,CAA4B,0BAAA,CAAA,CAAA;AAExD;AACJ,GACK,MAAA;AACL,IAAA,MAAM,IAAI,SAAA,CAAU,CAAG,EAAA,IAAI,CAAmB,iBAAA,CAAA,CAAA;AAAA;AAElD;AAqBO,SAAS,oBAId,OACkE,EAAA;AAClE,EAAA,KAAA,MAAW,IAAQ,IAAA,CAAC,WAAa,EAAA,WAAW,CAAY,EAAA;AACtD,IAAkB,iBAAA,CAAA,OAAA,CAAQ,IAAI,CAAA,EAAG,IAAI,CAAA;AAAA;AAGvC,EAAI,IAAA,OAAA,CAAQ,SAAc,KAAA,OAAA,CAAQ,SAAW,EAAA;AAC3C,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/common/constants.ts"],"sourcesContent":["/**\n * FiledDelimiter is a symbol for field delimiter of CSV.\n * @category Constants\n */\nexport const FieldDelimiter = Symbol.for(\"web-csv-toolbox.FieldDelimiter\");\n/**\n * RecordDelimiter is a symbol for record delimiter of CSV.\n * @category Constants\n */\nexport const RecordDelimiter = Symbol.for(\"web-csv-toolbox.RecordDelimiter\");\n/**\n * Field is a symbol for field of CSV.\n * @category Constants\n */\nexport const Field = Symbol.for(\"web-csv-toolbox.Field\");\n"],"names":[],"mappings":"AAIa,MAAA,cAAA,GAAiB,MAAO,CAAA,GAAA,CAAI,gCAAgC;AAK5D,MAAA,eAAA,GAAkB,MAAO,CAAA,GAAA,CAAI,iCAAiC;AAK9D,MAAA,KAAA,GAAQ,MAAO,CAAA,GAAA,CAAI,uBAAuB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../../src/common/errors.ts"],"sourcesContent":["import type { Position } from \"./types.js\";\n\n/**\n * Options for creating a parse error.\n */\nexport interface ParseErrorOptions extends ErrorOptions {\n /**\n * The position where the error occurred.\n */\n position?: Position;\n}\n\n/**\n * Error class for parse errors.\n *\n * @remarks\n * This error is thrown when a parsing error occurs.\n * {@link ParseError} is a subclass of {@link !SyntaxError}.\n *\n * This is in reference to the specification\n * that the error thrown when a parse error occurs in the {@link !JSON.parse} function is {@link !SyntaxError}.\n */\nexport class ParseError extends SyntaxError {\n /**\n * The position where the error occurred.\n */\n public position?: Position;\n\n constructor(message?: string, options?: ParseErrorOptions) {\n super(message, { cause: options?.cause });\n this.name = \"ParseError\";\n this.position = options?.position;\n }\n}\n"],"names":[],"mappings":"AAsBO,MAAM,mBAAmB,WAAY,CAAA;AAAA;AAAA;AAAA;AAAA,EAInC,QAAA;AAAA,EAEP,WAAA,CAAY,SAAkB,OAA6B,EAAA;AACzD,IAAA,KAAA,CAAM,OAAS,EAAA,EAAE,KAAO,EAAA,OAAA,EAAS,OAAO,CAAA;AACxC,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA;AACZ,IAAA,IAAA,CAAK,WAAW,OAAS,EAAA,QAAA;AAAA;AAE7B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"commonParseErrorHandling.js","sources":["../../src/commonParseErrorHandling.ts"],"sourcesContent":["import { ParseError } from \"./common/errors\";\n\n/**\n * Common error handling for parsing CSV data.\n *\n * @param error - The error to handle.\n * @throws {ParseError} When an error occurs while parsing the CSV data.\n * @throws {RangeError} When an invalid option is provided.\n * @throws {TypeError} When an invalid option is provided.\n */\n\nexport function commonParseErrorHandling(error: unknown): never {\n if (\n error instanceof ParseError ||\n error instanceof RangeError ||\n error instanceof TypeError\n ) {\n throw error;\n }\n throw new ParseError(\"An error occurred while parsing the CSV data.\", {\n cause: error,\n });\n}\n"],"names":[],"mappings":";;AAWO,SAAS,yBAAyB,KAAuB,EAAA;AAC9D,EAAA,IACE,KAAiB,YAAA,UAAA,IACjB,KAAiB,YAAA,UAAA,IACjB,iBAAiB,SACjB,EAAA;AACA,IAAM,MAAA,KAAA;AAAA;AAER,EAAM,MAAA,IAAI,WAAW,+CAAiD,EAAA;AAAA,IACpE,KAAO,EAAA;AAAA,GACR,CAAA;AACH;;;;"}
|
package/dist/es/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/constants.ts"],"sourcesContent":["export const CR = \"\\r\";\nexport type CR = typeof CR;\n\nexport const CRLF = \"\\r\\n\";\nexport type CRLF = typeof CRLF;\n\nexport const LF = \"\\n\";\nexport type LF = typeof LF;\n\nexport type Newline = CRLF | CR | LF;\n\n/**\n * COMMA is a symbol for comma(,).\n */\nexport const COMMA = \",\";\n\n/**\n * DOUBLE_QUOTE is a symbol for double quote(\").\n */\nexport const DOUBLE_QUOTE = '\"';\n\nexport const DEFAULT_DELIMITER = COMMA;\nexport type DEFAULT_DELIMITER = typeof DEFAULT_DELIMITER;\n\nexport const DEFAULT_QUOTATION = DOUBLE_QUOTE;\nexport type DEFAULT_QUOTATION = typeof DEFAULT_QUOTATION;\n"],"names":[],"mappings":"AAAO,MAAM,EAAK,GAAA;AAGX,MAAM,IAAO,GAAA;AAGb,MAAM,EAAK,GAAA;AAQX,MAAM,KAAQ,GAAA;AAKd,MAAM,YAAe,GAAA;AAErB,MAAM,iBAAoB,GAAA;AAG1B,MAAM,iBAAoB,GAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getOptionsFromResponse.js","sources":["../../src/getOptionsFromResponse.ts"],"sourcesContent":["import type { ParseBinaryOptions } from \"./common/types.ts\";\nimport { parseMime } from \"./utils/parseMime.ts\";\n\n/**\n * Extracts the options from the response object.\n *\n * @param response - The response object from which to extract the options.\n * @param options - The options to merge with the extracted options.\n * @returns The options extracted from the response.\n * @throws {RangeError} - The content type is not supported.\n */\nexport function getOptionsFromResponse<Header extends ReadonlyArray<string>>(\n response: Response,\n options: ParseBinaryOptions<Header> = {},\n): ParseBinaryOptions<Header> {\n const { headers } = response;\n const contentType = headers.get(\"content-type\") ?? \"text/csv\";\n const mime = parseMime(contentType);\n if (mime.type !== \"text/csv\") {\n throw new RangeError(`Invalid mime type: \"${contentType}\"`);\n }\n const decomposition =\n (headers.get(\"content-encoding\") as CompressionFormat) ?? undefined;\n const charset = mime.parameters.charset ?? \"utf-8\";\n // TODO: Support header=present and header=absent\n // const header = mime.parameters.header ?? \"present\";\n return {\n decomposition,\n charset,\n ...options,\n };\n}\n"],"names":[],"mappings":";;AAWO,SAAS,sBACd,CAAA,QAAA,EACA,OAAsC,GAAA,EACV,EAAA;AAC5B,EAAM,MAAA,EAAE,SAAY,GAAA,QAAA;AACpB,EAAA,MAAM,WAAc,GAAA,OAAA,CAAQ,GAAI,CAAA,cAAc,CAAK,IAAA,UAAA;AACnD,EAAM,MAAA,IAAA,GAAO,UAAU,WAAW,CAAA;AAClC,EAAI,IAAA,IAAA,CAAK,SAAS,UAAY,EAAA;AAC5B,IAAA,MAAM,IAAI,UAAA,CAAW,CAAuB,oBAAA,EAAA,WAAW,CAAG,CAAA,CAAA,CAAA;AAAA;AAE5D,EAAA,MAAM,aACH,GAAA,OAAA,CAAQ,GAAI,CAAA,kBAAkB,CAA2B,IAAA,MAAA;AAC5D,EAAM,MAAA,OAAA,GAAU,IAAK,CAAA,UAAA,CAAW,OAAW,IAAA,OAAA;AAG3C,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAG;AAAA,GACL;AACF;;;;"}
|
package/dist/es/loadWASM.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loadWASM.js","sources":["../../src/loadWASM.ts"],"sourcesContent":["import init, { type InitInput } from \"web-csv-toolbox-wasm\";\n\nimport dataURL from \"web-csv-toolbox-wasm/web_csv_toolbox_wasm_bg.wasm\";\n\n/**\n * Load WASM module.\n *\n * This must be called before calling WebAssembly functions.\n *\n * @example\n *\n * ```ts\n * import { loadWASM, parseStringWASM } from \"web-csv-toolbox\";\n *\n * await loadWASM();\n *\n * const csv = \"a,b,c\\n1,2,3\";\n * const parsed = parseStringWASM(csv);\n * ```\n */\nexport async function loadWASM(input?: InitInput | Promise<InitInput>) {\n await init(input ?? dataURL);\n}\n"],"names":["init"],"mappings":";;;AAoBA,eAAsB,SAAS,KAAwC,EAAA;AACrE,EAAM,MAAAA,UAAA,CAAK,SAAS,OAAO,CAAA;AAC7B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loadWASM.web.js","sources":["../../src/loadWASM.web.ts"],"sourcesContent":["import init, { type InitInput } from \"web-csv-toolbox-wasm\";\n\n/**\n * Load WASM module.\n *\n * This must be called before calling WebAssembly functions.\n *\n * @example\n *\n * ```ts\n * import { loadWASM, parseStringWASM } from \"web-csv-toolbox\";\n *\n * await loadWASM();\n *\n * const csv = \"a,b,c\\n1,2,3\";\n * const parsed = parseStringWASM(csv);\n * ```\n */\nexport async function loadWASM(input?: InitInput | Promise<InitInput>) {\n await init(input);\n}\n"],"names":["init"],"mappings":";;AAkBA,eAAsB,SAAS,KAAwC,EAAA;AACrE,EAAA,MAAMA,WAAK,KAAK,CAAA;AAClB;;;;"}
|
package/dist/es/parse.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sources":["../../src/parse.ts"],"sourcesContent":["import type {\n CSV,\n CSVBinary,\n CSVRecord,\n CSVString,\n ParseBinaryOptions,\n ParseOptions,\n} from \"./common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport { parseBinary } from \"./parseBinary.ts\";\nimport { parseResponse } from \"./parseResponse.ts\";\nimport { parseString } from \"./parseString.ts\";\nimport { parseStringStream } from \"./parseStringStream.ts\";\nimport { parseUint8ArrayStream } from \"./parseUint8ArrayStream.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\n/**\n * Parse CSV to records.\n *\n * {@link !String}, {@link !ReadableStream}<string | {@link !Uint8Array}> and {@link !Response} are supported.\n *\n *\n * @typeParam Header Header type like `['name', 'age']`.\n *\n * @param csv CSV string to parse.\n * @param options Parsing options for CSV string parsing.\n * @returns Async iterable iterator of records.\n *\n * If you want array of records, use {@link parse.toArray} function.\n * @category High-level API\n *\n * @remarks\n * {@link parseString}, {@link parseBinary}, {@link parseUint8ArrayStream},\n * {@link parseStringStream} and {@link parseResponse} are used internally.\n *\n * If you known the type of the CSV, it performs better to use them directly.\n *\n * | If you want to parse a... | Use... | Options... |\n * | -------------------------------------------- | ----------------------------- | -------------------------- |\n * | {@link !String} | {@link parseString} | {@link ParseOptions} |\n * | {@link !ReadableStream}<{@link !String}> | {@link parseStringStream} | {@link ParseOptions} |\n * | {@link !Uint8Array} \\| {@link !ArrayBuffer} | {@link parseBinary} | {@link ParseBinaryOptions} |\n * | {@link !ReadableStream}<{@link !Uint8Array}> | {@link parseUint8ArrayStream} | {@link ParseBinaryOptions} |\n * | {@link !Response} | {@link parseResponse} | {@link ParseBinaryOptions} |\n *\n * @example Parsing CSV files from strings\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * for await (const record of parse(csv)) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n *\n * @example Parsing CSV files from streams\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * }\n * });\n *\n * for await (const record of parse(stream)) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n *\n *\n * @example Parsing CSV files with headers\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * // This CSV has no header.\n * const csv = `Alice,42\n * Bob,69`;\n *\n * for await (const record of parse(csv, { header: ['name', 'age'] })) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n *\n * @example Parsing CSV files with different delimiters characters\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * const csv = `name\\tage\n * Alice\\t42\n * Bob\\t69`;\n *\n * for await (const record of parse(csv, { delimiter: '\\t' })) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\nexport function parse<const CSVSource extends CSVString>(\n csv: CSVSource,\n): AsyncIterableIterator<CSVRecord<PickCSVHeader<CSVSource>>>;\nexport function parse<const Header extends ReadonlyArray<string>>(\n csv: CSVString,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parse<const Header extends ReadonlyArray<string>>(\n csv: CSVString,\n options: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parse<\n const CSVSource extends CSVString,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n csv: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>>;\n/**\n * Parse CSV binary to records.\n *\n * @param csv CSV binary to parse.\n * @param options Parsing options for CSV binary parsing.\n *\n * @example Parsing CSV files from responses\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * // This CSV data is not gzipped and encoded in utf-8.\n * const response = await fetch('https://example.com/data.csv');\n *\n * for await (const record of parse(response)) {\n * // ...\n * }\n * ```\n *\n * @example Parsing CSV files with options spcialized for binary\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * // This CSV data is gzipped and encoded in shift-jis and has BOM.\n * const response = await fetch('https://example.com/data.csv.gz');\n *\n * for await (const record of parse(response, {\n * charset: 'shift-jis',\n * ignoreBOM: true,\n * decomposition: 'gzip',\n * })) {\n * // ...\n * }\n * ```\n */\nexport function parse<const Header extends ReadonlyArray<string>>(\n csv: CSVBinary,\n options?: ParseBinaryOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport async function* parse<const Header extends ReadonlyArray<string>>(\n csv: CSV,\n options?: ParseBinaryOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n if (typeof csv === \"string\") {\n yield* parseString(csv, options);\n } else if (csv instanceof Uint8Array || csv instanceof ArrayBuffer) {\n yield* parseBinary(csv, options);\n } else if (csv instanceof ReadableStream) {\n const [branch1, branch2] = csv.tee();\n const reader1 = branch1.getReader();\n const { value: firstChunk } = await reader1.read();\n reader1.releaseLock();\n if (typeof firstChunk === \"string\") {\n yield* parseStringStream(branch2 as ReadableStream<string>, options);\n } else if (firstChunk instanceof Uint8Array) {\n yield* parseUint8ArrayStream(\n branch2 as ReadableStream<Uint8Array>,\n options,\n );\n }\n } else if (csv instanceof Response) {\n yield* parseResponse(csv, options);\n }\n}\n\nexport declare namespace parse {\n /**\n * Parse CSV string to array of records,\n * ideal for smaller data sets.\n *\n * @example Parse a CSV as array of records\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const records = await parse.toArray(csv);\n * console.log(records);\n * // Prints:\n * // [ { name: 'Alice', age: '42' }, { name: 'Bob', age: '69' } ]\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n csv: CSVString,\n options?: ParseOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse CSV string to array of records,\n * ideal for smaller data sets.\n *\n * @example Parse a CSV as array of records\n *\n * ```ts\n * import { parse } from 'web-csv-toolbox';\n *\n * const response = await fetch('https://example.com/data.csv');\n *\n * const records = await parse.toArray(response);\n * console.log(records);\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n csv: CSVBinary,\n options?: ParseBinaryOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n}\n\nObject.defineProperties(parse, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;;;;AAyLuB,gBAAA,KAAA,CACrB,KACA,OAC0C,EAAA;AAC1C,EAAI,IAAA,OAAO,QAAQ,QAAU,EAAA;AAC3B,IAAO,OAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AAAA,GACtB,MAAA,IAAA,GAAA,YAAe,UAAc,IAAA,GAAA,YAAe,WAAa,EAAA;AAClE,IAAO,OAAA,WAAA,CAAY,KAAK,OAAO,CAAA;AAAA,GACjC,MAAA,IAAW,eAAe,cAAgB,EAAA;AACxC,IAAA,MAAM,CAAC,OAAA,EAAS,OAAO,CAAA,GAAI,IAAI,GAAI,EAAA;AACnC,IAAM,MAAA,OAAA,GAAU,QAAQ,SAAU,EAAA;AAClC,IAAA,MAAM,EAAE,KAAO,EAAA,UAAA,EAAe,GAAA,MAAM,QAAQ,IAAK,EAAA;AACjD,IAAA,OAAA,CAAQ,WAAY,EAAA;AACpB,IAAI,IAAA,OAAO,eAAe,QAAU,EAAA;AAClC,MAAO,OAAA,iBAAA,CAAkB,SAAmC,OAAO,CAAA;AAAA,KACrE,MAAA,IAAW,sBAAsB,UAAY,EAAA;AAC3C,MAAO,OAAA,qBAAA;AAAA,QACL,OAAA;AAAA,QACA;AAAA,OACF;AAAA;AACF,GACF,MAAA,IAAW,eAAe,QAAU,EAAA;AAClC,IAAO,OAAA,aAAA,CAAc,KAAK,OAAO,CAAA;AAAA;AAErC;AA+CA,MAAA,CAAO,iBAAiB,KAAO,EAAA;AAAA,EAC7B,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS;AAEpB,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseBinary.js","sources":["../../src/parseBinary.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { parseBinaryToArraySync } from \"./parseBinaryToArraySync.ts\";\nimport { parseBinaryToIterableIterator } from \"./parseBinaryToIterableIterator.ts\";\nimport { parseBinaryToStream } from \"./parseBinaryToStream.ts\";\nimport { convertIterableIteratorToAsync } from \"./utils/convertIterableIteratorToAsync.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\n\n/**\n * Parse a binary from an {@link !Uint8Array}.\n *\n * @category Middle-level API\n *\n * @param bytes CSV bytes to parse.\n * @param options Parsing options\n * @returns Async iterable iterator of records.\n *\n * @example Parsing CSV binary\n *\n * ```ts\n * import { parseUint8Array } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * for await (const record of parseUint8Array(csv)) {\n * console.log(record);\n * }\n * ```\n */\nexport function parseBinary<Header extends ReadonlyArray<string>>(\n bytes: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n const iterator = parseBinaryToIterableIterator(bytes, options);\n return convertIterableIteratorToAsync(iterator);\n}\n\nexport declare namespace parseBinary {\n /**\n * Parse a binary from an {@link !Uint8Array} to an array of records.\n *\n * @param bytes CSV bytes to parse.\n * @param options Parsing options\n * @returns Array of records\n *\n * @example\n * ```ts\n * import { parseUint8Array } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const records = await parseUint8Array.toArray(csv);\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n bytes: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse a binary from an {@link !Uint8Array} to an array of records.\n *\n * @param bytes CSV bytes to parse.\n * @param options Parsing options\n * @returns Array of records\n * @example\n *\n * ```ts\n * import { parseUint8Array } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const records = parseUint8Array.toArraySync(csv);\n * ```\n */\n export function toArraySync<Header extends ReadonlyArray<string>>(\n bytes: Uint8Array | ArrayBuffer,\n options?: ParseBinaryOptions<Header>,\n ): CSVRecord<Header>[];\n\n /**\n * Parse a binary from an {@link !Uint8Array} to an iterable iterator of records.\n *\n * @param bytes CSV bytes to parse.\n * @param options Parsing options\n * @returns Async iterable iterator of records.\n * @example\n * ```ts\n * import { parseUint8Array } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * for (const record of parseUint8Array.toIterableIterator(csv)) {\n * console.log(record);\n * }\n * ```\n */\n export function toIterableIterator<Header extends ReadonlyArray<string>>(\n bytes: Uint8Array,\n options?: ParseBinaryOptions<Header>,\n ): IterableIterator<CSVRecord<Header>>;\n\n /**\n * Parse a binary from an {@link !Uint8Array} to a stream of records.\n *\n * @param bytes CSV bytes to parse.\n * @param options Parsing options\n * @returns Stream of records.\n *\n * @example\n *\n * ```ts\n * import { parseUint8Array } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const stream = parseUint8Array.toStream(csv);\n *\n * await stream.pipeTo(\n * new WritableStream({\n * write(record) {\n * console.log(record);\n * },\n * }),\n * );\n * ```\n */\n export function toStream<Header extends ReadonlyArray<string>>(\n bytes: Uint8Array,\n options?: ParseBinaryOptions<Header>,\n ): ReadableStream<CSVRecord<Header>>;\n}\n\nObject.defineProperties(parseBinary, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n toArraySync: {\n enumerable: true,\n writable: false,\n value: parseBinaryToArraySync,\n },\n toIterableIterator: {\n enumerable: true,\n writable: false,\n value: parseBinaryToIterableIterator,\n },\n toStream: {\n enumerable: true,\n writable: false,\n value: parseBinaryToStream,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;;;AA8BgB,SAAA,WAAA,CACd,OACA,OAC0C,EAAA;AAC1C,EAAM,MAAA,QAAA,GAAW,6BAA8B,CAAA,KAAA,EAAO,OAAO,CAAA;AAC7D,EAAA,OAAO,+BAA+B,QAAQ,CAAA;AAChD;AAyGA,MAAA,CAAO,iBAAiB,WAAa,EAAA;AAAA,EACnC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseBinaryToArraySync.js","sources":["../../src/parseBinaryToArraySync.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport { parseStringToArraySync } from \"./parseStringToArraySync.ts\";\nimport { convertBinaryToString } from \"./utils/convertBinaryToString.ts\";\n\nexport function parseBinaryToArraySync<Header extends ReadonlyArray<string>>(\n binary: Uint8Array | ArrayBuffer,\n options: ParseBinaryOptions<Header> = {},\n): CSVRecord<Header>[] {\n try {\n const csv = convertBinaryToString(binary, options);\n return parseStringToArraySync(csv, options);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,sBACd,CAAA,MAAA,EACA,OAAsC,GAAA,EACjB,EAAA;AACrB,EAAI,IAAA;AACF,IAAM,MAAA,GAAA,GAAM,qBAAsB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACjD,IAAO,OAAA,sBAAA,CAAuB,KAAK,OAAO,CAAA;AAAA,WACnC,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseBinaryToIterableIterator.js","sources":["../../src/parseBinaryToIterableIterator.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport { parseStringToIterableIterator } from \"./parseStringToIterableIterator.ts\";\nimport { convertBinaryToString } from \"./utils/convertBinaryToString.ts\";\n\n/**\n * Parses the given binary data into an iterable iterator of CSV records.\n *\n * @param binary - The binary data to parse.\n * @param options - The parse options.\n * @returns An iterable iterator of CSV records.\n * @throws {ParseError} When an error occurs while parsing the CSV data.\n */\nexport function parseBinaryToIterableIterator<\n Header extends ReadonlyArray<string>,\n>(\n binary: Uint8Array | ArrayBuffer,\n options: ParseBinaryOptions<Header> = {},\n): IterableIterator<CSVRecord<Header>> {\n try {\n const csv = convertBinaryToString(binary, options);\n return parseStringToIterableIterator(csv, options);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AAaO,SAAS,6BAGd,CAAA,MAAA,EACA,OAAsC,GAAA,EACD,EAAA;AACrC,EAAI,IAAA;AACF,IAAM,MAAA,GAAA,GAAM,qBAAsB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACjD,IAAO,OAAA,6BAAA,CAA8B,KAAK,OAAO,CAAA;AAAA,WAC1C,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseBinaryToStream.js","sources":["../../src/parseBinaryToStream.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport { parseStringToStream } from \"./parseStringToStream.ts\";\nimport { convertBinaryToString } from \"./utils/convertBinaryToString.ts\";\n\nexport function parseBinaryToStream<Header extends ReadonlyArray<string>>(\n binary: Uint8Array | ArrayBuffer,\n options: ParseBinaryOptions<Header> = {},\n): ReadableStream<CSVRecord<Header>> {\n try {\n const csv = convertBinaryToString(binary, options);\n return parseStringToStream(csv, options);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AAKO,SAAS,mBACd,CAAA,MAAA,EACA,OAAsC,GAAA,EACH,EAAA;AACnC,EAAI,IAAA;AACF,IAAM,MAAA,GAAA,GAAM,qBAAsB,CAAA,MAAA,EAAQ,OAAO,CAAA;AACjD,IAAO,OAAA,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,WAChC,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseResponse.js","sources":["../../src/parseResponse.ts"],"sourcesContent":["import type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport { getOptionsFromResponse } from \"./getOptionsFromResponse.ts\";\nimport { parseResponseToStream } from \"./parseResponseToStream.ts\";\nimport { parseUint8ArrayStream } from \"./parseUint8ArrayStream.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\n\n/**\n * Parse HTTP Response what contains CSV to records,\n * ideal for smaller data sets.\n *\n * @remarks\n * This function automatically treats response headers.\n *\n * - If `Content-Type` header is not set, it assumes `text/csv`.\n * - If `Content-Type` header is not `text/csv`, it throws an error.\n * - If `Content-Type` header has charset parameter, it uses it for decoding.\n * - If `Content-Encoding` header is set, it decompresses the response.\n * - Should there be any conflicting information between the header and the options, the option's value will take precedence.\n *\n * @category Middle-level API\n * @param response\n * @param options\n * @returns Async iterable iterator of records.\n *\n * If you want array of records, use {@link parseResponse.toArray} function.\n *\n * @example Parsing CSV Response\n *\n * ```ts\n * import { parseResponse } from 'web-csv-toolbox';\n *\n * const response = await fetch('https://example.com/data.csv');\n *\n * for await (const record of parseResponse(response)) {\n * console.log(record);\n * }\n * ```\n */\nexport function parseResponse<Header extends ReadonlyArray<string>>(\n response: Response,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n try {\n const options_ = getOptionsFromResponse(response, options);\n if (response.body === null) {\n throw new RangeError(\"Response body is null\");\n }\n return parseUint8ArrayStream(response.body, options_);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n\nexport declare namespace parseResponse {\n /**\n * Parse CSV Response to array of records.\n *\n * @returns Array of records\n *\n * @example Parsing CSV Response\n *\n * ```ts\n * import { parseResponse } from 'web-csv-toolbox';\n *\n * const response = await fetch('https://example.com/data.csv');\n *\n * const records = await parseResponse.toArray(response);\n * console.log(records);\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n response: Response,\n options?: ParseOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse CSV Response to stream of records.\n *\n * @param response Response to parse\n * @returns Stream of records\n *\n * @example Parsing CSV Response\n *\n * ```ts\n * import { parseResponse } from 'web-csv-toolbox';\n *\n * const response = await fetch('https://example.com/data.csv');\n *\n * await parseResponse.toStream(response)\n * .pipeTo(\n * new WritableStream({\n * write(record) {\n * console.log(record);\n * },\n * }),\n * );\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\n export function toStream<Header extends ReadonlyArray<string>>(\n response: Response,\n options?: ParseOptions<Header>,\n ): ReadableStream<CSVRecord<Header>[]>;\n}\n\nObject.defineProperties(parseResponse, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n toStreamSync: {\n enumerable: true,\n writable: false,\n value: parseResponseToStream,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;;;AAuCgB,SAAA,aAAA,CACd,UACA,OAC0C,EAAA;AAC1C,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAW,sBAAuB,CAAA,QAAA,EAAU,OAAO,CAAA;AACzD,IAAI,IAAA,QAAA,CAAS,SAAS,IAAM,EAAA;AAC1B,MAAM,MAAA,IAAI,WAAW,uBAAuB,CAAA;AAAA;AAE9C,IAAO,OAAA,qBAAA,CAAsB,QAAS,CAAA,IAAA,EAAM,QAAQ,CAAA;AAAA,WAC7C,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;AAuDA,MAAA,CAAO,iBAAiB,aAAe,EAAA;AAAA,EACrC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS,GAClB;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseResponseToStream.js","sources":["../../src/parseResponseToStream.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport { getOptionsFromResponse } from \"./getOptionsFromResponse.ts\";\nimport { parseUint8ArrayStreamToStream } from \"./parseUint8ArrayStreamToStream.ts\";\n\nexport function parseResponseToStream<Header extends ReadonlyArray<string>>(\n response: Response,\n options?: ParseBinaryOptions<Header>,\n): ReadableStream<CSVRecord<Header>> {\n try {\n const options_ = getOptionsFromResponse(response, options);\n if (response.body === null) {\n throw new RangeError(\"Response body is null\");\n }\n return parseUint8ArrayStreamToStream(response.body, options_);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AAKgB,SAAA,qBAAA,CACd,UACA,OACmC,EAAA;AACnC,EAAI,IAAA;AACF,IAAM,MAAA,QAAA,GAAW,sBAAuB,CAAA,QAAA,EAAU,OAAO,CAAA;AACzD,IAAI,IAAA,QAAA,CAAS,SAAS,IAAM,EAAA;AAC1B,MAAM,MAAA,IAAI,WAAW,uBAAuB,CAAA;AAAA;AAE9C,IAAO,OAAA,6BAAA,CAA8B,QAAS,CAAA,IAAA,EAAM,QAAQ,CAAA;AAAA,WACrD,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseString.js","sources":["../../src/parseString.ts"],"sourcesContent":["import type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport { parseStringToArraySync } from \"./parseStringToArraySync.ts\";\nimport { parseStringToIterableIterator } from \"./parseStringToIterableIterator.ts\";\nimport { parseStringToStream } from \"./parseStringToStream.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\n/**\n * Parse CSV string to records.\n *\n * @category Middle-level API\n * @param csv CSV string to parse\n * @param options Parsing options. See {@link ParseOptions}.\n * @returns Async iterable iterator of records.\n *\n * If you want array of records, use {@link parseString.toArray} function.\n * @example Parsing CSV files from strings\n *\n * ```ts\n * import { parseString } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * for await (const record of parseString(csv)) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\nexport function parseString<const CSVSource extends string>(\n csv: CSVSource,\n): AsyncIterableIterator<CSVRecord<PickCSVHeader<CSVSource>>>;\nexport function parseString<const Header extends ReadonlyArray<string>>(\n csv: string,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseString<const Header extends ReadonlyArray<string>>(\n csv: string,\n options: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseString<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n csv: CSVSource,\n options?: ParseOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseString(\n csv: string,\n options?: ParseOptions,\n): AsyncIterableIterator<CSVRecord<string[]>>;\nexport async function* parseString<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n try {\n yield* parseStringToIterableIterator(csv, options);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\nexport declare namespace parseString {\n /**\n * Parse CSV string to records.\n *\n * @returns Array of records\n *\n * @example\n * ```ts\n * import { parseString } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const records = await parseString.toArray(csv);\n * console.log(records);\n * // Prints:\n * // [ { name: 'Alice', age: '42' }, { name: 'Bob', age: '69' } ]\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse CSV string to records.\n *\n * @returns Array of records\n *\n * @example\n *\n * ```ts\n * import { parseString } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const records = parseString.toArraySync(csv);\n * console.log(records);\n * // Prints:\n * // [ { name: 'Alice', age: '42' }, { name: 'Bob', age: '69' } ]\n * ```\n */\n export function toArraySync<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n ): CSVRecord<Header>[];\n /**\n * Parse CSV string to records.\n *\n * @returns Async iterable iterator of records\n *\n * @example\n * ```ts\n * import { parseString } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * for (const record of parseString.toIterableIterator(csv)) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\n export function toIterableIterator<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n ): IterableIterator<CSVRecord<Header>>;\n /**\n * Parse CSV string to records.\n *\n * @returns Readable stream of records\n *\n * @example\n * ```ts\n * import { parseString } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * await parseString.toStream(csv)\n * .pipeTo(\n * new WritableStream({\n * write(record) {\n * console.log(record);\n * },\n * }),\n * );\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\n export function toStream<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n ): ReadableStream<CSVRecord<Header>>;\n}\nObject.defineProperties(parseString, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n toArraySync: {\n enumerable: true,\n writable: false,\n value: parseStringToArraySync,\n },\n toIterableIterator: {\n enumerable: true,\n writable: false,\n value: parseStringToIterableIterator,\n },\n toStream: {\n enumerable: true,\n writable: false,\n value: parseStringToStream,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;;;AA8DuB,gBAAA,WAAA,CACrB,KACA,OAC0C,EAAA;AAC1C,EAAI,IAAA;AACF,IAAO,OAAA,6BAAA,CAA8B,KAAK,OAAO,CAAA;AAAA,WAC1C,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;AAyGA,MAAA,CAAO,iBAAiB,WAAa,EAAA;AAAA,EACnC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA,GACT;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringStream.js","sources":["../../src/parseStringStream.ts"],"sourcesContent":["import type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport { parseStringStreamToStream } from \"./parseStringStreamToStream.ts\";\nimport { convertStreamToAsyncIterableIterator } from \"./utils/convertStreamToAsyncIterableIterator.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\n/**\n * Parse CSV string stream to records.\n *\n * @category Middle-level API\n * @param stream CSV string stream to parse\n * @param options Parsing options.\n * @returns Async iterable iterator of records.\n *\n * If you want array of records, use {@link parseStringStream.toArray} function.\n *\n * @example Parsing CSV files from strings\n *\n * ```ts\n * import { parseStringStream } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * for await (const record of parseStringStream(csv)) {\n * console.log(record);\n * }\n * // Prints:\n * // { name: 'Alice', age: '42' }\n * // { name: 'Bob', age: '69' }\n * ```\n */\nexport function parseStringStream<\n const CSVSource extends ReadableStream<string>,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n csv: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseStringStream<\n const CSVSource extends ReadableStream<string>,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(\n csv: CSVSource,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseStringStream<const Header extends ReadonlyArray<string>>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>>;\nexport function parseStringStream<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n const recordStream = parseStringStreamToStream(stream, options);\n return convertStreamToAsyncIterableIterator(recordStream);\n}\n\nexport declare namespace parseStringStream {\n /**\n * Parse CSV string stream to records.\n *\n * @returns Array of records\n *\n * @example\n *\n * ```ts\n * import { parseStringStream } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * const records = await parseStringStream.toArray(stream);\n * console.log(records);\n * // Prints:\n * // [ { name: 'Alice', age: '42' }, { name: 'Bob', age: '69' } ]\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse CSV string stream to records.\n *\n * @returns Array of records\n *\n * @example\n *\n * ```ts\n * import { parseStringStream } from 'web-csv-toolbox';\n *\n * const csv = `name,age\n * Alice,42\n * Bob,69`;\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * await parseStringStream.toStream(stream)\n * .pipeTo(\n * new WritableStream({\n * write(record) {\n * console.log(record);\n * },\n * }),\n * );\n * ```\n */\n export function toStream<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n ): ReadableStream<CSVRecord<Header>>;\n}\n\nObject.defineProperties(parseStringStream, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n toStream: {\n enumerable: true,\n writable: false,\n value: parseStringStreamToStream,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;AAiEgB,SAAA,iBAAA,CACd,QACA,OAC0C,EAAA;AAC1C,EAAM,MAAA,YAAA,GAAe,yBAA0B,CAAA,MAAA,EAAQ,OAAO,CAAA;AAC9D,EAAA,OAAO,qCAAqC,YAAY,CAAA;AAC1D;AAuEA,MAAA,CAAO,iBAAiB,iBAAmB,EAAA;AAAA,EACzC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringStreamToStream.js","sources":["../../src/parseStringStreamToStream.ts"],"sourcesContent":["import { LexerTransformer } from \"./LexerTransformer.ts\";\nimport { RecordAssemblerTransformer } from \"./RecordAssemblerTransformer.ts\";\nimport type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport { pipeline } from \"./utils/pipeline.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\nexport function parseStringStreamToStream<\n const CSVSource extends ReadableStream<string>,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n stream: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringStreamToStream<\n const CSVSource extends ReadableStream<string>,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(\n stream: CSVSource,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringStreamToStream<\n const Header extends ReadonlyArray<string>,\n>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringStreamToStream<\n const Header extends ReadonlyArray<string>,\n>(\n stream: ReadableStream<string>,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>> {\n return pipeline(\n stream,\n new LexerTransformer(options),\n new RecordAssemblerTransformer(options),\n );\n}\n"],"names":[],"mappings":";;;;AAiCgB,SAAA,yBAAA,CAGd,QACA,OACmC,EAAA;AACnC,EAAO,OAAA,QAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAI,iBAAiB,OAAO,CAAA;AAAA,IAC5B,IAAI,2BAA2B,OAAO;AAAA,GACxC;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringToArraySync.js","sources":["../../src/parseStringToArraySync.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\nexport function parseStringToArraySync<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n csv: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): CSVRecord<Header>[];\nexport function parseStringToArraySync<\n const CSVSource extends string,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(csv: CSVSource, options?: ParseOptions<Header>): CSVRecord<Header>[];\nexport function parseStringToArraySync<\n const Header extends ReadonlyArray<string>,\n>(csv: string, options?: ParseOptions<Header>): CSVRecord<Header>[];\nexport function parseStringToArraySync<\n const Header extends ReadonlyArray<string>,\n>(csv: string, options?: ParseOptions<Header>): CSVRecord<Header>[] {\n try {\n const lexer = new Lexer(options);\n const assembler = new RecordAssembler(options);\n const tokens = lexer.lex(csv);\n return [...assembler.assemble(tokens)];\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AA2BgB,SAAA,sBAAA,CAEd,KAAa,OAAqD,EAAA;AAClE,EAAI,IAAA;AACF,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA;AAC7C,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA;AAC5B,IAAA,OAAO,CAAC,GAAG,SAAU,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA;AAAA,WAC9B,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringToArraySyncWASM.js","sources":["../../src/parseStringToArraySyncWASM.ts"],"sourcesContent":["import { parseStringToArraySync } from \"web-csv-toolbox-wasm\";\nimport { assertCommonOptions } from \"./assertCommonOptions.ts\";\nimport type { CSVRecord, CommonOptions } from \"./common/types.ts\";\nimport {\n DEFAULT_DELIMITER,\n DEFAULT_QUOTATION,\n DOUBLE_QUOTE,\n} from \"./constants.ts\";\nimport type { loadWASM } from \"./loadWASM.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\n/**\n * Parse CSV string to record of arrays.\n *\n * @param csv CSV string\n * @param options Parse options\n * @returns Record of arrays\n *\n * @remarks\n * This function uses WebAssembly to parse CSV string.\n * Before calling this function, you must call {@link loadWASM} function.\n *\n * This function only supports UTF-8 string.\n * If you pass a string that is not UTF-8, like UTF-16, it throws an error.\n * This function only supports double quote as quotation.\n * So, `options.quotation` must be `\"` (double quote). Otherwise, it throws an error.\n *\n * And this function only supports single character as delimiter.\n * So, `options.delimiter` must be a single character. Otherwise, it throws an error.\n *\n * @example\n *\n * ```ts\n * import { loadWASM, parseStringWASM } from \"web-csv-toolbox\";\n *\n * await loadWASM();\n *\n * const csv = \"a,b,c\\n1,2,3\";\n *\n * const result = parseStringToArraySyncWASM(csv);\n * console.log(result);\n * // Prints:\n * // [{ a: \"1\", b: \"2\", c: \"3\" }]\n * ```\n * @beta\n * @throws {RangeError | TypeError} - If provided options are invalid.\n */\nexport function parseStringToArraySyncWASM<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n csv: CSVSource,\n options: CommonOptions<Delimiter, Quotation>,\n): CSVRecord<Header>[];\nexport function parseStringToArraySyncWASM<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(\n csv: CSVSource,\n options?: CommonOptions<Delimiter, Quotation>,\n): CSVRecord<Header>[];\nexport function parseStringToArraySyncWASM<\n const Header extends ReadonlyArray<string>,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n>(\n csv: string,\n options?: CommonOptions<Delimiter, Quotation>,\n): CSVRecord<Header>[];\nexport function parseStringToArraySyncWASM<\n const Header extends readonly string[],\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n>(\n csv: string,\n options: CommonOptions<Delimiter, Quotation> = {},\n): CSVRecord<Header>[] {\n const { delimiter = DEFAULT_DELIMITER, quotation = DEFAULT_QUOTATION } =\n options;\n if (typeof delimiter !== \"string\" || delimiter.length !== 1) {\n throw new RangeError(\n \"Invalid delimiter, must be a single character on WASM.\",\n );\n }\n if (quotation !== DOUBLE_QUOTE) {\n throw new RangeError(\"Invalid quotation, must be double quote on WASM.\");\n }\n assertCommonOptions({ delimiter, quotation });\n const demiliterCode = delimiter.charCodeAt(0);\n return JSON.parse(parseStringToArraySync(csv, demiliterCode));\n}\n"],"names":[],"mappings":";;;;AA6EO,SAAS,0BAKd,CAAA,GAAA,EACA,OAA+C,GAAA,EAC1B,EAAA;AACrB,EAAA,MAAM,EAAE,SAAA,GAAY,iBAAmB,EAAA,SAAA,GAAY,mBACjD,GAAA,OAAA;AACF,EAAA,IAAI,OAAO,SAAA,KAAc,QAAY,IAAA,SAAA,CAAU,WAAW,CAAG,EAAA;AAC3D,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AAAA;AAEF,EAAA,IAAI,cAAc,YAAc,EAAA;AAC9B,IAAM,MAAA,IAAI,WAAW,kDAAkD,CAAA;AAAA;AAEzE,EAAoB,mBAAA,CAAA,EAAE,SAAW,EAAA,SAAA,EAAW,CAAA;AAC5C,EAAM,MAAA,aAAA,GAAgB,SAAU,CAAA,UAAA,CAAW,CAAC,CAAA;AAC5C,EAAA,OAAO,IAAK,CAAA,KAAA,CAAM,sBAAuB,CAAA,GAAA,EAAK,aAAa,CAAC,CAAA;AAC9D;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringToIterableIterator.js","sources":["../../src/parseStringToIterableIterator.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\nexport function parseStringToIterableIterator<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n stream: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): IterableIterator<CSVRecord<Header>>;\nexport function parseStringToIterableIterator<\n const CSVSource extends string,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(\n stream: CSVSource,\n options?: ParseOptions<Header>,\n): IterableIterator<CSVRecord<Header>>;\nexport function parseStringToIterableIterator<\n const Header extends ReadonlyArray<string>,\n>(\n stream: string,\n options?: ParseOptions<Header>,\n): IterableIterator<CSVRecord<Header>>;\nexport function parseStringToIterableIterator<\n const Header extends ReadonlyArray<string>,\n>(\n csv: string,\n options?: ParseOptions<Header>,\n): IterableIterator<CSVRecord<Header>> {\n try {\n const lexer = new Lexer(options);\n const assembler = new RecordAssembler(options);\n const tokens = lexer.lex(csv);\n return assembler.assemble(tokens);\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AAiCgB,SAAA,6BAAA,CAGd,KACA,OACqC,EAAA;AACrC,EAAI,IAAA;AACF,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA;AAC7C,IAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA;AAC5B,IAAO,OAAA,SAAA,CAAU,SAAS,MAAM,CAAA;AAAA,WACzB,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseStringToStream.js","sources":["../../src/parseStringToStream.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport type { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { commonParseErrorHandling } from \"./commonParseErrorHandling.ts\";\nimport type { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from \"./constants.ts\";\nimport type { PickCSVHeader } from \"./utils/types.ts\";\n\nexport function parseStringToStream<\n const CSVSource extends string,\n const Delimiter extends string = DEFAULT_DELIMITER,\n const Quotation extends string = DEFAULT_QUOTATION,\n const Header extends ReadonlyArray<string> = PickCSVHeader<\n CSVSource,\n Delimiter,\n Quotation\n >,\n>(\n stream: CSVSource,\n options: ParseOptions<Header, Delimiter, Quotation>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringToStream<\n const CSVSource extends string,\n const Header extends ReadonlyArray<string> = PickCSVHeader<CSVSource>,\n>(\n stream: CSVSource,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringToStream<const Header extends ReadonlyArray<string>>(\n stream: string,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>>;\nexport function parseStringToStream<const Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>> {\n try {\n const lexer = new Lexer(options);\n const assembler = new RecordAssembler(options);\n return new ReadableStream({\n start(controller) {\n const tokens = lexer.lex(csv);\n for (const record of assembler.assemble(tokens)) {\n controller.enqueue(record);\n }\n controller.close();\n },\n });\n } catch (error) {\n commonParseErrorHandling(error);\n }\n}\n"],"names":[],"mappings":";;;;AA+BgB,SAAA,mBAAA,CACd,KACA,OACmC,EAAA;AACnC,EAAI,IAAA;AACF,IAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA;AAC/B,IAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA;AAC7C,IAAA,OAAO,IAAI,cAAe,CAAA;AAAA,MACxB,MAAM,UAAY,EAAA;AAChB,QAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA;AAC5B,QAAA,KAAA,MAAW,MAAU,IAAA,SAAA,CAAU,QAAS,CAAA,MAAM,CAAG,EAAA;AAC/C,UAAA,UAAA,CAAW,QAAQ,MAAM,CAAA;AAAA;AAE3B,QAAA,UAAA,CAAW,KAAM,EAAA;AAAA;AACnB,KACD,CAAA;AAAA,WACM,KAAO,EAAA;AACd,IAAA,wBAAA,CAAyB,KAAK,CAAA;AAAA;AAElC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseUint8ArrayStream.js","sources":["../../src/parseUint8ArrayStream.ts"],"sourcesContent":["import type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { parseStringStream } from \"./parseStringStream.ts\";\nimport { parseUint8ArrayStreamToStream } from \"./parseUint8ArrayStreamToStream.ts\";\nimport { convertStreamToAsyncIterableIterator } from \"./utils/convertStreamToAsyncIterableIterator.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.ts\";\n\n/**\n * Parse CSV to records.\n * This function is for parsing a binary stream.\n *\n * @category Middle-level API\n * @remarks\n * If you want to parse a string, use {@link parseStringStream}.\n * @param stream CSV string to parse\n * @param options Parsing options.\n * @returns Async iterable iterator of records.\n *\n * If you want array of records, use {@link parseUint8ArrayStream.toArray} function.\n *\n * @example Parsing CSV binary\n *\n * ```ts\n * import { parseUint8ArrayStream } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * for await (const record of parseUint8ArrayStream(csv)) {\n * console.log(record);\n * }\n * ```\n */\nexport function parseUint8ArrayStream<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<Uint8Array>,\n options?: ParseBinaryOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n const recordStream = parseUint8ArrayStreamToStream(stream, options);\n return convertStreamToAsyncIterableIterator(recordStream);\n}\n\nexport declare namespace parseUint8ArrayStream {\n /**\n * Parse CSV binary to array of records,\n * ideal for smaller data sets.\n *\n * @returns Array of records\n *\n * @example Parsing CSV binary\n * ```ts\n * import { parseUint8ArrayStream } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * const records = await parseUint8ArrayStream.toArray(stream);\n * console.log(records);\n * ```\n */\n export function toArray<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<Uint8Array>,\n options?: ParseBinaryOptions<Header>,\n ): Promise<CSVRecord<Header>[]>;\n /**\n * Parse CSV binary to array of records.\n *\n * @returns Stream of records\n *\n * @example Parsing CSV binary\n * ```ts\n * import { parseUint8ArrayStream } from 'web-csv-toolbox';\n *\n * const csv = Uint8Array.from([\n * // ...\n * ]);\n *\n * const stream = new ReadableStream({\n * start(controller) {\n * controller.enqueue(csv);\n * controller.close();\n * },\n * });\n *\n * await parseUint8ArrayStream.toStream(stream)\n * .pipeTo(new WritableStream({\n * write(record) {\n * console.log(record);\n * },\n * }),\n * );\n * ```\n */\n export function toStream<Header extends ReadonlyArray<string>>(\n stream: ReadableStream<Uint8Array>,\n options?: ParseBinaryOptions<Header>,\n ): ReadableStream<CSVRecord<Header>[]>;\n}\nObject.defineProperties(parseUint8ArrayStream, {\n toArray: {\n enumerable: true,\n writable: false,\n value: internal.convertThisAsyncIterableIteratorToArray,\n },\n toStream: {\n enumerable: true,\n writable: false,\n value: parseUint8ArrayStreamToStream,\n },\n});\n"],"names":["internal.convertThisAsyncIterableIteratorToArray"],"mappings":";;;;AAwCgB,SAAA,qBAAA,CACd,QACA,OAC0C,EAAA;AAC1C,EAAM,MAAA,YAAA,GAAe,6BAA8B,CAAA,MAAA,EAAQ,OAAO,CAAA;AAClE,EAAA,OAAO,qCAAqC,YAAY,CAAA;AAC1D;AAkEA,MAAA,CAAO,iBAAiB,qBAAuB,EAAA;AAAA,EAC7C,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA;AAAS,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA;AAAA;AAEX,CAAC,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseUint8ArrayStreamToStream.js","sources":["../../src/parseUint8ArrayStreamToStream.ts"],"sourcesContent":["import { LexerTransformer } from \"./LexerTransformer.ts\";\nimport { RecordAssemblerTransformer } from \"./RecordAssemblerTransformer.ts\";\nimport type { CSVRecord, ParseBinaryOptions } from \"./common/types.ts\";\nimport { pipeline } from \"./utils/pipeline.ts\";\n\nexport function parseUint8ArrayStreamToStream<Header extends readonly string[]>(\n stream: ReadableStream<Uint8Array>,\n options?: ParseBinaryOptions<Header>,\n): ReadableStream<CSVRecord<Header>> {\n const { charset, fatal, ignoreBOM, decomposition } = options ?? {};\n return decomposition\n ? pipeline(\n stream,\n new DecompressionStream(decomposition),\n new TextDecoderStream(charset, { fatal, ignoreBOM }),\n new LexerTransformer(options),\n new RecordAssemblerTransformer(options),\n )\n : pipeline(\n stream,\n new TextDecoderStream(charset, { fatal, ignoreBOM }),\n new LexerTransformer(options),\n new RecordAssemblerTransformer(options),\n );\n}\n"],"names":[],"mappings":";;;;AAKgB,SAAA,6BAAA,CACd,QACA,OACmC,EAAA;AACnC,EAAA,MAAM,EAAE,OAAS,EAAA,KAAA,EAAO,WAAW,aAAc,EAAA,GAAI,WAAW,EAAC;AACjE,EAAA,OAAO,aACH,GAAA,QAAA;AAAA,IACE,MAAA;AAAA,IACA,IAAI,oBAAoB,aAAa,CAAA;AAAA,IACrC,IAAI,iBAAkB,CAAA,OAAA,EAAS,EAAE,KAAA,EAAO,WAAW,CAAA;AAAA,IACnD,IAAI,iBAAiB,OAAO,CAAA;AAAA,IAC5B,IAAI,2BAA2B,OAAO;AAAA,GAExC,GAAA,QAAA;AAAA,IACE,MAAA;AAAA,IACA,IAAI,iBAAkB,CAAA,OAAA,EAAS,EAAE,KAAA,EAAO,WAAW,CAAA;AAAA,IACnD,IAAI,iBAAiB,OAAO,CAAA;AAAA,IAC5B,IAAI,2BAA2B,OAAO;AAAA,GACxC;AACN;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertBinaryToString.js","sources":["../../../src/utils/convertBinaryToString.ts"],"sourcesContent":["import type { BinaryOptions } from \"../common/types.ts\";\n\n/**\n * Converts a binary string to a string.\n *\n * @param binary - The binary string to convert.\n * @param options - The options for parsing the binary string.\n * @returns The converted string.\n * @throws {RangeError} The given charset is not supported.\n * @throws {TypeError} The encoded data was not valid.\n */\nexport function convertBinaryToString(\n binary: Uint8Array | ArrayBuffer,\n options: BinaryOptions,\n): string {\n return new TextDecoder(options?.charset, {\n ignoreBOM: options?.ignoreBOM,\n fatal: options?.fatal,\n }).decode(binary instanceof ArrayBuffer ? new Uint8Array(binary) : binary);\n}\n"],"names":[],"mappings":"AAWgB,SAAA,qBAAA,CACd,QACA,OACQ,EAAA;AACR,EAAO,OAAA,IAAI,WAAY,CAAA,OAAA,EAAS,OAAS,EAAA;AAAA,IACvC,WAAW,OAAS,EAAA,SAAA;AAAA,IACpB,OAAO,OAAS,EAAA;AAAA,GACjB,EAAE,MAAO,CAAA,MAAA,YAAkB,cAAc,IAAI,UAAA,CAAW,MAAM,CAAA,GAAI,MAAM,CAAA;AAC3E;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertIterableIteratorToAsync.js","sources":["../../../src/utils/convertIterableIteratorToAsync.ts"],"sourcesContent":["export function convertIterableIteratorToAsync<T>(\n iterator: IterableIterator<T>,\n): AsyncIterableIterator<T> {\n return {\n async next() {\n return iterator.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n };\n}\n"],"names":[],"mappings":"AAAO,SAAS,+BACd,QAC0B,EAAA;AAC1B,EAAO,OAAA;AAAA,IACL,MAAM,IAAO,GAAA;AACX,MAAA,OAAO,SAAS,IAAK,EAAA;AAAA,KACvB;AAAA,IACA,CAAC,MAAO,CAAA,aAAa,CAAI,GAAA;AACvB,MAAO,OAAA,IAAA;AAAA;AACT,GACF;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertStreamToAsyncIterableIterator.js","sources":["../../../src/utils/convertStreamToAsyncIterableIterator.ts"],"sourcesContent":["export async function* convertStreamToAsyncIterableIterator<T>(\n stream: ReadableStream<T>,\n): AsyncIterableIterator<T> {\n const reader = stream.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n yield value;\n }\n}\n"],"names":[],"mappings":"AAAA,gBAAuB,qCACrB,MAC0B,EAAA;AAC1B,EAAM,MAAA,MAAA,GAAS,OAAO,SAAU,EAAA;AAChC,EAAA,OAAO,IAAM,EAAA;AACX,IAAA,MAAM,EAAE,IAAM,EAAA,KAAA,EAAU,GAAA,MAAM,OAAO,IAAK,EAAA;AAC1C,IAAA,IAAI,IAAM,EAAA;AACV,IAAM,MAAA,KAAA;AAAA;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertThisAsyncIterableIteratorToArray.js","sources":["../../../src/utils/convertThisAsyncIterableIteratorToArray.ts"],"sourcesContent":["export async function convertThisAsyncIterableIteratorToArray<\n O,\n T extends (...args: any[]) => AsyncGenerator<O>,\n>(this: T, ...args: Parameters<T>): Promise<O[]> {\n const rows: O[] = [];\n for await (const row of this(...args)) {\n rows.push(row);\n }\n return rows;\n}\n"],"names":[],"mappings":"AAAA,eAAsB,2CAGR,IAAmC,EAAA;AAC/C,EAAA,MAAM,OAAY,EAAC;AACnB,EAAA,WAAA,MAAiB,GAAO,IAAA,IAAA,CAAK,GAAG,IAAI,CAAG,EAAA;AACrC,IAAA,IAAA,CAAK,KAAK,GAAG,CAAA;AAAA;AAEf,EAAO,OAAA,IAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"escapeRegExp.js","sources":["../../../src/utils/escapeRegExp.ts"],"sourcesContent":["/**\n * Escape a string for use in a regular expression.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions#escaping Regular expressions#Escaping | MDN}\n * @param v string to escape\n * @returns escaped string\n */\nexport function escapeRegExp(v: string) {\n return v.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n"],"names":[],"mappings":"AAOO,SAAS,aAAa,CAAW,EAAA;AACtC,EAAO,OAAA,CAAA,CAAE,OAAQ,CAAA,qBAAA,EAAuB,MAAM,CAAA;AAChD;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseMime.js","sources":["../../../src/utils/parseMime.ts"],"sourcesContent":["export interface ParseMimeResult {\n type: string;\n parameters: {\n [key: string]: string;\n };\n}\n\nexport function parseMime(contentType: string) {\n const [type, ...parameters] = contentType.split(\";\");\n const result: ParseMimeResult = {\n type: type.trim(),\n parameters: {},\n };\n for (const paramator of parameters) {\n const [key, value] = paramator.split(\"=\");\n result.parameters[key.trim()] = value.trim();\n }\n return result;\n}\n"],"names":[],"mappings":"AAOO,SAAS,UAAU,WAAqB,EAAA;AAC7C,EAAA,MAAM,CAAC,IAAM,EAAA,GAAG,UAAU,CAAI,GAAA,WAAA,CAAY,MAAM,GAAG,CAAA;AACnD,EAAA,MAAM,MAA0B,GAAA;AAAA,IAC9B,IAAA,EAAM,KAAK,IAAK,EAAA;AAAA,IAChB,YAAY;AAAC,GACf;AACA,EAAA,KAAA,MAAW,aAAa,UAAY,EAAA;AAClC,IAAA,MAAM,CAAC,GAAK,EAAA,KAAK,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA;AACxC,IAAA,MAAA,CAAO,WAAW,GAAI,CAAA,IAAA,EAAM,CAAA,GAAI,MAAM,IAAK,EAAA;AAAA;AAE7C,EAAO,OAAA,MAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sources":["../../../src/utils/pipeline.ts"],"sourcesContent":["export function pipeline<I, T, O>(\n stream: ReadableStream<I>,\n transformer1: TransformStream<I, T>,\n transformer2: TransformStream<T, O>,\n): ReadableStream<O>;\nexport function pipeline<I, T1, T2, O>(\n stream: ReadableStream<I>,\n transformer1: TransformStream<I, T1>,\n transformer2: TransformStream<T1, T2>,\n transformer3: TransformStream<T2, O>,\n): ReadableStream<O>;\nexport function pipeline<I, T1, T2, T3, O>(\n stream: ReadableStream<I>,\n transformer1: TransformStream<I, T1>,\n transformer2: TransformStream<T1, T2>,\n transformer3: TransformStream<T2, T3>,\n transformer4: TransformStream<T3, O>,\n): ReadableStream<O>;\nexport function pipeline<I, O>(\n stream: ReadableStream<I>,\n ...transformers: TransformStream[]\n): ReadableStream<O> {\n return new ReadableStream({\n start: (controller) => {\n (() =>\n transformers\n .reduce<ReadableStream>(\n (stream, transformer) => stream.pipeThrough(transformer),\n stream,\n )\n .pipeTo(\n new WritableStream({\n write: (v) => controller.enqueue(v),\n close: () => controller.close(),\n }),\n )\n .catch((error) => controller.error(error)))();\n },\n });\n}\n"],"names":["stream"],"mappings":"AAkBgB,SAAA,QAAA,CACd,WACG,YACgB,EAAA;AACnB,EAAA,OAAO,IAAI,cAAe,CAAA;AAAA,IACxB,KAAA,EAAO,CAAC,UAAe,KAAA;AACrB,MAAA,CAAC,MACC,YACG,CAAA,MAAA;AAAA,QACC,CAACA,OAAAA,EAAQ,WAAgBA,KAAAA,OAAAA,CAAO,YAAY,WAAW,CAAA;AAAA,QACvD;AAAA,OAED,CAAA,MAAA;AAAA,QACC,IAAI,cAAe,CAAA;AAAA,UACjB,KAAO,EAAA,CAAC,CAAM,KAAA,UAAA,CAAW,QAAQ,CAAC,CAAA;AAAA,UAClC,KAAA,EAAO,MAAM,UAAA,CAAW,KAAM;AAAA,SAC/B;AAAA,OACH,CACC,MAAM,CAAC,KAAA,KAAU,WAAW,KAAM,CAAA,KAAK,CAAC,CAAG,GAAA;AAAA;AAClD,GACD,CAAA;AACH;;;;"}
|