@frictionless-ts/table 1.0.1
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/LICENSE.md +9 -0
- package/README.md +3 -0
- package/build/assets/geojson.json +216 -0
- package/build/assets/topojson.json +259 -0
- package/build/data/index.d.ts +2 -0
- package/build/data/index.js +2 -0
- package/build/data/record.d.ts +4 -0
- package/build/data/record.js +84 -0
- package/build/data/record.spec.d.ts +1 -0
- package/build/data/record.spec.js +269 -0
- package/build/dialect/Options.d.ts +3 -0
- package/build/dialect/Options.js +3 -0
- package/build/dialect/index.d.ts +2 -0
- package/build/dialect/index.js +2 -0
- package/build/dialect/infer.d.ts +4 -0
- package/build/dialect/infer.js +2 -0
- package/build/field/Field.d.ts +5 -0
- package/build/field/Field.js +2 -0
- package/build/field/Mapping.d.ts +11 -0
- package/build/field/Mapping.js +2 -0
- package/build/field/checks/enum.d.ts +8 -0
- package/build/field/checks/enum.js +71 -0
- package/build/field/checks/enum.spec.d.ts +1 -0
- package/build/field/checks/enum.spec.js +327 -0
- package/build/field/checks/maxLength.d.ts +7 -0
- package/build/field/checks/maxLength.js +17 -0
- package/build/field/checks/maxLength.spec.d.ts +1 -0
- package/build/field/checks/maxLength.spec.js +49 -0
- package/build/field/checks/maximum.d.ts +11 -0
- package/build/field/checks/maximum.js +73 -0
- package/build/field/checks/maximum.spec.d.ts +1 -0
- package/build/field/checks/maximum.spec.js +476 -0
- package/build/field/checks/minLength.d.ts +7 -0
- package/build/field/checks/minLength.js +17 -0
- package/build/field/checks/minLength.spec.d.ts +1 -0
- package/build/field/checks/minLength.spec.js +56 -0
- package/build/field/checks/minimum.d.ts +11 -0
- package/build/field/checks/minimum.js +73 -0
- package/build/field/checks/minimum.spec.d.ts +1 -0
- package/build/field/checks/minimum.spec.js +476 -0
- package/build/field/checks/pattern.d.ts +7 -0
- package/build/field/checks/pattern.js +17 -0
- package/build/field/checks/pattern.spec.d.ts +1 -0
- package/build/field/checks/pattern.spec.js +66 -0
- package/build/field/checks/required.d.ts +7 -0
- package/build/field/checks/required.js +14 -0
- package/build/field/checks/required.spec.d.ts +1 -0
- package/build/field/checks/required.spec.js +24 -0
- package/build/field/checks/type.d.ts +7 -0
- package/build/field/checks/type.js +14 -0
- package/build/field/checks/type.spec.d.ts +1 -0
- package/build/field/checks/type.spec.js +255 -0
- package/build/field/checks/unique.d.ts +7 -0
- package/build/field/checks/unique.js +17 -0
- package/build/field/checks/unique.spec.d.ts +1 -0
- package/build/field/checks/unique.spec.js +97 -0
- package/build/field/denormalize.d.ts +6 -0
- package/build/field/denormalize.js +13 -0
- package/build/field/desubstitute.d.ts +3 -0
- package/build/field/desubstitute.js +13 -0
- package/build/field/index.d.ts +8 -0
- package/build/field/index.js +6 -0
- package/build/field/inspect.d.ts +6 -0
- package/build/field/inspect.js +131 -0
- package/build/field/inspect.spec.d.ts +1 -0
- package/build/field/inspect.spec.js +385 -0
- package/build/field/narrow.d.ts +3 -0
- package/build/field/narrow.js +14 -0
- package/build/field/narrow.spec.d.ts +1 -0
- package/build/field/narrow.spec.js +52 -0
- package/build/field/normalize.d.ts +5 -0
- package/build/field/normalize.js +14 -0
- package/build/field/parse.d.ts +3 -0
- package/build/field/parse.js +47 -0
- package/build/field/parse.spec.d.ts +1 -0
- package/build/field/parse.spec.js +33 -0
- package/build/field/stringify.d.ts +3 -0
- package/build/field/stringify.js +43 -0
- package/build/field/stringify.spec.d.ts +1 -0
- package/build/field/stringify.spec.js +41 -0
- package/build/field/substitute.d.ts +3 -0
- package/build/field/substitute.js +16 -0
- package/build/field/types/array.d.ts +3 -0
- package/build/field/types/array.js +5 -0
- package/build/field/types/array.spec.d.ts +1 -0
- package/build/field/types/array.spec.js +358 -0
- package/build/field/types/boolean.d.ts +4 -0
- package/build/field/types/boolean.js +31 -0
- package/build/field/types/boolean.spec.d.ts +1 -0
- package/build/field/types/boolean.spec.js +76 -0
- package/build/field/types/date.d.ts +4 -0
- package/build/field/types/date.js +14 -0
- package/build/field/types/date.spec.d.ts +1 -0
- package/build/field/types/date.spec.js +52 -0
- package/build/field/types/datetime.d.ts +4 -0
- package/build/field/types/datetime.js +15 -0
- package/build/field/types/datetime.spec.d.ts +1 -0
- package/build/field/types/datetime.spec.js +62 -0
- package/build/field/types/duration.d.ts +4 -0
- package/build/field/types/duration.js +9 -0
- package/build/field/types/duration.spec.d.ts +1 -0
- package/build/field/types/duration.spec.js +37 -0
- package/build/field/types/geojson.d.ts +3 -0
- package/build/field/types/geojson.js +9 -0
- package/build/field/types/geojson.spec.d.ts +1 -0
- package/build/field/types/geojson.spec.js +522 -0
- package/build/field/types/geopoint.d.ts +4 -0
- package/build/field/types/geopoint.js +59 -0
- package/build/field/types/geopoint.spec.d.ts +1 -0
- package/build/field/types/geopoint.spec.js +173 -0
- package/build/field/types/integer.d.ts +4 -0
- package/build/field/types/integer.js +41 -0
- package/build/field/types/integer.spec.d.ts +1 -0
- package/build/field/types/integer.spec.js +102 -0
- package/build/field/types/json.d.ts +6 -0
- package/build/field/types/json.js +68 -0
- package/build/field/types/list.d.ts +4 -0
- package/build/field/types/list.js +30 -0
- package/build/field/types/list.spec.d.ts +1 -0
- package/build/field/types/list.spec.js +230 -0
- package/build/field/types/number.d.ts +4 -0
- package/build/field/types/number.js +50 -0
- package/build/field/types/number.spec.d.ts +1 -0
- package/build/field/types/number.spec.js +101 -0
- package/build/field/types/object.d.ts +3 -0
- package/build/field/types/object.js +5 -0
- package/build/field/types/object.spec.d.ts +1 -0
- package/build/field/types/object.spec.js +393 -0
- package/build/field/types/string.d.ts +4 -0
- package/build/field/types/string.js +32 -0
- package/build/field/types/string.spec.d.ts +1 -0
- package/build/field/types/string.spec.js +162 -0
- package/build/field/types/time.d.ts +4 -0
- package/build/field/types/time.js +18 -0
- package/build/field/types/time.spec.d.ts +1 -0
- package/build/field/types/time.spec.js +53 -0
- package/build/field/types/year.d.ts +4 -0
- package/build/field/types/year.js +16 -0
- package/build/field/types/year.spec.d.ts +1 -0
- package/build/field/types/year.spec.js +50 -0
- package/build/field/types/yearmonth.d.ts +4 -0
- package/build/field/types/yearmonth.js +14 -0
- package/build/field/types/yearmonth.spec.d.ts +1 -0
- package/build/field/types/yearmonth.spec.js +36 -0
- package/build/helpers.d.ts +4 -0
- package/build/helpers.js +12 -0
- package/build/index.d.ts +40 -0
- package/build/index.js +27 -0
- package/build/plugin.d.ts +27 -0
- package/build/plugin.js +2 -0
- package/build/plugins/arrow/index.d.ts +2 -0
- package/build/plugins/arrow/index.js +3 -0
- package/build/plugins/arrow/plugin.d.ts +7 -0
- package/build/plugins/arrow/plugin.js +22 -0
- package/build/plugins/arrow/plugin.spec.d.ts +1 -0
- package/build/plugins/arrow/plugin.spec.js +161 -0
- package/build/plugins/arrow/table/index.d.ts +2 -0
- package/build/plugins/arrow/table/index.js +3 -0
- package/build/plugins/arrow/table/load.d.ts +4 -0
- package/build/plugins/arrow/table/load.js +23 -0
- package/build/plugins/arrow/table/load.spec.d.ts +1 -0
- package/build/plugins/arrow/table/load.spec.js +56 -0
- package/build/plugins/arrow/table/save.d.ts +3 -0
- package/build/plugins/arrow/table/save.js +31 -0
- package/build/plugins/arrow/table/save.spec.d.ts +1 -0
- package/build/plugins/arrow/table/save.spec.js +81 -0
- package/build/plugins/csv/dialect/index.d.ts +1 -0
- package/build/plugins/csv/dialect/index.js +2 -0
- package/build/plugins/csv/dialect/infer.d.ts +4 -0
- package/build/plugins/csv/dialect/infer.js +44 -0
- package/build/plugins/csv/dialect/infer.spec.d.ts +1 -0
- package/build/plugins/csv/dialect/infer.spec.js +54 -0
- package/build/plugins/csv/index.d.ts +2 -0
- package/build/plugins/csv/index.js +3 -0
- package/build/plugins/csv/plugin.d.ts +8 -0
- package/build/plugins/csv/plugin.js +22 -0
- package/build/plugins/csv/plugin.spec.d.ts +1 -0
- package/build/plugins/csv/plugin.spec.js +161 -0
- package/build/plugins/csv/table/index.d.ts +2 -0
- package/build/plugins/csv/table/index.js +3 -0
- package/build/plugins/csv/table/load.d.ts +6 -0
- package/build/plugins/csv/table/load.js +86 -0
- package/build/plugins/csv/table/load.spec.d.ts +1 -0
- package/build/plugins/csv/table/load.spec.js +293 -0
- package/build/plugins/csv/table/save.d.ts +5 -0
- package/build/plugins/csv/table/save.js +29 -0
- package/build/plugins/csv/table/save.spec.d.ts +1 -0
- package/build/plugins/csv/table/save.spec.js +137 -0
- package/build/plugins/inline/index.d.ts +2 -0
- package/build/plugins/inline/index.js +3 -0
- package/build/plugins/inline/plugin.d.ts +7 -0
- package/build/plugins/inline/plugin.js +14 -0
- package/build/plugins/inline/table/index.d.ts +1 -0
- package/build/plugins/inline/table/index.js +2 -0
- package/build/plugins/inline/table/load.d.ts +6 -0
- package/build/plugins/inline/table/load.js +24 -0
- package/build/plugins/inline/table/load.spec.d.ts +1 -0
- package/build/plugins/inline/table/load.spec.js +160 -0
- package/build/plugins/json/buffer/decode.d.ts +4 -0
- package/build/plugins/json/buffer/decode.js +10 -0
- package/build/plugins/json/buffer/encode.d.ts +4 -0
- package/build/plugins/json/buffer/encode.js +8 -0
- package/build/plugins/json/buffer/index.d.ts +2 -0
- package/build/plugins/json/buffer/index.js +3 -0
- package/build/plugins/json/index.d.ts +2 -0
- package/build/plugins/json/index.js +3 -0
- package/build/plugins/json/plugin.d.ts +7 -0
- package/build/plugins/json/plugin.js +25 -0
- package/build/plugins/json/plugin.spec.d.ts +1 -0
- package/build/plugins/json/plugin.spec.js +163 -0
- package/build/plugins/json/table/index.d.ts +2 -0
- package/build/plugins/json/table/index.js +3 -0
- package/build/plugins/json/table/load.d.ts +6 -0
- package/build/plugins/json/table/load.js +55 -0
- package/build/plugins/json/table/load.spec.d.ts +1 -0
- package/build/plugins/json/table/load.spec.js +200 -0
- package/build/plugins/json/table/parse.d.ts +3 -0
- package/build/plugins/json/table/parse.js +6 -0
- package/build/plugins/json/table/save.d.ts +5 -0
- package/build/plugins/json/table/save.js +45 -0
- package/build/plugins/json/table/save.spec.d.ts +1 -0
- package/build/plugins/json/table/save.spec.js +147 -0
- package/build/plugins/ods/index.d.ts +2 -0
- package/build/plugins/ods/index.js +3 -0
- package/build/plugins/ods/plugin.d.ts +7 -0
- package/build/plugins/ods/plugin.js +23 -0
- package/build/plugins/ods/plugin.spec.d.ts +1 -0
- package/build/plugins/ods/plugin.spec.js +142 -0
- package/build/plugins/ods/table/index.d.ts +2 -0
- package/build/plugins/ods/table/index.js +3 -0
- package/build/plugins/ods/table/load.d.ts +4 -0
- package/build/plugins/ods/table/load.js +41 -0
- package/build/plugins/ods/table/load.spec.d.ts +1 -0
- package/build/plugins/ods/table/load.spec.js +167 -0
- package/build/plugins/ods/table/save.d.ts +3 -0
- package/build/plugins/ods/table/save.js +26 -0
- package/build/plugins/ods/table/save.spec.d.ts +1 -0
- package/build/plugins/ods/table/save.spec.js +75 -0
- package/build/plugins/ods/table/test.d.ts +5 -0
- package/build/plugins/ods/table/test.js +23 -0
- package/build/plugins/parquet/index.d.ts +2 -0
- package/build/plugins/parquet/index.js +3 -0
- package/build/plugins/parquet/plugin.d.ts +7 -0
- package/build/plugins/parquet/plugin.js +23 -0
- package/build/plugins/parquet/plugin.spec.d.ts +1 -0
- package/build/plugins/parquet/plugin.spec.js +142 -0
- package/build/plugins/parquet/table/index.d.ts +2 -0
- package/build/plugins/parquet/table/index.js +3 -0
- package/build/plugins/parquet/table/load.d.ts +4 -0
- package/build/plugins/parquet/table/load.js +23 -0
- package/build/plugins/parquet/table/load.spec.d.ts +1 -0
- package/build/plugins/parquet/table/load.spec.js +56 -0
- package/build/plugins/parquet/table/save.d.ts +3 -0
- package/build/plugins/parquet/table/save.js +32 -0
- package/build/plugins/parquet/table/save.spec.d.ts +1 -0
- package/build/plugins/parquet/table/save.spec.js +81 -0
- package/build/plugins/xlxs/index.d.ts +2 -0
- package/build/plugins/xlxs/index.js +3 -0
- package/build/plugins/xlxs/plugin.d.ts +7 -0
- package/build/plugins/xlxs/plugin.js +23 -0
- package/build/plugins/xlxs/plugin.spec.d.ts +1 -0
- package/build/plugins/xlxs/plugin.spec.js +142 -0
- package/build/plugins/xlxs/table/index.d.ts +2 -0
- package/build/plugins/xlxs/table/index.js +3 -0
- package/build/plugins/xlxs/table/load.d.ts +4 -0
- package/build/plugins/xlxs/table/load.js +43 -0
- package/build/plugins/xlxs/table/load.spec.d.ts +1 -0
- package/build/plugins/xlxs/table/load.spec.js +167 -0
- package/build/plugins/xlxs/table/save.d.ts +3 -0
- package/build/plugins/xlxs/table/save.js +28 -0
- package/build/plugins/xlxs/table/save.spec.d.ts +1 -0
- package/build/plugins/xlxs/table/save.spec.js +75 -0
- package/build/plugins/xlxs/table/test.d.ts +5 -0
- package/build/plugins/xlxs/table/test.js +23 -0
- package/build/schema/Mapping.d.ts +6 -0
- package/build/schema/Mapping.js +2 -0
- package/build/schema/Options.d.ts +22 -0
- package/build/schema/Options.js +2 -0
- package/build/schema/Schema.d.ts +4 -0
- package/build/schema/Schema.js +2 -0
- package/build/schema/helpers.d.ts +3 -0
- package/build/schema/helpers.js +6 -0
- package/build/schema/index.d.ts +8 -0
- package/build/schema/index.js +5 -0
- package/build/schema/infer.d.ts +13 -0
- package/build/schema/infer.js +199 -0
- package/build/schema/infer.spec.d.ts +1 -0
- package/build/schema/infer.spec.js +304 -0
- package/build/schema/match.d.ts +6 -0
- package/build/schema/match.js +8 -0
- package/build/table/Frame.d.ts +2 -0
- package/build/table/Frame.js +2 -0
- package/build/table/Table.d.ts +2 -0
- package/build/table/Table.js +2 -0
- package/build/table/checks/unique.d.ts +7 -0
- package/build/table/checks/unique.js +23 -0
- package/build/table/checks/unique.spec.d.ts +1 -0
- package/build/table/checks/unique.spec.js +187 -0
- package/build/table/denormalize.d.ts +6 -0
- package/build/table/denormalize.js +15 -0
- package/build/table/helpers.d.ts +19 -0
- package/build/table/helpers.js +62 -0
- package/build/table/helpers.spec.d.ts +1 -0
- package/build/table/helpers.spec.js +352 -0
- package/build/table/index.d.ts +9 -0
- package/build/table/index.js +8 -0
- package/build/table/inspect.d.ts +8 -0
- package/build/table/inspect.js +165 -0
- package/build/table/inspect.spec.d.ts +1 -0
- package/build/table/inspect.spec.js +335 -0
- package/build/table/normalize.d.ts +6 -0
- package/build/table/normalize.js +27 -0
- package/build/table/normalize.spec.d.ts +1 -0
- package/build/table/normalize.spec.js +222 -0
- package/build/table/query.d.ts +3 -0
- package/build/table/query.js +6 -0
- package/package.json +45 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { resolveDialect } from "@frictionless-ts/metadata";
|
|
2
|
+
import { resolveSchema } from "@frictionless-ts/metadata";
|
|
3
|
+
import { getRecordsFromRows } from "../../../data/index.js";
|
|
4
|
+
import { inferSchemaFromTable } from "../../../schema/index.js";
|
|
5
|
+
import { normalizeTable } from "../../../table/index.js";
|
|
6
|
+
import * as pl from "nodejs-polars";
|
|
7
|
+
export async function loadInlineTable(resource, options) {
|
|
8
|
+
const data = resource.data;
|
|
9
|
+
if (!Array.isArray(data)) {
|
|
10
|
+
throw new Error("Resource data is not defined or tabular");
|
|
11
|
+
}
|
|
12
|
+
const dialect = await resolveDialect(resource.dialect);
|
|
13
|
+
const isRows = data.every(row => Array.isArray(row));
|
|
14
|
+
const records = isRows ? getRecordsFromRows(data, dialect) : data;
|
|
15
|
+
let table = pl.DataFrame(records).lazy();
|
|
16
|
+
if (!options?.denormalized) {
|
|
17
|
+
let schema = await resolveSchema(resource.schema);
|
|
18
|
+
if (!schema)
|
|
19
|
+
schema = await inferSchemaFromTable(table, options);
|
|
20
|
+
table = await normalizeTable(table, schema);
|
|
21
|
+
}
|
|
22
|
+
return table;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvaW5saW5lL3RhYmxlL2xvYWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUUzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDeEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkMsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLFFBQTJCLEVBQzNCLE9BQTBCO0lBRTFCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUE7SUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUE7SUFDNUQsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBRXBELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDakUsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUV4QyxJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNoRSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHsgcmVzb2x2ZURpYWxlY3QgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgeyByZXNvbHZlU2NoZW1hIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHsgZ2V0UmVjb3Jkc0Zyb21Sb3dzIH0gZnJvbSBcIi4uLy4uLy4uL2RhdGEvaW5kZXgudHNcIlxuaW1wb3J0IHR5cGUgeyBMb2FkVGFibGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL3BsdWdpbi50c1wiXG5pbXBvcnQgeyBpbmZlclNjaGVtYUZyb21UYWJsZSB9IGZyb20gXCIuLi8uLi8uLi9zY2hlbWEvaW5kZXgudHNcIlxuaW1wb3J0IHsgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi4vLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuaW1wb3J0ICogYXMgcGwgZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZElubGluZVRhYmxlKFxuICByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4sXG4gIG9wdGlvbnM/OiBMb2FkVGFibGVPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGRhdGEgPSByZXNvdXJjZS5kYXRhXG4gIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlJlc291cmNlIGRhdGEgaXMgbm90IGRlZmluZWQgb3IgdGFidWxhclwiKVxuICB9XG5cbiAgY29uc3QgZGlhbGVjdCA9IGF3YWl0IHJlc29sdmVEaWFsZWN0KHJlc291cmNlLmRpYWxlY3QpXG4gIGNvbnN0IGlzUm93cyA9IGRhdGEuZXZlcnkocm93ID0+IEFycmF5LmlzQXJyYXkocm93KSlcblxuICBjb25zdCByZWNvcmRzID0gaXNSb3dzID8gZ2V0UmVjb3Jkc0Zyb21Sb3dzKGRhdGEsIGRpYWxlY3QpIDogZGF0YVxuICBsZXQgdGFibGUgPSBwbC5EYXRhRnJhbWUocmVjb3JkcykubGF6eSgpXG5cbiAgaWYgKCFvcHRpb25zPy5kZW5vcm1hbGl6ZWQpIHtcbiAgICBsZXQgc2NoZW1hID0gYXdhaXQgcmVzb2x2ZVNjaGVtYShyZXNvdXJjZS5zY2hlbWEpXG4gICAgaWYgKCFzY2hlbWEpIHNjaGVtYSA9IGF3YWl0IGluZmVyU2NoZW1hRnJvbVRhYmxlKHRhYmxlLCBvcHRpb25zKVxuICAgIHRhYmxlID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgfVxuXG4gIHJldHVybiB0YWJsZVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { loadInlineTable } from "./load.js";
|
|
3
|
+
describe("loadInlineTable", () => {
|
|
4
|
+
it("should throw on no data", async () => {
|
|
5
|
+
const resource = { name: "test" };
|
|
6
|
+
await expect(loadInlineTable(resource)).rejects.toThrow("Resource data is not defined or tabular");
|
|
7
|
+
});
|
|
8
|
+
it("should throw on bad data", async () => {
|
|
9
|
+
const resource = { name: "test", data: "bad" };
|
|
10
|
+
await expect(loadInlineTable(resource)).rejects.toThrow("Resource data is not defined or tabular");
|
|
11
|
+
});
|
|
12
|
+
it("should read arrays", async () => {
|
|
13
|
+
const resource = {
|
|
14
|
+
name: "test",
|
|
15
|
+
type: "table",
|
|
16
|
+
data: [
|
|
17
|
+
["id", "name"],
|
|
18
|
+
[1, "english"],
|
|
19
|
+
[2, "中文"],
|
|
20
|
+
],
|
|
21
|
+
};
|
|
22
|
+
const table = await loadInlineTable(resource);
|
|
23
|
+
const frame = await table.collect();
|
|
24
|
+
expect([
|
|
25
|
+
{ id: 1, name: "english" },
|
|
26
|
+
{ id: 2, name: "中文" },
|
|
27
|
+
]).toEqual(frame.toRecords());
|
|
28
|
+
});
|
|
29
|
+
it("should read objects", async () => {
|
|
30
|
+
const resource = {
|
|
31
|
+
name: "test",
|
|
32
|
+
type: "table",
|
|
33
|
+
data: [
|
|
34
|
+
{ id: 1, name: "english" },
|
|
35
|
+
{ id: 2, name: "中文" },
|
|
36
|
+
],
|
|
37
|
+
schema: undefined,
|
|
38
|
+
};
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
const table = await loadInlineTable(resource);
|
|
41
|
+
const frame = await table.collect();
|
|
42
|
+
expect([
|
|
43
|
+
{ id: 1, name: "english" },
|
|
44
|
+
{ id: 2, name: "中文" },
|
|
45
|
+
]).toEqual(frame.toRecords());
|
|
46
|
+
});
|
|
47
|
+
it("should handle longer rows", async () => {
|
|
48
|
+
const resource = {
|
|
49
|
+
name: "test",
|
|
50
|
+
type: "table",
|
|
51
|
+
data: [
|
|
52
|
+
["id", "name"],
|
|
53
|
+
[1, "english"],
|
|
54
|
+
[2, "中文", "bad"], // extra cell
|
|
55
|
+
],
|
|
56
|
+
schema: {
|
|
57
|
+
fields: [
|
|
58
|
+
{ name: "id", type: "integer" },
|
|
59
|
+
{ name: "name", type: "string" },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
const table = await loadInlineTable(resource);
|
|
65
|
+
const frame = await table.collect();
|
|
66
|
+
expect([
|
|
67
|
+
{ id: 1, name: "english" },
|
|
68
|
+
{ id: 2, name: "中文" },
|
|
69
|
+
]).toEqual(frame.toRecords());
|
|
70
|
+
});
|
|
71
|
+
it("should handle shorter rows", async () => {
|
|
72
|
+
const resource = {
|
|
73
|
+
name: "test",
|
|
74
|
+
type: "table",
|
|
75
|
+
data: [
|
|
76
|
+
["id", "name"],
|
|
77
|
+
[1, "english"],
|
|
78
|
+
[2], // missing cell
|
|
79
|
+
],
|
|
80
|
+
schema: {
|
|
81
|
+
fields: [
|
|
82
|
+
{ name: "id", type: "integer" },
|
|
83
|
+
{ name: "name", type: "string" },
|
|
84
|
+
],
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
const table = await loadInlineTable(resource);
|
|
89
|
+
const frame = await table.collect();
|
|
90
|
+
expect([
|
|
91
|
+
{ id: 1, name: "english" },
|
|
92
|
+
{ id: 2, name: null },
|
|
93
|
+
]).toEqual(frame.toRecords());
|
|
94
|
+
});
|
|
95
|
+
it("should handle various data types", async () => {
|
|
96
|
+
const resource = {
|
|
97
|
+
name: "test",
|
|
98
|
+
type: "table",
|
|
99
|
+
data: [
|
|
100
|
+
{
|
|
101
|
+
string: "string",
|
|
102
|
+
number: 1,
|
|
103
|
+
boolean: true,
|
|
104
|
+
date: new Date("2025-01-01"),
|
|
105
|
+
time: new Date("2025-01-01"),
|
|
106
|
+
datetime: new Date("2025-01-01"),
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
schema: undefined,
|
|
110
|
+
};
|
|
111
|
+
// @ts-ignore
|
|
112
|
+
const table = await loadInlineTable(resource);
|
|
113
|
+
const frame = await table.collect();
|
|
114
|
+
expect([
|
|
115
|
+
{
|
|
116
|
+
string: "string",
|
|
117
|
+
number: 1,
|
|
118
|
+
boolean: true,
|
|
119
|
+
date: new Date("2025-01-01"),
|
|
120
|
+
time: new Date("2025-01-01"),
|
|
121
|
+
datetime: new Date("2025-01-01"),
|
|
122
|
+
},
|
|
123
|
+
]).toEqual(frame.toRecords());
|
|
124
|
+
});
|
|
125
|
+
it("should handle objects with shorter rows", async () => {
|
|
126
|
+
const resource = {
|
|
127
|
+
name: "test",
|
|
128
|
+
type: "table",
|
|
129
|
+
data: [{ id: 1, name: "english" }, { id: 2, name: "中文" }, { id: 3 }],
|
|
130
|
+
};
|
|
131
|
+
// @ts-ignore
|
|
132
|
+
const table = await loadInlineTable(resource);
|
|
133
|
+
const frame = await table.collect();
|
|
134
|
+
expect([
|
|
135
|
+
{ id: 1, name: "english" },
|
|
136
|
+
{ id: 2, name: "中文" },
|
|
137
|
+
{ id: 3, name: null },
|
|
138
|
+
]).toEqual(frame.toRecords());
|
|
139
|
+
});
|
|
140
|
+
it("should handle objects with longer rows", async () => {
|
|
141
|
+
const resource = {
|
|
142
|
+
name: "test",
|
|
143
|
+
type: "table",
|
|
144
|
+
data: [
|
|
145
|
+
{ id: 1, name: "english" },
|
|
146
|
+
{ id: 2, name: "中文" },
|
|
147
|
+
{ id: 3, name: "german", extra: "extra" },
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
// @ts-ignore
|
|
151
|
+
const table = await loadInlineTable(resource);
|
|
152
|
+
const frame = await table.collect();
|
|
153
|
+
expect([
|
|
154
|
+
{ id: 1, name: "english", extra: null },
|
|
155
|
+
{ id: 2, name: "中文", extra: null },
|
|
156
|
+
{ id: 3, name: "german", extra: "extra" },
|
|
157
|
+
]).toEqual(frame.toRecords());
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9pbmxpbmUvdGFibGUvbG9hZC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRTNDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7SUFDL0IsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZDLE1BQU0sUUFBUSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO1FBRWpDLE1BQU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3JELHlDQUF5QyxDQUMxQyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsMEJBQTBCLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDeEMsTUFBTSxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQTtRQUU5QyxNQUFNLE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUNyRCx5Q0FBeUMsQ0FDMUMsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLG9CQUFvQixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2xDLE1BQU0sUUFBUSxHQUFHO1lBQ2YsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsT0FBZ0I7WUFDdEIsSUFBSSxFQUFFO2dCQUNKLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztnQkFDZCxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLEVB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U0FBUyxFQUFFLENBQUMsQ0FBQTtJQUMvQixDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyx3Q0FBd0MsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN0RCxNQUFNLFFBQVEsR0FBRztZQUNmLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLE9BQU87WUFDYixJQUFJLEVBQUU7Z0JBQ0osRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQzFCLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO2dCQUNyQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2FBQzFDO1NBQ0YsQ0FBQTtRQUVELGFBQWE7UUFDYixNQUFNLEtBQUssR0FBRyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUM3QyxNQUFNLEtBQUssR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVuQyxNQUFNLENBQUM7WUFDTCxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3ZDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDbEMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtTQUMxQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0lBQy9CLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgbG9hZElubGluZVRhYmxlIH0gZnJvbSBcIi4vbG9hZC50c1wiXG5cbmRlc2NyaWJlKFwibG9hZElubGluZVRhYmxlXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgdGhyb3cgb24gbm8gZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB7IG5hbWU6IFwidGVzdFwiIH1cblxuICAgIGF3YWl0IGV4cGVjdChsb2FkSW5saW5lVGFibGUocmVzb3VyY2UpKS5yZWplY3RzLnRvVGhyb3coXG4gICAgICBcIlJlc291cmNlIGRhdGEgaXMgbm90IGRlZmluZWQgb3IgdGFidWxhclwiLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCB0aHJvdyBvbiBiYWQgZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB7IG5hbWU6IFwidGVzdFwiLCBkYXRhOiBcImJhZFwiIH1cblxuICAgIGF3YWl0IGV4cGVjdChsb2FkSW5saW5lVGFibGUocmVzb3VyY2UpKS5yZWplY3RzLnRvVGhyb3coXG4gICAgICBcIlJlc291cmNlIGRhdGEgaXMgbm90IGRlZmluZWQgb3IgdGFidWxhclwiLFxuICAgIClcbiAgfSlcblxuICBpdChcInNob3VsZCByZWFkIGFycmF5c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB7XG4gICAgICBuYW1lOiBcInRlc3RcIixcbiAgICAgIHR5cGU6IFwidGFibGVcIiBhcyBjb25zdCxcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgW1wiaWRcIiwgXCJuYW1lXCJdLFxuICAgICAgICBbMSwgXCJlbmdsaXNoXCJdLFxuICAgICAgICBbMiwgXCLkuK3mlodcIl0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgbG9hZElubGluZVRhYmxlKHJlc291cmNlKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgdGFibGUuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoW1xuICAgICAgeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIgfSxcbiAgICAgIHsgaWQ6IDIsIG5hbWU6IFwi5Lit5paHXCIgfSxcbiAgICBdKS50b0VxdWFsKGZyYW1lLnRvUmVjb3JkcygpKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlYWQgb2JqZWN0c1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB7XG4gICAgICBuYW1lOiBcInRlc3RcIixcbiAgICAgIHR5cGU6IFwidGFibGVcIixcbiAgICAgIGRhdGE6IFtcbiAgICAgICAgeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIgfSxcbiAgICAgICAgeyBpZDogMiwgbmFtZTogXCLkuK3mlodcIiB9LFxuICAgICAgXSxcbiAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0YWJsZSA9IGF3YWl0IGxvYWRJbmxpbmVUYWJsZShyZXNvdXJjZSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHRhYmxlLmNvbGxlY3QoKVxuXG4gICAgZXhwZWN0KFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgXSkudG9FcXVhbChmcmFtZS50b1JlY29yZHMoKSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgbG9uZ2VyIHJvd3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICBkYXRhOiBbXG4gICAgICAgIFtcImlkXCIsIFwibmFtZVwiXSxcbiAgICAgICAgWzEsIFwiZW5nbGlzaFwiXSxcbiAgICAgICAgWzIsIFwi5Lit5paHXCIsIFwiYmFkXCJdLCAvLyBleHRyYSBjZWxsXG4gICAgICBdLFxuICAgICAgc2NoZW1hOiB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgbG9hZElubGluZVRhYmxlKHJlc291cmNlKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgdGFibGUuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoW1xuICAgICAgeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIgfSxcbiAgICAgIHsgaWQ6IDIsIG5hbWU6IFwi5Lit5paHXCIgfSxcbiAgICBdKS50b0VxdWFsKGZyYW1lLnRvUmVjb3JkcygpKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBzaG9ydGVyIHJvd3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICBkYXRhOiBbXG4gICAgICAgIFtcImlkXCIsIFwibmFtZVwiXSxcbiAgICAgICAgWzEsIFwiZW5nbGlzaFwiXSxcbiAgICAgICAgWzJdLCAvLyBtaXNzaW5nIGNlbGxcbiAgICAgIF0sXG4gICAgICBzY2hlbWE6IHtcbiAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgICAgeyBuYW1lOiBcIm5hbWVcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgdGFibGUgPSBhd2FpdCBsb2FkSW5saW5lVGFibGUocmVzb3VyY2UpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCB0YWJsZS5jb2xsZWN0KClcblxuICAgIGV4cGVjdChbXG4gICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogbnVsbCB9LFxuICAgIF0pLnRvRXF1YWwoZnJhbWUudG9SZWNvcmRzKCkpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHZhcmlvdXMgZGF0YSB0eXBlc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzb3VyY2UgPSB7XG4gICAgICBuYW1lOiBcInRlc3RcIixcbiAgICAgIHR5cGU6IFwidGFibGVcIixcbiAgICAgIGRhdGE6IFtcbiAgICAgICAge1xuICAgICAgICAgIHN0cmluZzogXCJzdHJpbmdcIixcbiAgICAgICAgICBudW1iZXI6IDEsXG4gICAgICAgICAgYm9vbGVhbjogdHJ1ZSxcbiAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShcIjIwMjUtMDEtMDFcIiksXG4gICAgICAgICAgdGltZTogbmV3IERhdGUoXCIyMDI1LTAxLTAxXCIpLFxuICAgICAgICAgIGRhdGV0aW1lOiBuZXcgRGF0ZShcIjIwMjUtMDEtMDFcIiksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgbG9hZElubGluZVRhYmxlKHJlc291cmNlKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgdGFibGUuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoW1xuICAgICAge1xuICAgICAgICBzdHJpbmc6IFwic3RyaW5nXCIsXG4gICAgICAgIG51bWJlcjogMSxcbiAgICAgICAgYm9vbGVhbjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoXCIyMDI1LTAxLTAxXCIpLFxuICAgICAgICB0aW1lOiBuZXcgRGF0ZShcIjIwMjUtMDEtMDFcIiksXG4gICAgICAgIGRhdGV0aW1lOiBuZXcgRGF0ZShcIjIwMjUtMDEtMDFcIiksXG4gICAgICB9LFxuICAgIF0pLnRvRXF1YWwoZnJhbWUudG9SZWNvcmRzKCkpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG9iamVjdHMgd2l0aCBzaG9ydGVyIHJvd3NcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc291cmNlID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0XCIsXG4gICAgICB0eXBlOiBcInRhYmxlXCIsXG4gICAgICBkYXRhOiBbeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIgfSwgeyBpZDogMiwgbmFtZTogXCLkuK3mlodcIiB9LCB7IGlkOiAzIH1dLFxuICAgIH1cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB0YWJsZSA9IGF3YWl0IGxvYWRJbmxpbmVUYWJsZShyZXNvdXJjZSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHRhYmxlLmNvbGxlY3QoKVxuXG4gICAgZXhwZWN0KFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiBudWxsIH0sXG4gICAgXSkudG9FcXVhbChmcmFtZS50b1JlY29yZHMoKSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgb2JqZWN0cyB3aXRoIGxvbmdlciByb3dzXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXNvdXJjZSA9IHtcbiAgICAgIG5hbWU6IFwidGVzdFwiLFxuICAgICAgdHlwZTogXCJ0YWJsZVwiLFxuICAgICAgZGF0YTogW1xuICAgICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiB9LFxuICAgICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgICAgIHsgaWQ6IDMsIG5hbWU6IFwiZ2VybWFuXCIsIGV4dHJhOiBcImV4dHJhXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHRhYmxlID0gYXdhaXQgbG9hZElubGluZVRhYmxlKHJlc291cmNlKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgdGFibGUuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoW1xuICAgICAgeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIsIGV4dHJhOiBudWxsIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiLCBleHRyYTogbnVsbCB9LFxuICAgICAgeyBpZDogMywgbmFtZTogXCJnZXJtYW5cIiwgZXh0cmE6IFwiZXh0cmFcIiB9LFxuICAgIF0pLnRvRXF1YWwoZnJhbWUudG9SZWNvcmRzKCkpXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function decodeJsonBuffer(buffer, options) {
|
|
2
|
+
const string = buffer.toString("utf-8");
|
|
3
|
+
return options.isLines
|
|
4
|
+
? string
|
|
5
|
+
.split("\n")
|
|
6
|
+
.filter(Boolean)
|
|
7
|
+
.map(line => JSON.parse(line))
|
|
8
|
+
: JSON.parse(string);
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9qc29uL2J1ZmZlci9kZWNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFjLEVBQ2QsT0FBNkI7SUFFN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUV2QyxPQUFPLE9BQU8sQ0FBQyxPQUFPO1FBQ3BCLENBQUMsQ0FBQyxNQUFNO2FBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLE1BQU0sQ0FBQyxPQUFPLENBQUM7YUFDZixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJ1ZmZlciB9IGZyb20gXCJub2RlOmJ1ZmZlclwiXG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVKc29uQnVmZmVyKFxuICBidWZmZXI6IEJ1ZmZlcixcbiAgb3B0aW9uczogeyBpc0xpbmVzOiBib29sZWFuIH0sXG4pIHtcbiAgY29uc3Qgc3RyaW5nID0gYnVmZmVyLnRvU3RyaW5nKFwidXRmLThcIilcblxuICByZXR1cm4gb3B0aW9ucy5pc0xpbmVzXG4gICAgPyBzdHJpbmdcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLm1hcChsaW5lID0+IEpTT04ucGFyc2UobGluZSkpXG4gICAgOiBKU09OLnBhcnNlKHN0cmluZylcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
export function encodeJsonBuffer(data, options) {
|
|
3
|
+
const string = options.isLines
|
|
4
|
+
? data.map((line) => JSON.stringify(line)).join("\n")
|
|
5
|
+
: JSON.stringify(data, null, 2);
|
|
6
|
+
return Buffer.from(string);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGx1Z2lucy9qc29uL2J1ZmZlci9lbmNvZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUVwQyxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsSUFBUyxFQUFFLE9BQTZCO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzVCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBRWpDLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSBcIm5vZGU6YnVmZmVyXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZUpzb25CdWZmZXIoZGF0YTogYW55LCBvcHRpb25zOiB7IGlzTGluZXM6IGJvb2xlYW4gfSkge1xuICBjb25zdCBzdHJpbmcgPSBvcHRpb25zLmlzTGluZXNcbiAgICA/IGRhdGEubWFwKChsaW5lOiBhbnkpID0+IEpTT04uc3RyaW5naWZ5KGxpbmUpKS5qb2luKFwiXFxuXCIpXG4gICAgOiBKU09OLnN0cmluZ2lmeShkYXRhLCBudWxsLCAyKVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShzdHJpbmcpXG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { encodeJsonBuffer } from "./encode.js";
|
|
2
|
+
export { decodeJsonBuffer } from "./decode.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2pzb24vYnVmZmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBlbmNvZGVKc29uQnVmZmVyIH0gZnJvbSBcIi4vZW5jb2RlLnRzXCJcbmV4cG9ydCB7IGRlY29kZUpzb25CdWZmZXIgfSBmcm9tIFwiLi9kZWNvZGUudHNcIlxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./table/index.js";
|
|
2
|
+
export * from "./plugin.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW5zL2pzb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLGFBQWEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3RhYmxlL2luZGV4LnRzXCJcbmV4cG9ydCAqIGZyb20gXCIuL3BsdWdpbi50c1wiXG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Resource } from "@frictionless-ts/metadata";
|
|
2
|
+
import type { LoadTableOptions, SaveTableOptions, TablePlugin } from "../../plugin.ts";
|
|
3
|
+
import type { Table } from "../../table/index.ts";
|
|
4
|
+
export declare class JsonPlugin implements TablePlugin {
|
|
5
|
+
loadTable(resource: Partial<Resource>, options?: LoadTableOptions): Promise<import("nodejs-polars").LazyDataFrame<any> | undefined>;
|
|
6
|
+
saveTable(table: Table, options: SaveTableOptions): Promise<string | undefined>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { inferFormat } from "@frictionless-ts/metadata";
|
|
2
|
+
import { loadJsonTable } from "./table/index.js";
|
|
3
|
+
import { saveJsonTable } from "./table/index.js";
|
|
4
|
+
export class JsonPlugin {
|
|
5
|
+
async loadTable(resource, options) {
|
|
6
|
+
const jsonFormat = getJsonFormat(resource);
|
|
7
|
+
if (!jsonFormat)
|
|
8
|
+
return undefined;
|
|
9
|
+
return await loadJsonTable({ ...resource, format: jsonFormat }, options);
|
|
10
|
+
}
|
|
11
|
+
async saveTable(table, options) {
|
|
12
|
+
const { path, format } = options;
|
|
13
|
+
const jsonFormat = getJsonFormat({ path, format });
|
|
14
|
+
if (!jsonFormat)
|
|
15
|
+
return undefined;
|
|
16
|
+
return await saveJsonTable(table, { ...options, format: jsonFormat });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function getJsonFormat(resource) {
|
|
20
|
+
const format = inferFormat(resource);
|
|
21
|
+
return format === "json" || format === "jsonl" || format === "ndjson"
|
|
22
|
+
? format
|
|
23
|
+
: undefined;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGx1Z2lucy9qc29uL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFPdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUVoRCxNQUFNLE9BQU8sVUFBVTtJQUNyQixLQUFLLENBQUMsU0FBUyxDQUFDLFFBQTJCLEVBQUUsT0FBMEI7UUFDckUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxVQUFVO1lBQUUsT0FBTyxTQUFTLENBQUE7UUFFakMsT0FBTyxNQUFNLGFBQWEsQ0FBQyxFQUFFLEdBQUcsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFZLEVBQUUsT0FBeUI7UUFDckQsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFFaEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDbEQsSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLFNBQVMsQ0FBQTtRQUVqQyxPQUFPLE1BQU0sYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZFLENBQUM7Q0FDRjtBQUVELFNBQVMsYUFBYSxDQUFDLFFBQTJCO0lBQ2hELE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNwQyxPQUFPLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssUUFBUTtRQUNuRSxDQUFDLENBQUMsTUFBTTtRQUNSLENBQUMsQ0FBQyxTQUFTLENBQUE7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB7IGluZmVyRm9ybWF0IH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHR5cGUge1xuICBMb2FkVGFibGVPcHRpb25zLFxuICBTYXZlVGFibGVPcHRpb25zLFxuICBUYWJsZVBsdWdpbixcbn0gZnJvbSBcIi4uLy4uL3BsdWdpbi50c1wiXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcbmltcG9ydCB7IGxvYWRKc29uVGFibGUgfSBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5pbXBvcnQgeyBzYXZlSnNvblRhYmxlIH0gZnJvbSBcIi4vdGFibGUvaW5kZXgudHNcIlxuXG5leHBvcnQgY2xhc3MgSnNvblBsdWdpbiBpbXBsZW1lbnRzIFRhYmxlUGx1Z2luIHtcbiAgYXN5bmMgbG9hZFRhYmxlKHJlc291cmNlOiBQYXJ0aWFsPFJlc291cmNlPiwgb3B0aW9ucz86IExvYWRUYWJsZU9wdGlvbnMpIHtcbiAgICBjb25zdCBqc29uRm9ybWF0ID0gZ2V0SnNvbkZvcm1hdChyZXNvdXJjZSlcbiAgICBpZiAoIWpzb25Gb3JtYXQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiBhd2FpdCBsb2FkSnNvblRhYmxlKHsgLi4ucmVzb3VyY2UsIGZvcm1hdDoganNvbkZvcm1hdCB9LCBvcHRpb25zKVxuICB9XG5cbiAgYXN5bmMgc2F2ZVRhYmxlKHRhYmxlOiBUYWJsZSwgb3B0aW9uczogU2F2ZVRhYmxlT3B0aW9ucykge1xuICAgIGNvbnN0IHsgcGF0aCwgZm9ybWF0IH0gPSBvcHRpb25zXG5cbiAgICBjb25zdCBqc29uRm9ybWF0ID0gZ2V0SnNvbkZvcm1hdCh7IHBhdGgsIGZvcm1hdCB9KVxuICAgIGlmICghanNvbkZvcm1hdCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcmV0dXJuIGF3YWl0IHNhdmVKc29uVGFibGUodGFibGUsIHsgLi4ub3B0aW9ucywgZm9ybWF0OiBqc29uRm9ybWF0IH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SnNvbkZvcm1hdChyZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4pIHtcbiAgY29uc3QgZm9ybWF0ID0gaW5mZXJGb3JtYXQocmVzb3VyY2UpXG4gIHJldHVybiBmb3JtYXQgPT09IFwianNvblwiIHx8IGZvcm1hdCA9PT0gXCJqc29ubFwiIHx8IGZvcm1hdCA9PT0gXCJuZGpzb25cIlxuICAgID8gZm9ybWF0XG4gICAgOiB1bmRlZmluZWRcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { JsonPlugin } from "./plugin.js";
|
|
4
|
+
import * as loadModule from "./table/load.js";
|
|
5
|
+
import * as saveModule from "./table/save.js";
|
|
6
|
+
vi.mock("./table/load.ts", () => ({
|
|
7
|
+
loadJsonTable: vi.fn(),
|
|
8
|
+
}));
|
|
9
|
+
vi.mock("./table/save.ts", () => ({
|
|
10
|
+
saveJsonTable: vi.fn(),
|
|
11
|
+
}));
|
|
12
|
+
describe("JsonPlugin", () => {
|
|
13
|
+
let plugin;
|
|
14
|
+
let mockLoadJsonTable;
|
|
15
|
+
let mockSaveJsonTable;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
plugin = new JsonPlugin();
|
|
18
|
+
mockLoadJsonTable = vi.mocked(loadModule.loadJsonTable);
|
|
19
|
+
mockSaveJsonTable = vi.mocked(saveModule.saveJsonTable);
|
|
20
|
+
vi.clearAllMocks();
|
|
21
|
+
});
|
|
22
|
+
describe("loadTable", () => {
|
|
23
|
+
it("should load table from json file", async () => {
|
|
24
|
+
const resource = {
|
|
25
|
+
path: "test.json",
|
|
26
|
+
};
|
|
27
|
+
const mockTable = pl.DataFrame().lazy();
|
|
28
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
29
|
+
const result = await plugin.loadTable(resource);
|
|
30
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "json" }, undefined);
|
|
31
|
+
expect(result).toEqual(mockTable);
|
|
32
|
+
});
|
|
33
|
+
it("should load table from jsonl file", async () => {
|
|
34
|
+
const resource = {
|
|
35
|
+
path: "test.jsonl",
|
|
36
|
+
};
|
|
37
|
+
const mockTable = pl.DataFrame().lazy();
|
|
38
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
39
|
+
const result = await plugin.loadTable(resource);
|
|
40
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "jsonl" }, undefined);
|
|
41
|
+
expect(result).toEqual(mockTable);
|
|
42
|
+
});
|
|
43
|
+
it("should load table from ndjson file", async () => {
|
|
44
|
+
const resource = {
|
|
45
|
+
path: "test.ndjson",
|
|
46
|
+
};
|
|
47
|
+
const mockTable = pl.DataFrame().lazy();
|
|
48
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
49
|
+
const result = await plugin.loadTable(resource);
|
|
50
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "ndjson" }, undefined);
|
|
51
|
+
expect(result).toEqual(mockTable);
|
|
52
|
+
});
|
|
53
|
+
it("should return undefined for non-json files", async () => {
|
|
54
|
+
const resource = {
|
|
55
|
+
path: "test.csv",
|
|
56
|
+
};
|
|
57
|
+
const result = await plugin.loadTable(resource);
|
|
58
|
+
expect(mockLoadJsonTable).not.toHaveBeenCalled();
|
|
59
|
+
expect(result).toBeUndefined();
|
|
60
|
+
});
|
|
61
|
+
it("should handle explicit format specification", async () => {
|
|
62
|
+
const resource = {
|
|
63
|
+
path: "test.txt",
|
|
64
|
+
format: "json",
|
|
65
|
+
};
|
|
66
|
+
const mockTable = pl.DataFrame().lazy();
|
|
67
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
68
|
+
const result = await plugin.loadTable(resource);
|
|
69
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "json" }, undefined);
|
|
70
|
+
expect(result).toEqual(mockTable);
|
|
71
|
+
});
|
|
72
|
+
it("should pass through load options", async () => {
|
|
73
|
+
const resource = {
|
|
74
|
+
path: "test.json",
|
|
75
|
+
};
|
|
76
|
+
const options = { denormalized: true };
|
|
77
|
+
const mockTable = pl.DataFrame().lazy();
|
|
78
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
79
|
+
await plugin.loadTable(resource, options);
|
|
80
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "json" }, options);
|
|
81
|
+
});
|
|
82
|
+
it("should handle paths with directories", async () => {
|
|
83
|
+
const resource = {
|
|
84
|
+
path: "/path/to/data.json",
|
|
85
|
+
};
|
|
86
|
+
const mockTable = pl.DataFrame().lazy();
|
|
87
|
+
mockLoadJsonTable.mockResolvedValue(mockTable);
|
|
88
|
+
await plugin.loadTable(resource);
|
|
89
|
+
expect(mockLoadJsonTable).toHaveBeenCalledWith({ ...resource, format: "json" }, undefined);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe("saveTable", () => {
|
|
93
|
+
it("should save table to json file", async () => {
|
|
94
|
+
const table = pl.DataFrame().lazy();
|
|
95
|
+
const options = { path: "output.json" };
|
|
96
|
+
mockSaveJsonTable.mockResolvedValue({ path: "output.json" });
|
|
97
|
+
const result = await plugin.saveTable(table, options);
|
|
98
|
+
expect(mockSaveJsonTable).toHaveBeenCalledWith(table, {
|
|
99
|
+
...options,
|
|
100
|
+
format: "json",
|
|
101
|
+
});
|
|
102
|
+
expect(result).toEqual({ path: "output.json" });
|
|
103
|
+
});
|
|
104
|
+
it("should save table to jsonl file", async () => {
|
|
105
|
+
const table = pl.DataFrame().lazy();
|
|
106
|
+
const options = { path: "output.jsonl" };
|
|
107
|
+
mockSaveJsonTable.mockResolvedValue({ path: "output.jsonl" });
|
|
108
|
+
const result = await plugin.saveTable(table, options);
|
|
109
|
+
expect(mockSaveJsonTable).toHaveBeenCalledWith(table, {
|
|
110
|
+
...options,
|
|
111
|
+
format: "jsonl",
|
|
112
|
+
});
|
|
113
|
+
expect(result).toEqual({ path: "output.jsonl" });
|
|
114
|
+
});
|
|
115
|
+
it("should save table to ndjson file", async () => {
|
|
116
|
+
const table = pl.DataFrame().lazy();
|
|
117
|
+
const options = { path: "output.ndjson" };
|
|
118
|
+
mockSaveJsonTable.mockResolvedValue({ path: "output.ndjson" });
|
|
119
|
+
const result = await plugin.saveTable(table, options);
|
|
120
|
+
expect(mockSaveJsonTable).toHaveBeenCalledWith(table, {
|
|
121
|
+
...options,
|
|
122
|
+
format: "ndjson",
|
|
123
|
+
});
|
|
124
|
+
expect(result).toEqual({ path: "output.ndjson" });
|
|
125
|
+
});
|
|
126
|
+
it("should return undefined for non-json files", async () => {
|
|
127
|
+
const table = pl.DataFrame().lazy();
|
|
128
|
+
const options = { path: "output.csv" };
|
|
129
|
+
const result = await plugin.saveTable(table, options);
|
|
130
|
+
expect(mockSaveJsonTable).not.toHaveBeenCalled();
|
|
131
|
+
expect(result).toBeUndefined();
|
|
132
|
+
});
|
|
133
|
+
it("should handle explicit format specification", async () => {
|
|
134
|
+
const table = pl.DataFrame().lazy();
|
|
135
|
+
const options = { path: "output.txt", format: "json" };
|
|
136
|
+
mockSaveJsonTable.mockResolvedValue({ path: "output.txt" });
|
|
137
|
+
const result = await plugin.saveTable(table, options);
|
|
138
|
+
expect(mockSaveJsonTable).toHaveBeenCalledWith(table, {
|
|
139
|
+
...options,
|
|
140
|
+
format: "json",
|
|
141
|
+
});
|
|
142
|
+
expect(result).toEqual({ path: "output.txt" });
|
|
143
|
+
});
|
|
144
|
+
it("should handle paths with directories", async () => {
|
|
145
|
+
const table = pl.DataFrame().lazy();
|
|
146
|
+
const options = { path: "/path/to/output.json" };
|
|
147
|
+
mockSaveJsonTable.mockResolvedValue({ path: "/path/to/output.json" });
|
|
148
|
+
await plugin.saveTable(table, options);
|
|
149
|
+
expect(mockSaveJsonTable).toHaveBeenCalledWith(table, {
|
|
150
|
+
...options,
|
|
151
|
+
format: "json",
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
it("should return undefined for files without extension", async () => {
|
|
155
|
+
const table = pl.DataFrame().lazy();
|
|
156
|
+
const options = { path: "output" };
|
|
157
|
+
const result = await plugin.saveTable(table, options);
|
|
158
|
+
expect(mockSaveJsonTable).not.toHaveBeenCalled();
|
|
159
|
+
expect(result).toBeUndefined();
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW5zL2pzb24vcGx1Z2luLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4QyxPQUFPLEtBQUssVUFBVSxNQUFNLGlCQUFpQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxVQUFVLE1BQU0saUJBQWlCLENBQUE7QUFFN0MsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQyxDQUFBO0FBRUgsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0NBQ3ZCLENBQUMsQ0FBQyxDQUFBO0FBRUgsUUFBUSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7SUFDMUIsSUFBSSxNQUFrQixDQUFBO0lBQ3RCLElBQUksaUJBQTJDLENBQUE7SUFDL0MsSUFBSSxpQkFBMkMsQ0FBQTtJQUUvQyxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUE7UUFDekIsaUJBQWlCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDdkQsaUJBQWlCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDdkQsRUFBRSxDQUFDLGFBQWEs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RSxLQUFLLElBQUksRUFBRTtZQUNwRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7WUFDbkMsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQTtZQUNoRCxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUE7WUFFckUsTUFBTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtZQUV0QyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BELEdBQUcsT0FBTztnQkFDVixNQUFNLEVBQUUsTUFBTTthQUNmLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO1FBRUYsRUFBRSxDQUFDLHFEQUFxRCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25FLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUNuQyxNQUFNLE9BQU8sR0FBRyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQTtZQUVsQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBRXJELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1lBQ2hELE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0ICogYXMgcGwgZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuaW1wb3J0IHsgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQsIHZpIH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBKc29uUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmltcG9ydCAqIGFzIGxvYWRNb2R1bGUgZnJvbSBcIi4vdGFibGUvbG9hZC50c1wiXG5pbXBvcnQgKiBhcyBzYXZlTW9kdWxlIGZyb20gXCIuL3RhYmxlL3NhdmUudHNcIlxuXG52aS5tb2NrKFwiLi90YWJsZS9sb2FkLnRzXCIsICgpID0+ICh7XG4gIGxvYWRKc29uVGFibGU6IHZpLmZuKCksXG59KSlcblxudmkubW9jayhcIi4vdGFibGUvc2F2ZS50c1wiLCAoKSA9PiAoe1xuICBzYXZlSnNvblRhYmxlOiB2aS5mbigpLFxufSkpXG5cbmRlc2NyaWJlKFwiSnNvblBsdWdpblwiLCAoKSA9PiB7XG4gIGxldCBwbHVnaW46IEpzb25QbHVnaW5cbiAgbGV0IG1vY2tMb2FkSnNvblRhYmxlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj5cbiAgbGV0IG1vY2tTYXZlSnNvblRhYmxlOiBSZXR1cm5UeXBlPHR5cGVvZiB2aS5mbj5cblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBwbHVnaW4gPSBuZXcgSnNvblBsdWdpbigpXG4gICAgbW9ja0xvYWRKc29uVGFibGUgPSB2aS5tb2NrZWQobG9hZE1vZHVsZS5sb2FkSnNvblRhYmxlKVxuICAgIG1vY2tTYXZlSnNvblRhYmxlID0gdmkubW9ja2VkKHNhdmVNb2R1bGUuc2F2ZUpzb25UYWJsZSlcbiAgICB2aS5jbGVhckFsbE1vY2tzKClcbiAgfSlcblxuICBkZXNjcmliZShcImxvYWRUYWJsZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgbG9hZCB0YWJsZSBmcm9tIGpzb24gZmlsZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4gPSB7XG4gICAgICAgIHBhdGg6IFwidGVzdC5qc29uXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBtb2NrVGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIG1vY2tMb2FkSnNvblRhYmxlLm1vY2tSZXNvbHZlZFZhbHVlKG1vY2tUYWJsZSlcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luLmxvYWRUYWJsZShyZXNvdXJjZSlcblxuICAgICAgZXhwZWN0KG1vY2tMb2FkSnNvblRhYmxlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgeyAuLi5yZXNvdXJjZSwgZm9ybWF0OiBcImpzb25cIiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICApXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tUYWJsZSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgbG9hZCB0YWJsZSBmcm9tIGpzb25sIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2U6IFBhcnRpYWw8UmVzb3VyY2U+ID0ge1xuICAgICAgICBwYXRoOiBcInRlc3QuanNvbmxcIixcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1vY2tUYWJsZSA9IHBsLkRhdGFGcmFtZSgpLmxhenkoKVxuICAgICAgbW9ja0xvYWRKc29uVGFibGUubW9ja1Jlc29sdmVkVmFsdWUobW9ja1RhYmxlKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwbHVnaW4ubG9hZFRhYmxlKHJlc291cmNlKVxuXG4gICAgICBleHBlY3QobW9ja0xvYWRKc29uVGFibGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICB7IC4uLnJlc291cmNlLCBmb3JtYXQ6IFwianNvbmxcIiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICApXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tUYWJsZSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgbG9hZCB0YWJsZSBmcm9tIG5kanNvbiBmaWxlXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlOiBQYXJ0aWFsPFJlc291cmNlPiA9IHtcbiAgICAgICAgcGF0aDogXCJ0ZXN0Lm5kanNvblwiLFxuICAgICAgfVxuICAgICAgY29uc3QgbW9ja1RhYmxlID0gcGwuRGF0YUZyYW1lKCkubGF6eSgpXG4gICAgICBtb2NrTG9hZEpzb25UYWJsZS5tb2NrUmVzb2x2ZWRWYWx1ZShtb2NrVGFibGUpXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5sb2FkVGFibGUocmVzb3VyY2UpXG5cbiAgICAgIGV4cGVjdChtb2NrTG9hZEpzb25UYWJsZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgICAgIHsgLi4ucmVzb3VyY2UsIGZvcm1hdDogXCJuZGpzb25cIiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICApXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tUYWJsZSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igbm9uLWpzb24gZmlsZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2U6IFBhcnRpYWw8UmVzb3VyY2U+ID0ge1xuICAgICAgICBwYXRoOiBcInRlc3QuY3N2XCIsXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5sb2FkVGFibGUocmVzb3VyY2UpXG5cbiAgICAgIGV4cGVjdChtb2NrTG9hZEpzb25UYWJsZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZVVuZGVmaW5lZCgpXG4gICAgfSlcblxuICAgIGl0KFwic2hvdWxkIGhhbmRsZSBleHBsaWNpdCBmb3JtYXQgc3BlY2lmaWNhdGlvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4gPSB7XG4gICAgICAgIHBhdGg6IFwidGVzdC50eHRcIixcbiAgICAgICAgZm9ybWF0OiBcImpzb25cIixcbiAgICAgIH1cbiAgICAgIGNvbnN0IG1vY2tUYWJsZSA9IHBsLkRhdGFGcmFtZSgpLmxhenkoKVxuICAgICAgbW9ja0xvYWRKc29uVGFibGUubW9ja1Jlc29sdmVkVmFsdWUobW9ja1RhYmxlKVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwbHVnaW4ubG9hZFRhYmxlKHJlc291cmNlKVxuXG4gICAgICBleHBlY3QobW9ja0xvYWRKc29uVGFibGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgICAgICB7IC4uLnJlc291cmNlLCBmb3JtYXQ6IFwianNvblwiIH0sXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgIClcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwobW9ja1RhYmxlKVxuICAgIH0pXG5cbiAgICBpdChcInNob3VsZCBwYXNzIHRocm91Z2ggbG9hZCBvcHRpb25zXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlOiBQYXJ0aWFsPFJlc291cmNlPiA9IHtcbiAgICAgICAgcGF0aDogXCJ0ZXN0Lmpzb25cIixcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IGRlbm9ybWFsaXplZDogdHJ1ZSB9XG4gICAgICBjb25zdCBtb2NrVGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIG1vY2tMb2FkSnNvblRhYmxlLm1vY2tSZXNvbHZlZFZhbHVlKG1vY2tUYWJsZSlcblxuICAgICAgYXdhaXQgcGx1Z2luLmxvYWRUYWJsZShyZXNvdXJjZSwgb3B0aW9ucylcblxuICAgICAgZXhwZWN0KG1vY2tMb2FkSnNvblRhYmxlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgeyAuLi5yZXNvdXJjZSwgZm9ybWF0OiBcImpzb25cIiB9LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKVxuICAgIH0pXG5cbiAgICBpdChcInNob3VsZCBoYW5kbGUgcGF0aHMgd2l0aCBkaXJlY3Rvcmllc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4gPSB7XG4gICAgICAgIHBhdGg6IFwiL3BhdGgvdG8vZGF0YS5qc29uXCIsXG4gICAgICB9XG4gICAgICBjb25zdCBtb2NrVGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIG1vY2tMb2FkSnNvblRhYmxlLm1vY2tSZXNvbHZlZFZhbHVlKG1vY2tUYWJsZSlcblxuICAgICAgYXdhaXQgcGx1Z2luLmxvYWRUYWJsZShyZXNvdXJjZSlcblxuICAgICAgZXhwZWN0KG1vY2tMb2FkSnNvblRhYmxlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICAgICAgeyAuLi5yZXNvdXJjZSwgZm9ybWF0OiBcImpzb25cIiB9LFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICApXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZShcInNhdmVUYWJsZVwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgc2F2ZSB0YWJsZSB0byBqc29uIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHBhdGg6IFwib3V0cHV0Lmpzb25cIiB9XG4gICAgICBtb2NrU2F2ZUpzb25UYWJsZS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IHBhdGg6IFwib3V0cHV0Lmpzb25cIiB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwbHVnaW4uc2F2ZVRhYmxlKHRhYmxlLCBvcHRpb25zKVxuXG4gICAgICBleHBlY3QobW9ja1NhdmVKc29uVGFibGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRhYmxlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGZvcm1hdDogXCJqc29uXCIsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBhdGg6IFwib3V0cHV0Lmpzb25cIiB9KVxuICAgIH0pXG5cbiAgICBpdChcInNob3VsZCBzYXZlIHRhYmxlIHRvIGpzb25sIGZpbGVcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHBhdGg6IFwib3V0cHV0Lmpzb25sXCIgfVxuICAgICAgbW9ja1NhdmVKc29uVGFibGUubW9ja1Jlc29sdmVkVmFsdWUoeyBwYXRoOiBcIm91dHB1dC5qc29ubFwiIH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5zYXZlVGFibGUodGFibGUsIG9wdGlvbnMpXG5cbiAgICAgIGV4cGVjdChtb2NrU2F2ZUpzb25UYWJsZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodGFibGUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgZm9ybWF0OiBcImpzb25sXCIsXG4gICAgICB9KVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7IHBhdGg6IFwib3V0cHV0Lmpzb25sXCIgfSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgc2F2ZSB0YWJsZSB0byBuZGpzb24gZmlsZVwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZSgpLmxhenkoKVxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgcGF0aDogXCJvdXRwdXQubmRqc29uXCIgfVxuICAgICAgbW9ja1NhdmVKc29uVGFibGUubW9ja1Jlc29sdmVkVmFsdWUoeyBwYXRoOiBcIm91dHB1dC5uZGpzb25cIiB9KVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwbHVnaW4uc2F2ZVRhYmxlKHRhYmxlLCBvcHRpb25zKVxuXG4gICAgICBleHBlY3QobW9ja1NhdmVKc29uVGFibGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRhYmxlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGZvcm1hdDogXCJuZGpzb25cIixcbiAgICAgIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgcGF0aDogXCJvdXRwdXQubmRqc29uXCIgfSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBmb3Igbm9uLWpzb24gZmlsZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHBhdGg6IFwib3V0cHV0LmNzdlwiIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luLnNhdmVUYWJsZSh0YWJsZSwgb3B0aW9ucylcblxuICAgICAgZXhwZWN0KG1vY2tTYXZlSnNvblRhYmxlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlVW5kZWZpbmVkKClcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIGV4cGxpY2l0IGZvcm1hdCBzcGVjaWZpY2F0aW9uXCIsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gcGwuRGF0YUZyYW1lKCkubGF6eSgpXG4gICAgICBjb25zdCBvcHRpb25zID0geyBwYXRoOiBcIm91dHB1dC50eHRcIiwgZm9ybWF0OiBcImpzb25cIiBhcyBjb25zdCB9XG4gICAgICBtb2NrU2F2ZUpzb25UYWJsZS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IHBhdGg6IFwib3V0cHV0LnR4dFwiIH0pXG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5zYXZlVGFibGUodGFibGUsIG9wdGlvbnMpXG5cbiAgICAgIGV4cGVjdChtb2NrU2F2ZUpzb25UYWJsZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodGFibGUsIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgZm9ybWF0OiBcImpzb25cIixcbiAgICAgIH0pXG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsgcGF0aDogXCJvdXRwdXQudHh0XCIgfSlcbiAgICB9KVxuXG4gICAgaXQoXCJzaG91bGQgaGFuZGxlIHBhdGhzIHdpdGggZGlyZWN0b3JpZXNcIiwgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoKS5sYXp5KClcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7IHBhdGg6IFwiL3BhdGgvdG8vb3V0cHV0Lmpzb25cIiB9XG4gICAgICBtb2NrU2F2ZUpzb25UYWJsZS5tb2NrUmVzb2x2ZWRWYWx1ZSh7IHBhdGg6IFwiL3BhdGgvdG8vb3V0cHV0Lmpzb25cIiB9KVxuXG4gICAgICBhd2FpdCBwbHVnaW4uc2F2ZVRhYmxlKHRhYmxlLCBvcHRpb25zKVxuXG4gICAgICBleHBlY3QobW9ja1NhdmVKc29uVGFibGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRhYmxlLCB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIGZvcm1hdDogXCJqc29uXCIsXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICBpdChcInNob3VsZCByZXR1cm4gdW5kZWZpbmVkIGZvciBmaWxlcyB3aXRob3V0IGV4dGVuc2lvblwiLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZSgpLmxhenkoKVxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHsgcGF0aDogXCJvdXRwdXRcIiB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbi5zYXZlVGFibGUodGFibGUsIG9wdGlvbnMpXG5cbiAgICAgIGV4cGVjdChtb2NrU2F2ZUpzb25UYWJsZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKVxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZVVuZGVmaW5lZCgpXG4gICAgfSlcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { loadJsonTable } from "./load.js";
|
|
2
|
+
export { saveJsonTable } from "./save.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wbHVnaW5zL2pzb24vdGFibGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgbG9hZEpzb25UYWJsZSB9IGZyb20gXCIuL2xvYWQudHNcIlxuZXhwb3J0IHsgc2F2ZUpzb25UYWJsZSB9IGZyb20gXCIuL3NhdmUudHNcIlxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Resource } from "@frictionless-ts/metadata";
|
|
2
|
+
import type { LoadTableOptions } from "../../../plugin.ts";
|
|
3
|
+
import * as pl from "nodejs-polars";
|
|
4
|
+
export declare function loadJsonTable(resource: Partial<Resource> & {
|
|
5
|
+
format?: "json" | "jsonl" | "ndjson";
|
|
6
|
+
}, options?: LoadTableOptions): Promise<pl.LazyDataFrame<any>>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { resolveDialect } from "@frictionless-ts/metadata";
|
|
2
|
+
import { resolveSchema } from "@frictionless-ts/metadata";
|
|
3
|
+
import { loadFile, prefetchFiles } from "@frictionless-ts/dataset";
|
|
4
|
+
import { inferSchemaFromTable } from "../../../schema/index.js";
|
|
5
|
+
import { normalizeTable } from "../../../table/index.js";
|
|
6
|
+
import * as pl from "nodejs-polars";
|
|
7
|
+
import { decodeJsonBuffer } from "../buffer/index.js";
|
|
8
|
+
export async function loadJsonTable(resource, options) {
|
|
9
|
+
const isLines = resource.format === "jsonl" || resource.format === "ndjson";
|
|
10
|
+
const paths = await prefetchFiles(resource.path);
|
|
11
|
+
if (!paths.length) {
|
|
12
|
+
throw new Error("Resource path is not defined");
|
|
13
|
+
}
|
|
14
|
+
const dialect = await resolveDialect(resource.dialect);
|
|
15
|
+
const tables = [];
|
|
16
|
+
for (const path of paths) {
|
|
17
|
+
if (isLines && !dialect) {
|
|
18
|
+
const table = pl.scanJson(path);
|
|
19
|
+
tables.push(table);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const buffer = await loadFile(path);
|
|
23
|
+
let data = decodeJsonBuffer(buffer, { isLines });
|
|
24
|
+
if (dialect) {
|
|
25
|
+
data = processData(data, dialect);
|
|
26
|
+
}
|
|
27
|
+
const table = pl.DataFrame(data).lazy();
|
|
28
|
+
tables.push(table);
|
|
29
|
+
}
|
|
30
|
+
let table = pl.concat(tables);
|
|
31
|
+
if (!options?.denormalized) {
|
|
32
|
+
let schema = await resolveSchema(resource.schema);
|
|
33
|
+
if (!schema)
|
|
34
|
+
schema = await inferSchemaFromTable(table, options);
|
|
35
|
+
table = await normalizeTable(table, schema);
|
|
36
|
+
}
|
|
37
|
+
return table;
|
|
38
|
+
}
|
|
39
|
+
function processData(data, dialect) {
|
|
40
|
+
if (dialect.property) {
|
|
41
|
+
data = data[dialect.property];
|
|
42
|
+
}
|
|
43
|
+
if (dialect.itemType === "array") {
|
|
44
|
+
const keys = data[0];
|
|
45
|
+
data = data
|
|
46
|
+
.slice(1)
|
|
47
|
+
.map((row) => Object.fromEntries(keys.map((key, index) => [key, row[index]])));
|
|
48
|
+
}
|
|
49
|
+
if (dialect.itemKeys) {
|
|
50
|
+
const keys = dialect.itemKeys;
|
|
51
|
+
data = data.map((row) => Object.fromEntries(keys.map((key) => [key, row[key]])));
|
|
52
|
+
}
|
|
53
|
+
return data;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BsdWdpbnMvanNvbi90YWJsZS9sb2FkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDekQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFeEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFFckQsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQ2pDLFFBQXNFLEVBQ3RFLE9BQTBCO0lBRTFCLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssT0FBTyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFBO0lBRTNFLE1BQU0sS0FBSyxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRXRELE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQTtJQUMxQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUMvQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2xCLFNBQVE7UUFDVixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDbkMsSUFBSSxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUNoRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbkMsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDdkMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUU3QixJQUFJLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sR0FBRyxNQUFNLG9CQUFvQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNoRSxLQUFLLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzdDLENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FBQyxJQUFTLEVBQUUsT0FBZ0I7SUFDOUMsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFcEIsSUFBSSxHQUFHLElBQUk7YUFDUixLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ1IsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDaEIsTUFBTSxDQUFDLFdBQVcsQ0FDaEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3pELENBQ0YsQ0FBQTtJQUNMLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFBO1FBRTdCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FDM0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQzVELENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEaWFsZWN0LCBSZXNvdXJjZSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB7IHJlc29sdmVEaWFsZWN0IH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0IHsgcmVzb2x2ZVNjaGVtYSB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB7IGxvYWRGaWxlLCBwcmVmZXRjaEZpbGVzIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvZGF0YXNldFwiXG5pbXBvcnQgdHlwZSB7IExvYWRUYWJsZU9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vcGx1Z2luLnRzXCJcbmltcG9ydCB7IGluZmVyU2NoZW1hRnJvbVRhYmxlIH0gZnJvbSBcIi4uLy4uLy4uL3NjaGVtYS9pbmRleC50c1wiXG5pbXBvcnQgeyBub3JtYWxpemVUYWJsZSB9IGZyb20gXCIuLi8uLi8uLi90YWJsZS9pbmRleC50c1wiXG5pbXBvcnQgdHlwZSB7IFRhYmxlIH0gZnJvbSBcIi4uLy4uLy4uL3RhYmxlL2luZGV4LnRzXCJcbmltcG9ydCAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IGRlY29kZUpzb25CdWZmZXIgfSBmcm9tIFwiLi4vYnVmZmVyL2luZGV4LnRzXCJcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRKc29uVGFibGUoXG4gIHJlc291cmNlOiBQYXJ0aWFsPFJlc291cmNlPiAmIHsgZm9ybWF0PzogXCJqc29uXCIgfCBcImpzb25sXCIgfCBcIm5kanNvblwiIH0sXG4gIG9wdGlvbnM/OiBMb2FkVGFibGVPcHRpb25zLFxuKSB7XG4gIGNvbnN0IGlzTGluZXMgPSByZXNvdXJjZS5mb3JtYXQgPT09IFwianNvbmxcIiB8fCByZXNvdXJjZS5mb3JtYXQgPT09IFwibmRqc29uXCJcblxuICBjb25zdCBwYXRocyA9IGF3YWl0IHByZWZldGNoRmlsZXMocmVzb3VyY2UucGF0aClcbiAgaWYgKCFwYXRocy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZXNvdXJjZSBwYXRoIGlzIG5vdCBkZWZpbmVkXCIpXG4gIH1cblxuICBjb25zdCBkaWFsZWN0ID0gYXdhaXQgcmVzb2x2ZURpYWxlY3QocmVzb3VyY2UuZGlhbGVjdClcblxuICBjb25zdCB0YWJsZXM6IFRhYmxlW10gPSBbXVxuICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICBpZiAoaXNMaW5lcyAmJiAhZGlhbGVjdCkge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5zY2FuSnNvbihwYXRoKVxuICAgICAgdGFibGVzLnB1c2godGFibGUpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGxvYWRGaWxlKHBhdGgpXG4gICAgbGV0IGRhdGEgPSBkZWNvZGVKc29uQnVmZmVyKGJ1ZmZlciwgeyBpc0xpbmVzIH0pXG4gICAgaWYgKGRpYWxlY3QpIHtcbiAgICAgIGRhdGEgPSBwcm9jZXNzRGF0YShkYXRhLCBkaWFsZWN0KVxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlID0gcGwuRGF0YUZyYW1lKGRhdGEpLmxhenkoKVxuICAgIHRhYmxlcy5wdXNoKHRhYmxlKVxuICB9XG5cbiAgbGV0IHRhYmxlID0gcGwuY29uY2F0KHRhYmxlcylcblxuICBpZiAoIW9wdGlvbnM/LmRlbm9ybWFsaXplZCkge1xuICAgIGxldCBzY2hlbWEgPSBhd2FpdCByZXNvbHZlU2NoZW1hKHJlc291cmNlLnNjaGVtYSlcbiAgICBpZiAoIXNjaGVtYSkgc2NoZW1hID0gYXdhaXQgaW5mZXJTY2hlbWFGcm9tVGFibGUodGFibGUsIG9wdGlvbnMpXG4gICAgdGFibGUgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICB9XG5cbiAgcmV0dXJuIHRhYmxlXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NEYXRhKGRhdGE6IGFueSwgZGlhbGVjdDogRGlhbGVjdCkge1xuICBpZiAoZGlhbGVjdC5wcm9wZXJ0eSkge1xuICAgIGRhdGEgPSBkYXRhW2RpYWxlY3QucHJvcGVydHldXG4gIH1cblxuICBpZiAoZGlhbGVjdC5pdGVtVHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgY29uc3Qga2V5cyA9IGRhdGFbMF1cblxuICAgIGRhdGEgPSBkYXRhXG4gICAgICAuc2xpY2UoMSlcbiAgICAgIC5tYXAoKHJvdzogYW55KSA9PlxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAga2V5cy5tYXAoKGtleTogYW55LCBpbmRleDogbnVtYmVyKSA9PiBba2V5LCByb3dbaW5kZXhdXSksXG4gICAgICAgICksXG4gICAgICApXG4gIH1cblxuICBpZiAoZGlhbGVjdC5pdGVtS2V5cykge1xuICAgIGNvbnN0IGtleXMgPSBkaWFsZWN0Lml0ZW1LZXlzXG5cbiAgICBkYXRhID0gZGF0YS5tYXAoKHJvdzogYW55KSA9PlxuICAgICAgT2JqZWN0LmZyb21FbnRyaWVzKGtleXMubWFwKChrZXk6IGFueSkgPT4gW2tleSwgcm93W2tleV1dKSksXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGRhdGFcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|