web-csv-toolbox 0.5.2 → 0.6.0
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 +2 -2
- package/dist/cjs/Lexer.cjs +2 -0
- package/dist/cjs/Lexer.cjs.map +1 -0
- package/dist/cjs/LexerTransformer.cjs +2 -0
- package/dist/cjs/LexerTransformer.cjs.map +1 -0
- package/dist/cjs/RecordAssembler.cjs +2 -0
- package/dist/cjs/RecordAssembler.cjs.map +1 -0
- package/dist/cjs/RecordAssemblerTransformer.cjs +2 -0
- package/dist/cjs/RecordAssemblerTransformer.cjs.map +1 -0
- package/dist/cjs/assertCommonOptions.cjs +2 -0
- package/dist/cjs/assertCommonOptions.cjs.map +1 -0
- package/dist/cjs/common/constants.cjs +2 -0
- package/dist/cjs/common/constants.cjs.map +1 -0
- package/dist/cjs/constants.cjs +2 -0
- package/dist/cjs/constants.cjs.map +1 -0
- package/dist/cjs/convertBinaryToString.cjs +2 -0
- package/dist/cjs/convertBinaryToString.cjs.map +1 -0
- package/dist/cjs/getOptionsFromResponse.cjs +2 -0
- package/dist/cjs/getOptionsFromResponse.cjs.map +1 -0
- package/dist/cjs/parse.cjs +2 -0
- package/dist/cjs/parse.cjs.map +1 -0
- package/dist/cjs/parseBinary.cjs +2 -0
- package/dist/cjs/parseBinary.cjs.map +1 -0
- package/dist/cjs/parseBinaryToArraySync.cjs +2 -0
- package/dist/cjs/parseBinaryToArraySync.cjs.map +1 -0
- package/dist/cjs/parseBinaryToIterableIterator.cjs +2 -0
- package/dist/cjs/parseBinaryToIterableIterator.cjs.map +1 -0
- package/dist/cjs/parseBinaryToStream.cjs +2 -0
- package/dist/cjs/parseBinaryToStream.cjs.map +1 -0
- package/dist/cjs/parseResponse.cjs +2 -0
- package/dist/cjs/parseResponse.cjs.map +1 -0
- package/dist/cjs/parseResponseToStream.cjs +2 -0
- package/dist/cjs/parseResponseToStream.cjs.map +1 -0
- package/dist/cjs/parseString.cjs +2 -0
- package/dist/cjs/parseString.cjs.map +1 -0
- package/dist/cjs/parseStringStream.cjs +2 -0
- package/dist/cjs/parseStringStream.cjs.map +1 -0
- package/dist/cjs/parseStringStreamToStream.cjs +2 -0
- package/dist/cjs/parseStringStreamToStream.cjs.map +1 -0
- package/dist/cjs/parseStringToArraySync.cjs +2 -0
- package/dist/cjs/parseStringToArraySync.cjs.map +1 -0
- package/dist/cjs/parseStringToIterableIterator.cjs +2 -0
- package/dist/cjs/parseStringToIterableIterator.cjs.map +1 -0
- package/dist/cjs/parseStringToStream.cjs +2 -0
- package/dist/cjs/parseStringToStream.cjs.map +1 -0
- package/dist/cjs/parseUint8ArrayStream.cjs +2 -0
- package/dist/cjs/parseUint8ArrayStream.cjs.map +1 -0
- package/dist/cjs/parseUint8ArrayStreamToStream.cjs +2 -0
- package/dist/cjs/parseUint8ArrayStreamToStream.cjs.map +1 -0
- package/dist/cjs/utils/convertIterableIteratorToAsync.cjs +2 -0
- package/dist/cjs/utils/convertIterableIteratorToAsync.cjs.map +1 -0
- package/dist/cjs/utils/convertStreamToAsyncIterableIterator.cjs +2 -0
- package/dist/cjs/utils/convertStreamToAsyncIterableIterator.cjs.map +1 -0
- package/dist/cjs/utils/convertThisAsyncIterableIteratorToArray.cjs +2 -0
- package/dist/cjs/utils/convertThisAsyncIterableIteratorToArray.cjs.map +1 -0
- package/dist/cjs/utils/escapeRegExp.cjs +2 -0
- package/dist/cjs/utils/escapeRegExp.cjs.map +1 -0
- package/dist/cjs/utils/parseMime.cjs +2 -0
- package/dist/cjs/utils/parseMime.cjs.map +1 -0
- package/dist/cjs/utils/pipeline.cjs +2 -0
- package/dist/cjs/utils/pipeline.cjs.map +1 -0
- package/dist/cjs/web-csv-toolbox.cjs +2 -0
- package/dist/cjs/web-csv-toolbox.cjs.map +1 -0
- package/dist/es/Lexer.js +151 -0
- package/dist/es/Lexer.js.map +1 -0
- package/dist/es/LexerTransformer.js +20 -0
- package/dist/es/LexerTransformer.js.map +1 -0
- package/dist/es/RecordAssembler.js +72 -0
- package/dist/es/RecordAssembler.js.map +1 -0
- package/dist/es/RecordAssemblerTransformer.js +22 -0
- package/dist/es/RecordAssemblerTransformer.js.map +1 -0
- package/dist/es/assertCommonOptions.js +24 -0
- package/dist/es/assertCommonOptions.js.map +1 -0
- package/dist/es/common/constants.js +6 -0
- package/dist/es/common/constants.js.map +1 -0
- package/dist/es/constants.js +8 -0
- package/dist/es/constants.js.map +1 -0
- package/dist/es/convertBinaryToString.js +9 -0
- package/dist/es/convertBinaryToString.js.map +1 -0
- package/dist/es/getOptionsFromResponse.js +20 -0
- package/dist/es/getOptionsFromResponse.js.map +1 -0
- package/dist/es/parse.js +39 -0
- package/dist/es/parse.js.map +1 -0
- package/dist/es/parseBinary.js +35 -0
- package/dist/es/parseBinary.js.map +1 -0
- package/dist/es/parseBinaryToArraySync.js +10 -0
- package/dist/es/parseBinaryToArraySync.js.map +1 -0
- package/dist/es/parseBinaryToIterableIterator.js +10 -0
- package/dist/es/parseBinaryToIterableIterator.js.map +1 -0
- package/dist/es/parseBinaryToStream.js +10 -0
- package/dist/es/parseBinaryToStream.js.map +1 -0
- package/dist/es/parseResponse.js +27 -0
- package/dist/es/parseResponse.js.map +1 -0
- package/dist/es/parseResponseToStream.js +13 -0
- package/dist/es/parseResponseToStream.js.map +1 -0
- package/dist/es/parseString.js +33 -0
- package/dist/es/parseString.js.map +1 -0
- package/dist/es/parseStringStream.js +23 -0
- package/dist/es/parseStringStream.js.map +1 -0
- package/dist/es/parseStringStreamToStream.js +14 -0
- package/dist/es/parseStringStreamToStream.js.map +1 -0
- package/dist/es/parseStringToArraySync.js +12 -0
- package/dist/es/parseStringToArraySync.js.map +1 -0
- package/dist/es/parseStringToIterableIterator.js +12 -0
- package/dist/es/parseStringToIterableIterator.js.map +1 -0
- package/dist/es/parseStringToStream.js +19 -0
- package/dist/es/parseStringToStream.js.map +1 -0
- package/dist/es/parseUint8ArrayStream.js +23 -0
- package/dist/es/parseUint8ArrayStream.js.map +1 -0
- package/dist/es/parseUint8ArrayStreamToStream.js +22 -0
- package/dist/es/parseUint8ArrayStreamToStream.js.map +1 -0
- package/dist/es/utils/convertIterableIteratorToAsync.js +14 -0
- package/dist/es/utils/convertIterableIteratorToAsync.js.map +1 -0
- package/dist/es/utils/convertStreamToAsyncIterableIterator.js +12 -0
- package/dist/es/utils/convertStreamToAsyncIterableIterator.js.map +1 -0
- package/dist/es/utils/convertThisAsyncIterableIteratorToArray.js +10 -0
- package/dist/es/utils/convertThisAsyncIterableIteratorToArray.js.map +1 -0
- package/dist/es/utils/escapeRegExp.js +6 -0
- package/dist/es/utils/escapeRegExp.js.map +1 -0
- package/dist/es/utils/parseMime.js +15 -0
- package/dist/es/utils/parseMime.js.map +1 -0
- package/dist/es/utils/pipeline.js +18 -0
- package/dist/es/utils/pipeline.js.map +1 -0
- package/dist/es/web-csv-toolbox.js +10 -0
- package/dist/es/web-csv-toolbox.js.map +1 -0
- package/dist/types/Lexer.d.ts +7 -0
- package/dist/types/LexerTransformer.d.ts +34 -0
- package/dist/types/RecordAssembler.d.ts +7 -0
- package/dist/types/RecordAssemblerTransformer.d.ts +47 -0
- package/dist/types/assertCommonOptions.d.ts +7 -0
- package/dist/types/common/constants.d.ts +15 -0
- package/dist/types/common/types.d.ts +163 -0
- package/dist/types/constants.d.ts +11 -0
- package/dist/types/convertBinaryToString.d.ts +2 -0
- package/dist/types/escapeField.d.ts +13 -0
- package/dist/types/getOptionsFromResponse.d.ts +2 -0
- package/dist/types/parse.d.ts +182 -0
- package/dist/types/parseBinary.d.ts +113 -0
- package/dist/types/parseBinaryToArraySync.d.ts +2 -0
- package/dist/types/parseBinaryToIterableIterator.d.ts +2 -0
- package/dist/types/parseBinaryToStream.d.ts +2 -0
- package/dist/types/parseResponse.d.ts +80 -0
- package/dist/types/parseResponseToStream.d.ts +2 -0
- package/dist/types/parseString.d.ts +120 -0
- package/dist/types/parseStringStream.d.ts +98 -0
- package/dist/types/parseStringStreamToStream.d.ts +2 -0
- package/dist/types/parseStringToArraySync.d.ts +2 -0
- package/dist/types/parseStringToIterableIterator.d.ts +2 -0
- package/dist/types/parseStringToStream.d.ts +2 -0
- package/dist/types/parseUint8ArrayStream.d.ts +94 -0
- package/dist/types/parseUint8ArrayStreamToStream.d.ts +2 -0
- package/dist/types/utils/SingleValueReadableStream.d.ts +3 -0
- package/dist/types/utils/convertIterableIteratorToAsync.d.ts +1 -0
- package/dist/types/utils/convertStreamToAsyncIterableIterator.d.ts +1 -0
- package/dist/types/utils/convertThisAsyncIterableIteratorToArray.d.ts +1 -0
- package/dist/types/utils/escapeRegExp.d.ts +8 -0
- package/dist/types/utils/occurrences.d.ts +7 -0
- package/dist/types/utils/parseMime.d.ts +7 -0
- package/dist/types/utils/pipeline.d.ts +3 -0
- package/dist/types/web-csv-toolbox.d.ts +10 -0
- package/dist/web-csv-toolbox.umd.cjs +1 -1
- package/dist/web-csv-toolbox.umd.cjs.map +1 -1
- package/package.json +31 -13
- package/dist/web-csv-toolbox.cjs +0 -2
- package/dist/web-csv-toolbox.cjs.map +0 -1
- package/dist/web-csv-toolbox.d.ts +0 -982
- package/dist/web-csv-toolbox.js +0 -576
- package/dist/web-csv-toolbox.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getOptionsFromResponse } from './getOptionsFromResponse.js';
|
|
2
|
+
import { parseUint8ArrayStreamToStream } from './parseUint8ArrayStreamToStream.js';
|
|
3
|
+
|
|
4
|
+
function parseResponseToStream(response, options) {
|
|
5
|
+
const options_ = getOptionsFromResponse(response, options);
|
|
6
|
+
if (response.body === null) {
|
|
7
|
+
throw new Error("Response body is null");
|
|
8
|
+
}
|
|
9
|
+
return parseUint8ArrayStreamToStream(response.body, options_);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { parseResponseToStream };
|
|
13
|
+
//# sourceMappingURL=parseResponseToStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseResponseToStream.js","sources":["../../src/parseResponseToStream.ts"],"sourcesContent":["import { CSVRecord, ParseBinaryOptions } from \"./common/types.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 const options_ = getOptionsFromResponse(response, options);\n if (response.body === null) {\n throw new Error(\"Response body is null\");\n }\n return parseUint8ArrayStreamToStream(response.body, options_);\n}\n"],"names":[],"mappings":";;;AAIgB,SAAA,qBAAA,CACd,UACA,OACmC,EAAA;AACnC,EAAM,MAAA,QAAA,GAAW,sBAAuB,CAAA,QAAA,EAAU,OAAO,CAAA,CAAA;AACzD,EAAI,IAAA,QAAA,CAAS,SAAS,IAAM,EAAA;AAC1B,IAAM,MAAA,IAAI,MAAM,uBAAuB,CAAA,CAAA;AAAA,GACzC;AACA,EAAO,OAAA,6BAAA,CAA8B,QAAS,CAAA,IAAA,EAAM,QAAQ,CAAA,CAAA;AAC9D;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { parseStringToArraySync } from './parseStringToArraySync.js';
|
|
2
|
+
import { parseStringToIterableIterator } from './parseStringToIterableIterator.js';
|
|
3
|
+
import { parseStringToStream } from './parseStringToStream.js';
|
|
4
|
+
import { convertThisAsyncIterableIteratorToArray } from './utils/convertThisAsyncIterableIteratorToArray.js';
|
|
5
|
+
|
|
6
|
+
async function* parseString(csv, options) {
|
|
7
|
+
yield* parseStringToIterableIterator(csv, options);
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperties(parseString, {
|
|
10
|
+
toArray: {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
writable: false,
|
|
13
|
+
value: convertThisAsyncIterableIteratorToArray
|
|
14
|
+
},
|
|
15
|
+
toArraySync: {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
writable: false,
|
|
18
|
+
value: parseStringToArraySync
|
|
19
|
+
},
|
|
20
|
+
toIterableIterator: {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
writable: false,
|
|
23
|
+
value: parseStringToIterableIterator
|
|
24
|
+
},
|
|
25
|
+
toStream: {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
writable: false,
|
|
28
|
+
value: parseStringToStream
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export { parseString };
|
|
33
|
+
//# sourceMappingURL=parseString.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseString.js","sources":["../../src/parseString.ts"],"sourcesContent":["import { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { parseStringToArraySync } from \"./parseStringToArraySync.ts\";\nimport { parseStringToIterableIterator } from \"./parseStringToIterableIterator.ts\";\nimport { parseStringToStream } from \"./parseStringToStream.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.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 async function* parseString<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n): AsyncIterableIterator<CSVRecord<Header>> {\n yield* parseStringToIterableIterator(csv, options);\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":";;;;;AAgCuB,gBAAA,WAAA,CACrB,KACA,OAC0C,EAAA;AAC1C,EAAO,OAAA,6BAAA,CAA8B,KAAK,OAAO,CAAA,CAAA;AACnD,CAAA;AAyGA,MAAA,CAAO,iBAAiB,WAAa,EAAA;AAAA,EACnC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA,uCAAS;AAAA,GAClB;AAAA,EACA,WAAa,EAAA;AAAA,IACX,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA,sBAAA;AAAA,GACT;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA,6BAAA;AAAA,GACT;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA,mBAAA;AAAA,GACT;AACF,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { parseStringStreamToStream } from './parseStringStreamToStream.js';
|
|
2
|
+
import { convertStreamToAsyncIterableIterator } from './utils/convertStreamToAsyncIterableIterator.js';
|
|
3
|
+
import { convertThisAsyncIterableIteratorToArray } from './utils/convertThisAsyncIterableIteratorToArray.js';
|
|
4
|
+
|
|
5
|
+
function parseStringStream(stream, options) {
|
|
6
|
+
const recordStream = parseStringStreamToStream(stream, options);
|
|
7
|
+
return convertStreamToAsyncIterableIterator(recordStream);
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperties(parseStringStream, {
|
|
10
|
+
toArray: {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
writable: false,
|
|
13
|
+
value: convertThisAsyncIterableIteratorToArray
|
|
14
|
+
},
|
|
15
|
+
toStream: {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
writable: false,
|
|
18
|
+
value: parseStringStreamToStream
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export { parseStringStream };
|
|
23
|
+
//# sourceMappingURL=parseStringStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseStringStream.js","sources":["../../src/parseStringStream.ts"],"sourcesContent":["import { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { parseStringStreamToStream } from \"./parseStringStreamToStream.ts\";\nimport { convertStreamToAsyncIterableIterator } from \"./utils/convertStreamToAsyncIterableIterator.ts\";\nimport * as internal from \"./utils/convertThisAsyncIterableIteratorToArray.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<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":";;;;AAuCgB,SAAA,iBAAA,CACd,QACA,OAC0C,EAAA;AAC1C,EAAM,MAAA,YAAA,GAAe,yBAA0B,CAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAC9D,EAAA,OAAO,qCAAqC,YAAY,CAAA,CAAA;AAC1D,CAAA;AAuEA,MAAA,CAAO,iBAAiB,iBAAmB,EAAA;AAAA,EACzC,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA,uCAAS;AAAA,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA,yBAAA;AAAA,GACT;AACF,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LexerTransformer } from './LexerTransformer.js';
|
|
2
|
+
import { RecordAssemblerTransformer } from './RecordAssemblerTransformer.js';
|
|
3
|
+
import { pipeline } from './utils/pipeline.js';
|
|
4
|
+
|
|
5
|
+
function parseStringStreamToStream(stream, options) {
|
|
6
|
+
return pipeline(
|
|
7
|
+
stream,
|
|
8
|
+
new LexerTransformer(options),
|
|
9
|
+
new RecordAssemblerTransformer(options)
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { parseStringStreamToStream };
|
|
14
|
+
//# sourceMappingURL=parseStringStreamToStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseStringStreamToStream.js","sources":["../../src/parseStringStreamToStream.ts"],"sourcesContent":["import { LexerTransformer } from \"./LexerTransformer.ts\";\nimport { RecordAssemblerTransformer } from \"./RecordAssemblerTransformer.ts\";\nimport { CSVRecord, ParseOptions } from \"./common/types.ts\";\nimport { pipeline } from \"./utils/pipeline.ts\";\n\nexport function parseStringStreamToStream<Header extends ReadonlyArray<string>>(\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":";;;;AAKgB,SAAA,yBAAA,CACd,QACA,OACmC,EAAA;AACnC,EAAO,OAAA,QAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAI,iBAAiB,OAAO,CAAA;AAAA,IAC5B,IAAI,2BAA2B,OAAO,CAAA;AAAA,GACxC,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Lexer } from './Lexer.js';
|
|
2
|
+
import { RecordAssembler } from './RecordAssembler.js';
|
|
3
|
+
|
|
4
|
+
function parseStringToArraySync(csv, options) {
|
|
5
|
+
const lexer = new Lexer(options);
|
|
6
|
+
const assembler = new RecordAssembler(options);
|
|
7
|
+
const tokens = lexer.lex(csv);
|
|
8
|
+
return [...assembler.assemble(tokens)];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { parseStringToArraySync };
|
|
12
|
+
//# sourceMappingURL=parseStringToArraySync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseStringToArraySync.js","sources":["../../src/parseStringToArraySync.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport { CSVRecord, ParseOptions } from \"./common/types.ts\";\n\nexport function parseStringToArraySync<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n): CSVRecord<Header>[] {\n const lexer = new Lexer(options);\n const assembler = new RecordAssembler(options);\n const tokens = lexer.lex(csv);\n return [...assembler.assemble(tokens)];\n}\n"],"names":[],"mappings":";;;AAIgB,SAAA,sBAAA,CACd,KACA,OACqB,EAAA;AACrB,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/B,EAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA,CAAA;AAC7C,EAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC5B,EAAA,OAAO,CAAC,GAAG,SAAU,CAAA,QAAA,CAAS,MAAM,CAAC,CAAA,CAAA;AACvC;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Lexer } from './Lexer.js';
|
|
2
|
+
import { RecordAssembler } from './RecordAssembler.js';
|
|
3
|
+
|
|
4
|
+
function parseStringToIterableIterator(csv, options) {
|
|
5
|
+
const lexer = new Lexer(options);
|
|
6
|
+
const assembler = new RecordAssembler(options);
|
|
7
|
+
const tokens = lexer.lex(csv);
|
|
8
|
+
return assembler.assemble(tokens);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { parseStringToIterableIterator };
|
|
12
|
+
//# sourceMappingURL=parseStringToIterableIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseStringToIterableIterator.js","sources":["../../src/parseStringToIterableIterator.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport { CSVRecord, ParseOptions } from \"./common/types.ts\";\n\nexport function parseStringToIterableIterator<\n Header extends ReadonlyArray<string>,\n>(\n csv: string,\n options?: ParseOptions<Header>,\n): IterableIterator<CSVRecord<Header>> {\n const lexer = new Lexer(options);\n const assembler = new RecordAssembler(options);\n const tokens = lexer.lex(csv);\n return assembler.assemble(tokens);\n}\n"],"names":[],"mappings":";;;AAIgB,SAAA,6BAAA,CAGd,KACA,OACqC,EAAA;AACrC,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/B,EAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA,CAAA;AAC7C,EAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC5B,EAAO,OAAA,SAAA,CAAU,SAAS,MAAM,CAAA,CAAA;AAClC;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Lexer } from './Lexer.js';
|
|
2
|
+
import { RecordAssembler } from './RecordAssembler.js';
|
|
3
|
+
|
|
4
|
+
function parseStringToStream(csv, options) {
|
|
5
|
+
const lexer = new Lexer(options);
|
|
6
|
+
const assembler = new RecordAssembler(options);
|
|
7
|
+
return new ReadableStream({
|
|
8
|
+
start(controller) {
|
|
9
|
+
const tokens = lexer.lex(csv);
|
|
10
|
+
for (const record of assembler.assemble(tokens)) {
|
|
11
|
+
controller.enqueue(record);
|
|
12
|
+
}
|
|
13
|
+
controller.close();
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { parseStringToStream };
|
|
19
|
+
//# sourceMappingURL=parseStringToStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseStringToStream.js","sources":["../../src/parseStringToStream.ts"],"sourcesContent":["import { Lexer } from \"./Lexer.ts\";\nimport { RecordAssembler } from \"./RecordAssembler.ts\";\nimport { CSVRecord, ParseOptions } from \"./common/types.ts\";\n\nexport function parseStringToStream<Header extends ReadonlyArray<string>>(\n csv: string,\n options?: ParseOptions<Header>,\n): ReadableStream<CSVRecord<Header>> {\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}\n"],"names":[],"mappings":";;;AAIgB,SAAA,mBAAA,CACd,KACA,OACmC,EAAA;AACnC,EAAM,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,OAAO,CAAA,CAAA;AAC/B,EAAM,MAAA,SAAA,GAAY,IAAI,eAAA,CAAgB,OAAO,CAAA,CAAA;AAC7C,EAAA,OAAO,IAAI,cAAe,CAAA;AAAA,IACxB,MAAM,UAAY,EAAA;AAChB,MAAM,MAAA,MAAA,GAAS,KAAM,CAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAC5B,MAAA,KAAA,MAAW,MAAU,IAAA,SAAA,CAAU,QAAS,CAAA,MAAM,CAAG,EAAA;AAC/C,QAAA,UAAA,CAAW,QAAQ,MAAM,CAAA,CAAA;AAAA,OAC3B;AACA,MAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AAAA,KACnB;AAAA,GACD,CAAA,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { parseUint8ArrayStreamToStream } from './parseUint8ArrayStreamToStream.js';
|
|
2
|
+
import { convertStreamToAsyncIterableIterator } from './utils/convertStreamToAsyncIterableIterator.js';
|
|
3
|
+
import { convertThisAsyncIterableIteratorToArray } from './utils/convertThisAsyncIterableIteratorToArray.js';
|
|
4
|
+
|
|
5
|
+
function parseUint8ArrayStream(stream, options) {
|
|
6
|
+
const recordStream = parseUint8ArrayStreamToStream(stream, options);
|
|
7
|
+
return convertStreamToAsyncIterableIterator(recordStream);
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperties(parseUint8ArrayStream, {
|
|
10
|
+
toArray: {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
writable: false,
|
|
13
|
+
value: convertThisAsyncIterableIteratorToArray
|
|
14
|
+
},
|
|
15
|
+
toStream: {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
writable: false,
|
|
18
|
+
value: parseUint8ArrayStreamToStream
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export { parseUint8ArrayStream };
|
|
23
|
+
//# sourceMappingURL=parseUint8ArrayStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseUint8ArrayStream.js","sources":["../../src/parseUint8ArrayStream.ts"],"sourcesContent":["import { 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,CAAA;AAClE,EAAA,OAAO,qCAAqC,YAAY,CAAA,CAAA;AAC1D,CAAA;AAkEA,MAAA,CAAO,iBAAiB,qBAAuB,EAAA;AAAA,EAC7C,OAAS,EAAA;AAAA,IACP,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,OAAOA,uCAAS;AAAA,GAClB;AAAA,EACA,QAAU,EAAA;AAAA,IACR,UAAY,EAAA,IAAA;AAAA,IACZ,QAAU,EAAA,KAAA;AAAA,IACV,KAAO,EAAA,6BAAA;AAAA,GACT;AACF,CAAC,CAAA;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { LexerTransformer } from './LexerTransformer.js';
|
|
2
|
+
import { RecordAssemblerTransformer } from './RecordAssemblerTransformer.js';
|
|
3
|
+
import { pipeline } from './utils/pipeline.js';
|
|
4
|
+
|
|
5
|
+
function parseUint8ArrayStreamToStream(stream, options) {
|
|
6
|
+
const { charset, fatal, ignoreBOM, decomposition } = options ?? {};
|
|
7
|
+
return decomposition ? pipeline(
|
|
8
|
+
stream,
|
|
9
|
+
new DecompressionStream(decomposition),
|
|
10
|
+
new TextDecoderStream(charset, { fatal, ignoreBOM }),
|
|
11
|
+
new LexerTransformer(options),
|
|
12
|
+
new RecordAssemblerTransformer(options)
|
|
13
|
+
) : pipeline(
|
|
14
|
+
stream,
|
|
15
|
+
new TextDecoderStream(charset, { fatal, ignoreBOM }),
|
|
16
|
+
new LexerTransformer(options),
|
|
17
|
+
new RecordAssemblerTransformer(options)
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { parseUint8ArrayStreamToStream };
|
|
22
|
+
//# sourceMappingURL=parseUint8ArrayStreamToStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseUint8ArrayStreamToStream.js","sources":["../../src/parseUint8ArrayStreamToStream.ts"],"sourcesContent":["import { LexerTransformer } from \"./LexerTransformer.ts\";\nimport { RecordAssemblerTransformer } from \"./RecordAssemblerTransformer.ts\";\nimport { 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,CAAA;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,CAAA;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,CAAA;AAAA,GACxC,CAAA;AACN;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function convertIterableIteratorToAsync(iterator) {
|
|
2
|
+
return {
|
|
3
|
+
async next() {
|
|
4
|
+
const result = iterator.next();
|
|
5
|
+
return Promise.resolve(result);
|
|
6
|
+
},
|
|
7
|
+
[Symbol.asyncIterator]() {
|
|
8
|
+
return this;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { convertIterableIteratorToAsync };
|
|
14
|
+
//# sourceMappingURL=convertIterableIteratorToAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 const result = iterator.next();\n return Promise.resolve(result);\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,MAAM,MAAA,MAAA,GAAS,SAAS,IAAK,EAAA,CAAA;AAC7B,MAAO,OAAA,OAAA,CAAQ,QAAQ,MAAM,CAAA,CAAA;AAAA,KAC/B;AAAA,IACA,CAAC,MAAO,CAAA,aAAa,CAAI,GAAA;AACvB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAAA,GACF,CAAA;AACF;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
async function* convertStreamToAsyncIterableIterator(stream) {
|
|
2
|
+
const reader = stream.getReader();
|
|
3
|
+
while (true) {
|
|
4
|
+
const { done, value } = await reader.read();
|
|
5
|
+
if (done)
|
|
6
|
+
break;
|
|
7
|
+
yield value;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { convertStreamToAsyncIterableIterator };
|
|
12
|
+
//# sourceMappingURL=convertStreamToAsyncIterableIterator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAA;AAChC,EAAA,OAAO,IAAM,EAAA;AACX,IAAA,MAAM,EAAE,IAAM,EAAA,KAAA,EAAU,GAAA,MAAM,OAAO,IAAK,EAAA,CAAA;AAC1C,IAAI,IAAA,IAAA;AAAM,MAAA,MAAA;AACV,IAAM,MAAA,KAAA,CAAA;AAAA,GACR;AACF;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
async function convertThisAsyncIterableIteratorToArray(...args) {
|
|
2
|
+
const rows = [];
|
|
3
|
+
for await (const row of this(...args)) {
|
|
4
|
+
rows.push(row);
|
|
5
|
+
}
|
|
6
|
+
return rows;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { convertThisAsyncIterableIteratorToArray };
|
|
10
|
+
//# sourceMappingURL=convertThisAsyncIterableIteratorToArray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAA;AACnB,EAAA,WAAA,MAAiB,GAAO,IAAA,IAAA,CAAK,GAAG,IAAI,CAAG,EAAA;AACrC,IAAA,IAAA,CAAK,KAAK,GAAG,CAAA,CAAA;AAAA,GACf;AACA,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAA;AAChD;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function parseMime(contentType) {
|
|
2
|
+
const [type, ...parameters] = contentType.split(";");
|
|
3
|
+
const result = {
|
|
4
|
+
type: type.trim(),
|
|
5
|
+
parameters: {}
|
|
6
|
+
};
|
|
7
|
+
for (const paramator of parameters) {
|
|
8
|
+
const [key, value] = paramator.split("=");
|
|
9
|
+
result.parameters[key.trim()] = value.trim();
|
|
10
|
+
}
|
|
11
|
+
return result;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { parseMime };
|
|
15
|
+
//# sourceMappingURL=parseMime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,CAAA;AACnD,EAAA,MAAM,MAA0B,GAAA;AAAA,IAC9B,IAAA,EAAM,KAAK,IAAK,EAAA;AAAA,IAChB,YAAY,EAAC;AAAA,GACf,CAAA;AACA,EAAA,KAAA,MAAW,aAAa,UAAY,EAAA;AAClC,IAAA,MAAM,CAAC,GAAK,EAAA,KAAK,CAAI,GAAA,SAAA,CAAU,MAAM,GAAG,CAAA,CAAA;AACxC,IAAA,MAAA,CAAO,WAAW,GAAI,CAAA,IAAA,EAAM,CAAA,GAAI,MAAM,IAAK,EAAA,CAAA;AAAA,GAC7C;AACA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
function pipeline(stream, ...transformers) {
|
|
2
|
+
return new ReadableStream({
|
|
3
|
+
start: (controller) => {
|
|
4
|
+
(() => transformers.reduce(
|
|
5
|
+
(stream2, transformer) => stream2.pipeThrough(transformer),
|
|
6
|
+
stream
|
|
7
|
+
).pipeTo(
|
|
8
|
+
new WritableStream({
|
|
9
|
+
write: (v) => controller.enqueue(v),
|
|
10
|
+
close: () => controller.close()
|
|
11
|
+
})
|
|
12
|
+
))();
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { pipeline };
|
|
18
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 },\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,MAAA;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,EAAA;AAAA,SAC/B,CAAA;AAAA,OACA,GAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AACH;;;;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Field, FieldDelimiter, RecordDelimiter } from './common/constants.js';
|
|
2
|
+
export { LexerTransformer } from './LexerTransformer.js';
|
|
3
|
+
export { RecordAssemblerTransformer } from './RecordAssemblerTransformer.js';
|
|
4
|
+
export { parseString } from './parseString.js';
|
|
5
|
+
export { parseBinary } from './parseBinary.js';
|
|
6
|
+
export { parseUint8ArrayStream } from './parseUint8ArrayStream.js';
|
|
7
|
+
export { parseStringStream } from './parseStringStream.js';
|
|
8
|
+
export { parseResponse } from './parseResponse.js';
|
|
9
|
+
export { parse } from './parse.js';
|
|
10
|
+
//# sourceMappingURL=web-csv-toolbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-csv-toolbox.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CommonOptions, Token } from "./common/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* A transform stream that converts a stream of tokens into a stream of rows.
|
|
4
|
+
*
|
|
5
|
+
* @category Low-level API
|
|
6
|
+
*
|
|
7
|
+
* @example Parse a CSV with headers by data
|
|
8
|
+
* ```ts
|
|
9
|
+
* new ReadableStream({
|
|
10
|
+
* start(controller) {
|
|
11
|
+
* controller.enqueue("name,age\r\n");
|
|
12
|
+
* controller.enqueue("Alice,20\r\n");
|
|
13
|
+
* controller.close();
|
|
14
|
+
* }
|
|
15
|
+
* })
|
|
16
|
+
* .pipeThrough(new LexerTransformer())
|
|
17
|
+
* .pipeTo(new WritableStream({ write(tokens) {
|
|
18
|
+
* for (const token of tokens) {
|
|
19
|
+
* console.log(token);
|
|
20
|
+
* }
|
|
21
|
+
* }}));
|
|
22
|
+
* // { type: Field, value: "name" }
|
|
23
|
+
* // FieldDelimiter
|
|
24
|
+
* // { type: Field, value: "age" }
|
|
25
|
+
* // RecordDelimiter
|
|
26
|
+
* // { type: Field, value: "Alice" }
|
|
27
|
+
* // FieldDelimiter
|
|
28
|
+
* // { type: Field, value: "20" }
|
|
29
|
+
* // RecordDelimiter
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class LexerTransformer extends TransformStream<string, Token[]> {
|
|
33
|
+
constructor(options?: CommonOptions);
|
|
34
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CSVRecord, RecordAssemblerOptions, Token } from "./common/types.ts";
|
|
2
|
+
export declare class RecordAssembler<Header extends ReadonlyArray<string>> {
|
|
3
|
+
#private;
|
|
4
|
+
constructor(options?: RecordAssemblerOptions<Header>);
|
|
5
|
+
assemble(tokens: Iterable<Token>, flush?: boolean): IterableIterator<CSVRecord<Header>>;
|
|
6
|
+
flush(): Generator<CSVRecord<Header>>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { CSVRecord, RecordAssemblerOptions, Token } from "./common/types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* A transform stream that converts a stream of tokens into a stream of rows.
|
|
4
|
+
* @template Header The type of the header row.
|
|
5
|
+
* @param options The options for the parser.
|
|
6
|
+
*
|
|
7
|
+
* @category Low-level API
|
|
8
|
+
*
|
|
9
|
+
* @example Parse a CSV with headers by data
|
|
10
|
+
* ```ts
|
|
11
|
+
* new ReadableStream({
|
|
12
|
+
* start(controller) {
|
|
13
|
+
* controller.enqueue("name,age\r\n");
|
|
14
|
+
* controller.enqueue("Alice,20\r\n");
|
|
15
|
+
* controller.enqueue("Bob,25\r\n");
|
|
16
|
+
* controller.enqueue("Charlie,30\r\n");
|
|
17
|
+
* controller.close();
|
|
18
|
+
* })
|
|
19
|
+
* .pipeThrough(new LexerTransformer())
|
|
20
|
+
* .pipeThrough(new RecordAssemblerTransformer())
|
|
21
|
+
* .pipeTo(new WritableStream({ write(row) { console.log(row); }}));
|
|
22
|
+
* // { name: "Alice", age: "20" }
|
|
23
|
+
* // { name: "Bob", age: "25" }
|
|
24
|
+
* // { name: "Charlie", age: "30" }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @example Parse a CSV with headers by options
|
|
28
|
+
* ```ts
|
|
29
|
+
* new ReadableStream({
|
|
30
|
+
* start(controller) {
|
|
31
|
+
* controller.enqueue("Alice,20\r\n");
|
|
32
|
+
* controller.enqueue("Bob,25\r\n");
|
|
33
|
+
* controller.enqueue("Charlie,30\r\n");
|
|
34
|
+
* controller.close();
|
|
35
|
+
* }
|
|
36
|
+
* })
|
|
37
|
+
* .pipeThrough(new LexerTransformer())
|
|
38
|
+
* .pipeThrough(new RecordAssemblerTransformer({ header: ["name", "age"] }))
|
|
39
|
+
* .pipeTo(new WritableStream({ write(row) { console.log(row); }}));
|
|
40
|
+
* // { name: "Alice", age: "20" }
|
|
41
|
+
* // { name: "Bob", age: "25" }
|
|
42
|
+
* // { name: "Charlie", age: "30" }
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare class RecordAssemblerTransformer<Header extends ReadonlyArray<string>> extends TransformStream<Token[], CSVRecord<Header>> {
|
|
46
|
+
constructor(options?: RecordAssemblerOptions<Header>);
|
|
47
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FiledDelimiter is a symbol for field delimiter of CSV.
|
|
3
|
+
* @category Constants
|
|
4
|
+
*/
|
|
5
|
+
export declare const FieldDelimiter: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* RecordDelimiter is a symbol for record delimiter of CSV.
|
|
8
|
+
* @category Constants
|
|
9
|
+
*/
|
|
10
|
+
export declare const RecordDelimiter: unique symbol;
|
|
11
|
+
/**
|
|
12
|
+
* Field is a symbol for field of CSV.
|
|
13
|
+
* @category Constants
|
|
14
|
+
*/
|
|
15
|
+
export declare const Field: unique symbol;
|