@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,162 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { normalizeTable } from "../../table/index.js";
|
|
4
|
+
// TODO: Implement proper tests
|
|
5
|
+
// TODO: Currently, it fails on to JS conversion from Polars
|
|
6
|
+
describe("parseStringField", () => {
|
|
7
|
+
it.each([
|
|
8
|
+
// Simplr string
|
|
9
|
+
["string", "string"],
|
|
10
|
+
// Null handling
|
|
11
|
+
["", null],
|
|
12
|
+
])("$0 -> $1", async (cell, value) => {
|
|
13
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
14
|
+
const schema = {
|
|
15
|
+
fields: [{ name: "name", type: "string" }],
|
|
16
|
+
};
|
|
17
|
+
const result = await normalizeTable(table, schema);
|
|
18
|
+
const frame = await result.collect();
|
|
19
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.String);
|
|
20
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
21
|
+
});
|
|
22
|
+
describe("email format", () => {
|
|
23
|
+
it.each([
|
|
24
|
+
// Valid emails
|
|
25
|
+
["user@example.com", "user@example.com"],
|
|
26
|
+
["test.email@domain.co.uk", "test.email@domain.co.uk"],
|
|
27
|
+
["user+tag@example.org", "user+tag@example.org"],
|
|
28
|
+
["first.last@subdomain.example.com", "first.last@subdomain.example.com"],
|
|
29
|
+
["user123@test-domain.com", "user123@test-domain.com"],
|
|
30
|
+
// Invalid emails
|
|
31
|
+
["invalid-email", null],
|
|
32
|
+
["@example.com", null],
|
|
33
|
+
["user@", null],
|
|
34
|
+
["user@@example.com", null],
|
|
35
|
+
["user@example", null],
|
|
36
|
+
["user name@example.com", null],
|
|
37
|
+
// Null handling
|
|
38
|
+
["", null],
|
|
39
|
+
])("$0 -> $1", async (cell, value) => {
|
|
40
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
41
|
+
const schema = {
|
|
42
|
+
fields: [
|
|
43
|
+
{ name: "name", type: "string", format: "email" },
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
const result = await normalizeTable(table, schema);
|
|
47
|
+
const frame = await result.collect();
|
|
48
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.String);
|
|
49
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("uri format", () => {
|
|
53
|
+
it.each([
|
|
54
|
+
// Valid URIs
|
|
55
|
+
["https://example.com", "https://example.com"],
|
|
56
|
+
[
|
|
57
|
+
"http://www.google.com/search?q=test",
|
|
58
|
+
"http://www.google.com/search?q=test",
|
|
59
|
+
],
|
|
60
|
+
["ftp://files.example.org/file.txt", "ftp://files.example.org/file.txt"],
|
|
61
|
+
["mailto:user@example.com", "mailto:user@example.com"],
|
|
62
|
+
["file:///path/to/file", "file:///path/to/file"],
|
|
63
|
+
["ssh://user@host:22/path", "ssh://user@host:22/path"],
|
|
64
|
+
// Invalid URIs
|
|
65
|
+
["not-a-uri", null],
|
|
66
|
+
["://missing-scheme", null],
|
|
67
|
+
["http://", null],
|
|
68
|
+
["example.com", null],
|
|
69
|
+
["http:// space in uri", null],
|
|
70
|
+
// Null handling
|
|
71
|
+
["", null],
|
|
72
|
+
])("$0 -> $1", async (cell, value) => {
|
|
73
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
74
|
+
const schema = {
|
|
75
|
+
fields: [
|
|
76
|
+
{ name: "name", type: "string", format: "uri" },
|
|
77
|
+
],
|
|
78
|
+
};
|
|
79
|
+
const result = await normalizeTable(table, schema);
|
|
80
|
+
const frame = await result.collect();
|
|
81
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.String);
|
|
82
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
describe("binary format", () => {
|
|
86
|
+
it.each([
|
|
87
|
+
// Valid base64 strings
|
|
88
|
+
["SGVsbG8gV29ybGQ=", "SGVsbG8gV29ybGQ="],
|
|
89
|
+
["YWJjZGVmZw==", "YWJjZGVmZw=="],
|
|
90
|
+
["VGVzdA==", "VGVzdA=="],
|
|
91
|
+
["QQ==", "QQ=="],
|
|
92
|
+
["Zg==", "Zg=="],
|
|
93
|
+
["Zm8=", "Zm8="],
|
|
94
|
+
["Zm9v", "Zm9v"],
|
|
95
|
+
// Invalid base64 strings
|
|
96
|
+
["Hello World!", null],
|
|
97
|
+
["SGVsbG8gV29ybGQ===", null],
|
|
98
|
+
["Invalid@#$", null],
|
|
99
|
+
["SGVsb(8gV29ybGQ=", null],
|
|
100
|
+
// Null handling
|
|
101
|
+
["", null],
|
|
102
|
+
])("$0 -> $1", async (cell, value) => {
|
|
103
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
104
|
+
const schema = {
|
|
105
|
+
fields: [
|
|
106
|
+
{ name: "name", type: "string", format: "binary" },
|
|
107
|
+
],
|
|
108
|
+
};
|
|
109
|
+
const result = await normalizeTable(table, schema);
|
|
110
|
+
const frame = await result.collect();
|
|
111
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.String);
|
|
112
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe("uuid format", () => {
|
|
116
|
+
it.each([
|
|
117
|
+
// Valid UUIDs
|
|
118
|
+
[
|
|
119
|
+
"f47ac10b-58cc-4372-a567-0e02b2c3d479",
|
|
120
|
+
"f47ac10b-58cc-4372-a567-0e02b2c3d479",
|
|
121
|
+
],
|
|
122
|
+
// Invalid UUIDs
|
|
123
|
+
["f47ac10b-58cc-4372-a567-0e02b2c3d47X", null],
|
|
124
|
+
["f47ac10b", null],
|
|
125
|
+
["X", null],
|
|
126
|
+
// Null handling
|
|
127
|
+
["", null],
|
|
128
|
+
])("$0 -> $1 $2", async (cell, value) => {
|
|
129
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
130
|
+
const schema = {
|
|
131
|
+
fields: [
|
|
132
|
+
{ name: "name", type: "string", format: "uuid" },
|
|
133
|
+
],
|
|
134
|
+
};
|
|
135
|
+
const result = await normalizeTable(table, schema);
|
|
136
|
+
const frame = await result.collect();
|
|
137
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.Categorical);
|
|
138
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe("categories", () => {
|
|
142
|
+
it.each([
|
|
143
|
+
// Flat categories
|
|
144
|
+
["apple", "apple", { categories: ["apple", "banana"] }],
|
|
145
|
+
["banana", "banana", { categories: ["apple", "banana"] }],
|
|
146
|
+
["orange", null, { categories: ["apple", "banana"] }],
|
|
147
|
+
// Object categories
|
|
148
|
+
["apple", "apple", { categories: [{ value: "apple", label: "Apple" }] }],
|
|
149
|
+
["orange", null, { categories: [{ value: "apple", label: "Apple" }] }],
|
|
150
|
+
])("$0 -> $1 $2", async (cell, value, options) => {
|
|
151
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
152
|
+
const schema = {
|
|
153
|
+
fields: [{ name: "name", type: "string", ...options }],
|
|
154
|
+
};
|
|
155
|
+
const result = await normalizeTable(table, schema);
|
|
156
|
+
const frame = await result.collect();
|
|
157
|
+
expect(frame.getColumn("name").dtype).toEqual(pl.Categorical);
|
|
158
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWVsZC90eXBlcy9zdHJpbmcuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXJELCtCQUErQjtBQUMvQiw0REFBNEQ7QUFDNUQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sZ0JBQWdCO1FBQ2hCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQztRQUVwQixnQkFBZ0I7UUFDaEIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDO0tBQ1gsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ25DLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFekUsTUFBTSxNQUFNLEdBQUc7WUFDYixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQWlCLEVBQUUsQ0FBQztTQUNwRCxDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1B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QUV6RSxNQUFNLE1BQU0sR0FBRztnQkFDYixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQWlCLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQzthQUNoRSxDQUFBO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUE7WUFDN0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDbkQsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGwgZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tIFwidml0ZXN0XCJcbmltcG9ydCB7IG5vcm1hbGl6ZVRhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcblxuLy8gVE9ETzogSW1wbGVtZW50IHByb3BlciB0ZXN0c1xuLy8gVE9ETzogQ3VycmVudGx5LCBpdCBmYWlscyBvbiB0byBKUyBjb252ZXJzaW9uIGZyb20gUG9sYXJzXG5kZXNjcmliZShcInBhcnNlU3RyaW5nRmllbGRcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcbiAgICAvLyBTaW1wbHIgc3RyaW5nXG4gICAgW1wic3RyaW5nXCIsIFwic3RyaW5nXCJdLFxuXG4gICAgLy8gTnVsbCBoYW5kbGluZ1xuICAgIFtcIlwiLCBudWxsXSxcbiAgXSkoXCIkMCAtPiAkMVwiLCBhc3luYyAoY2VsbCwgdmFsdWUpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgYXMgY29uc3QgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgIGV4cGVjdChmcmFtZS5nZXRDb2x1bW4oXCJuYW1lXCIpLmR0eXBlKS50b0VxdWFsKHBsLlN0cmluZylcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKClbMF0/Lm5hbWUpLnRvRXF1YWwodmFsdWUpXG4gIH0pXG5cbiAgZGVzY3JpYmUoXCJlbWFpbCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgIGl0LmVhY2goW1xuICAgICAgLy8gVmFsaWQgZW1haWxzXG4gICAgICBbXCJ1c2VyQGV4YW1wbGUuY29tXCIsIFwidXNlckBleGFtcGxlLmNvbVwiXSxcbiAgICAgIFtcInRlc3QuZW1haWxAZG9tYWluLmNvLnVrXCIsIFwidGVzdC5lbWFpbEBkb21haW4uY28udWtcIl0sXG4gICAgICBbXCJ1c2VyK3RhZ0BleGFtcGxlLm9yZ1wiLCBcInVzZXIrdGFnQGV4YW1wbGUub3JnXCJdLFxuICAgICAgW1wiZmlyc3QubGFzdEBzdWJkb21haW4uZXhhbXBsZS5jb21cIiwgXCJmaXJzdC5sYXN0QHN1YmRvbWFpbi5leGFtcGxlLmNvbVwiXSxcbiAgICAgIFtcInVzZXIxMjNAdGVzdC1kb21haW4uY29tXCIsIFwidXNlcjEyM0B0ZXN0LWRvbWFpbi5jb21cIl0sXG5cbiAgICAgIC8vIEludmFsaWQgZW1haWxzXG4gICAgICBbXCJpbnZhbGlkLWVtYWlsXCIsIG51bGxdLFxuICAgICAgW1wiQGV4YW1wbGUuY29tXCIsIG51bGxdLFxuICAgICAgW1widXNlckBcIiwgbnVsbF0sXG4gICAgICBbXCJ1c2VyQEBleGFtcGxlLmNvbVwiLCBudWxsXSxcbiAgICAgIFtcInVzZXJAZXhhbXBsZVwiLCBudWxsXSxcbiAgICAgIFtcInVzZXIgbmFtZUBleGFtcGxlLmNvbVwiLCBudWxsXSxcblxuICAgICAgLy8gTnVsbCBoYW5kbGluZ1xuICAgICAgW1wiXCIsIG51bGxdLFxuICAgIF0pKFwiJDAgLT4gJDFcIiwgYXN5bmMgKGNlbGwsIHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIGFzIGNvbnN0LCBmb3JtYXQ6IFwiZW1haWxcIiBhcyBjb25zdCB9LFxuICAgICAgICBdLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICAgIGV4cGVjdChmcmFtZS5nZXRDb2x1bW4oXCJuYW1lXCIpLmR0eXBlKS50b0VxdWFsKHBsLlN0cmluZylcbiAgICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbCh2YWx1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKFwidXJpIGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgaXQuZWFjaChbXG4gICAgICAvLyBWYWxpZCBVUklzXG4gICAgICBbXCJodHRwczovL2V4YW1wbGUuY29tXCIsIFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9dGVzdFwiLFxuICAgICAgICBcImh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/cT10ZXN0XCIsXG4gICAgICBdLFxuICAgICAgW1wiZnRwOi8vZmlsZXMuZXhhbXBsZS5vcmcvZmlsZS50eHRcIiwgXCJmdHA6Ly9maWxlcy5leGFtcGxlLm9yZy9maWxlLnR4dFwiXSxcbiAgICAgIFtcIm1haWx0bzp1c2VyQGV4YW1wbGUuY29tXCIsIFwibWFpbHRvOnVzZXJAZXhhbXBsZS5jb21cIl0sXG4gICAgICBbXCJmaWxlOi8vL3BhdGgvdG8vZmlsZVwiLCBcImZpbGU6Ly8vcGF0aC90by9maWxlXCJdLFxuICAgICAgW1wic3NoOi8vdXNlckBob3N0OjIyL3BhdGhcIiwgXCJzc2g6Ly91c2VyQGhvc3Q6MjIvcGF0aFwiXSxcblxuICAgICAgLy8gSW52YWxpZCBVUklzXG4gICAgICBbXCJub3QtYS11cmlcIiwgbnVsbF0sXG4gICAgICBbXCI6Ly9taXNzaW5nLXNjaGVtZVwiLCBudWxsXSxcbiAgICAgIFtcImh0dHA6Ly9cIiwgbnVsbF0sXG4gICAgICBbXCJleGFtcGxlLmNvbVwiLCBudWxsXSxcbiAgICAgIFtcImh0dHA6Ly8gc3BhY2UgaW4gdXJpXCIsIG51bGxdLFxuXG4gICAgICAvLyBOdWxsIGhhbmRsaW5nXG4gICAgICBbXCJcIiwgbnVsbF0sXG4gICAgXSkoXCIkMCAtPiAkMVwiLCBhc3luYyAoY2VsbCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gcGwuRGF0YUZyYW1lKFtwbC5TZXJpZXMoXCJuYW1lXCIsIFtjZWxsXSwgcGwuU3RyaW5nKV0pLmxhenkoKVxuXG4gICAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgYXMgY29uc3QsIGZvcm1hdDogXCJ1cmlcIiBhcyBjb25zdCB9LFxuICAgICAgICBdLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICAgIGV4cGVjdChmcmFtZS5nZXRDb2x1bW4oXCJuYW1lXCIpLmR0eXBlKS50b0VxdWFsKHBsLlN0cmluZylcbiAgICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbCh2YWx1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKFwiYmluYXJ5IGZvcm1hdFwiLCAoKSA9PiB7XG4gICAgaXQuZWFjaChbXG4gICAgICAvLyBWYWxpZCBiYXNlNjQgc3RyaW5nc1xuICAgICAgW1wiU0dWc2JHOGdWMjl5YkdRPVwiLCBcIlNHVnNiRzhnVjI5eWJHUT1cIl0sXG4gICAgICBbXCJZV0pqWkdWbVp3PT1cIiwgXCJZV0pqWkdWbVp3PT1cIl0sXG4gICAgICBbXCJWR1Z6ZEE9PVwiLCBcIlZHVnpkQT09XCJdLFxuICAgICAgW1wiUVE9PVwiLCBcIlFRPT1cIl0sXG4gICAgICBbXCJaZz09XCIsIFwiWmc9PVwiXSxcbiAgICAgIFtcIlptOD1cIiwgXCJabTg9XCJdLFxuICAgICAgW1wiWm05dlwiLCBcIlptOXZcIl0sXG5cbiAgICAgIC8vIEludmFsaWQgYmFzZTY0IHN0cmluZ3NcbiAgICAgIFtcIkhlbGxvIFdvcmxkIVwiLCBudWxsXSxcbiAgICAgIFtcIlNHVnNiRzhnVjI5eWJHUT09PVwiLCBudWxsXSxcbiAgICAgIFtcIkludmFsaWRAIyRcIiwgbnVsbF0sXG4gICAgICBbXCJTR1ZzYig4Z1YyOXliR1E9XCIsIG51bGxdLFxuXG4gICAgICAvLyBOdWxsIGhhbmRsaW5nXG4gICAgICBbXCJcIiwgbnVsbF0sXG4gICAgXSkoXCIkMCAtPiAkMVwiLCBhc3luYyAoY2VsbCwgdmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHRhYmxlID0gcGwuRGF0YUZyYW1lKFtwbC5TZXJpZXMoXCJuYW1lXCIsIFtjZWxsXSwgcGwuU3RyaW5nKV0pLmxhenkoKVxuXG4gICAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgYXMgY29uc3QsIGZvcm1hdDogXCJiaW5hcnlcIiBhcyBjb25zdCB9LFxuICAgICAgICBdLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICAgIGV4cGVjdChmcmFtZS5nZXRDb2x1bW4oXCJuYW1lXCIpLmR0eXBlKS50b0VxdWFsKHBsLlN0cmluZylcbiAgICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbCh2YWx1ZSlcbiAgICB9KVxuICB9KVxuXG4gIGRlc2NyaWJlKFwidXVpZCBmb3JtYXRcIiwgKCkgPT4ge1xuICAgIGl0LmVhY2goW1xuICAgICAgLy8gVmFsaWQgVVVJRHNcbiAgICAgIFtcbiAgICAgICAgXCJmNDdhYzEwYi01OGNjLTQzNzItYTU2Ny0wZTAyYjJjM2Q0NzlcIixcbiAgICAgICAgXCJmNDdhYzEwYi01OGNjLTQzNzItYTU2Ny0wZTAyYjJjM2Q0NzlcIixcbiAgICAgIF0sXG5cbiAgICAgIC8vIEludmFsaWQgVVVJRHNcbiAgICAgIFtcImY0N2FjMTBiLTU4Y2MtNDM3Mi1hNTY3LTBlMDJiMmMzZDQ3WFwiLCBudWxsXSxcbiAgICAgIFtcImY0N2FjMTBiXCIsIG51bGxdLFxuICAgICAgW1wiWFwiLCBudWxsXSxcblxuICAgICAgLy8gTnVsbCBoYW5kbGluZ1xuICAgICAgW1wiXCIsIG51bGxdLFxuICAgIF0pKFwiJDAgLT4gJDEgJDJcIiwgYXN5bmMgKGNlbGwsIHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIGFzIGNvbnN0LCBmb3JtYXQ6IFwidXVpZFwiIGFzIGNvbnN0IH0sXG4gICAgICAgIF0sXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgICAgZXhwZWN0KGZyYW1lLmdldENvbHVtbihcIm5hbWVcIikuZHR5cGUpLnRvRXF1YWwocGwuQ2F0ZWdvcmljYWwpXG4gICAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKClbMF0/Lm5hbWUpLnRvRXF1YWwodmFsdWUpXG4gICAgfSlcbiAgfSlcblxuICBkZXNjcmliZShcImNhdGVnb3JpZXNcIiwgKCkgPT4ge1xuICAgIGl0LmVhY2goW1xuICAgICAgLy8gRmxhdCBjYXRlZ29yaWVzXG4gICAgICBbXCJhcHBsZVwiLCBcImFwcGxlXCIsIHsgY2F0ZWdvcmllczogW1wiYXBwbGVcIiwgXCJiYW5hbmFcIl0gfV0sXG4gICAgICBbXCJiYW5hbmFcIiwgXCJiYW5hbmFcIiwgeyBjYXRlZ29yaWVzOiBbXCJhcHBsZVwiLCBcImJhbmFuYVwiXSB9XSxcbiAgICAgIFtcIm9yYW5nZVwiLCBudWxsLCB7IGNhdGVnb3JpZXM6IFtcImFwcGxlXCIsIFwiYmFuYW5hXCJdIH1dLFxuXG4gICAgICAvLyBPYmplY3QgY2F0ZWdvcmllc1xuICAgICAgW1wiYXBwbGVcIiwgXCJhcHBsZVwiLCB7IGNhdGVnb3JpZXM6IFt7IHZhbHVlOiBcImFwcGxlXCIsIGxhYmVsOiBcIkFwcGxlXCIgfV0gfV0sXG4gICAgICBbXCJvcmFuZ2VcIiwgbnVsbCwgeyBjYXRlZ29yaWVzOiBbeyB2YWx1ZTogXCJhcHBsZVwiLCBsYWJlbDogXCJBcHBsZVwiIH1dIH1dLFxuICAgIF0pKFwiJDAgLT4gJDEgJDJcIiwgYXN5bmMgKGNlbGwsIHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgICBmaWVsZHM6IFt7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIGFzIGNvbnN0LCAuLi5vcHRpb25zIH1dLFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICAgIGV4cGVjdChmcmFtZS5nZXRDb2x1bW4oXCJuYW1lXCIpLmR0eXBlKS50b0VxdWFsKHBsLkNhdGVnb3JpY2FsKVxuICAgICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpWzBdPy5uYW1lKS50b0VxdWFsKHZhbHVlKVxuICAgIH0pXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TimeField } from "@frictionless-ts/metadata";
|
|
2
|
+
import * as pl from "nodejs-polars";
|
|
3
|
+
export declare function parseTimeField(field: TimeField, fieldExpr: pl.Expr): any;
|
|
4
|
+
export declare function stringifyTimeField(field: TimeField, fieldExpr: pl.Expr): pl.Expr;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
const DEFAULT_FORMAT = "%H:%M:%S";
|
|
3
|
+
export function parseTimeField(field, fieldExpr) {
|
|
4
|
+
let format = DEFAULT_FORMAT;
|
|
5
|
+
if (field.format && field.format !== "default" && field.format !== "any") {
|
|
6
|
+
format = field.format;
|
|
7
|
+
}
|
|
8
|
+
return pl.pl
|
|
9
|
+
.concatString([pl.pl.lit("1970-01-01T"), fieldExpr], "")
|
|
10
|
+
.str.strptime(pl.Datetime, `%Y-%m-%dT${format}`)
|
|
11
|
+
.cast(pl.Time)
|
|
12
|
+
.alias(field.name);
|
|
13
|
+
}
|
|
14
|
+
export function stringifyTimeField(field, fieldExpr) {
|
|
15
|
+
const format = field.format ?? DEFAULT_FORMAT;
|
|
16
|
+
return fieldExpr.date.strftime(format);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL3RpbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFBO0FBRWpDLE1BQU0sVUFBVSxjQUFjLENBQUMsS0FBZ0IsRUFBRSxTQUFrQjtJQUNqRSxJQUFJLE1BQU0sR0FBRyxjQUFjLENBQUE7SUFDM0IsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDekUsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDdkIsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDLEVBQUU7U0FDVCxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDdkQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLFlBQVksTUFBTSxFQUFFLENBQUM7U0FDL0MsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDYixLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQ3RCLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBZ0IsRUFBRSxTQUFrQjtJQUNyRSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxJQUFJLGNBQWMsQ0FBQTtJQUU3QyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ3hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFRpbWVGaWVsZCB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcblxuY29uc3QgREVGQVVMVF9GT1JNQVQgPSBcIiVIOiVNOiVTXCJcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZUZpZWxkKGZpZWxkOiBUaW1lRmllbGQsIGZpZWxkRXhwcjogcGwuRXhwcikge1xuICBsZXQgZm9ybWF0ID0gREVGQVVMVF9GT1JNQVRcbiAgaWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQgIT09IFwiZGVmYXVsdFwiICYmIGZpZWxkLmZvcm1hdCAhPT0gXCJhbnlcIikge1xuICAgIGZvcm1hdCA9IGZpZWxkLmZvcm1hdFxuICB9XG5cbiAgcmV0dXJuIHBsLnBsXG4gICAgLmNvbmNhdFN0cmluZyhbcGwucGwubGl0KFwiMTk3MC0wMS0wMVRcIiksIGZpZWxkRXhwcl0sIFwiXCIpXG4gICAgLnN0ci5zdHJwdGltZShwbC5EYXRldGltZSwgYCVZLSVtLSVkVCR7Zm9ybWF0fWApXG4gICAgLmNhc3QocGwuVGltZSlcbiAgICAuYWxpYXMoZmllbGQubmFtZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVRpbWVGaWVsZChmaWVsZDogVGltZUZpZWxkLCBmaWVsZEV4cHI6IHBsLkV4cHIpIHtcbiAgY29uc3QgZm9ybWF0ID0gZmllbGQuZm9ybWF0ID8/IERFRkFVTFRfRk9STUFUXG5cbiAgcmV0dXJuIGZpZWxkRXhwci5kYXRlLnN0cmZ0aW1lKGZvcm1hdClcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { normalizeTable } from "../../table/index.js";
|
|
4
|
+
import { denormalizeTable } from "../../table/index.js";
|
|
5
|
+
describe("parseTimeField", () => {
|
|
6
|
+
it.each([
|
|
7
|
+
// Default format tests
|
|
8
|
+
["06:00:00", "06:00:00", {}],
|
|
9
|
+
// #TODO: Clarify the behavior on the Standard level first
|
|
10
|
+
//["06:00:00Z", 6 * 60 * 60 * 10 ** 9, {}],
|
|
11
|
+
["09:00", null, {}], // Incomplete time
|
|
12
|
+
["3 am", null, {}], // Wrong format
|
|
13
|
+
["3.00", null, {}], // Wrong format
|
|
14
|
+
["invalid", null, {}],
|
|
15
|
+
["", null, {}],
|
|
16
|
+
// Custom format tests
|
|
17
|
+
["06:00", "06:00:00", { format: "%H:%M" }],
|
|
18
|
+
["06:50", null, { format: "%M:%H" }], // Invalid format
|
|
19
|
+
["3:00 am", "03:00:00", { format: "%H:%M" }],
|
|
20
|
+
["some night", null, { format: "%H:%M" }],
|
|
21
|
+
["invalid", null, { format: "%H:%M" }],
|
|
22
|
+
["", null, { format: "%H:%M" }],
|
|
23
|
+
// Invalid format
|
|
24
|
+
//["06:00", null, { format: "invalid" }],
|
|
25
|
+
])("$0 -> $1 $2", async (cell, expected, options) => {
|
|
26
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
27
|
+
const schema = {
|
|
28
|
+
fields: [{ name: "name", type: "time", ...options }],
|
|
29
|
+
};
|
|
30
|
+
const result = await normalizeTable(table, schema);
|
|
31
|
+
const frame = await result.collect();
|
|
32
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe("stringifyTimeField", () => {
|
|
36
|
+
it.each([
|
|
37
|
+
// Default format
|
|
38
|
+
[new Date(Date.UTC(2014, 0, 1, 6, 0, 0)), "06:00:00", {}],
|
|
39
|
+
[new Date(Date.UTC(2014, 0, 1, 16, 30, 0)), "16:30:00", {}],
|
|
40
|
+
// Custom format
|
|
41
|
+
[new Date(Date.UTC(2014, 0, 1, 6, 0, 0)), "06:00", { format: "%H:%M" }],
|
|
42
|
+
[new Date(Date.UTC(2014, 0, 1, 16, 30, 0)), "16:30", { format: "%H:%M" }],
|
|
43
|
+
])("%s -> %s %o", async (value, expected, options) => {
|
|
44
|
+
const table = pl.DataFrame([pl.Series("name", [value], pl.Time)]).lazy();
|
|
45
|
+
const schema = {
|
|
46
|
+
fields: [{ name: "name", type: "time", ...options }],
|
|
47
|
+
};
|
|
48
|
+
const result = await denormalizeTable(table, schema);
|
|
49
|
+
const frame = await result.collect();
|
|
50
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMvdGltZS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFdkQsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sdUJBQXVCO1FBQ3ZCLENBQUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUM7UUFDNUIsMERBQTBEO1FBQzFELDJDQUEyQztRQUMzQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsa0JBQWtCO1FBQ3ZDLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxlQUFlO1FBQ25DLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxlQUFlO1FBQ25DLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUVkLHNCQUFzQjtRQUN0QixDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDMUMsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsaUJBQWlCO1FBQ3ZELENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM1QyxD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TUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuaW1wb3J0IHsgZGVub3JtYWxpemVUYWJsZSB9IGZyb20gXCIuLi8uLi90YWJsZS9pbmRleC50c1wiXG5cbmRlc2NyaWJlKFwicGFyc2VUaW1lRmllbGRcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcbiAgICAvLyBEZWZhdWx0IGZvcm1hdCB0ZXN0c1xuICAgIFtcIjA2OjAwOjAwXCIsIFwiMDY6MDA6MDBcIiwge31dLFxuICAgIC8vICNUT0RPOiBDbGFyaWZ5IHRoZSBiZWhhdmlvciBvbiB0aGUgU3RhbmRhcmQgbGV2ZWwgZmlyc3RcbiAgICAvL1tcIjA2OjAwOjAwWlwiLCA2ICogNjAgKiA2MCAqIDEwICoqIDksIHt9XSxcbiAgICBbXCIwOTowMFwiLCBudWxsLCB7fV0sIC8vIEluY29tcGxldGUgdGltZVxuICAgIFtcIjMgYW1cIiwgbnVsbCwge31dLCAvLyBXcm9uZyBmb3JtYXRcbiAgICBbXCIzLjAwXCIsIG51bGwsIHt9XSwgLy8gV3JvbmcgZm9ybWF0XG4gICAgW1wiaW52YWxpZFwiLCBudWxsLCB7fV0sXG4gICAgW1wiXCIsIG51bGwsIHt9XSxcblxuICAgIC8vIEN1c3RvbSBmb3JtYXQgdGVzdHNcbiAgICBbXCIwNjowMFwiLCBcIjA2OjAwOjAwXCIsIHsgZm9ybWF0OiBcIiVIOiVNXCIgfV0sXG4gICAgW1wiMDY6NTBcIiwgbnVsbCwgeyBmb3JtYXQ6IFwiJU06JUhcIiB9XSwgLy8gSW52YWxpZCBmb3JtYXRcbiAgICBbXCIzOjAwIGFtXCIsIFwiMDM6MDA6MDBcIiwgeyBmb3JtYXQ6IFwiJUg6JU1cIiB9XSxcbiAgICBbXCJzb21lIG5pZ2h0XCIsIG51bGwsIHsgZm9ybWF0OiBcIiVIOiVNXCIgfV0sXG4gICAgW1wiaW52YWxpZFwiLCBudWxsLCB7IGZvcm1hdDogXCIlSDolTVwiIH1dLFxuICAgIFtcIlwiLCBudWxsLCB7IGZvcm1hdDogXCIlSDolTVwiIH1dLFxuXG4gICAgLy8gSW52YWxpZCBmb3JtYXRcbiAgICAvL1tcIjA2OjAwXCIsIG51bGwsIHsgZm9ybWF0OiBcImludmFsaWRcIiB9XSxcbiAgXSkoXCIkMCAtPiAkMSAkMlwiLCBhc3luYyAoY2VsbCwgZXhwZWN0ZWQsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwidGltZVwiIGFzIGNvbnN0LCAuLi5vcHRpb25zIH1dLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKClbMF0/Lm5hbWUpLnRvRXF1YWwoZXhwZWN0ZWQpXG4gIH0pXG59KVxuXG5kZXNjcmliZShcInN0cmluZ2lmeVRpbWVGaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIC8vIERlZmF1bHQgZm9ybWF0XG4gICAgW25ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDYsIDAsIDApKSwgXCIwNjowMDowMFwiLCB7fV0sXG4gICAgW25ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDE2LCAzMCwgMCkpLCBcIjE2OjMwOjAwXCIsIHt9XSxcblxuICAgIC8vIEN1c3RvbSBmb3JtYXRcbiAgICBbbmV3IERhdGUoRGF0ZS5VVEMoMjAxNCwgMCwgMSwgNiwgMCwgMCkpLCBcIjA2OjAwXCIsIHsgZm9ybWF0OiBcIiVIOiVNXCIgfV0sXG4gICAgW25ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDE2LCAzMCwgMCkpLCBcIjE2OjMwXCIsIHsgZm9ybWF0OiBcIiVIOiVNXCIgfV0sXG4gIF0pKFwiJXMgLT4gJXMgJW9cIiwgYXN5bmMgKHZhbHVlLCBleHBlY3RlZCwgb3B0aW9ucykgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gcGwuRGF0YUZyYW1lKFtwbC5TZXJpZXMoXCJuYW1lXCIsIFt2YWx1ZV0sIHBsLlRpbWUpXSkubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFt7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInRpbWVcIiBhcyBjb25zdCwgLi4ub3B0aW9ucyB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZW5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKClbMF0/Lm5hbWUpLnRvRXF1YWwoZXhwZWN0ZWQpXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { YearField } from "@frictionless-ts/metadata";
|
|
2
|
+
import * as pl from "nodejs-polars";
|
|
3
|
+
export declare function parseYearField(_field: YearField, fieldExpr: pl.Expr): pl.Expr;
|
|
4
|
+
export declare function stringifyYearField(_field: YearField, fieldExpr: pl.Expr): pl.Expr;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
export function parseYearField(_field, fieldExpr) {
|
|
3
|
+
fieldExpr = pl
|
|
4
|
+
.when(fieldExpr.str.lengths().eq(4))
|
|
5
|
+
.then(fieldExpr)
|
|
6
|
+
.otherwise(pl.lit(null))
|
|
7
|
+
.cast(pl.Int16);
|
|
8
|
+
return pl
|
|
9
|
+
.when(fieldExpr.gtEq(0).and(fieldExpr.ltEq(9999)))
|
|
10
|
+
.then(fieldExpr)
|
|
11
|
+
.otherwise(pl.lit(null));
|
|
12
|
+
}
|
|
13
|
+
export function stringifyYearField(_field, fieldExpr) {
|
|
14
|
+
return fieldExpr.cast(pl.String).str.zFill(4);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL3llYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFpQixFQUFFLFNBQWtCO0lBQ2xFLFNBQVMsR0FBRyxFQUFFO1NBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25DLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDZixTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWpCLE9BQU8sRUFBRTtTQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDakQsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUNmLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDNUIsQ0FBQztBQUVELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFpQixFQUFFLFNBQWtCO0lBQ3RFLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBZZWFyRmllbGQgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVllYXJGaWVsZChfZmllbGQ6IFllYXJGaWVsZCwgZmllbGRFeHByOiBwbC5FeHByKSB7XG4gIGZpZWxkRXhwciA9IHBsXG4gICAgLndoZW4oZmllbGRFeHByLnN0ci5sZW5ndGhzKCkuZXEoNCkpXG4gICAgLnRoZW4oZmllbGRFeHByKVxuICAgIC5vdGhlcndpc2UocGwubGl0KG51bGwpKVxuICAgIC5jYXN0KHBsLkludDE2KVxuXG4gIHJldHVybiBwbFxuICAgIC53aGVuKGZpZWxkRXhwci5ndEVxKDApLmFuZChmaWVsZEV4cHIubHRFcSg5OTk5KSkpXG4gICAgLnRoZW4oZmllbGRFeHByKVxuICAgIC5vdGhlcndpc2UocGwubGl0KG51bGwpKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5WWVhckZpZWxkKF9maWVsZDogWWVhckZpZWxkLCBmaWVsZEV4cHI6IHBsLkV4cHIpIHtcbiAgcmV0dXJuIGZpZWxkRXhwci5jYXN0KHBsLlN0cmluZykuc3RyLnpGaWxsKDQpXG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { denormalizeTable, normalizeTable } from "../../table/index.js";
|
|
4
|
+
describe("parseYearField", () => {
|
|
5
|
+
it.each([
|
|
6
|
+
// Tests ported from frictionless-py (string values only)
|
|
7
|
+
["2000", 2000],
|
|
8
|
+
["-2000", null],
|
|
9
|
+
["20000", null],
|
|
10
|
+
["3.14", null],
|
|
11
|
+
["", null],
|
|
12
|
+
// Additional tests for completeness
|
|
13
|
+
["0000", 0],
|
|
14
|
+
["9999", 9999],
|
|
15
|
+
//[" 2023 ", 2023],
|
|
16
|
+
//[" 1984 ", 1984],
|
|
17
|
+
["bad", null],
|
|
18
|
+
["12345", null],
|
|
19
|
+
["123", null],
|
|
20
|
+
])("%s -> %s", async (cell, value) => {
|
|
21
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
22
|
+
const schema = {
|
|
23
|
+
fields: [{ name: "name", type: "year" }],
|
|
24
|
+
};
|
|
25
|
+
const result = await normalizeTable(table, schema);
|
|
26
|
+
const frame = await result.collect();
|
|
27
|
+
expect(frame.getColumn("name").get(0)).toEqual(value);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("stringifyYearField", () => {
|
|
31
|
+
it.each([
|
|
32
|
+
// Basic integer years to string conversion
|
|
33
|
+
[2000, "2000"],
|
|
34
|
+
[2023, "2023"],
|
|
35
|
+
[1999, "1999"],
|
|
36
|
+
[0, "0000"],
|
|
37
|
+
[9999, "9999"],
|
|
38
|
+
// Edge cases with null values
|
|
39
|
+
[null, ""],
|
|
40
|
+
])("%s -> %s", async (value, expected) => {
|
|
41
|
+
const table = pl.DataFrame([pl.Series("name", [value], pl.Int16)]).lazy();
|
|
42
|
+
const schema = {
|
|
43
|
+
fields: [{ name: "name", type: "year" }],
|
|
44
|
+
};
|
|
45
|
+
const result = await denormalizeTable(table, schema);
|
|
46
|
+
const frame = await result.collect();
|
|
47
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMveWVhci5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFFdkUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtJQUM5QixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04seURBQXlEO1FBQ3pELENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNkLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztRQUNmLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztRQUNmLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNkLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztRQUVWLG9DQUFvQztRQUNwQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDWCxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7UUFDZCxtQkFBbUI7UUFDbkIscUJBQXFCO1FBQ3JCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztRQUNiLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztRQUNmLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztLQUNkLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRXpFLE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFlLEVBQUUsQ0FBQztTQUNsRCxDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxjQUFjLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ2xELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sMkNBQTJDO1FBQzNDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNkLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNkLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUNkLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUNYLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQztRQUVkLDhCQUE4QjtRQUM5QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7S0FDWCxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDdkMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUV6RSxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBZSxFQUFFLENBQUM7U0FDbEQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgZGVub3JtYWxpemVUYWJsZSwgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuXG5kZXNjcmliZShcInBhcnNlWWVhckZpZWxkXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgLy8gVGVzdHMgcG9ydGVkIGZyb20gZnJpY3Rpb25sZXNzLXB5IChzdHJpbmcgdmFsdWVzIG9ubHkpXG4gICAgW1wiMjAwMFwiLCAyMDAwXSxcbiAgICBbXCItMjAwMFwiLCBudWxsXSxcbiAgICBbXCIyMDAwMFwiLCBudWxsXSxcbiAgICBbXCIzLjE0XCIsIG51bGxdLFxuICAgIFtcIlwiLCBudWxsXSxcblxuICAgIC8vIEFkZGl0aW9uYWwgdGVzdHMgZm9yIGNvbXBsZXRlbmVzc1xuICAgIFtcIjAwMDBcIiwgMF0sXG4gICAgW1wiOTk5OVwiLCA5OTk5XSxcbiAgICAvL1tcIiAyMDIzIFwiLCAyMDIzXSxcbiAgICAvL1tcIiAgMTk4NCAgXCIsIDE5ODRdLFxuICAgIFtcImJhZFwiLCBudWxsXSxcbiAgICBbXCIxMjM0NVwiLCBudWxsXSxcbiAgICBbXCIxMjNcIiwgbnVsbF0sXG4gIF0pKFwiJXMgLT4gJXNcIiwgYXN5bmMgKGNlbGwsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoW3BsLlNlcmllcyhcIm5hbWVcIiwgW2NlbGxdLCBwbC5TdHJpbmcpXSkubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFt7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInllYXJcIiBhcyBjb25zdCB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgcmVzdWx0LmNvbGxlY3QoKVxuXG4gICAgZXhwZWN0KGZyYW1lLmdldENvbHVtbihcIm5hbWVcIikuZ2V0KDApKS50b0VxdWFsKHZhbHVlKVxuICB9KVxufSlcblxuZGVzY3JpYmUoXCJzdHJpbmdpZnlZZWFyRmllbGRcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcbiAgICAvLyBCYXNpYyBpbnRlZ2VyIHllYXJzIHRvIHN0cmluZyBjb252ZXJzaW9uXG4gICAgWzIwMDAsIFwiMjAwMFwiXSxcbiAgICBbMjAyMywgXCIyMDIzXCJdLFxuICAgIFsxOTk5LCBcIjE5OTlcIl0sXG4gICAgWzAsIFwiMDAwMFwiXSxcbiAgICBbOTk5OSwgXCI5OTk5XCJdLFxuXG4gICAgLy8gRWRnZSBjYXNlcyB3aXRoIG51bGwgdmFsdWVzXG4gICAgW251bGwsIFwiXCJdLFxuICBdKShcIiVzIC0+ICVzXCIsIGFzeW5jICh2YWx1ZSwgZXhwZWN0ZWQpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbdmFsdWVdLCBwbC5JbnQxNildKS5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwieWVhclwiIGFzIGNvbnN0IH1dLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbChleHBlY3RlZClcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { YearmonthField } from "@frictionless-ts/metadata";
|
|
2
|
+
import * as pl from "nodejs-polars";
|
|
3
|
+
export declare function parseYearmonthField(_field: YearmonthField, fieldExpr: pl.Expr): pl.Expr;
|
|
4
|
+
export declare function stringifyYearmonthField(field: YearmonthField, fieldExpr: pl.Expr): pl.Expr;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
export function parseYearmonthField(_field, fieldExpr) {
|
|
3
|
+
fieldExpr = fieldExpr.str.split("-").cast(pl.List(pl.Int16));
|
|
4
|
+
return fieldExpr;
|
|
5
|
+
}
|
|
6
|
+
export function stringifyYearmonthField(field, fieldExpr) {
|
|
7
|
+
return pl
|
|
8
|
+
.concatString([
|
|
9
|
+
fieldExpr.lst.get(0).cast(pl.String).str.zFill(4),
|
|
10
|
+
fieldExpr.lst.get(1).cast(pl.String).str.zFill(2),
|
|
11
|
+
], "-")
|
|
12
|
+
.alias(field.name);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcm1vbnRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMveWVhcm1vbnRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRW5DLE1BQU0sVUFBVSxtQkFBbUIsQ0FDakMsTUFBc0IsRUFDdEIsU0FBa0I7SUFFbEIsU0FBUyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0lBRTVELE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLEtBQXFCLEVBQ3JCLFNBQWtCO0lBRWxCLE9BQU8sRUFBRTtTQUNOLFlBQVksQ0FDWDtRQUNFLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztLQUNsRCxFQUNELEdBQUcsQ0FDSjtTQUNBLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFZLENBQUE7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgWWVhcm1vbnRoRmllbGQgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVllYXJtb250aEZpZWxkKFxuICBfZmllbGQ6IFllYXJtb250aEZpZWxkLFxuICBmaWVsZEV4cHI6IHBsLkV4cHIsXG4pIHtcbiAgZmllbGRFeHByID0gZmllbGRFeHByLnN0ci5zcGxpdChcIi1cIikuY2FzdChwbC5MaXN0KHBsLkludDE2KSlcblxuICByZXR1cm4gZmllbGRFeHByXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlZZWFybW9udGhGaWVsZChcbiAgZmllbGQ6IFllYXJtb250aEZpZWxkLFxuICBmaWVsZEV4cHI6IHBsLkV4cHIsXG4pIHtcbiAgcmV0dXJuIHBsXG4gICAgLmNvbmNhdFN0cmluZyhcbiAgICAgIFtcbiAgICAgICAgZmllbGRFeHByLmxzdC5nZXQoMCkuY2FzdChwbC5TdHJpbmcpLnN0ci56RmlsbCg0KSxcbiAgICAgICAgZmllbGRFeHByLmxzdC5nZXQoMSkuY2FzdChwbC5TdHJpbmcpLnN0ci56RmlsbCgyKSxcbiAgICAgIF0sXG4gICAgICBcIi1cIixcbiAgICApXG4gICAgLmFsaWFzKGZpZWxkLm5hbWUpIGFzIHBsLkV4cHJcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { normalizeTable } from "../../table/index.js";
|
|
4
|
+
import { denormalizeTable } from "../../table/index.js";
|
|
5
|
+
describe("parseYearmonthField", () => {
|
|
6
|
+
it.each([
|
|
7
|
+
["2000-01", [2000, 1]],
|
|
8
|
+
["0-0", [0, 0]],
|
|
9
|
+
])("%s -> %s", async (cell, value) => {
|
|
10
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
11
|
+
const schema = {
|
|
12
|
+
fields: [{ name: "name", type: "yearmonth" }],
|
|
13
|
+
};
|
|
14
|
+
const result = await normalizeTable(table, schema);
|
|
15
|
+
const frame = await result.collect();
|
|
16
|
+
expect(frame.toRecords()[0]?.name).toEqual(value);
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe("stringifyYearmonthField", () => {
|
|
20
|
+
it.each([
|
|
21
|
+
[[2000, 1], "2000-01"],
|
|
22
|
+
[[2023, 12], "2023-12"],
|
|
23
|
+
[[0, 0], "0000-00"],
|
|
24
|
+
])("%s -> %s", async (value, expected) => {
|
|
25
|
+
const table = pl
|
|
26
|
+
.DataFrame([pl.Series("name", [value], pl.List(pl.Int16))])
|
|
27
|
+
.lazy();
|
|
28
|
+
const schema = {
|
|
29
|
+
fields: [{ name: "name", type: "yearmonth" }],
|
|
30
|
+
};
|
|
31
|
+
const result = await denormalizeTable(table, schema);
|
|
32
|
+
const frame = await result.collect();
|
|
33
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieWVhcm1vbnRoLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWVsZC90eXBlcy95ZWFybW9udGguc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXZELFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7SUFDbkMsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNOLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ2hCLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUNuQyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRXpFLE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFvQixFQUFFLENBQUM7U0FDdkQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVwQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRCxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBO0FBRUYsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7UUFDdEIsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUM7S0FDcEIsQ0FBQyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEVBQUU7YUFDYixTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxRCxJQUFJLEVBQUUsQ0FBQTtRQUVULE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFvQixFQUFFLENBQUM7U0FDdkQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuaW1wb3J0IHsgZGVub3JtYWxpemVUYWJsZSB9IGZyb20gXCIuLi8uLi90YWJsZS9pbmRleC50c1wiXG5cbmRlc2NyaWJlKFwicGFyc2VZZWFybW9udGhGaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIFtcIjIwMDAtMDFcIiwgWzIwMDAsIDFdXSxcbiAgICBbXCIwLTBcIiwgWzAsIDBdXSxcbiAgXSkoXCIlcyAtPiAlc1wiLCBhc3luYyAoY2VsbCwgdmFsdWUpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbY2VsbF0sIHBsLlN0cmluZyldKS5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwieWVhcm1vbnRoXCIgYXMgY29uc3QgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbCh2YWx1ZSlcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwic3RyaW5naWZ5WWVhcm1vbnRoRmllbGRcIiwgKCkgPT4ge1xuICBpdC5lYWNoKFtcbiAgICBbWzIwMDAsIDFdLCBcIjIwMDAtMDFcIl0sXG4gICAgW1syMDIzLCAxMl0sIFwiMjAyMy0xMlwiXSxcbiAgICBbWzAsIDBdLCBcIjAwMDAtMDBcIl0sXG4gIF0pKFwiJXMgLT4gJXNcIiwgYXN5bmMgKHZhbHVlLCBleHBlY3RlZCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gcGxcbiAgICAgIC5EYXRhRnJhbWUoW3BsLlNlcmllcyhcIm5hbWVcIiwgW3ZhbHVlXSwgcGwuTGlzdChwbC5JbnQxNikpXSlcbiAgICAgIC5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwieWVhcm1vbnRoXCIgYXMgY29uc3QgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgcmVzdWx0LmNvbGxlY3QoKVxuXG4gICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpWzBdPy5uYW1lKS50b0VxdWFsKGV4cGVjdGVkKVxuICB9KVxufSlcbiJdfQ==
|
package/build/helpers.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
export function isObject(value) {
|
|
3
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4
|
+
}
|
|
5
|
+
export function arrayDiff(a, b) {
|
|
6
|
+
return a.filter(x => !b.includes(x));
|
|
7
|
+
}
|
|
8
|
+
export function evaluateExpression(expr) {
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
return pl.select(expr.alias("value")).toRecords()[0].value;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbkMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxLQUFVO0lBQ2pDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdFLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLENBQVcsRUFBRSxDQUFXO0lBQ2hELE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBYTtJQUM5QyxhQUFhO0lBQ2IsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDNUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5RGlmZihhOiBzdHJpbmdbXSwgYjogc3RyaW5nW10pIHtcbiAgcmV0dXJuIGEuZmlsdGVyKHggPT4gIWIuaW5jbHVkZXMoeCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmFsdWF0ZUV4cHJlc3Npb24oZXhwcjogcGwuRXhwcikge1xuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBwbC5zZWxlY3QoZXhwci5hbGlhcyhcInZhbHVlXCIpKS50b1JlY29yZHMoKVswXS52YWx1ZVxufVxuIl19
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export type { DataRecord } from "./data/index.ts";
|
|
2
|
+
export type { DataRow } from "./data/index.ts";
|
|
3
|
+
export type { DenormalizeFieldOptions } from "./field/index.ts";
|
|
4
|
+
export type { DialectOptions } from "./dialect/index.ts";
|
|
5
|
+
export type { Frame } from "./table/index.ts";
|
|
6
|
+
export type { InferDialectOptions } from "./dialect/index.ts";
|
|
7
|
+
export type { InferSchemaOptions } from "./schema/index.ts";
|
|
8
|
+
export type { LoadTableOptions } from "./plugin.ts";
|
|
9
|
+
export type { PolarsField } from "./field/index.ts";
|
|
10
|
+
export type { PolarsSchema } from "./schema/index.ts";
|
|
11
|
+
export type { SaveTableOptions } from "./plugin.ts";
|
|
12
|
+
export type { SchemaOptions } from "./schema/index.ts";
|
|
13
|
+
export type { Table } from "./table/index.ts";
|
|
14
|
+
export type { TablePlugin } from "./plugin.ts";
|
|
15
|
+
export { ArrowPlugin } from "./plugins/arrow/index.ts";
|
|
16
|
+
export { CsvPlugin } from "./plugins/csv/index.ts";
|
|
17
|
+
export { InlinePlugin } from "./plugins/inline/index.ts";
|
|
18
|
+
export { JsonPlugin } from "./plugins/json/index.ts";
|
|
19
|
+
export { OdsPlugin } from "./plugins/ods/index.ts";
|
|
20
|
+
export { ParquetPlugin } from "./plugins/parquet/index.ts";
|
|
21
|
+
export { XlsxPlugin } from "./plugins/xlxs/index.ts";
|
|
22
|
+
export { denormalizeTable } from "./table/index.ts";
|
|
23
|
+
export { inferSchemaFromSample } from "./schema/index.ts";
|
|
24
|
+
export { inferSchemaFromTable } from "./schema/index.ts";
|
|
25
|
+
export { inspectTable } from "./table/index.ts";
|
|
26
|
+
export { loadArrowTable } from "./plugins/arrow/index.ts";
|
|
27
|
+
export { loadCsvTable } from "./plugins/csv/index.ts";
|
|
28
|
+
export { loadInlineTable } from "./plugins/inline/index.ts";
|
|
29
|
+
export { loadJsonTable } from "./plugins/json/index.ts";
|
|
30
|
+
export { loadOdsTable } from "./plugins/ods/index.ts";
|
|
31
|
+
export { loadParquetTable } from "./plugins/parquet/index.ts";
|
|
32
|
+
export { loadXlsxTable } from "./plugins/xlxs/index.ts";
|
|
33
|
+
export { normalizeTable } from "./table/index.ts";
|
|
34
|
+
export { queryTable } from "./table/index.ts";
|
|
35
|
+
export { saveArrowTable } from "./plugins/arrow/index.ts";
|
|
36
|
+
export { saveCsvTable } from "./plugins/csv/index.ts";
|
|
37
|
+
export { saveJsonTable } from "./plugins/json/index.ts";
|
|
38
|
+
export { saveOdsTable } from "./plugins/ods/index.ts";
|
|
39
|
+
export { saveParquetTable } from "./plugins/parquet/index.ts";
|
|
40
|
+
export { saveXlsxTable } from "./plugins/xlxs/index.ts";
|
package/build/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export { ArrowPlugin } from "./plugins/arrow/index.js";
|
|
2
|
+
export { CsvPlugin } from "./plugins/csv/index.js";
|
|
3
|
+
export { InlinePlugin } from "./plugins/inline/index.js";
|
|
4
|
+
export { JsonPlugin } from "./plugins/json/index.js";
|
|
5
|
+
export { OdsPlugin } from "./plugins/ods/index.js";
|
|
6
|
+
export { ParquetPlugin } from "./plugins/parquet/index.js";
|
|
7
|
+
export { XlsxPlugin } from "./plugins/xlxs/index.js";
|
|
8
|
+
export { denormalizeTable } from "./table/index.js";
|
|
9
|
+
export { inferSchemaFromSample } from "./schema/index.js";
|
|
10
|
+
export { inferSchemaFromTable } from "./schema/index.js";
|
|
11
|
+
export { inspectTable } from "./table/index.js";
|
|
12
|
+
export { loadArrowTable } from "./plugins/arrow/index.js";
|
|
13
|
+
export { loadCsvTable } from "./plugins/csv/index.js";
|
|
14
|
+
export { loadInlineTable } from "./plugins/inline/index.js";
|
|
15
|
+
export { loadJsonTable } from "./plugins/json/index.js";
|
|
16
|
+
export { loadOdsTable } from "./plugins/ods/index.js";
|
|
17
|
+
export { loadParquetTable } from "./plugins/parquet/index.js";
|
|
18
|
+
export { loadXlsxTable } from "./plugins/xlxs/index.js";
|
|
19
|
+
export { normalizeTable } from "./table/index.js";
|
|
20
|
+
export { queryTable } from "./table/index.js";
|
|
21
|
+
export { saveArrowTable } from "./plugins/arrow/index.js";
|
|
22
|
+
export { saveCsvTable } from "./plugins/csv/index.js";
|
|
23
|
+
export { saveJsonTable } from "./plugins/json/index.js";
|
|
24
|
+
export { saveOdsTable } from "./plugins/ods/index.js";
|
|
25
|
+
export { saveParquetTable } from "./plugins/parquet/index.js";
|
|
26
|
+
export { saveXlsxTable } from "./plugins/xlxs/index.js";
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQy9DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDN0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgRGF0YVJlY29yZCB9IGZyb20gXCIuL2RhdGEvaW5kZXgudHNcIlxuZXhwb3J0IHR5cGUgeyBEYXRhUm93IH0gZnJvbSBcIi4vZGF0YS9pbmRleC50c1wiXG5leHBvcnQgdHlwZSB7IERlbm9ybWFsaXplRmllbGRPcHRpb25zIH0gZnJvbSBcIi4vZmllbGQvaW5kZXgudHNcIlxuZXhwb3J0IHR5cGUgeyBEaWFsZWN0T3B0aW9ucyB9IGZyb20gXCIuL2RpYWxlY3QvaW5kZXgudHNcIlxuZXhwb3J0IHR5cGUgeyBGcmFtZSB9IGZyb20gXCIuL3RhYmxlL2luZGV4LnRzXCJcbmV4cG9ydCB0eXBlIHsgSW5mZXJEaWFsZWN0T3B0aW9ucyB9IGZyb20gXCIuL2RpYWxlY3QvaW5kZXgudHNcIlxuZXhwb3J0IHR5cGUgeyBJbmZlclNjaGVtYU9wdGlvbnMgfSBmcm9tIFwiLi9zY2hlbWEvaW5kZXgudHNcIlxuZXhwb3J0IHR5cGUgeyBMb2FkVGFibGVPcHRpb25zIH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcbmV4cG9ydCB0eXBlIHsgUG9sYXJzRmllbGQgfSBmcm9tIFwiLi9maWVsZC9pbmRleC50c1wiXG5leHBvcnQgdHlwZSB7IFBvbGFyc1NjaGVtYSB9IGZyb20gXCIuL3NjaGVtYS9pbmRleC50c1wiXG5leHBvcnQgdHlwZSB7IFNhdmVUYWJsZU9wdGlvbnMgfSBmcm9tIFwiLi9wbHVnaW4udHNcIlxuZXhwb3J0IHR5cGUgeyBTY2hlbWFPcHRpb25zIH0gZnJvbSBcIi4vc2NoZW1hL2luZGV4LnRzXCJcbmV4cG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5leHBvcnQgdHlwZSB7IFRhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2luLnRzXCJcblxuZXhwb3J0IHsgQXJyb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fycm93L2luZGV4LnRzXCJcbmV4cG9ydCB7IENzdlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY3N2L2luZGV4LnRzXCJcbmV4cG9ydCB7IElubGluZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvaW5saW5lL2luZGV4LnRzXCJcbmV4cG9ydCB7IEpzb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2pzb24vaW5kZXgudHNcIlxuZXhwb3J0IHsgT2RzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZHMvaW5kZXgudHNcIlxuZXhwb3J0IHsgUGFycXVldFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcGFycXVldC9pbmRleC50c1wiXG5leHBvcnQgeyBYbHN4UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy94bHhzL2luZGV4LnRzXCJcblxuZXhwb3J0IHsgZGVub3JtYWxpemVUYWJsZSB9IGZyb20gXCIuL3RhYmxlL2luZGV4LnRzXCJcbmV4cG9ydCB7IGluZmVyU2NoZW1hRnJvbVNhbXBsZSB9IGZyb20gXCIuL3NjaGVtYS9pbmRleC50c1wiXG5leHBvcnQgeyBpbmZlclNjaGVtYUZyb21UYWJsZSB9IGZyb20gXCIuL3NjaGVtYS9pbmRleC50c1wiXG5leHBvcnQgeyBpbnNwZWN0VGFibGUgfSBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5leHBvcnQgeyBsb2FkQXJyb3dUYWJsZSB9IGZyb20gXCIuL3BsdWdpbnMvYXJyb3cvaW5kZXgudHNcIlxuZXhwb3J0IHsgbG9hZENzdlRhYmxlIH0gZnJvbSBcIi4vcGx1Z2lucy9jc3YvaW5kZXgudHNcIlxuZXhwb3J0IHsgbG9hZElubGluZVRhYmxlIH0gZnJvbSBcIi4vcGx1Z2lucy9pbmxpbmUvaW5kZXgudHNcIlxuZXhwb3J0IHsgbG9hZEpzb25UYWJsZSB9IGZyb20gXCIuL3BsdWdpbnMvanNvbi9pbmRleC50c1wiXG5leHBvcnQgeyBsb2FkT2RzVGFibGUgfSBmcm9tIFwiLi9wbHVnaW5zL29kcy9pbmRleC50c1wiXG5leHBvcnQgeyBsb2FkUGFycXVldFRhYmxlIH0gZnJvbSBcIi4vcGx1Z2lucy9wYXJxdWV0L2luZGV4LnRzXCJcbmV4cG9ydCB7IGxvYWRYbHN4VGFibGUgfSBmcm9tIFwiLi9wbHVnaW5zL3hseHMvaW5kZXgudHNcIlxuZXhwb3J0IHsgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5leHBvcnQgeyBxdWVyeVRhYmxlIH0gZnJvbSBcIi4vdGFibGUvaW5kZXgudHNcIlxuZXhwb3J0IHsgc2F2ZUFycm93VGFibGUgfSBmcm9tIFwiLi9wbHVnaW5zL2Fycm93L2luZGV4LnRzXCJcbmV4cG9ydCB7IHNhdmVDc3ZUYWJsZSB9IGZyb20gXCIuL3BsdWdpbnMvY3N2L2luZGV4LnRzXCJcbmV4cG9ydCB7IHNhdmVKc29uVGFibGUgfSBmcm9tIFwiLi9wbHVnaW5zL2pzb24vaW5kZXgudHNcIlxuZXhwb3J0IHsgc2F2ZU9kc1RhYmxlIH0gZnJvbSBcIi4vcGx1Z2lucy9vZHMvaW5kZXgudHNcIlxuZXhwb3J0IHsgc2F2ZVBhcnF1ZXRUYWJsZSB9IGZyb20gXCIuL3BsdWdpbnMvcGFycXVldC9pbmRleC50c1wiXG5leHBvcnQgeyBzYXZlWGxzeFRhYmxlIH0gZnJvbSBcIi4vcGx1Z2lucy94bHhzL2luZGV4LnRzXCJcbiJdfQ==
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SavePackageOptions } from "@frictionless-ts/dataset";
|
|
2
|
+
import type { DatasetPlugin } from "@frictionless-ts/dataset";
|
|
3
|
+
import type { Dialect, Package, Resource, Schema } from "@frictionless-ts/metadata";
|
|
4
|
+
import type { DialectOptions, InferDialectOptions } from "./dialect/index.ts";
|
|
5
|
+
import type { InferSchemaOptions, SchemaOptions } from "./schema/index.ts";
|
|
6
|
+
import type { Table } from "./table/index.ts";
|
|
7
|
+
export type LoadTableOptions = InferDialectOptions & InferSchemaOptions & {
|
|
8
|
+
denormalized?: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type SaveTableOptions = DialectOptions & SchemaOptions & {
|
|
11
|
+
path: string;
|
|
12
|
+
format?: string;
|
|
13
|
+
dialect?: Dialect;
|
|
14
|
+
schema?: Schema;
|
|
15
|
+
overwrite?: boolean;
|
|
16
|
+
};
|
|
17
|
+
export interface TablePlugin extends DatasetPlugin {
|
|
18
|
+
savePackage?(dataPackage: Package, options: SavePackageOptions & {
|
|
19
|
+
plugins?: TablePlugin[];
|
|
20
|
+
}): Promise<{
|
|
21
|
+
path?: string;
|
|
22
|
+
} | undefined>;
|
|
23
|
+
inferDialect?(resource: Partial<Resource>, options?: InferDialectOptions): Promise<Dialect | undefined>;
|
|
24
|
+
inferSchema?(resource: Partial<Resource>, options?: InferSchemaOptions): Promise<Schema | undefined>;
|
|
25
|
+
loadTable?(resource: Partial<Resource>, options?: LoadTableOptions): Promise<Table | undefined>;
|
|
26
|
+
saveTable?(table: Table, options: SaveTableOptions): Promise<string | undefined>;
|
|
27
|
+
}
|
package/build/plugin.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNhdmVQYWNrYWdlT3B0aW9ucyB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL2RhdGFzZXRcIlxuaW1wb3J0IHR5cGUgeyBEYXRhc2V0UGx1Z2luIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvZGF0YXNldFwiXG5pbXBvcnQgdHlwZSB7XG4gIERpYWxlY3QsXG4gIFBhY2thZ2UsXG4gIFJlc291cmNlLFxuICBTY2hlbWEsXG59IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCB0eXBlIHsgRGlhbGVjdE9wdGlvbnMsIEluZmVyRGlhbGVjdE9wdGlvbnMgfSBmcm9tIFwiLi9kaWFsZWN0L2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgSW5mZXJTY2hlbWFPcHRpb25zLCBTY2hlbWFPcHRpb25zIH0gZnJvbSBcIi4vc2NoZW1hL2luZGV4LnRzXCJcbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5cbmV4cG9ydCB0eXBlIExvYWRUYWJsZU9wdGlvbnMgPSBJbmZlckRpYWxlY3RPcHRpb25zICZcbiAgSW5mZXJTY2hlbWFPcHRpb25zICYge1xuICAgIGRlbm9ybWFsaXplZD86IGJvb2xlYW5cbiAgfVxuXG5leHBvcnQgdHlwZSBTYXZlVGFibGVPcHRpb25zID0gRGlhbGVjdE9wdGlvbnMgJlxuICBTY2hlbWFPcHRpb25zICYge1xuICAgIHBhdGg6IHN0cmluZ1xuICAgIGZvcm1hdD86IHN0cmluZ1xuICAgIGRpYWxlY3Q/OiBEaWFsZWN0XG4gICAgc2NoZW1hPzogU2NoZW1hXG4gICAgb3ZlcndyaXRlPzogYm9vbGVhblxuICB9XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVQbHVnaW4gZXh0ZW5kcyBEYXRhc2V0UGx1Z2luIHtcbiAgc2F2ZVBhY2thZ2U/KFxuICAgIGRhdGFQYWNrYWdlOiBQYWNrYWdlLFxuICAgIG9wdGlvbnM6IFNhdmVQYWNrYWdlT3B0aW9ucyAmIHsgcGx1Z2lucz86IFRhYmxlUGx1Z2luW10gfSxcbiAgKTogUHJvbWlzZTx7IHBhdGg/OiBzdHJpbmcgfSB8IHVuZGVmaW5lZD5cblxuICBpbmZlckRpYWxlY3Q/KFxuICAgIHJlc291cmNlOiBQYXJ0aWFsPFJlc291cmNlPixcbiAgICBvcHRpb25zPzogSW5mZXJEaWFsZWN0T3B0aW9ucyxcbiAgKTogUHJvbWlzZTxEaWFsZWN0IHwgdW5kZWZpbmVkPlxuXG4gIGluZmVyU2NoZW1hPyhcbiAgICByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4sXG4gICAgb3B0aW9ucz86IEluZmVyU2NoZW1hT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxTY2hlbWEgfCB1bmRlZmluZWQ+XG5cbiAgbG9hZFRhYmxlPyhcbiAgICByZXNvdXJjZTogUGFydGlhbDxSZXNvdXJjZT4sXG4gICAgb3B0aW9ucz86IExvYWRUYWJsZU9wdGlvbnMsXG4gICk6IFByb21pc2U8VGFibGUgfCB1bmRlZmluZWQ+XG5cbiAgc2F2ZVRhYmxlPyhcbiAgICB0YWJsZTogVGFibGUsXG4gICAgb3B0aW9uczogU2F2ZVRhYmxlT3B0aW9ucyxcbiAgKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./table/index.js";
|
|
2
|
+
export * from "./plugin.js";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wbHVnaW5zL2Fycm93L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUE7QUFDaEMsY0FBYyxhQUFhLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi90YWJsZS9pbmRleC50c1wiXG5leHBvcnQgKiBmcm9tIFwiLi9wbHVnaW4udHNcIlxuIl19
|
|
@@ -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 ArrowPlugin 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
|
+
}
|