UNPKG

@dpkit/table

Version:

Data Package implementation in TypeScript.

34 lines 4.96 kB
import { DataFrame } from "nodejs-polars"; import { describe, expect, it } from "vitest"; import { processTable } from "../../table/index.js"; describe("parseGeojsonField", () => { it.each([ // Valid JSON objects ['{"name":"John","age":30}', { name: "John", age: 30 }], ['{"numbers":[1,2,3]}', { numbers: [1, 2, 3] }], ['{"nested":{"prop":"value"}}', { nested: { prop: "value" } }], ["{}", {}], // JSON but not an object ["[1,2,3]", null], ['["a","b","c"]', null], // Trimming whitespace //[' {"name":"John"} ', { name: "John" }], //['\t{"name":"John"}\n', { name: "John" }], // Invalid JSON //["{invalid}", null], ["not json", null], ["", null], ["null", null], ["undefined", null], ])("%s -> %s", async (cell, value) => { const table = DataFrame({ name: [cell] }).lazy(); const schema = { fields: [{ name: "name", type: "geojson" }], }; const ldf = await processTable(table, { schema }); const df = await ldf.collect(); const res = df.getColumn("name").get(0); expect(res ? JSON.parse(res) : res).toEqual(value); }); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvanNvbi5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZmllbGQvdHlwZXMvZ2VvanNvbi5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDekMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVuRCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO0lBQ2pDLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixxQkFBcUI7UUFDckIsQ0FBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZELENBQUMscUJBQXFCLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0MsQ0FBQyw2QkFBNkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQzlELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUVWLHlCQUF5QjtRQUN6QixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7UUFDakIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDO1FBRXZCLHNCQUFzQjtRQUN0QiwwQ0FBMEM7UUFDMUMsNENBQTRDO1FBRTVDLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO1FBQ2xCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQztRQUNWLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUNkLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztLQUNwQixDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2hELE1BQU0sTUFBTSxHQUFHO1lBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFrQixFQUFFLENBQUM7U0FDckQsQ0FBQTtRQUVELE1BQU0sR0FBRyxHQUFHLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDakQsTUFBTSxFQUFFLEdBQUcsTUFBTSxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFOUIsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhRnJhbWUgfSBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgcHJvY2Vzc1RhYmxlIH0gZnJvbSBcIi4uLy4uL3RhYmxlL2luZGV4LnRzXCJcblxuZGVzY3JpYmUoXCJwYXJzZUdlb2pzb25GaWVsZFwiLCAoKSA9PiB7XG4gIGl0LmVhY2goW1xuICAgIC8vIFZhbGlkIEpTT04gb2JqZWN0c1xuICAgIFsne1wibmFtZVwiOlwiSm9oblwiLFwiYWdlXCI6MzB9JywgeyBuYW1lOiBcIkpvaG5cIiwgYWdlOiAzMCB9XSxcbiAgICBbJ3tcIm51bWJlcnNcIjpbMSwyLDNdfScsIHsgbnVtYmVyczogWzEsIDIsIDNdIH1dLFxuICAgIFsne1wibmVzdGVkXCI6e1wicHJvcFwiOlwidmFsdWVcIn19JywgeyBuZXN0ZWQ6IHsgcHJvcDogXCJ2YWx1ZVwiIH0gfV0sXG4gICAgW1wie31cIiwge31dLFxuXG4gICAgLy8gSlNPTiBidXQgbm90IGFuIG9iamVjdFxuICAgIFtcIlsxLDIsM11cIiwgbnVsbF0sXG4gICAgWydbXCJhXCIsXCJiXCIsXCJjXCJdJywgbnVsbF0sXG5cbiAgICAvLyBUcmltbWluZyB3aGl0ZXNwYWNlXG4gICAgLy9bJyB7XCJuYW1lXCI6XCJKb2huXCJ9ICcsIHsgbmFtZTogXCJKb2huXCIgfV0sXG4gICAgLy9bJ1xcdHtcIm5hbWVcIjpcIkpvaG5cIn1cXG4nLCB7IG5hbWU6IFwiSm9oblwiIH1dLFxuXG4gICAgLy8gSW52YWxpZCBKU09OXG4gICAgLy9bXCJ7aW52YWxpZH1cIiwgbnVsbF0sXG4gICAgW1wibm90IGpzb25cIiwgbnVsbF0sXG4gICAgW1wiXCIsIG51bGxdLFxuICAgIFtcIm51bGxcIiwgbnVsbF0sXG4gICAgW1widW5kZWZpbmVkXCIsIG51bGxdLFxuICBdKShcIiVzIC0+ICVzXCIsIGFzeW5jIChjZWxsLCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gRGF0YUZyYW1lKHsgbmFtZTogW2NlbGxdIH0pLmxhenkoKVxuICAgIGNvbnN0IHNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW3sgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwiZ2VvanNvblwiIGFzIGNvbnN0IH1dLFxuICAgIH1cblxuICAgIGNvbnN0IGxkZiA9IGF3YWl0IHByb2Nlc3NUYWJsZSh0YWJsZSwgeyBzY2hlbWEgfSlcbiAgICBjb25zdCBkZiA9IGF3YWl0IGxkZi5jb2xsZWN0KClcblxuICAgIGNvbnN0IHJlcyA9IGRmLmdldENvbHVtbihcIm5hbWVcIikuZ2V0KDApXG4gICAgZXhwZWN0KHJlcyA/IEpTT04ucGFyc2UocmVzKSA6IHJlcykudG9FcXVhbCh2YWx1ZSlcbiAgfSlcbn0pXG4iXX0=