@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,269 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { getRecordsFromRows } from "./record.js";
3
+ describe("getRecordsFromRows", () => {
4
+ it("should convert rows to records with default header", () => {
5
+ const rows = [
6
+ ["name", "age", "city"],
7
+ ["Alice", 30, "NYC"],
8
+ ["Bob", 25, "LA"],
9
+ ];
10
+ const result = getRecordsFromRows(rows);
11
+ expect(result).toEqual([
12
+ { name: "Alice", age: 30, city: "NYC" },
13
+ { name: "Bob", age: 25, city: "LA" },
14
+ ]);
15
+ });
16
+ it("should handle single row with header", () => {
17
+ const rows = [["name", "age", "city"]];
18
+ const result = getRecordsFromRows(rows);
19
+ expect(result).toEqual([]);
20
+ });
21
+ it("should handle empty rows", () => {
22
+ const rows = [];
23
+ const result = getRecordsFromRows(rows);
24
+ expect(result).toEqual([]);
25
+ });
26
+ it("should handle rows without header when header is false", () => {
27
+ const rows = [
28
+ ["Alice", 30, "NYC"],
29
+ ["Bob", 25, "LA"],
30
+ ];
31
+ const result = getRecordsFromRows(rows, { header: false });
32
+ expect(result).toEqual([
33
+ { field1: "Alice", field2: 30, field3: "NYC" },
34
+ { field1: "Bob", field2: 25, field3: "LA" },
35
+ ]);
36
+ });
37
+ it("should handle custom header rows", () => {
38
+ const rows = [
39
+ ["skip this row"],
40
+ ["name", "age", "city"],
41
+ ["Alice", 30, "NYC"],
42
+ ["Bob", 25, "LA"],
43
+ ];
44
+ const result = getRecordsFromRows(rows, { headerRows: [2] });
45
+ expect(result).toEqual([
46
+ { name: "Alice", age: 30, city: "NYC" },
47
+ { name: "Bob", age: 25, city: "LA" },
48
+ ]);
49
+ });
50
+ it("should handle multiple header rows with default join", () => {
51
+ const rows = [
52
+ ["first", "last", "contact"],
53
+ ["name", "name", "email"],
54
+ ["Alice", "Smith", "alice@example.com"],
55
+ ["Bob", "Jones", "bob@example.com"],
56
+ ];
57
+ const result = getRecordsFromRows(rows, { headerRows: [1, 2] });
58
+ expect(result).toEqual([
59
+ {
60
+ "first name": "Alice",
61
+ "last name": "Smith",
62
+ "contact email": "alice@example.com",
63
+ },
64
+ {
65
+ "first name": "Bob",
66
+ "last name": "Jones",
67
+ "contact email": "bob@example.com",
68
+ },
69
+ ]);
70
+ });
71
+ it("should handle multiple header rows with custom join", () => {
72
+ const rows = [
73
+ ["user", "user", "meta"],
74
+ ["first", "last", "created"],
75
+ ["Alice", "Smith", "2023-01-01"],
76
+ ["Bob", "Jones", "2023-01-02"],
77
+ ];
78
+ const result = getRecordsFromRows(rows, {
79
+ headerRows: [1, 2],
80
+ headerJoin: "_",
81
+ });
82
+ expect(result).toEqual([
83
+ { user_first: "Alice", user_last: "Smith", meta_created: "2023-01-01" },
84
+ { user_first: "Bob", user_last: "Jones", meta_created: "2023-01-02" },
85
+ ]);
86
+ });
87
+ it("should skip comment rows by row number", () => {
88
+ const rows = [
89
+ ["name", "age", "city"],
90
+ ["Alice", 30, "NYC"],
91
+ ["# Comment row", "ignored", "data"],
92
+ ["Bob", 25, "LA"],
93
+ ];
94
+ const result = getRecordsFromRows(rows, { commentRows: [3] });
95
+ expect(result).toEqual([
96
+ { name: "Alice", age: 30, city: "NYC" },
97
+ { name: "Bob", age: 25, city: "LA" },
98
+ ]);
99
+ });
100
+ it("should skip rows with comment character", () => {
101
+ const rows = [
102
+ ["name", "age", "city"],
103
+ ["Alice", 30, "NYC"],
104
+ ["# Comment", "ignored", "data"],
105
+ ["Bob", 25, "LA"],
106
+ ["Regular row", "data", "value"],
107
+ ];
108
+ const result = getRecordsFromRows(rows, { commentChar: "#" });
109
+ expect(result).toEqual([
110
+ { name: "Alice", age: 30, city: "NYC" },
111
+ { name: "Bob", age: 25, city: "LA" },
112
+ { name: "Regular row", age: "data", city: "value" },
113
+ ]);
114
+ });
115
+ it("should skip rows with multiple comment characters", () => {
116
+ const rows = [
117
+ ["name", "age", "city"],
118
+ ["Alice", 30, "NYC"],
119
+ ["# Comment 1", "ignored", "data"],
120
+ ["Bob", 25, "LA"],
121
+ ["## Comment 2", "ignored", "data"],
122
+ ];
123
+ const result = getRecordsFromRows(rows, { commentChar: "#" });
124
+ expect(result).toEqual([
125
+ { name: "Alice", age: 30, city: "NYC" },
126
+ { name: "Bob", age: 25, city: "LA" },
127
+ ]);
128
+ });
129
+ it("should not skip rows when first cell is not string", () => {
130
+ const rows = [
131
+ ["name", "age", "city"],
132
+ ["Alice", 30, "NYC"],
133
+ [123, "data", "test"],
134
+ ["Bob", 25, "LA"],
135
+ ];
136
+ const result = getRecordsFromRows(rows, { commentChar: "#" });
137
+ expect(result).toEqual([
138
+ { name: "Alice", age: 30, city: "NYC" },
139
+ { name: 123, age: "data", city: "test" },
140
+ { name: "Bob", age: 25, city: "LA" },
141
+ ]);
142
+ });
143
+ it("should handle rows with different lengths", () => {
144
+ const rows = [
145
+ ["name", "age", "city", "country"],
146
+ ["Alice", 30, "NYC"],
147
+ ["Bob", 25, "LA", "USA"],
148
+ ["Charlie"],
149
+ ];
150
+ const result = getRecordsFromRows(rows);
151
+ expect(result).toEqual([
152
+ { name: "Alice", age: 30, city: "NYC", country: undefined },
153
+ { name: "Bob", age: 25, city: "LA", country: "USA" },
154
+ {
155
+ name: "Charlie",
156
+ age: undefined,
157
+ city: undefined,
158
+ country: undefined,
159
+ },
160
+ ]);
161
+ });
162
+ it("should handle null and undefined values", () => {
163
+ const rows = [
164
+ ["name", "age", "city"],
165
+ ["Alice", null, undefined],
166
+ [null, 25, "LA"],
167
+ ];
168
+ const result = getRecordsFromRows(rows);
169
+ expect(result).toEqual([
170
+ { name: "Alice", age: null, city: undefined },
171
+ { name: null, age: 25, city: "LA" },
172
+ ]);
173
+ });
174
+ it("should handle boolean and number types", () => {
175
+ const rows = [
176
+ ["name", "active", "count"],
177
+ ["Alice", true, 100],
178
+ ["Bob", false, 0],
179
+ ];
180
+ const result = getRecordsFromRows(rows);
181
+ expect(result).toEqual([
182
+ { name: "Alice", active: true, count: 100 },
183
+ { name: "Bob", active: false, count: 0 },
184
+ ]);
185
+ });
186
+ it("should convert header values to strings", () => {
187
+ const rows = [
188
+ [1, 2, 3],
189
+ ["Alice", 30, "NYC"],
190
+ ["Bob", 25, "LA"],
191
+ ];
192
+ const result = getRecordsFromRows(rows);
193
+ expect(result).toEqual([
194
+ { "1": "Alice", "2": 30, "3": "NYC" },
195
+ { "1": "Bob", "2": 25, "3": "LA" },
196
+ ]);
197
+ });
198
+ it("should handle empty header cells", () => {
199
+ const rows = [
200
+ ["name", "", "city"],
201
+ ["Alice", 30, "NYC"],
202
+ ["Bob", 25, "LA"],
203
+ ];
204
+ const result = getRecordsFromRows(rows);
205
+ expect(result).toEqual([
206
+ { name: "Alice", "": 30, city: "NYC" },
207
+ { name: "Bob", "": 25, city: "LA" },
208
+ ]);
209
+ });
210
+ it("should handle multi-row headers with empty cells", () => {
211
+ const rows = [
212
+ ["person", "", "location"],
213
+ ["first", "last", "city"],
214
+ ["Alice", "Smith", "NYC"],
215
+ ];
216
+ const result = getRecordsFromRows(rows, { headerRows: [1, 2] });
217
+ expect(result).toEqual([
218
+ { "person first": "Alice", last: "Smith", "location city": "NYC" },
219
+ ]);
220
+ });
221
+ it("should handle combination of headerRows and commentRows", () => {
222
+ const rows = [
223
+ ["skip row 1"],
224
+ ["name", "age", "city"],
225
+ ["# Comment", "data", "data"],
226
+ ["Alice", 30, "NYC"],
227
+ ["Bob", 25, "LA"],
228
+ ];
229
+ const result = getRecordsFromRows(rows, {
230
+ headerRows: [2],
231
+ commentRows: [3],
232
+ });
233
+ expect(result).toEqual([
234
+ { name: "Alice", age: 30, city: "NYC" },
235
+ { name: "Bob", age: 25, city: "LA" },
236
+ ]);
237
+ });
238
+ it("should handle combination of commentRows and commentChar", () => {
239
+ const rows = [
240
+ ["name", "age", "city"],
241
+ ["# Inline comment", "data", "data"],
242
+ ["Alice", 30, "NYC"],
243
+ ["Comment by row number", "data", "data"],
244
+ ["Bob", 25, "LA"],
245
+ ];
246
+ const result = getRecordsFromRows(rows, {
247
+ commentRows: [4],
248
+ commentChar: "#",
249
+ });
250
+ expect(result).toEqual([
251
+ { name: "Alice", age: 30, city: "NYC" },
252
+ { name: "Bob", age: 25, city: "LA" },
253
+ ]);
254
+ });
255
+ it("should generate field names based on longest row when no header", () => {
256
+ const rows = [
257
+ ["Alice", 30],
258
+ ["Bob", 25, "LA", "USA"],
259
+ ["Charlie", 35, "SF"],
260
+ ];
261
+ const result = getRecordsFromRows(rows, { header: false });
262
+ expect(result).toEqual([
263
+ { field1: "Alice", field2: 30, field3: undefined, field4: undefined },
264
+ { field1: "Bob", field2: 25, field3: "LA", field4: "USA" },
265
+ { field1: "Charlie", field2: 35, field3: "SF", field4: undefined },
266
+ ]);
267
+ });
268
+ });
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kYXRhL3JlY29yZC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLFFBQVEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFaEQsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyxFQUFFLENBQUMsb0RBQW9ELEVBQUUsR0FBRyxFQUFFO1FBQzVELE1BQU0sSUFBSSxHQUFHO1lBQ1gsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQztZQUN2QixDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDO1lBQ3BCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7U0FDbEIsQ0FBQTtRQUVELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDckIsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUN2QyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1NBQ3JDLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUYsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtRQUM5QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBRXRDLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFBO1FBRXZDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FB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QUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUUxRCxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3JCLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtZQUNyRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDMUQsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFO1NBQ25FLENBQUMsQ0FBQTtJQUNKLENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZXNjcmliZSwgZXhwZWN0LCBpdCB9IGZyb20gXCJ2aXRlc3RcIlxuaW1wb3J0IHsgZ2V0UmVjb3Jkc0Zyb21Sb3dzIH0gZnJvbSBcIi4vcmVjb3JkLnRzXCJcblxuZGVzY3JpYmUoXCJnZXRSZWNvcmRzRnJvbVJvd3NcIiwgKCkgPT4ge1xuICBpdChcInNob3VsZCBjb252ZXJ0IHJvd3MgdG8gcmVjb3JkcyB3aXRoIGRlZmF1bHQgaGVhZGVyXCIsICgpID0+IHtcbiAgICBjb25zdCByb3dzID0gW1xuICAgICAgW1wibmFtZVwiLCBcImFnZVwiLCBcImNpdHlcIl0sXG4gICAgICBbXCJBbGljZVwiLCAzMCwgXCJOWUNcIl0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MpXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJBbGljZVwiLCBhZ2U6IDMwLCBjaXR5OiBcIk5ZQ1wiIH0sXG4gICAgICB7IG5hbWU6IFwiQm9iXCIsIGFnZTogMjUsIGNpdHk6IFwiTEFcIiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHNpbmdsZSByb3cgd2l0aCBoZWFkZXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbW1wibmFtZVwiLCBcImFnZVwiLCBcImNpdHlcIl1dXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cylcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW10pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIGVtcHR5IHJvd3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3M6IHVua25vd25bXVtdID0gW11cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzKVxuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgcm93cyB3aXRob3V0IGhlYWRlciB3aGVuIGhlYWRlciBpcyBmYWxzZVwiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcIkFsaWNlXCIsIDMwLCBcIk5ZQ1wiXSxcbiAgICAgIFtcIkJvYlwiLCAyNSwgXCJMQVwiXSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cywgeyBoZWFkZXI6IGZhbHNlIH0pXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgZmllbGQxOiBcIkFsaWNlXCIsIGZpZWxkMjogMzAsIGZpZWxkMzogXCJOWUNcIiB9LFxuICAgICAgeyBmaWVsZDE6IFwiQm9iXCIsIGZpZWxkMjogMjUsIGZpZWxkMzogXCJMQVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgY3VzdG9tIGhlYWRlciByb3dzXCIsICgpID0+IHtcbiAgICBjb25zdCByb3dzID0gW1xuICAgICAgW1wic2tpcCB0aGlzIHJvd1wiXSxcbiAgICAgIFtcIm5hbWVcIiwgXCJhZ2VcIiwgXCJjaXR5XCJdLFxuICAgICAgW1wiQWxpY2VcIiwgMzAsIFwiTllDXCJdLFxuICAgICAgW1wiQm9iXCIsIDI1LCBcIkxBXCJdLFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzLCB7IGhlYWRlclJvd3M6IFsyXSB9KVxuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXG4gICAgICB7IG5hbWU6IFwiQWxpY2VcIiwgYWdlOiAzMCwgY2l0eTogXCJOWUNcIiB9LFxuICAgICAgeyBuYW1lOiBcIkJvYlwiLCBhZ2U6IDI1LCBjaXR5OiBcIkxBXCIgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBtdWx0aXBsZSBoZWFkZXIgcm93cyB3aXRoIGRlZmF1bHQgam9pblwiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcImZpcnN0XCIsIFwibGFzdFwiLCBcImNvbnRhY3RcIl0sXG4gICAgICBbXCJuYW1lXCIsIFwibmFtZVwiLCBcImVtYWlsXCJdLFxuICAgICAgW1wiQWxpY2VcIiwgXCJTbWl0aFwiLCBcImFsaWNlQGV4YW1wbGUuY29tXCJdLFxuICAgICAgW1wiQm9iXCIsIFwiSm9uZXNcIiwgXCJib2JAZXhhbXBsZS5jb21cIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MsIHsgaGVhZGVyUm93czogWzEsIDJdIH0pXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHtcbiAgICAgICAgXCJmaXJzdCBuYW1lXCI6IFwiQWxpY2VcIixcbiAgICAgICAgXCJsYXN0IG5hbWVcIjogXCJTbWl0aFwiLFxuICAgICAgICBcImNvbnRhY3QgZW1haWxcIjogXCJhbGljZUBleGFtcGxlLmNvbVwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgXCJmaXJzdCBuYW1lXCI6IFwiQm9iXCIsXG4gICAgICAgIFwibGFzdCBuYW1lXCI6IFwiSm9uZXNcIixcbiAgICAgICAgXCJjb250YWN0IGVtYWlsXCI6IFwiYm9iQGV4YW1wbGUuY29tXCIsXG4gICAgICB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG11bHRpcGxlIGhlYWRlciByb3dzIHdpdGggY3VzdG9tIGpvaW5cIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJ1c2VyXCIsIFwidXNlclwiLCBcIm1ldGFcIl0sXG4gICAgICBbXCJmaXJzdFwiLCBcImxhc3RcIiwgXCJjcmVhdGVkXCJdLFxuICAgICAgW1wiQWxpY2VcIiwgXCJTbWl0aFwiLCBcIjIwMjMtMDEtMDFcIl0sXG4gICAgICBbXCJCb2JcIiwgXCJKb25lc1wiLCBcIjIwMjMtMDEtMDJcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MsIHtcbiAgICAgIGhlYWRlclJvd3M6IFsxLCAyXSxcbiAgICAgIGhlYWRlckpvaW46IFwiX1wiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgdXNlcl9maXJzdDogXCJBbGljZVwiLCB1c2VyX2xhc3Q6IFwiU21pdGhcIiwgbWV0YV9jcmVhdGVkOiBcIjIwMjMtMDEtMDFcIiB9LFxuICAgICAgeyB1c2VyX2ZpcnN0OiBcIkJvYlwiLCB1c2VyX2xhc3Q6IFwiSm9uZXNcIiwgbWV0YV9jcmVhdGVkOiBcIjIwMjMtMDEtMDJcIiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgc2tpcCBjb21tZW50IHJvd3MgYnkgcm93IG51bWJlclwiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcIm5hbWVcIiwgXCJhZ2VcIiwgXCJjaXR5XCJdLFxuICAgICAgW1wiQWxpY2VcIiwgMzAsIFwiTllDXCJdLFxuICAgICAgW1wiIyBDb21tZW50IHJvd1wiLCBcImlnbm9yZWRcIiwgXCJkYXRhXCJdLFxuICAgICAgW1wiQm9iXCIsIDI1LCBcIkxBXCJdLFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzLCB7IGNvbW1lbnRSb3dzOiBbM10gfSlcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1xuICAgICAgeyBuYW1lOiBcIkFsaWNlXCIsIGFnZTogMzAsIGNpdHk6IFwiTllDXCIgfSxcbiAgICAgIHsgbmFtZTogXCJCb2JcIiwgYWdlOiAyNSwgY2l0eTogXCJMQVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBza2lwIHJvd3Mgd2l0aCBjb21tZW50IGNoYXJhY3RlclwiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcIm5hbWVcIiwgXCJhZ2VcIiwgXCJjaXR5XCJdLFxuICAgICAgW1wiQWxpY2VcIiwgMzAsIFwiTllDXCJdLFxuICAgICAgW1wiIyBDb21tZW50XCIsIFwiaWdub3JlZFwiLCBcImRhdGFcIl0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIl0sXG4gICAgICBbXCJSZWd1bGFyIHJvd1wiLCBcImRhdGFcIiwgXCJ2YWx1ZVwiXSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cywgeyBjb21tZW50Q2hhcjogXCIjXCIgfSlcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1xuICAgICAgeyBuYW1lOiBcIkFsaWNlXCIsIGFnZTogMzAsIGNpdHk6IFwiTllDXCIgfSxcbiAgICAgIHsgbmFtZTogXCJCb2JcIiwgYWdlOiAyNSwgY2l0eTogXCJMQVwiIH0sXG4gICAgICB7IG5hbWU6IFwiUmVndWxhciByb3dcIiwgYWdlOiBcImRhdGFcIiwgY2l0eTogXCJ2YWx1ZVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBza2lwIHJvd3Mgd2l0aCBtdWx0aXBsZSBjb21tZW50IGNoYXJhY3RlcnNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJuYW1lXCIsIFwiYWdlXCIsIFwiY2l0eVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIDMwLCBcIk5ZQ1wiXSxcbiAgICAgIFtcIiMgQ29tbWVudCAxXCIsIFwiaWdub3JlZFwiLCBcImRhdGFcIl0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIl0sXG4gICAgICBbXCIjIyBDb21tZW50IDJcIiwgXCJpZ25vcmVkXCIsIFwiZGF0YVwiXSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cywgeyBjb21tZW50Q2hhcjogXCIjXCIgfSlcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1xuICAgICAgeyBuYW1lOiBcIkFsaWNlXCIsIGFnZTogMzAsIGNpdHk6IFwiTllDXCIgfSxcbiAgICAgIHsgbmFtZTogXCJCb2JcIiwgYWdlOiAyNSwgY2l0eTogXCJMQVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBub3Qgc2tpcCByb3dzIHdoZW4gZmlyc3QgY2VsbCBpcyBub3Qgc3RyaW5nXCIsICgpID0+IHtcbiAgICBjb25zdCByb3dzID0gW1xuICAgICAgW1wibmFtZVwiLCBcImFnZVwiLCBcImNpdHlcIl0sXG4gICAgICBbXCJBbGljZVwiLCAzMCwgXCJOWUNcIl0sXG4gICAgICBbMTIzLCBcImRhdGFcIiwgXCJ0ZXN0XCJdLFxuICAgICAgW1wiQm9iXCIsIDI1LCBcIkxBXCJdLFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzLCB7IGNvbW1lbnRDaGFyOiBcIiNcIiB9KVxuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXG4gICAgICB7IG5hbWU6IFwiQWxpY2VcIiwgYWdlOiAzMCwgY2l0eTogXCJOWUNcIiB9LFxuICAgICAgeyBuYW1lOiAxMjMsIGFnZTogXCJkYXRhXCIsIGNpdHk6IFwidGVzdFwiIH0sXG4gICAgICB7IG5hbWU6IFwiQm9iXCIsIGFnZTogMjUsIGNpdHk6IFwiTEFcIiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIHJvd3Mgd2l0aCBkaWZmZXJlbnQgbGVuZ3Roc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcIm5hbWVcIiwgXCJhZ2VcIiwgXCJjaXR5XCIsIFwiY291bnRyeVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIDMwLCBcIk5ZQ1wiXSxcbiAgICAgIFtcIkJvYlwiLCAyNSwgXCJMQVwiLCBcIlVTQVwiXSxcbiAgICAgIFtcIkNoYXJsaWVcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MpXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJBbGljZVwiLCBhZ2U6IDMwLCBjaXR5OiBcIk5ZQ1wiLCBjb3VudHJ5OiB1bmRlZmluZWQgfSxcbiAgICAgIHsgbmFtZTogXCJCb2JcIiwgYWdlOiAyNSwgY2l0eTogXCJMQVwiLCBjb3VudHJ5OiBcIlVTQVwiIH0sXG4gICAgICB7XG4gICAgICAgIG5hbWU6IFwiQ2hhcmxpZVwiLFxuICAgICAgICBhZ2U6IHVuZGVmaW5lZCxcbiAgICAgICAgY2l0eTogdW5kZWZpbmVkLFxuICAgICAgICBjb3VudHJ5OiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgaGFuZGxlIG51bGwgYW5kIHVuZGVmaW5lZCB2YWx1ZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJuYW1lXCIsIFwiYWdlXCIsIFwiY2l0eVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIG51bGwsIHVuZGVmaW5lZF0sXG4gICAgICBbbnVsbCwgMjUsIFwiTEFcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MpXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJBbGljZVwiLCBhZ2U6IG51bGwsIGNpdHk6IHVuZGVmaW5lZCB9LFxuICAgICAgeyBuYW1lOiBudWxsLCBhZ2U6IDI1LCBjaXR5OiBcIkxBXCIgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBib29sZWFuIGFuZCBudW1iZXIgdHlwZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJuYW1lXCIsIFwiYWN0aXZlXCIsIFwiY291bnRcIl0sXG4gICAgICBbXCJBbGljZVwiLCB0cnVlLCAxMDBdLFxuICAgICAgW1wiQm9iXCIsIGZhbHNlLCAwXSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cylcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1xuICAgICAgeyBuYW1lOiBcIkFsaWNlXCIsIGFjdGl2ZTogdHJ1ZSwgY291bnQ6IDEwMCB9LFxuICAgICAgeyBuYW1lOiBcIkJvYlwiLCBhY3RpdmU6IGZhbHNlLCBjb3VudDogMCB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgY29udmVydCBoZWFkZXIgdmFsdWVzIHRvIHN0cmluZ3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbMSwgMiwgM10sXG4gICAgICBbXCJBbGljZVwiLCAzMCwgXCJOWUNcIl0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MpXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgXCIxXCI6IFwiQWxpY2VcIiwgXCIyXCI6IDMwLCBcIjNcIjogXCJOWUNcIiB9LFxuICAgICAgeyBcIjFcIjogXCJCb2JcIiwgXCIyXCI6IDI1LCBcIjNcIjogXCJMQVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgZW1wdHkgaGVhZGVyIGNlbGxzXCIsICgpID0+IHtcbiAgICBjb25zdCByb3dzID0gW1xuICAgICAgW1wibmFtZVwiLCBcIlwiLCBcImNpdHlcIl0sXG4gICAgICBbXCJBbGljZVwiLCAzMCwgXCJOWUNcIl0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MpXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJBbGljZVwiLCBcIlwiOiAzMCwgY2l0eTogXCJOWUNcIiB9LFxuICAgICAgeyBuYW1lOiBcIkJvYlwiLCBcIlwiOiAyNSwgY2l0eTogXCJMQVwiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgbXVsdGktcm93IGhlYWRlcnMgd2l0aCBlbXB0eSBjZWxsc1wiLCAoKSA9PiB7XG4gICAgY29uc3Qgcm93cyA9IFtcbiAgICAgIFtcInBlcnNvblwiLCBcIlwiLCBcImxvY2F0aW9uXCJdLFxuICAgICAgW1wiZmlyc3RcIiwgXCJsYXN0XCIsIFwiY2l0eVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIFwiU21pdGhcIiwgXCJOWUNcIl0sXG4gICAgXVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZ2V0UmVjb3Jkc0Zyb21Sb3dzKHJvd3MsIHsgaGVhZGVyUm93czogWzEsIDJdIH0pXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgXCJwZXJzb24gZmlyc3RcIjogXCJBbGljZVwiLCBsYXN0OiBcIlNtaXRoXCIsIFwibG9jYXRpb24gY2l0eVwiOiBcIk5ZQ1wiIH0sXG4gICAgXSlcbiAgfSlcblxuICBpdChcInNob3VsZCBoYW5kbGUgY29tYmluYXRpb24gb2YgaGVhZGVyUm93cyBhbmQgY29tbWVudFJvd3NcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJza2lwIHJvdyAxXCJdLFxuICAgICAgW1wibmFtZVwiLCBcImFnZVwiLCBcImNpdHlcIl0sXG4gICAgICBbXCIjIENvbW1lbnRcIiwgXCJkYXRhXCIsIFwiZGF0YVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIDMwLCBcIk5ZQ1wiXSxcbiAgICAgIFtcIkJvYlwiLCAyNSwgXCJMQVwiXSxcbiAgICBdXG5cbiAgICBjb25zdCByZXN1bHQgPSBnZXRSZWNvcmRzRnJvbVJvd3Mocm93cywge1xuICAgICAgaGVhZGVyUm93czogWzJdLFxuICAgICAgY29tbWVudFJvd3M6IFszXSxcbiAgICB9KVxuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChbXG4gICAgICB7IG5hbWU6IFwiQWxpY2VcIiwgYWdlOiAzMCwgY2l0eTogXCJOWUNcIiB9LFxuICAgICAgeyBuYW1lOiBcIkJvYlwiLCBhZ2U6IDI1LCBjaXR5OiBcIkxBXCIgfSxcbiAgICBdKVxuICB9KVxuXG4gIGl0KFwic2hvdWxkIGhhbmRsZSBjb21iaW5hdGlvbiBvZiBjb21tZW50Um93cyBhbmQgY29tbWVudENoYXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJuYW1lXCIsIFwiYWdlXCIsIFwiY2l0eVwiXSxcbiAgICAgIFtcIiMgSW5saW5lIGNvbW1lbnRcIiwgXCJkYXRhXCIsIFwiZGF0YVwiXSxcbiAgICAgIFtcIkFsaWNlXCIsIDMwLCBcIk5ZQ1wiXSxcbiAgICAgIFtcIkNvbW1lbnQgYnkgcm93IG51bWJlclwiLCBcImRhdGFcIiwgXCJkYXRhXCJdLFxuICAgICAgW1wiQm9iXCIsIDI1LCBcIkxBXCJdLFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzLCB7XG4gICAgICBjb21tZW50Um93czogWzRdLFxuICAgICAgY29tbWVudENoYXI6IFwiI1wiLFxuICAgIH0pXG5cbiAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKFtcbiAgICAgIHsgbmFtZTogXCJBbGljZVwiLCBhZ2U6IDMwLCBjaXR5OiBcIk5ZQ1wiIH0sXG4gICAgICB7IG5hbWU6IFwiQm9iXCIsIGFnZTogMjUsIGNpdHk6IFwiTEFcIiB9LFxuICAgIF0pXG4gIH0pXG5cbiAgaXQoXCJzaG91bGQgZ2VuZXJhdGUgZmllbGQgbmFtZXMgYmFzZWQgb24gbG9uZ2VzdCByb3cgd2hlbiBubyBoZWFkZXJcIiwgKCkgPT4ge1xuICAgIGNvbnN0IHJvd3MgPSBbXG4gICAgICBbXCJBbGljZVwiLCAzMF0sXG4gICAgICBbXCJCb2JcIiwgMjUsIFwiTEFcIiwgXCJVU0FcIl0sXG4gICAgICBbXCJDaGFybGllXCIsIDM1LCBcIlNGXCJdLFxuICAgIF1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGdldFJlY29yZHNGcm9tUm93cyhyb3dzLCB7IGhlYWRlcjogZmFsc2UgfSlcblxuICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoW1xuICAgICAgeyBmaWVsZDE6IFwiQWxpY2VcIiwgZmllbGQyOiAzMCwgZmllbGQzOiB1bmRlZmluZWQsIGZpZWxkNDogdW5kZWZpbmVkIH0sXG4gICAgICB7IGZpZWxkMTogXCJCb2JcIiwgZmllbGQyOiAyNSwgZmllbGQzOiBcIkxBXCIsIGZpZWxkNDogXCJVU0FcIiB9LFxuICAgICAgeyBmaWVsZDE6IFwiQ2hhcmxpZVwiLCBmaWVsZDI6IDM1LCBmaWVsZDM6IFwiU0ZcIiwgZmllbGQ0OiB1bmRlZmluZWQgfSxcbiAgICBdKVxuICB9KVxufSlcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export interface DialectOptions {
2
+ delimiter?: string;
3
+ }
@@ -0,0 +1,3 @@
1
+ // TODO: Implement
2
+ export {};
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2RpYWxlY3QvT3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUT0RPOiBJbXBsZW1lbnRcblxuZXhwb3J0IGludGVyZmFjZSBEaWFsZWN0T3B0aW9ucyB7XG4gIGRlbGltaXRlcj86IHN0cmluZ1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export type { DialectOptions } from "./Options.ts";
2
+ export type { InferDialectOptions } from "./infer.ts";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kaWFsZWN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IERpYWxlY3RPcHRpb25zIH0gZnJvbSBcIi4vT3B0aW9ucy50c1wiXG5leHBvcnQgdHlwZSB7IEluZmVyRGlhbGVjdE9wdGlvbnMgfSBmcm9tIFwiLi9pbmZlci50c1wiXG4iXX0=
@@ -0,0 +1,4 @@
1
+ import type { DialectOptions } from "./Options.ts";
2
+ export interface InferDialectOptions extends DialectOptions {
3
+ sampleBytes?: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9kaWFsZWN0L2luZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IERpYWxlY3RPcHRpb25zIH0gZnJvbSBcIi4vT3B0aW9ucy50c1wiXG5cbi8vIFRPRE86IEhhdmUgc29tZSBzaGFyZWQgaW5mZXJEaWFsZWN0KiBmdW5jdGlvbj9cblxuZXhwb3J0IGludGVyZmFjZSBJbmZlckRpYWxlY3RPcHRpb25zIGV4dGVuZHMgRGlhbGVjdE9wdGlvbnMge1xuICBzYW1wbGVCeXRlcz86IG51bWJlclxufVxuIl19
@@ -0,0 +1,5 @@
1
+ import * as pl from "nodejs-polars";
2
+ export type PolarsField = {
3
+ name: string;
4
+ type: pl.DataType;
5
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9maWVsZC9GaWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGwgZnJvbSBcIm5vZGVqcy1wb2xhcnNcIlxuXG5leHBvcnQgdHlwZSBQb2xhcnNGaWVsZCA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIHR5cGU6IHBsLkRhdGFUeXBlXG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import type { Field } from "@frictionless-ts/metadata";
2
+ import type * as pl from "nodejs-polars";
3
+ import type { PolarsField } from "./Field.ts";
4
+ export interface FieldMapping {
5
+ source: PolarsField;
6
+ target: Field;
7
+ }
8
+ export interface CellMapping {
9
+ source: pl.Expr;
10
+ target: pl.Expr;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2ZpZWxkL01hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgdHlwZSAqIGFzIHBsIGZyb20gXCJub2RlanMtcG9sYXJzXCJcbmltcG9ydCB0eXBlIHsgUG9sYXJzRmllbGQgfSBmcm9tIFwiLi9GaWVsZC50c1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmllbGRNYXBwaW5nIHtcbiAgc291cmNlOiBQb2xhcnNGaWVsZFxuICB0YXJnZXQ6IEZpZWxkXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VsbE1hcHBpbmcge1xuICBzb3VyY2U6IHBsLkV4cHJcbiAgdGFyZ2V0OiBwbC5FeHByXG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import type { Field } from "@frictionless-ts/metadata";
2
+ import type { CellEnumError } from "@frictionless-ts/metadata";
3
+ import * as pl from "nodejs-polars";
4
+ import type { CellMapping } from "../Mapping.ts";
5
+ export declare function checkCellEnum(field: Field, mapping: CellMapping): {
6
+ isErrorExpr: pl.Expr;
7
+ errorTemplate: CellEnumError;
8
+ } | undefined;
@@ -0,0 +1,71 @@
1
+ import * as pl from "nodejs-polars";
2
+ import { evaluateExpression } from "../../helpers.js";
3
+ import { parseDateField } from "../types/date.js";
4
+ import { parseDatetimeField } from "../types/datetime.js";
5
+ import { parseIntegerField } from "../types/integer.js";
6
+ import { parseNumberField } from "../types/number.js";
7
+ import { parseTimeField } from "../types/time.js";
8
+ import { parseYearField } from "../types/year.js";
9
+ import { parseYearmonthField } from "../types/yearmonth.js";
10
+ export function checkCellEnum(field, mapping) {
11
+ if (field.type !== "string" &&
12
+ field.type !== "integer" &&
13
+ field.type !== "number" &&
14
+ field.type !== "date" &&
15
+ field.type !== "time" &&
16
+ field.type !== "datetime" &&
17
+ field.type !== "year" &&
18
+ field.type !== "yearmonth") {
19
+ return undefined;
20
+ }
21
+ const rawEnum = field.constraints?.enum;
22
+ if (!rawEnum)
23
+ return undefined;
24
+ let isErrorExpr;
25
+ try {
26
+ const parsedEnum = parseConstraint(field, rawEnum);
27
+ isErrorExpr = mapping.target.isIn(parsedEnum).not();
28
+ }
29
+ catch (error) {
30
+ isErrorExpr = pl.pl.lit(true);
31
+ }
32
+ const errorTemplate = {
33
+ type: "cell/enum",
34
+ fieldName: field.name,
35
+ enum: rawEnum.map(String),
36
+ rowNumber: 0,
37
+ cell: "",
38
+ };
39
+ return { isErrorExpr, errorTemplate };
40
+ }
41
+ function parseConstraint(field, value) {
42
+ return value.map(it => parseConstraintItem(field, it));
43
+ }
44
+ function parseConstraintItem(field, value) {
45
+ if (typeof value !== "string")
46
+ return value;
47
+ let expr = pl.pl.lit(value);
48
+ if (field.type === "integer") {
49
+ expr = parseIntegerField(field, expr);
50
+ }
51
+ else if (field.type === "number") {
52
+ expr = parseNumberField(field, expr);
53
+ }
54
+ else if (field.type === "date") {
55
+ expr = parseDateField(field, expr);
56
+ }
57
+ else if (field.type === "time") {
58
+ expr = parseTimeField(field, expr);
59
+ }
60
+ else if (field.type === "datetime") {
61
+ expr = parseDatetimeField(field, expr);
62
+ }
63
+ else if (field.type === "year") {
64
+ expr = parseYearField(field, expr);
65
+ }
66
+ else if (field.type === "yearmonth") {
67
+ expr = parseYearmonthField(field, expr);
68
+ }
69
+ return evaluateExpression(expr);
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2ZpZWxkL2NoZWNrcy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBRXJELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBRTNELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBWSxFQUFFLE9BQW9CO0lBQzlELElBQ0UsS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRO1FBQ3ZCLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUztRQUN4QixLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7UUFDdkIsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNO1FBQ3JCLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTTtRQUNyQixLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVU7UUFDekIsS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNO1FBQ3JCLEtBQUssQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUMxQixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFBO0lBQ3ZDLElBQUksQ0FBQyxPQUFPO1FBQUUsT0FBTyxTQUFTLENBQUE7SUFFOUIsSUFBSSxXQUFvQixDQUFBO0lBQ3hCLElBQUksQ0FBQztRQUNILE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDbEQsV0FBVyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ3JELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsV0FBVyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBa0I7UUFDbkMsSUFBSSxFQUFFLFdBQVc7UUFDakIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ3JCLElBQUksRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUN6QixTQUFTLEVBQUUsQ0FBQztRQUNaLElBQUksRUFBRSxFQUFFO0tBQ1QsQ0FBQTtJQUVELE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLENBQUE7QUFDdkMsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQVksRUFBRSxLQUEwQjtJQUMvRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUN4RCxDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxLQUFZLEVBQUUsS0FBc0I7SUFDL0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUE7SUFFM0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDM0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzdCLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3RDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDakMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEMsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNwQyxDQUFDO1NBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3JDLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDeEMsQ0FBQztTQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNqQyxJQUFJLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUNwQyxDQUFDO1NBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVELE9BQU8sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgdHlwZSB7IENlbGxFbnVtRXJyb3IgfSBmcm9tIFwiQGZyaWN0aW9ubGVzcy10cy9tZXRhZGF0YVwiXG5pbXBvcnQgKiBhcyBwbCBmcm9tIFwibm9kZWpzLXBvbGFyc1wiXG5pbXBvcnQgeyBldmFsdWF0ZUV4cHJlc3Npb24gfSBmcm9tIFwiLi4vLi4vaGVscGVycy50c1wiXG5pbXBvcnQgdHlwZSB7IENlbGxNYXBwaW5nIH0gZnJvbSBcIi4uL01hcHBpbmcudHNcIlxuaW1wb3J0IHsgcGFyc2VEYXRlRmllbGQgfSBmcm9tIFwiLi4vdHlwZXMvZGF0ZS50c1wiXG5pbXBvcnQgeyBwYXJzZURhdGV0aW1lRmllbGQgfSBmcm9tIFwiLi4vdHlwZXMvZGF0ZXRpbWUudHNcIlxuaW1wb3J0IHsgcGFyc2VJbnRlZ2VyRmllbGQgfSBmcm9tIFwiLi4vdHlwZXMvaW50ZWdlci50c1wiXG5pbXBvcnQgeyBwYXJzZU51bWJlckZpZWxkIH0gZnJvbSBcIi4uL3R5cGVzL251bWJlci50c1wiXG5pbXBvcnQgeyBwYXJzZVRpbWVGaWVsZCB9IGZyb20gXCIuLi90eXBlcy90aW1lLnRzXCJcbmltcG9ydCB7IHBhcnNlWWVhckZpZWxkIH0gZnJvbSBcIi4uL3R5cGVzL3llYXIudHNcIlxuaW1wb3J0IHsgcGFyc2VZZWFybW9udGhGaWVsZCB9IGZyb20gXCIuLi90eXBlcy95ZWFybW9udGgudHNcIlxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDZWxsRW51bShmaWVsZDogRmllbGQsIG1hcHBpbmc6IENlbGxNYXBwaW5nKSB7XG4gIGlmIChcbiAgICBmaWVsZC50eXBlICE9PSBcInN0cmluZ1wiICYmXG4gICAgZmllbGQudHlwZSAhPT0gXCJpbnRlZ2VyXCIgJiZcbiAgICBmaWVsZC50eXBlICE9PSBcIm51bWJlclwiICYmXG4gICAgZmllbGQudHlwZSAhPT0gXCJkYXRlXCIgJiZcbiAgICBmaWVsZC50eXBlICE9PSBcInRpbWVcIiAmJlxuICAgIGZpZWxkLnR5cGUgIT09IFwiZGF0ZXRpbWVcIiAmJlxuICAgIGZpZWxkLnR5cGUgIT09IFwieWVhclwiICYmXG4gICAgZmllbGQudHlwZSAhPT0gXCJ5ZWFybW9udGhcIlxuICApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCByYXdFbnVtID0gZmllbGQuY29uc3RyYWludHM/LmVudW1cbiAgaWYgKCFyYXdFbnVtKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgbGV0IGlzRXJyb3JFeHByOiBwbC5FeHByXG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkRW51bSA9IHBhcnNlQ29uc3RyYWludChmaWVsZCwgcmF3RW51bSlcbiAgICBpc0Vycm9yRXhwciA9IG1hcHBpbmcudGFyZ2V0LmlzSW4ocGFyc2VkRW51bSkubm90KClcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBpc0Vycm9yRXhwciA9IHBsLnBsLmxpdCh0cnVlKVxuICB9XG5cbiAgY29uc3QgZXJyb3JUZW1wbGF0ZTogQ2VsbEVudW1FcnJvciA9IHtcbiAgICB0eXBlOiBcImNlbGwvZW51bVwiLFxuICAgIGZpZWxkTmFtZTogZmllbGQubmFtZSxcbiAgICBlbnVtOiByYXdFbnVtLm1hcChTdHJpbmcpLFxuICAgIHJvd051bWJlcjogMCxcbiAgICBjZWxsOiBcIlwiLFxuICB9XG5cbiAgcmV0dXJuIHsgaXNFcnJvckV4cHIsIGVycm9yVGVtcGxhdGUgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNvbnN0cmFpbnQoZmllbGQ6IEZpZWxkLCB2YWx1ZTogbnVtYmVyW10gfCBzdHJpbmdbXSkge1xuICByZXR1cm4gdmFsdWUubWFwKGl0ID0+IHBhcnNlQ29uc3RyYWludEl0ZW0oZmllbGQsIGl0KSlcbn1cblxuZnVuY3Rpb24gcGFyc2VDb25zdHJhaW50SXRlbShmaWVsZDogRmllbGQsIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgcmV0dXJuIHZhbHVlXG5cbiAgbGV0IGV4cHIgPSBwbC5wbC5saXQodmFsdWUpXG4gIGlmIChmaWVsZC50eXBlID09PSBcImludGVnZXJcIikge1xuICAgIGV4cHIgPSBwYXJzZUludGVnZXJGaWVsZChmaWVsZCwgZXhwcilcbiAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBcIm51bWJlclwiKSB7XG4gICAgZXhwciA9IHBhcnNlTnVtYmVyRmllbGQoZmllbGQsIGV4cHIpXG4gIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICBleHByID0gcGFyc2VEYXRlRmllbGQoZmllbGQsIGV4cHIpXG4gIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gXCJ0aW1lXCIpIHtcbiAgICBleHByID0gcGFyc2VUaW1lRmllbGQoZmllbGQsIGV4cHIpXG4gIH0gZWxzZSBpZiAoZmllbGQudHlwZSA9PT0gXCJkYXRldGltZVwiKSB7XG4gICAgZXhwciA9IHBhcnNlRGF0ZXRpbWVGaWVsZChmaWVsZCwgZXhwcilcbiAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBcInllYXJcIikge1xuICAgIGV4cHIgPSBwYXJzZVllYXJGaWVsZChmaWVsZCwgZXhwcilcbiAgfSBlbHNlIGlmIChmaWVsZC50eXBlID09PSBcInllYXJtb250aFwiKSB7XG4gICAgZXhwciA9IHBhcnNlWWVhcm1vbnRoRmllbGQoZmllbGQsIGV4cHIpXG4gIH1cblxuICByZXR1cm4gZXZhbHVhdGVFeHByZXNzaW9uKGV4cHIpXG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export {};