@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.
Files changed (317) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +3 -0
  3. package/build/assets/geojson.json +216 -0
  4. package/build/assets/topojson.json +259 -0
  5. package/build/data/index.d.ts +2 -0
  6. package/build/data/index.js +2 -0
  7. package/build/data/record.d.ts +4 -0
  8. package/build/data/record.js +84 -0
  9. package/build/data/record.spec.d.ts +1 -0
  10. package/build/data/record.spec.js +269 -0
  11. package/build/dialect/Options.d.ts +3 -0
  12. package/build/dialect/Options.js +3 -0
  13. package/build/dialect/index.d.ts +2 -0
  14. package/build/dialect/index.js +2 -0
  15. package/build/dialect/infer.d.ts +4 -0
  16. package/build/dialect/infer.js +2 -0
  17. package/build/field/Field.d.ts +5 -0
  18. package/build/field/Field.js +2 -0
  19. package/build/field/Mapping.d.ts +11 -0
  20. package/build/field/Mapping.js +2 -0
  21. package/build/field/checks/enum.d.ts +8 -0
  22. package/build/field/checks/enum.js +71 -0
  23. package/build/field/checks/enum.spec.d.ts +1 -0
  24. package/build/field/checks/enum.spec.js +327 -0
  25. package/build/field/checks/maxLength.d.ts +7 -0
  26. package/build/field/checks/maxLength.js +17 -0
  27. package/build/field/checks/maxLength.spec.d.ts +1 -0
  28. package/build/field/checks/maxLength.spec.js +49 -0
  29. package/build/field/checks/maximum.d.ts +11 -0
  30. package/build/field/checks/maximum.js +73 -0
  31. package/build/field/checks/maximum.spec.d.ts +1 -0
  32. package/build/field/checks/maximum.spec.js +476 -0
  33. package/build/field/checks/minLength.d.ts +7 -0
  34. package/build/field/checks/minLength.js +17 -0
  35. package/build/field/checks/minLength.spec.d.ts +1 -0
  36. package/build/field/checks/minLength.spec.js +56 -0
  37. package/build/field/checks/minimum.d.ts +11 -0
  38. package/build/field/checks/minimum.js +73 -0
  39. package/build/field/checks/minimum.spec.d.ts +1 -0
  40. package/build/field/checks/minimum.spec.js +476 -0
  41. package/build/field/checks/pattern.d.ts +7 -0
  42. package/build/field/checks/pattern.js +17 -0
  43. package/build/field/checks/pattern.spec.d.ts +1 -0
  44. package/build/field/checks/pattern.spec.js +66 -0
  45. package/build/field/checks/required.d.ts +7 -0
  46. package/build/field/checks/required.js +14 -0
  47. package/build/field/checks/required.spec.d.ts +1 -0
  48. package/build/field/checks/required.spec.js +24 -0
  49. package/build/field/checks/type.d.ts +7 -0
  50. package/build/field/checks/type.js +14 -0
  51. package/build/field/checks/type.spec.d.ts +1 -0
  52. package/build/field/checks/type.spec.js +255 -0
  53. package/build/field/checks/unique.d.ts +7 -0
  54. package/build/field/checks/unique.js +17 -0
  55. package/build/field/checks/unique.spec.d.ts +1 -0
  56. package/build/field/checks/unique.spec.js +97 -0
  57. package/build/field/denormalize.d.ts +6 -0
  58. package/build/field/denormalize.js +13 -0
  59. package/build/field/desubstitute.d.ts +3 -0
  60. package/build/field/desubstitute.js +13 -0
  61. package/build/field/index.d.ts +8 -0
  62. package/build/field/index.js +6 -0
  63. package/build/field/inspect.d.ts +6 -0
  64. package/build/field/inspect.js +131 -0
  65. package/build/field/inspect.spec.d.ts +1 -0
  66. package/build/field/inspect.spec.js +385 -0
  67. package/build/field/narrow.d.ts +3 -0
  68. package/build/field/narrow.js +14 -0
  69. package/build/field/narrow.spec.d.ts +1 -0
  70. package/build/field/narrow.spec.js +52 -0
  71. package/build/field/normalize.d.ts +5 -0
  72. package/build/field/normalize.js +14 -0
  73. package/build/field/parse.d.ts +3 -0
  74. package/build/field/parse.js +47 -0
  75. package/build/field/parse.spec.d.ts +1 -0
  76. package/build/field/parse.spec.js +33 -0
  77. package/build/field/stringify.d.ts +3 -0
  78. package/build/field/stringify.js +43 -0
  79. package/build/field/stringify.spec.d.ts +1 -0
  80. package/build/field/stringify.spec.js +41 -0
  81. package/build/field/substitute.d.ts +3 -0
  82. package/build/field/substitute.js +16 -0
  83. package/build/field/types/array.d.ts +3 -0
  84. package/build/field/types/array.js +5 -0
  85. package/build/field/types/array.spec.d.ts +1 -0
  86. package/build/field/types/array.spec.js +358 -0
  87. package/build/field/types/boolean.d.ts +4 -0
  88. package/build/field/types/boolean.js +31 -0
  89. package/build/field/types/boolean.spec.d.ts +1 -0
  90. package/build/field/types/boolean.spec.js +76 -0
  91. package/build/field/types/date.d.ts +4 -0
  92. package/build/field/types/date.js +14 -0
  93. package/build/field/types/date.spec.d.ts +1 -0
  94. package/build/field/types/date.spec.js +52 -0
  95. package/build/field/types/datetime.d.ts +4 -0
  96. package/build/field/types/datetime.js +15 -0
  97. package/build/field/types/datetime.spec.d.ts +1 -0
  98. package/build/field/types/datetime.spec.js +62 -0
  99. package/build/field/types/duration.d.ts +4 -0
  100. package/build/field/types/duration.js +9 -0
  101. package/build/field/types/duration.spec.d.ts +1 -0
  102. package/build/field/types/duration.spec.js +37 -0
  103. package/build/field/types/geojson.d.ts +3 -0
  104. package/build/field/types/geojson.js +9 -0
  105. package/build/field/types/geojson.spec.d.ts +1 -0
  106. package/build/field/types/geojson.spec.js +522 -0
  107. package/build/field/types/geopoint.d.ts +4 -0
  108. package/build/field/types/geopoint.js +59 -0
  109. package/build/field/types/geopoint.spec.d.ts +1 -0
  110. package/build/field/types/geopoint.spec.js +173 -0
  111. package/build/field/types/integer.d.ts +4 -0
  112. package/build/field/types/integer.js +41 -0
  113. package/build/field/types/integer.spec.d.ts +1 -0
  114. package/build/field/types/integer.spec.js +102 -0
  115. package/build/field/types/json.d.ts +6 -0
  116. package/build/field/types/json.js +68 -0
  117. package/build/field/types/list.d.ts +4 -0
  118. package/build/field/types/list.js +30 -0
  119. package/build/field/types/list.spec.d.ts +1 -0
  120. package/build/field/types/list.spec.js +230 -0
  121. package/build/field/types/number.d.ts +4 -0
  122. package/build/field/types/number.js +50 -0
  123. package/build/field/types/number.spec.d.ts +1 -0
  124. package/build/field/types/number.spec.js +101 -0
  125. package/build/field/types/object.d.ts +3 -0
  126. package/build/field/types/object.js +5 -0
  127. package/build/field/types/object.spec.d.ts +1 -0
  128. package/build/field/types/object.spec.js +393 -0
  129. package/build/field/types/string.d.ts +4 -0
  130. package/build/field/types/string.js +32 -0
  131. package/build/field/types/string.spec.d.ts +1 -0
  132. package/build/field/types/string.spec.js +162 -0
  133. package/build/field/types/time.d.ts +4 -0
  134. package/build/field/types/time.js +18 -0
  135. package/build/field/types/time.spec.d.ts +1 -0
  136. package/build/field/types/time.spec.js +53 -0
  137. package/build/field/types/year.d.ts +4 -0
  138. package/build/field/types/year.js +16 -0
  139. package/build/field/types/year.spec.d.ts +1 -0
  140. package/build/field/types/year.spec.js +50 -0
  141. package/build/field/types/yearmonth.d.ts +4 -0
  142. package/build/field/types/yearmonth.js +14 -0
  143. package/build/field/types/yearmonth.spec.d.ts +1 -0
  144. package/build/field/types/yearmonth.spec.js +36 -0
  145. package/build/helpers.d.ts +4 -0
  146. package/build/helpers.js +12 -0
  147. package/build/index.d.ts +40 -0
  148. package/build/index.js +27 -0
  149. package/build/plugin.d.ts +27 -0
  150. package/build/plugin.js +2 -0
  151. package/build/plugins/arrow/index.d.ts +2 -0
  152. package/build/plugins/arrow/index.js +3 -0
  153. package/build/plugins/arrow/plugin.d.ts +7 -0
  154. package/build/plugins/arrow/plugin.js +22 -0
  155. package/build/plugins/arrow/plugin.spec.d.ts +1 -0
  156. package/build/plugins/arrow/plugin.spec.js +161 -0
  157. package/build/plugins/arrow/table/index.d.ts +2 -0
  158. package/build/plugins/arrow/table/index.js +3 -0
  159. package/build/plugins/arrow/table/load.d.ts +4 -0
  160. package/build/plugins/arrow/table/load.js +23 -0
  161. package/build/plugins/arrow/table/load.spec.d.ts +1 -0
  162. package/build/plugins/arrow/table/load.spec.js +56 -0
  163. package/build/plugins/arrow/table/save.d.ts +3 -0
  164. package/build/plugins/arrow/table/save.js +31 -0
  165. package/build/plugins/arrow/table/save.spec.d.ts +1 -0
  166. package/build/plugins/arrow/table/save.spec.js +81 -0
  167. package/build/plugins/csv/dialect/index.d.ts +1 -0
  168. package/build/plugins/csv/dialect/index.js +2 -0
  169. package/build/plugins/csv/dialect/infer.d.ts +4 -0
  170. package/build/plugins/csv/dialect/infer.js +44 -0
  171. package/build/plugins/csv/dialect/infer.spec.d.ts +1 -0
  172. package/build/plugins/csv/dialect/infer.spec.js +54 -0
  173. package/build/plugins/csv/index.d.ts +2 -0
  174. package/build/plugins/csv/index.js +3 -0
  175. package/build/plugins/csv/plugin.d.ts +8 -0
  176. package/build/plugins/csv/plugin.js +22 -0
  177. package/build/plugins/csv/plugin.spec.d.ts +1 -0
  178. package/build/plugins/csv/plugin.spec.js +161 -0
  179. package/build/plugins/csv/table/index.d.ts +2 -0
  180. package/build/plugins/csv/table/index.js +3 -0
  181. package/build/plugins/csv/table/load.d.ts +6 -0
  182. package/build/plugins/csv/table/load.js +86 -0
  183. package/build/plugins/csv/table/load.spec.d.ts +1 -0
  184. package/build/plugins/csv/table/load.spec.js +293 -0
  185. package/build/plugins/csv/table/save.d.ts +5 -0
  186. package/build/plugins/csv/table/save.js +29 -0
  187. package/build/plugins/csv/table/save.spec.d.ts +1 -0
  188. package/build/plugins/csv/table/save.spec.js +137 -0
  189. package/build/plugins/inline/index.d.ts +2 -0
  190. package/build/plugins/inline/index.js +3 -0
  191. package/build/plugins/inline/plugin.d.ts +7 -0
  192. package/build/plugins/inline/plugin.js +14 -0
  193. package/build/plugins/inline/table/index.d.ts +1 -0
  194. package/build/plugins/inline/table/index.js +2 -0
  195. package/build/plugins/inline/table/load.d.ts +6 -0
  196. package/build/plugins/inline/table/load.js +24 -0
  197. package/build/plugins/inline/table/load.spec.d.ts +1 -0
  198. package/build/plugins/inline/table/load.spec.js +160 -0
  199. package/build/plugins/json/buffer/decode.d.ts +4 -0
  200. package/build/plugins/json/buffer/decode.js +10 -0
  201. package/build/plugins/json/buffer/encode.d.ts +4 -0
  202. package/build/plugins/json/buffer/encode.js +8 -0
  203. package/build/plugins/json/buffer/index.d.ts +2 -0
  204. package/build/plugins/json/buffer/index.js +3 -0
  205. package/build/plugins/json/index.d.ts +2 -0
  206. package/build/plugins/json/index.js +3 -0
  207. package/build/plugins/json/plugin.d.ts +7 -0
  208. package/build/plugins/json/plugin.js +25 -0
  209. package/build/plugins/json/plugin.spec.d.ts +1 -0
  210. package/build/plugins/json/plugin.spec.js +163 -0
  211. package/build/plugins/json/table/index.d.ts +2 -0
  212. package/build/plugins/json/table/index.js +3 -0
  213. package/build/plugins/json/table/load.d.ts +6 -0
  214. package/build/plugins/json/table/load.js +55 -0
  215. package/build/plugins/json/table/load.spec.d.ts +1 -0
  216. package/build/plugins/json/table/load.spec.js +200 -0
  217. package/build/plugins/json/table/parse.d.ts +3 -0
  218. package/build/plugins/json/table/parse.js +6 -0
  219. package/build/plugins/json/table/save.d.ts +5 -0
  220. package/build/plugins/json/table/save.js +45 -0
  221. package/build/plugins/json/table/save.spec.d.ts +1 -0
  222. package/build/plugins/json/table/save.spec.js +147 -0
  223. package/build/plugins/ods/index.d.ts +2 -0
  224. package/build/plugins/ods/index.js +3 -0
  225. package/build/plugins/ods/plugin.d.ts +7 -0
  226. package/build/plugins/ods/plugin.js +23 -0
  227. package/build/plugins/ods/plugin.spec.d.ts +1 -0
  228. package/build/plugins/ods/plugin.spec.js +142 -0
  229. package/build/plugins/ods/table/index.d.ts +2 -0
  230. package/build/plugins/ods/table/index.js +3 -0
  231. package/build/plugins/ods/table/load.d.ts +4 -0
  232. package/build/plugins/ods/table/load.js +41 -0
  233. package/build/plugins/ods/table/load.spec.d.ts +1 -0
  234. package/build/plugins/ods/table/load.spec.js +167 -0
  235. package/build/plugins/ods/table/save.d.ts +3 -0
  236. package/build/plugins/ods/table/save.js +26 -0
  237. package/build/plugins/ods/table/save.spec.d.ts +1 -0
  238. package/build/plugins/ods/table/save.spec.js +75 -0
  239. package/build/plugins/ods/table/test.d.ts +5 -0
  240. package/build/plugins/ods/table/test.js +23 -0
  241. package/build/plugins/parquet/index.d.ts +2 -0
  242. package/build/plugins/parquet/index.js +3 -0
  243. package/build/plugins/parquet/plugin.d.ts +7 -0
  244. package/build/plugins/parquet/plugin.js +23 -0
  245. package/build/plugins/parquet/plugin.spec.d.ts +1 -0
  246. package/build/plugins/parquet/plugin.spec.js +142 -0
  247. package/build/plugins/parquet/table/index.d.ts +2 -0
  248. package/build/plugins/parquet/table/index.js +3 -0
  249. package/build/plugins/parquet/table/load.d.ts +4 -0
  250. package/build/plugins/parquet/table/load.js +23 -0
  251. package/build/plugins/parquet/table/load.spec.d.ts +1 -0
  252. package/build/plugins/parquet/table/load.spec.js +56 -0
  253. package/build/plugins/parquet/table/save.d.ts +3 -0
  254. package/build/plugins/parquet/table/save.js +32 -0
  255. package/build/plugins/parquet/table/save.spec.d.ts +1 -0
  256. package/build/plugins/parquet/table/save.spec.js +81 -0
  257. package/build/plugins/xlxs/index.d.ts +2 -0
  258. package/build/plugins/xlxs/index.js +3 -0
  259. package/build/plugins/xlxs/plugin.d.ts +7 -0
  260. package/build/plugins/xlxs/plugin.js +23 -0
  261. package/build/plugins/xlxs/plugin.spec.d.ts +1 -0
  262. package/build/plugins/xlxs/plugin.spec.js +142 -0
  263. package/build/plugins/xlxs/table/index.d.ts +2 -0
  264. package/build/plugins/xlxs/table/index.js +3 -0
  265. package/build/plugins/xlxs/table/load.d.ts +4 -0
  266. package/build/plugins/xlxs/table/load.js +43 -0
  267. package/build/plugins/xlxs/table/load.spec.d.ts +1 -0
  268. package/build/plugins/xlxs/table/load.spec.js +167 -0
  269. package/build/plugins/xlxs/table/save.d.ts +3 -0
  270. package/build/plugins/xlxs/table/save.js +28 -0
  271. package/build/plugins/xlxs/table/save.spec.d.ts +1 -0
  272. package/build/plugins/xlxs/table/save.spec.js +75 -0
  273. package/build/plugins/xlxs/table/test.d.ts +5 -0
  274. package/build/plugins/xlxs/table/test.js +23 -0
  275. package/build/schema/Mapping.d.ts +6 -0
  276. package/build/schema/Mapping.js +2 -0
  277. package/build/schema/Options.d.ts +22 -0
  278. package/build/schema/Options.js +2 -0
  279. package/build/schema/Schema.d.ts +4 -0
  280. package/build/schema/Schema.js +2 -0
  281. package/build/schema/helpers.d.ts +3 -0
  282. package/build/schema/helpers.js +6 -0
  283. package/build/schema/index.d.ts +8 -0
  284. package/build/schema/index.js +5 -0
  285. package/build/schema/infer.d.ts +13 -0
  286. package/build/schema/infer.js +199 -0
  287. package/build/schema/infer.spec.d.ts +1 -0
  288. package/build/schema/infer.spec.js +304 -0
  289. package/build/schema/match.d.ts +6 -0
  290. package/build/schema/match.js +8 -0
  291. package/build/table/Frame.d.ts +2 -0
  292. package/build/table/Frame.js +2 -0
  293. package/build/table/Table.d.ts +2 -0
  294. package/build/table/Table.js +2 -0
  295. package/build/table/checks/unique.d.ts +7 -0
  296. package/build/table/checks/unique.js +23 -0
  297. package/build/table/checks/unique.spec.d.ts +1 -0
  298. package/build/table/checks/unique.spec.js +187 -0
  299. package/build/table/denormalize.d.ts +6 -0
  300. package/build/table/denormalize.js +15 -0
  301. package/build/table/helpers.d.ts +19 -0
  302. package/build/table/helpers.js +62 -0
  303. package/build/table/helpers.spec.d.ts +1 -0
  304. package/build/table/helpers.spec.js +352 -0
  305. package/build/table/index.d.ts +9 -0
  306. package/build/table/index.js +8 -0
  307. package/build/table/inspect.d.ts +8 -0
  308. package/build/table/inspect.js +165 -0
  309. package/build/table/inspect.spec.d.ts +1 -0
  310. package/build/table/inspect.spec.js +335 -0
  311. package/build/table/normalize.d.ts +6 -0
  312. package/build/table/normalize.js +27 -0
  313. package/build/table/normalize.spec.d.ts +1 -0
  314. package/build/table/normalize.spec.js +222 -0
  315. package/build/table/query.d.ts +3 -0
  316. package/build/table/query.js +6 -0
  317. package/package.json +45 -0
