@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,15 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
const DEFAULT_FORMAT = "%Y-%m-%dT%H:%M:%S";
|
|
3
|
+
// TODO: Add support for timezone handling
|
|
4
|
+
export function parseDatetimeField(field, fieldExpr) {
|
|
5
|
+
let format = DEFAULT_FORMAT;
|
|
6
|
+
if (field.format && field.format !== "default" && field.format !== "any") {
|
|
7
|
+
format = field.format;
|
|
8
|
+
}
|
|
9
|
+
return fieldExpr.str.strptime(pl.Datetime, format);
|
|
10
|
+
}
|
|
11
|
+
export function stringifyDatetimeField(field, fieldExpr) {
|
|
12
|
+
const format = field.format ?? DEFAULT_FORMAT;
|
|
13
|
+
return fieldExpr.date.strftime(format);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWVsZC90eXBlcy9kYXRldGltZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUVuQyxNQUFNLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQTtBQUUxQywwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEtBQW9CLEVBQUUsU0FBa0I7SUFDekUsSUFBSSxNQUFNLEdBQUcsY0FBYyxDQUFBO0lBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3pFLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ3ZCLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDcEQsQ0FBQztBQUVELE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsS0FBb0IsRUFDcEIsU0FBa0I7SUFFbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxjQUFjLENBQUE7SUFFN0MsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEYXRldGltZUZpZWxkIH0gZnJvbSBcIkBmcmljdGlvbmxlc3MtdHMvbWV0YWRhdGFcIlxuaW1wb3J0ICogYXMgcGwgZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuXG5jb25zdCBERUZBVUxUX0ZPUk1BVCA9IFwiJVktJW0tJWRUJUg6JU06JVNcIlxuXG4vLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGltZXpvbmUgaGFuZGxpbmdcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGV0aW1lRmllbGQoZmllbGQ6IERhdGV0aW1lRmllbGQsIGZpZWxkRXhwcjogcGwuRXhwcikge1xuICBsZXQgZm9ybWF0ID0gREVGQVVMVF9GT1JNQVRcbiAgaWYgKGZpZWxkLmZvcm1hdCAmJiBmaWVsZC5mb3JtYXQgIT09IFwiZGVmYXVsdFwiICYmIGZpZWxkLmZvcm1hdCAhPT0gXCJhbnlcIikge1xuICAgIGZvcm1hdCA9IGZpZWxkLmZvcm1hdFxuICB9XG5cbiAgcmV0dXJuIGZpZWxkRXhwci5zdHIuc3RycHRpbWUocGwuRGF0ZXRpbWUsIGZvcm1hdClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeURhdGV0aW1lRmllbGQoXG4gIGZpZWxkOiBEYXRldGltZUZpZWxkLFxuICBmaWVsZEV4cHI6IHBsLkV4cHIsXG4pIHtcbiAgY29uc3QgZm9ybWF0ID0gZmllbGQuZm9ybWF0ID8/IERFRkFVTFRfRk9STUFUXG5cbiAgcmV0dXJuIGZpZWxkRXhwci5kYXRlLnN0cmZ0aW1lKGZvcm1hdClcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
// TODO: Enable this test suite after this issue is fixed:
|
|
6
|
+
// https://github.com/pola-rs/nodejs-polars/issues/365
|
|
7
|
+
describe.skip("parseDatetimeField", () => {
|
|
8
|
+
it.each([
|
|
9
|
+
// Default format
|
|
10
|
+
["2014-01-01T06:00:00", new Date(Date.UTC(2014, 0, 1, 6, 0, 0)), {}],
|
|
11
|
+
["2014-01-01T06:00:00Z", new Date(Date.UTC(2014, 0, 1, 6, 0, 0)), {}],
|
|
12
|
+
["Mon 1st Jan 2014 9 am", null, {}],
|
|
13
|
+
["invalid", null, {}],
|
|
14
|
+
["", null, {}],
|
|
15
|
+
// Custom formats
|
|
16
|
+
[
|
|
17
|
+
"21/11/2006 16:30",
|
|
18
|
+
new Date(2006, 10, 21, 16, 30),
|
|
19
|
+
{ format: "%d/%m/%Y %H:%M" },
|
|
20
|
+
],
|
|
21
|
+
["16:30 21/11/06", null, { format: "%H:%M %d/%m/%y" }], // Incorrect format
|
|
22
|
+
["invalid", null, { format: "%d/%m/%y %H:%M" }],
|
|
23
|
+
["", null, { format: "%d/%m/%y %H:%M" }],
|
|
24
|
+
// Invalid format
|
|
25
|
+
["21/11/06 16:30", null, { format: "invalid" }],
|
|
26
|
+
])("%s -> %s %o", async (cell, expected, options) => {
|
|
27
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
28
|
+
const schema = {
|
|
29
|
+
fields: [{ name: "name", type: "datetime", ...options }],
|
|
30
|
+
};
|
|
31
|
+
const result = await normalizeTable(table, schema);
|
|
32
|
+
const frame = await result.collect();
|
|
33
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
describe("stringifyDatetimeField", () => {
|
|
37
|
+
it.each([
|
|
38
|
+
// Default format
|
|
39
|
+
[new Date(Date.UTC(2014, 0, 1, 6, 0, 0)), "2014-01-01T06:00:00", {}],
|
|
40
|
+
[new Date(Date.UTC(2006, 10, 21, 16, 30, 0)), "2006-11-21T16:30:00", {}],
|
|
41
|
+
// Custom format
|
|
42
|
+
[
|
|
43
|
+
new Date(Date.UTC(2006, 10, 21, 16, 30, 0)),
|
|
44
|
+
"21/11/2006 16:30",
|
|
45
|
+
{ format: "%d/%m/%Y %H:%M" },
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
new Date(Date.UTC(2014, 0, 1, 6, 0, 0)),
|
|
49
|
+
"2014/01/01T06:00:00",
|
|
50
|
+
{ format: "%Y/%m/%dT%H:%M:%S" },
|
|
51
|
+
],
|
|
52
|
+
])("%s -> %s %o", async (value, expected, options) => {
|
|
53
|
+
const table = pl.DataFrame([pl.Series("name", [value], pl.Datetime)]).lazy();
|
|
54
|
+
const schema = {
|
|
55
|
+
fields: [{ name: "name", type: "datetime", ...options }],
|
|
56
|
+
};
|
|
57
|
+
const result = await denormalizeTable(table, schema);
|
|
58
|
+
const frame = await result.collect();
|
|
59
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL2RhdGV0aW1lLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV2RCwwREFBMEQ7QUFDMUQsc0RBQXNEO0FBQ3RELFFBQVEsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ3ZDLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixpQkFBaUI7UUFDakIsQ0FBQyxxQkFBcUIsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDcEUsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckUsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25DLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7UUFDckIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUVkLGlCQUFpQjtRQUNqQjtZQUNFLGtCQUFrQjtZQUNsQixJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLEVB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QUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFFNUUsTUFBTSxNQUFNLEdBQUc7WUFDYixNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQW1CLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztTQUNsRSxDQUFBO1FBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEQsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB7IGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSBcInZpdGVzdFwiXG5pbXBvcnQgeyBub3JtYWxpemVUYWJsZSB9IGZyb20gXCIuLi8uLi90YWJsZS9pbmRleC50c1wiXG5pbXBvcnQgeyBkZW5vcm1hbGl6ZVRhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcblxuLy8gVE9ETzogRW5hYmxlIHRoaXMgdGVzdCBzdWl0ZSBhZnRlciB0aGlzIGlzc3VlIGlzIGZpeGVkOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvbGEtcnMvbm9kZWpzLXBvbGFycy9pc3N1ZXMvMzY1XG5kZXNjcmliZS5za2lwKFwicGFyc2VEYXRldGltZUZpZWxkXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgLy8gRGVmYXVsdCBmb3JtYXRcbiAgICBbXCIyMDE0LTAxLTAxVDA2OjAwOjAwXCIsIG5ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDYsIDAsIDApKSwge31dLFxuICAgIFtcIjIwMTQtMDEtMDFUMDY6MDA6MDBaXCIsIG5ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDYsIDAsIDApKSwge31dLFxuICAgIFtcIk1vbiAxc3QgSmFuIDIwMTQgOSBhbVwiLCBudWxsLCB7fV0sXG4gICAgW1wiaW52YWxpZFwiLCBudWxsLCB7fV0sXG4gICAgW1wiXCIsIG51bGwsIHt9XSxcblxuICAgIC8vIEN1c3RvbSBmb3JtYXRzXG4gICAgW1xuICAgICAgXCIyMS8xMS8yMDA2IDE2OjMwXCIsXG4gICAgICBuZXcgRGF0ZSgyMDA2LCAxMCwgMjEsIDE2LCAzMCksXG4gICAgICB7IGZvcm1hdDogXCIlZC8lbS8lWSAlSDolTVwiIH0sXG4gICAgXSxcbiAgICBbXCIxNjozMCAyMS8xMS8wNlwiLCBudWxsLCB7IGZvcm1hdDogXCIlSDolTSAlZC8lbS8leVwiIH1dLCAvLyBJbmNvcnJlY3QgZm9ybWF0XG4gICAgW1wiaW52YWxpZFwiLCBudWxsLCB7IGZvcm1hdDogXCIlZC8lbS8leSAlSDolTVwiIH1dLFxuICAgIFtcIlwiLCBudWxsLCB7IGZvcm1hdDogXCIlZC8lbS8leSAlSDolTVwiIH1dLFxuXG4gICAgLy8gSW52YWxpZCBmb3JtYXRcbiAgICBbXCIyMS8xMS8wNiAxNjozMFwiLCBudWxsLCB7IGZvcm1hdDogXCJpbnZhbGlkXCIgfV0sXG4gIF0pKFwiJXMgLT4gJXMgJW9cIiwgYXN5bmMgKGNlbGwsIGV4cGVjdGVkLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoW3BsLlNlcmllcyhcIm5hbWVcIiwgW2NlbGxdLCBwbC5TdHJpbmcpXSkubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFt7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcImRhdGV0aW1lXCIgYXMgY29uc3QsIC4uLm9wdGlvbnMgfV0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbChleHBlY3RlZClcbiAgfSlcbn0pXG5cbmRlc2NyaWJlKFwic3RyaW5naWZ5RGF0ZXRpbWVGaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIC8vIERlZmF1bHQgZm9ybWF0XG4gICAgW25ldyBEYXRlKERhdGUuVVRDKDIwMTQsIDAsIDEsIDYsIDAsIDApKSwgXCIyMDE0LTAxLTAxVDA2OjAwOjAwXCIsIHt9XSxcbiAgICBbbmV3IERhdGUoRGF0ZS5VVEMoMjAwNiwgMTAsIDIxLCAxNiwgMzAsIDApKSwgXCIyMDA2LTExLTIxVDE2OjMwOjAwXCIsIHt9XSxcblxuICAgIC8vIEN1c3RvbSBmb3JtYXRcbiAgICBbXG4gICAgICBuZXcgRGF0ZShEYXRlLlVUQygyMDA2LCAxMCwgMjEsIDE2LCAzMCwgMCkpLFxuICAgICAgXCIyMS8xMS8yMDA2IDE2OjMwXCIsXG4gICAgICB7IGZvcm1hdDogXCIlZC8lbS8lWSAlSDolTVwiIH0sXG4gICAgXSxcbiAgICBbXG4gICAgICBuZXcgRGF0ZShEYXRlLlVUQygyMDE0LCAwLCAxLCA2LCAwLCAwKSksXG4gICAgICBcIjIwMTQvMDEvMDFUMDY6MDA6MDBcIixcbiAgICAgIHsgZm9ybWF0OiBcIiVZLyVtLyVkVCVIOiVNOiVTXCIgfSxcbiAgICBdLFxuICBdKShcIiVzIC0+ICVzICVvXCIsIGFzeW5jICh2YWx1ZSwgZXhwZWN0ZWQsIG9wdGlvbnMpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsLkRhdGFGcmFtZShbcGwuU2VyaWVzKFwibmFtZVwiLCBbdmFsdWVdLCBwbC5EYXRldGltZSldKS5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiZGF0ZXRpbWVcIiBhcyBjb25zdCwgLi4ub3B0aW9ucyB9XSxcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZW5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG5cbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKClbMF0/Lm5hbWUpLnRvRXF1YWwoZXhwZWN0ZWQpXG4gIH0pXG59KVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DurationField } from "@frictionless-ts/metadata";
|
|
2
|
+
import type * as pl from "nodejs-polars";
|
|
3
|
+
export declare function parseDurationField(_field: DurationField, fieldExpr: pl.Expr): pl.Expr;
|
|
4
|
+
export declare function stringifyDurationField(_field: DurationField, fieldExpr: pl.Expr): pl.Expr;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// TODO: raise an issue on nodejs-polars repo as this is not supported yet
|
|
2
|
+
// So we do nothing on this column type for now
|
|
3
|
+
export function parseDurationField(_field, fieldExpr) {
|
|
4
|
+
return fieldExpr;
|
|
5
|
+
}
|
|
6
|
+
export function stringifyDurationField(_field, fieldExpr) {
|
|
7
|
+
return fieldExpr;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9maWVsZC90eXBlcy9kdXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSwwRUFBMEU7QUFDMUUsK0NBQStDO0FBQy9DLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxNQUFxQixFQUFFLFNBQWtCO0lBQzFFLE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQXFCLEVBQ3JCLFNBQWtCO0lBRWxCLE9BQU8sU0FBUyxDQUFBO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IER1cmF0aW9uRmllbGQgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgdHlwZSAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcblxuLy8gVE9ETzogcmFpc2UgYW4gaXNzdWUgb24gbm9kZWpzLXBvbGFycyByZXBvIGFzIHRoaXMgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbi8vIFNvIHdlIGRvIG5vdGhpbmcgb24gdGhpcyBjb2x1bW4gdHlwZSBmb3Igbm93XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VEdXJhdGlvbkZpZWxkKF9maWVsZDogRHVyYXRpb25GaWVsZCwgZmllbGRFeHByOiBwbC5FeHByKSB7XG4gIHJldHVybiBmaWVsZEV4cHJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeUR1cmF0aW9uRmllbGQoXG4gIF9maWVsZDogRHVyYXRpb25GaWVsZCxcbiAgZmllbGRFeHByOiBwbC5FeHByLFxuKSB7XG4gIHJldHVybiBmaWVsZEV4cHJcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as pl from "nodejs-polars";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import { denormalizeTable, normalizeTable } from "../../table/index.js";
|
|
4
|
+
describe("parseDurationField", () => {
|
|
5
|
+
it.each([["P23DT23H", "P23DT23H", {}]])("$0 -> $1 $2", async (cell, value, options) => {
|
|
6
|
+
const table = pl.DataFrame([pl.Series("name", [cell], pl.String)]).lazy();
|
|
7
|
+
const schema = {
|
|
8
|
+
fields: [{ name: "name", type: "duration", ...options }],
|
|
9
|
+
};
|
|
10
|
+
const result = await normalizeTable(table, schema);
|
|
11
|
+
const frame = await result.collect();
|
|
12
|
+
expect(frame.getColumn("name").get(0)).toEqual(value);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
describe("stringifyDurationField", () => {
|
|
16
|
+
it.each([
|
|
17
|
+
// ISO 8601 duration strings should be returned as-is
|
|
18
|
+
["P23DT23H", "P23DT23H"],
|
|
19
|
+
["P1Y2M3DT4H5M6S", "P1Y2M3DT4H5M6S"],
|
|
20
|
+
["PT30M", "PT30M"],
|
|
21
|
+
["P1D", "P1D"],
|
|
22
|
+
["PT1H", "PT1H"],
|
|
23
|
+
["P1W", "P1W"],
|
|
24
|
+
["PT0S", "PT0S"],
|
|
25
|
+
// Null handling
|
|
26
|
+
[null, ""],
|
|
27
|
+
])("%s -> %s", async (value, expected) => {
|
|
28
|
+
const table = pl.DataFrame([pl.Series("name", [value], pl.String)]).lazy();
|
|
29
|
+
const schema = {
|
|
30
|
+
fields: [{ name: "name", type: "duration" }],
|
|
31
|
+
};
|
|
32
|
+
const result = await denormalizeTable(table, schema);
|
|
33
|
+
const frame = await result.collect();
|
|
34
|
+
expect(frame.toRecords()[0]?.name).toEqual(expected);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVyYXRpb24uc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL2R1cmF0aW9uLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUV2RSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNyQyxhQUFhLEVBQ2IsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7UUFDN0IsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUN6RSxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBbUIsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1NBQ2xFLENBQUE7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZELENBQUMsQ0FDRixDQUFBO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRixRQUFRLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxFQUFFO0lBQ3RDLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixxREFBcUQ7UUFDckQsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO1FBQ3hCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUM7UUFDcEMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ2xCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztRQUNkLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUNoQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7UUFDZCxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFFaEIsZ0JBQWdCO1FBQ2hCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztLQUNYLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTtRQUN2QyxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRTFFLE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFtQixFQUFFLENBQUM7U0FDdEQsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3BELE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3RELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgZGVub3JtYWxpemVUYWJsZSwgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi4vLi4vdGFibGUvaW5kZXgudHNcIlxuXG5kZXNjcmliZShcInBhcnNlRHVyYXRpb25GaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1tcIlAyM0RUMjNIXCIsIFwiUDIzRFQyM0hcIiwge31dXSkoXG4gICAgXCIkMCAtPiAkMSAkMlwiLFxuICAgIGFzeW5jIChjZWxsLCB2YWx1ZSwgb3B0aW9ucykgPT4ge1xuICAgICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoW3BsLlNlcmllcyhcIm5hbWVcIiwgW2NlbGxdLCBwbC5TdHJpbmcpXSkubGF6eSgpXG4gICAgICBjb25zdCBzY2hlbWEgPSB7XG4gICAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiZHVyYXRpb25cIiBhcyBjb25zdCwgLi4ub3B0aW9ucyB9XSxcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgcmVzdWx0LmNvbGxlY3QoKVxuXG4gICAgICBleHBlY3QoZnJhbWUuZ2V0Q29sdW1uKFwibmFtZVwiKS5nZXQoMCkpLnRvRXF1YWwodmFsdWUpXG4gICAgfSxcbiAgKVxufSlcblxuZGVzY3JpYmUoXCJzdHJpbmdpZnlEdXJhdGlvbkZpZWxkXCIsICgpID0+IHtcbiAgaXQuZWFjaChbXG4gICAgLy8gSVNPIDg2MDEgZHVyYXRpb24gc3RyaW5ncyBzaG91bGQgYmUgcmV0dXJuZWQgYXMtaXNcbiAgICBbXCJQMjNEVDIzSFwiLCBcIlAyM0RUMjNIXCJdLFxuICAgIFtcIlAxWTJNM0RUNEg1TTZTXCIsIFwiUDFZMk0zRFQ0SDVNNlNcIl0sXG4gICAgW1wiUFQzME1cIiwgXCJQVDMwTVwiXSxcbiAgICBbXCJQMURcIiwgXCJQMURcIl0sXG4gICAgW1wiUFQxSFwiLCBcIlBUMUhcIl0sXG4gICAgW1wiUDFXXCIsIFwiUDFXXCJdLFxuICAgIFtcIlBUMFNcIiwgXCJQVDBTXCJdLFxuXG4gICAgLy8gTnVsbCBoYW5kbGluZ1xuICAgIFtudWxsLCBcIlwiXSxcbiAgXSkoXCIlcyAtPiAlc1wiLCBhc3luYyAodmFsdWUsIGV4cGVjdGVkKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbC5EYXRhRnJhbWUoW3BsLlNlcmllcyhcIm5hbWVcIiwgW3ZhbHVlXSwgcGwuU3RyaW5nKV0pLmxhenkoKVxuXG4gICAgY29uc3Qgc2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbeyBuYW1lOiBcIm5hbWVcIiwgdHlwZTogXCJkdXJhdGlvblwiIGFzIGNvbnN0IH1dLFxuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcblxuICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKVswXT8ubmFtZSkudG9FcXVhbChleHBlY3RlZClcbiAgfSlcbn0pXG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import geojson from "../../assets/geojson.json" with { type: "json" };
|
|
2
|
+
import topojson from "../../assets/topojson.json" with { type: "json" };
|
|
3
|
+
import { inspectJsonField } from "./json.js";
|
|
4
|
+
export async function inspectGeojsonField(field, table) {
|
|
5
|
+
return inspectJsonField(field, table, {
|
|
6
|
+
formatJsonSchema: field.format === "topojson" ? topojson : geojson,
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvanNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL3R5cGVzL2dlb2pzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxPQUFPLE1BQU0sMkJBQTJCLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFDckUsT0FBTyxRQUFRLE1BQU0sNEJBQTRCLENBQUMsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUE7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRTVDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsS0FBbUIsRUFBRSxLQUFZO0lBQ3pFLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtRQUNwQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPO0tBQ25FLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdlb2pzb25GaWVsZCB9IGZyb20gXCJAZnJpY3Rpb25sZXNzLXRzL21ldGFkYXRhXCJcbmltcG9ydCBnZW9qc29uIGZyb20gXCIuLi8uLi9hc3NldHMvZ2VvanNvbi5qc29uXCIgd2l0aCB7IHR5cGU6IFwianNvblwiIH1cbmltcG9ydCB0b3BvanNvbiBmcm9tIFwiLi4vLi4vYXNzZXRzL3RvcG9qc29uLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfVxuaW1wb3J0IHR5cGUgeyBUYWJsZSB9IGZyb20gXCIuLi8uLi90YWJsZS9pbmRleC50c1wiXG5pbXBvcnQgeyBpbnNwZWN0SnNvbkZpZWxkIH0gZnJvbSBcIi4vanNvbi50c1wiXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnNwZWN0R2VvanNvbkZpZWxkKGZpZWxkOiBHZW9qc29uRmllbGQsIHRhYmxlOiBUYWJsZSkge1xuICByZXR1cm4gaW5zcGVjdEpzb25GaWVsZChmaWVsZCwgdGFibGUsIHtcbiAgICBmb3JtYXRKc29uU2NoZW1hOiBmaWVsZC5mb3JtYXQgPT09IFwidG9wb2pzb25cIiA/IHRvcG9qc29uIDogZ2VvanNvbixcbiAgfSlcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|