@@ -0,0 +1,222 @@
1
+ import * as pl from "nodejs-polars";
2
+ import { describe, expect, it } from "vitest";
3
+ import { normalizeTable } from "./normalize.js";
4
+ describe("normalizeTable", () => {
5
+ it("should work with schema", async () => {
6
+ const table = pl
7
+ .DataFrame({
8
+ id: [1, 2],
9
+ name: ["english", "中文"],
10
+ })
11
+ .lazy();
12
+ const schema = {
13
+ fields: [
14
+ { name: "id", type: "integer" },
15
+ { name: "name", type: "string" },
16
+ ],
17
+ };
18
+ const records = [
19
+ { id: 1, name: "english" },
20
+ { id: 2, name: "中文" },
21
+ ];
22
+ const result = await normalizeTable(table, schema);
23
+ const frame = await result.collect();
24
+ expect(frame.toRecords()).toEqual(records);
25
+ });
26
+ it("should work with less fields in data", async () => {
27
+ const table = pl
28
+ .DataFrame({
29
+ id: [1, 2],
30
+ name: ["english", "中文"],
31
+ })
32
+ .lazy();
33
+ const schema = {
34
+ fields: [
35
+ { name: "id", type: "integer" },
36
+ { name: "name", type: "string" },
37
+ { name: "other", type: "boolean" },
38
+ ],
39
+ };
40
+ const records = [
41
+ { id: 1, name: "english", other: null },
42
+ { id: 2, name: "中文", other: null },
43
+ ];
44
+ const result = await normalizeTable(table, schema);
45
+ const frame = await result.collect();
46
+ expect(frame.toRecords()).toEqual(records);
47
+ });
48
+ it("should work with more fields in data", async () => {
49
+ const table = pl
50
+ .DataFrame({
51
+ id: [1, 2],
52
+ name: ["english", "中文"],
53
+ other: [true, false],
54
+ })
55
+ .lazy();
56
+ const schema = {
57
+ fields: [
58
+ { name: "id", type: "integer" },
59
+ { name: "name", type: "string" },
60
+ ],
61
+ };
62
+ const records = [
63
+ { id: 1, name: "english" },
64
+ { id: 2, name: "中文" },
65
+ ];
66
+ const result = await normalizeTable(table, schema);
67
+ const frame = await result.collect();
68
+ expect(frame.toRecords()).toEqual(records);
69
+ });
70
+ it("should work based on fields order", async () => {
71
+ const table = pl
72
+ .DataFrame({
73
+ field1: [1, 2],
74
+ field2: ["english", "中文"],
75
+ })
76
+ .lazy();
77
+ const schema = {
78
+ fields: [
79
+ { name: "id", type: "integer" },
80
+ { name: "name", type: "string" },
81
+ ],
82
+ };
83
+ const records = [
84
+ { id: 1, name: "english" },
85
+ { id: 2, name: "中文" },
86
+ ];
87
+ const result = await normalizeTable(table, schema);
88
+ const frame = await result.collect();
89
+ expect(frame.toRecords()).toEqual(records);
90
+ });
91
+ it("should work based on field names (equal)", async () => {
92
+ const table = pl
93
+ .DataFrame({
94
+ name: ["english", "中文"],
95
+ id: [1, 2],
96
+ })
97
+ .lazy();
98
+ const schema = {
99
+ fieldsMatch: "equal",
100
+ fields: [
101
+ { name: "id", type: "integer" },
102
+ { name: "name", type: "string" },
103
+ ],
104
+ };
105
+ const records = [
106
+ { id: 1, name: "english" },
107
+ { id: 2, name: "中文" },
108
+ ];
109
+ const result = await normalizeTable(table, schema);
110
+ const frame = await result.collect();
111
+ expect(frame.toRecords()).toEqual(records);
112
+ });
113
+ it("should work based on field names (subset)", async () => {
114
+ const table = pl
115
+ .DataFrame({
116
+ name: ["english", "中文"],
117
+ id: [1, 2],
118
+ })
119
+ .lazy();
120
+ const schema = {
121
+ fieldsMatch: "subset",
122
+ fields: [
123
+ { name: "id", type: "integer" },
124
+ { name: "name", type: "string" },
125
+ ],
126
+ };
127
+ const records = [
128
+ { id: 1, name: "english" },
129
+ { id: 2, name: "中文" },
130
+ ];
131
+ const result = await normalizeTable(table, schema);
132
+ const frame = await result.collect();
133
+ expect(frame.toRecords()).toEqual(records);
134
+ });
135
+ it("should work based on field names (superset)", async () => {
136
+ const table = pl
137
+ .DataFrame({
138
+ name: ["english", "中文"],
139
+ id: [1, 2],
140
+ })
141
+ .lazy();
142
+ const schema = {
143
+ fieldsMatch: "superset",
144
+ fields: [
145
+ { name: "id", type: "integer" },
146
+ { name: "name", type: "string" },
147
+ ],
148
+ };
149
+ const records = [
150
+ { id: 1, name: "english" },
151
+ { id: 2, name: "中文" },
152
+ ];
153
+ const result = await normalizeTable(table, schema);
154
+ const frame = await result.collect();
155
+ expect(frame.toRecords()).toEqual(records);
156
+ });
157
+ it("should work based on field names (partial)", async () => {
158
+ const table = pl
159
+ .DataFrame({
160
+ name: ["english", "中文"],
161
+ id: [1, 2],
162
+ })
163
+ .lazy();
164
+ const schema = {
165
+ fieldsMatch: "partial",
166
+ fields: [
167
+ { name: "id", type: "integer" },
168
+ { name: "name", type: "string" },
169
+ ],
170
+ };
171
+ const records = [
172
+ { id: 1, name: "english" },
173
+ { id: 2, name: "中文" },
174
+ ];
175
+ const result = await normalizeTable(table, schema);
176
+ const frame = await result.collect();
177
+ expect(frame.toRecords()).toEqual(records);
178
+ });
179
+ it("should parse string columns", async () => {
180
+ const table = pl
181
+ .DataFrame({
182
+ id: ["1", "2"],
183
+ name: ["english", "中文"],
184
+ })
185
+ .lazy();
186
+ const schema = {
187
+ fields: [
188
+ { name: "id", type: "integer" },
189
+ { name: "name", type: "string" },
190
+ ],
191
+ };
192
+ const records = [
193
+ { id: 1, name: "english" },
194
+ { id: 2, name: "中文" },
195
+ ];
196
+ const result = await normalizeTable(table, schema);
197
+ const frame = await result.collect();
198
+ expect(frame.toRecords()).toEqual(records);
199
+ });
200
+ it("should read type errors as nulls", async () => {
201
+ const table = pl
202
+ .DataFrame({
203
+ id: [1, 2],
204
+ name: ["english", "中文"],
205
+ })
206
+ .lazy();
207
+ const schema = {
208
+ fields: [
209
+ { name: "id", type: "integer" },
210
+ { name: "name", type: "integer" },
211
+ ],
212
+ };
213
+ const records = [
214
+ { id: 1, name: null },
215
+ { id: 2, name: null },
216
+ ];
217
+ const result = await normalizeTable(table, schema);
218
+ const frame = await result.collect();
219
+ expect(frame.toRecords()).toEqual(records);
220
+ });
221
+ });
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9ybWFsaXplLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90YWJsZS9ub3JtYWxpemUuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRS9DLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLHlCQUF5QixFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLEVBQUU7YUFDYixTQUFTLENBQUM7WUFDVCxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ1YsSUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQztTQUN4QixDQUFDO2FBQ0QsSUFBSSxFQUFFLENBQUE7UUFFVCxNQUFNLE1BQU0sR0FBVztZQUNyQixNQUFNLEVBQUU7Z0JBQ04sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQy9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2FBQ2pDO1NBQ0YsQ0FBQTtRQUVELE1BQU0sT0FBTyxHQUFHO1lBQ2QsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDMUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7U0FDdEIsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNwQyxN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TUFBTSxDQUFDLENBQUE7UUFDbEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDcEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QyxDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTY2hlbWEgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgbm9ybWFsaXplVGFibGUgfSBmcm9tIFwiLi9ub3JtYWxpemUudHNcIlxuXG5kZXNjcmliZShcIm5vcm1hbGl6ZVRhYmxlXCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgd29yayB3aXRoIHNjaGVtYVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbFxuICAgICAgLkRhdGFGcmFtZSh7XG4gICAgICAgIGlkOiBbMSwgMl0sXG4gICAgICAgIG5hbWU6IFtcImVuZ2xpc2hcIiwgXCLkuK3mlodcIl0sXG4gICAgICB9KVxuICAgICAgLmxhenkoKVxuXG4gICAgY29uc3Qgc2NoZW1hOiBTY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKCkpLnRvRXF1YWwocmVjb3JkcylcbiAgfSlcblxuICBpdChcInNob3VsZCB3b3JrIHdpdGggbGVzcyBmaWVsZHMgaW4gZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbFxuICAgICAgLkRhdGFGcmFtZSh7XG4gICAgICAgIGlkOiBbMSwgMl0sXG4gICAgICAgIG5hbWU6IFtcImVuZ2xpc2hcIiwgXCLkuK3mlodcIl0sXG4gICAgICB9KVxuICAgICAgLmxhenkoKVxuXG4gICAgY29uc3Qgc2NoZW1hOiBTY2hlbWEgPSB7XG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIm90aGVyXCIsIHR5cGU6IFwiYm9vbGVhblwiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXG4gICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiwgb3RoZXI6IG51bGwgfSxcbiAgICAgIHsgaWQ6IDIsIG5hbWU6IFwi5Lit5paHXCIsIG90aGVyOiBudWxsIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKCkpLnRvRXF1YWwocmVjb3JkcylcbiAgfSlcblxuICBpdChcInNob3VsZCB3b3JrIHdpdGggbW9yZSBmaWVsZHMgaW4gZGF0YVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbFxuICAgICAgLkRhdGFGcmFtZSh7XG4gICAgICAgIGlkOiBbMSwgMl0sXG4gICAgICAgIG5hbWU6IFtcImVuZ2xpc2hcIiwgXCLkuK3mlodcIl0sXG4gICAgICAgIG90aGVyOiBbdHJ1ZSwgZmFsc2VdLFxuICAgICAgfSlcbiAgICAgIC5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYTogU2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXG4gICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogXCLkuK3mlodcIiB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG4gICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpKS50b0VxdWFsKHJlY29yZHMpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgd29yayBiYXNlZCBvbiBmaWVsZHMgb3JkZXJcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gcGxcbiAgICAgIC5EYXRhRnJhbWUoe1xuICAgICAgICBmaWVsZDE6IFsxLCAyXSxcbiAgICAgICAgZmllbGQyOiBbXCJlbmdsaXNoXCIsIFwi5Lit5paHXCJdLFxuICAgICAgfSlcbiAgICAgIC5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYTogU2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXG4gICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogXCLkuK3mlodcIiB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG4gICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpKS50b0VxdWFsKHJlY29yZHMpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgd29yayBiYXNlZCBvbiBmaWVsZCBuYW1lcyAoZXF1YWwpXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsXG4gICAgICAuRGF0YUZyYW1lKHtcbiAgICAgICAgbmFtZTogW1wiZW5nbGlzaFwiLCBcIuS4reaWh1wiXSxcbiAgICAgICAgaWQ6IFsxLCAyXSxcbiAgICAgIH0pXG4gICAgICAubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWE6IFNjaGVtYSA9IHtcbiAgICAgIGZpZWxkc01hdGNoOiBcImVxdWFsXCIsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKCkpLnRvRXF1YWwocmVjb3JkcylcbiAgfSlcblxuICBpdChcInNob3VsZCB3b3JrIGJhc2VkIG9uIGZpZWxkIG5hbWVzIChzdWJzZXQpXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsXG4gICAgICAuRGF0YUZyYW1lKHtcbiAgICAgICAgbmFtZTogW1wiZW5nbGlzaFwiLCBcIuS4reaWh1wiXSxcbiAgICAgICAgaWQ6IFsxLCAyXSxcbiAgICAgIH0pXG4gICAgICAubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWE6IFNjaGVtYSA9IHtcbiAgICAgIGZpZWxkc01hdGNoOiBcInN1YnNldFwiLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcInN0cmluZ1wiIH0sXG4gICAgICBdLFxuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZHMgPSBbXG4gICAgICB7IGlkOiAxLCBuYW1lOiBcImVuZ2xpc2hcIiB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogXCLkuK3mlodcIiB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG4gICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpKS50b0VxdWFsKHJlY29yZHMpXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgd29yayBiYXNlZCBvbiBmaWVsZCBuYW1lcyAoc3VwZXJzZXQpXCIsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YWJsZSA9IHBsXG4gICAgICAuRGF0YUZyYW1lKHtcbiAgICAgICAgbmFtZTogW1wiZW5nbGlzaFwiLCBcIuS4reaWh1wiXSxcbiAgICAgICAgaWQ6IFsxLCAyXSxcbiAgICAgIH0pXG4gICAgICAubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWE6IFNjaGVtYSA9IHtcbiAgICAgIGZpZWxkc01hdGNoOiBcInN1cGVyc2V0XCIsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKCkpLnRvRXF1YWwocmVjb3JkcylcbiAgfSlcblxuICBpdChcInNob3VsZCB3b3JrIGJhc2VkIG9uIGZpZWxkIG5hbWVzIChwYXJ0aWFsKVwiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbFxuICAgICAgLkRhdGFGcmFtZSh7XG4gICAgICAgIG5hbWU6IFtcImVuZ2xpc2hcIiwgXCLkuK3mlodcIl0sXG4gICAgICAgIGlkOiBbMSwgMl0sXG4gICAgICB9KVxuICAgICAgLmxhenkoKVxuXG4gICAgY29uc3Qgc2NoZW1hOiBTY2hlbWEgPSB7XG4gICAgICBmaWVsZHNNYXRjaDogXCJwYXJ0aWFsXCIsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBuYW1lOiBcImlkXCIsIHR5cGU6IFwiaW50ZWdlclwiIH0sXG4gICAgICAgIHsgbmFtZTogXCJuYW1lXCIsIHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkcyA9IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6IFwiZW5nbGlzaFwiIH0sXG4gICAgICB7IGlkOiAyLCBuYW1lOiBcIuS4reaWh1wiIH0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9ybWFsaXplVGFibGUodGFibGUsIHNjaGVtYSlcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHJlc3VsdC5jb2xsZWN0KClcbiAgICBleHBlY3QoZnJhbWUudG9SZWNvcmRzKCkpLnRvRXF1YWwocmVjb3JkcylcbiAgfSlcblxuICBpdChcInNob3VsZCBwYXJzZSBzdHJpbmcgY29sdW1uc1wiLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFibGUgPSBwbFxuICAgICAgLkRhdGFGcmFtZSh7XG4gICAgICAgIGlkOiBbXCIxXCIsIFwiMlwiXSxcbiAgICAgICAgbmFtZTogW1wiZW5nbGlzaFwiLCBcIuS4reaWh1wiXSxcbiAgICAgIH0pXG4gICAgICAubGF6eSgpXG5cbiAgICBjb25zdCBzY2hlbWE6IFNjaGVtYSA9IHtcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IG5hbWU6IFwiaWRcIiwgdHlwZTogXCJpbnRlZ2VyXCIgfSxcbiAgICAgICAgeyBuYW1lOiBcIm5hbWVcIiwgdHlwZTogXCJzdHJpbmdcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZWNvcmRzID0gW1xuICAgICAgeyBpZDogMSwgbmFtZTogXCJlbmdsaXNoXCIgfSxcbiAgICAgIHsgaWQ6IDIsIG5hbWU6IFwi5Lit5paHXCIgfSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBub3JtYWxpemVUYWJsZSh0YWJsZSwgc2NoZW1hKVxuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgcmVzdWx0LmNvbGxlY3QoKVxuICAgIGV4cGVjdChmcmFtZS50b1JlY29yZHMoKSkudG9FcXVhbChyZWNvcmRzKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIHJlYWQgdHlwZSBlcnJvcnMgYXMgbnVsbHNcIiwgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlID0gcGxcbiAgICAgIC5EYXRhRnJhbWUoe1xuICAgICAgICBpZDogWzEsIDJdLFxuICAgICAgICBuYW1lOiBbXCJlbmdsaXNoXCIsIFwi5Lit5paHXCJdLFxuICAgICAgfSlcbiAgICAgIC5sYXp5KClcblxuICAgIGNvbnN0IHNjaGVtYTogU2NoZW1hID0ge1xuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgbmFtZTogXCJpZFwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgICB7IG5hbWU6IFwibmFtZVwiLCB0eXBlOiBcImludGVnZXJcIiB9LFxuICAgICAgXSxcbiAgICB9XG5cbiAgICBjb25zdCByZWNvcmRzID0gW1xuICAgICAgeyBpZDogMSwgbmFtZTogbnVsbCB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogbnVsbCB9LFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG5vcm1hbGl6ZVRhYmxlKHRhYmxlLCBzY2hlbWEpXG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCByZXN1bHQuY29sbGVjdCgpXG4gICAgZXhwZWN0KGZyYW1lLnRvUmVjb3JkcygpKS50b0VxdWFsKHJlY29yZHMpXG4gIH0pXG59KVxuIl19
@@ -0,0 +1,3 @@
1
+ import * as pl from "nodejs-polars";
2
+ import type { Table } from "./Table.ts";
3
+ export declare function queryTable(table: Table, query: string): pl.LazyDataFrame<any>;
@@ -0,0 +1,6 @@
1
+ import * as pl from "nodejs-polars";
2
+ export function queryTable(table, query) {
3
+ const context = pl.SQLContext({ self: table });
4
+ return context.execute(query);
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90YWJsZS9xdWVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUduQyxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQVksRUFBRSxLQUFhO0lBQ3BELE1BQU0sT0FBTyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUM5QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgVGFibGUgfSBmcm9tIFwiLi9UYWJsZS50c1wiXG5cbmV4cG9ydCBmdW5jdGlvbiBxdWVyeVRhYmxlKHRhYmxlOiBUYWJsZSwgcXVlcnk6IHN0cmluZykge1xuICBjb25zdCBjb250ZXh0ID0gcGwuU1FMQ29udGV4dCh7IHNlbGY6IHRhYmxlIH0pXG4gIHJldHVybiBjb250ZXh0LmV4ZWN1dGUocXVlcnkpXG59XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@frictionless-ts/table",
3
+ "type": "module",
4
+ "version": "1.0.1",
5
+ "exports": "./build/index.js",
6
+ "sideEffects": false,
7
+ "files": [
8
+ "build"
9
+ ],
10
+ "license": "MIT",
11
+ "author": "Evgeny Karev",
12
+ "repository": "https://github.com/frictionlessdata/frictionless-ts",
13
+ "description": "Data Package implementation in TypeScript.",
14
+ "keywords": [
15
+ "frictionless",
16
+ "data",
17
+ "polars",
18
+ "dataframe",
19
+ "datapackage",
20
+ "tableschema",
21
+ "typescript",
22
+ "validation",
23
+ "quality",
24
+ "fair",
25
+ "table",
26
+ "arrow",
27
+ "csv",
28
+ "inline",
29
+ "json",
30
+ "ods",
31
+ "parquet",
32
+ "xlsx"
33
+ ],
34
+ "dependencies": {
35
+ "csv-sniffer": "^0.1.1",
36
+ "nodejs-polars": "^0.22.2",
37
+ "p-all": "^5.0.1",
38
+ "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
39
+ "@frictionless-ts/metadata": "1.0.1",
40
+ "@frictionless-ts/dataset": "1.0.1"
41
+ },
42
+ "scripts": {
43
+ "build": "tsc"
44
+ }
45
+ }