@loaders.gl/schema 4.0.0-alpha.5 → 4.0.0-alpha.7

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 (377) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +11362 -13932
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/index.js +406 -0
  6. package/dist/es5/index.js.map +1 -0
  7. package/dist/es5/lib/mesh/convert-mesh.js +34 -0
  8. package/dist/es5/lib/mesh/convert-mesh.js.map +1 -0
  9. package/dist/es5/lib/mesh/deduce-mesh-schema.js +56 -0
  10. package/dist/es5/lib/mesh/deduce-mesh-schema.js.map +1 -0
  11. package/dist/es5/lib/mesh/mesh-to-arrow-table.js +2 -0
  12. package/dist/es5/lib/mesh/mesh-to-arrow-table.js.map +1 -0
  13. package/dist/es5/lib/mesh/mesh-utils.js +40 -0
  14. package/dist/es5/lib/mesh/mesh-utils.js.map +1 -0
  15. package/dist/es5/lib/table/arrow/arrow-type-utils.js +30 -0
  16. package/dist/es5/lib/table/arrow/arrow-type-utils.js.map +1 -0
  17. package/dist/es5/lib/table/arrow/convert-schema-arrow.js +179 -0
  18. package/dist/es5/lib/table/arrow/convert-schema-arrow.js.map +1 -0
  19. package/dist/es5/lib/table/arrow/convert-table-to-arrow.js +2 -0
  20. package/dist/es5/lib/table/arrow/convert-table-to-arrow.js.map +1 -0
  21. package/dist/es5/lib/table/arrow-api/arrow-like-field.js +49 -0
  22. package/dist/es5/lib/table/arrow-api/arrow-like-field.js.map +1 -0
  23. package/dist/es5/lib/table/arrow-api/arrow-like-schema.js +118 -0
  24. package/dist/es5/lib/table/arrow-api/arrow-like-schema.js.map +1 -0
  25. package/dist/es5/lib/table/arrow-api/arrow-like-table.js +80 -0
  26. package/dist/es5/lib/table/arrow-api/arrow-like-table.js.map +1 -0
  27. package/dist/es5/lib/table/arrow-api/arrow-like-type.js +740 -0
  28. package/dist/es5/lib/table/arrow-api/arrow-like-type.js.map +1 -0
  29. package/dist/es5/lib/table/arrow-api/enum.js +55 -0
  30. package/dist/es5/lib/table/arrow-api/enum.js.map +1 -0
  31. package/dist/es5/lib/table/arrow-api/get-type-info.js +27 -0
  32. package/dist/es5/lib/table/arrow-api/get-type-info.js.map +1 -0
  33. package/dist/es5/lib/table/arrow-api/index.js +44 -0
  34. package/dist/es5/lib/table/arrow-api/index.js.map +1 -0
  35. package/dist/es5/lib/table/batches/base-table-batch-aggregator.js +78 -0
  36. package/dist/es5/lib/table/batches/base-table-batch-aggregator.js.map +1 -0
  37. package/dist/es5/lib/table/batches/columnar-table-batch-aggregator.js +106 -0
  38. package/dist/es5/lib/table/batches/columnar-table-batch-aggregator.js.map +1 -0
  39. package/dist/es5/lib/table/batches/row-table-batch-aggregator.js +96 -0
  40. package/dist/es5/lib/table/batches/row-table-batch-aggregator.js.map +1 -0
  41. package/dist/es5/lib/table/batches/table-batch-aggregator.js +2 -0
  42. package/dist/es5/lib/table/batches/table-batch-aggregator.js.map +1 -0
  43. package/dist/es5/lib/table/batches/table-batch-builder.js +173 -0
  44. package/dist/es5/lib/table/batches/table-batch-builder.js.map +1 -0
  45. package/dist/es5/lib/table/simple-table/convert-table.js +82 -0
  46. package/dist/es5/lib/table/simple-table/convert-table.js.map +1 -0
  47. package/dist/es5/lib/table/simple-table/data-type.js +94 -0
  48. package/dist/es5/lib/table/simple-table/data-type.js.map +1 -0
  49. package/dist/es5/lib/table/simple-table/make-table.js +60 -0
  50. package/dist/es5/lib/table/simple-table/make-table.js.map +1 -0
  51. package/dist/es5/lib/table/simple-table/row-utils.js +34 -0
  52. package/dist/es5/lib/table/simple-table/row-utils.js.map +1 -0
  53. package/dist/es5/lib/table/simple-table/table-accessors.js +343 -0
  54. package/dist/es5/lib/table/simple-table/table-accessors.js.map +1 -0
  55. package/dist/es5/lib/table/simple-table/table-column.js +12 -0
  56. package/dist/es5/lib/table/simple-table/table-column.js.map +1 -0
  57. package/dist/es5/lib/table/simple-table/table-schema.js +85 -0
  58. package/dist/es5/lib/table/simple-table/table-schema.js.map +1 -0
  59. package/dist/es5/lib/utils/assert.js +12 -0
  60. package/dist/es5/lib/utils/assert.js.map +1 -0
  61. package/dist/es5/lib/utils/async-queue.js +169 -0
  62. package/dist/es5/lib/utils/async-queue.js.map +1 -0
  63. package/dist/es5/types/category-gis.js +2 -0
  64. package/dist/es5/types/category-gis.js.map +1 -0
  65. package/dist/es5/types/category-image.js +2 -0
  66. package/dist/es5/types/category-image.js.map +1 -0
  67. package/dist/es5/types/category-mesh.js +2 -0
  68. package/dist/es5/types/category-mesh.js.map +1 -0
  69. package/dist/es5/types/category-table.js +2 -0
  70. package/dist/es5/types/category-table.js.map +1 -0
  71. package/dist/es5/types/category-texture.js +2 -0
  72. package/dist/es5/types/category-texture.js.map +1 -0
  73. package/dist/es5/types/schema.js +2 -0
  74. package/dist/es5/types/schema.js.map +1 -0
  75. package/dist/es5/types/types.js +2 -0
  76. package/dist/es5/types/types.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/index.js +16 -0
  80. package/dist/esm/index.js.map +1 -0
  81. package/dist/{category → esm/lib}/mesh/convert-mesh.js +0 -11
  82. package/dist/esm/lib/mesh/convert-mesh.js.map +1 -0
  83. package/dist/esm/lib/mesh/deduce-mesh-schema.js +48 -0
  84. package/dist/esm/lib/mesh/deduce-mesh-schema.js.map +1 -0
  85. package/dist/esm/lib/mesh/mesh-to-arrow-table.js +2 -0
  86. package/dist/esm/lib/mesh/mesh-to-arrow-table.js.map +1 -0
  87. package/dist/{category → esm/lib}/mesh/mesh-utils.js +0 -5
  88. package/dist/esm/lib/mesh/mesh-utils.js.map +1 -0
  89. package/dist/{lib/arrow/arrow-like-type-utils.js → esm/lib/table/arrow/arrow-type-utils.js} +3 -11
  90. package/dist/esm/lib/table/arrow/arrow-type-utils.js.map +1 -0
  91. package/dist/esm/lib/table/arrow/convert-schema-arrow.js +158 -0
  92. package/dist/esm/lib/table/arrow/convert-schema-arrow.js.map +1 -0
  93. package/dist/esm/lib/table/arrow/convert-table-to-arrow.js +2 -0
  94. package/dist/esm/lib/table/arrow/convert-table-to-arrow.js.map +1 -0
  95. package/dist/{lib/schema/impl/field.js → esm/lib/table/arrow-api/arrow-like-field.js} +6 -13
  96. package/dist/esm/lib/table/arrow-api/arrow-like-field.js.map +1 -0
  97. package/dist/{lib/schema/impl/schema.js → esm/lib/table/arrow-api/arrow-like-schema.js} +22 -47
  98. package/dist/esm/lib/table/arrow-api/arrow-like-schema.js.map +1 -0
  99. package/dist/esm/lib/table/arrow-api/arrow-like-table.js +51 -0
  100. package/dist/esm/lib/table/arrow-api/arrow-like-table.js.map +1 -0
  101. package/dist/{lib/schema/impl/type.js → esm/lib/table/arrow-api/arrow-like-type.js} +11 -116
  102. package/dist/esm/lib/table/arrow-api/arrow-like-type.js.map +1 -0
  103. package/dist/{lib/schema/impl → esm/lib/table/arrow-api}/enum.js +3 -4
  104. package/dist/esm/lib/table/arrow-api/enum.js.map +1 -0
  105. package/dist/{lib/arrow → esm/lib/table/arrow-api}/get-type-info.js +1 -4
  106. package/dist/esm/lib/table/arrow-api/get-type-info.js.map +1 -0
  107. package/dist/esm/lib/table/arrow-api/index.js +5 -0
  108. package/dist/esm/lib/table/arrow-api/index.js.map +1 -0
  109. package/dist/{lib → esm/lib/table}/batches/base-table-batch-aggregator.js +1 -18
  110. package/dist/esm/lib/table/batches/base-table-batch-aggregator.js.map +1 -0
  111. package/dist/{lib → esm/lib/table}/batches/columnar-table-batch-aggregator.js +1 -24
  112. package/dist/esm/lib/table/batches/columnar-table-batch-aggregator.js.map +1 -0
  113. package/dist/{lib → esm/lib/table}/batches/row-table-batch-aggregator.js +2 -22
  114. package/dist/esm/lib/table/batches/row-table-batch-aggregator.js.map +1 -0
  115. package/dist/esm/lib/table/batches/table-batch-aggregator.js.map +1 -0
  116. package/dist/{lib → esm/lib/table}/batches/table-batch-builder.js +6 -49
  117. package/dist/esm/lib/table/batches/table-batch-builder.js.map +1 -0
  118. package/dist/esm/lib/table/simple-table/convert-table.js +59 -0
  119. package/dist/esm/lib/table/simple-table/convert-table.js.map +1 -0
  120. package/dist/esm/lib/table/simple-table/data-type.js +85 -0
  121. package/dist/esm/lib/table/simple-table/data-type.js.map +1 -0
  122. package/dist/esm/lib/table/simple-table/make-table.js +50 -0
  123. package/dist/esm/lib/table/simple-table/make-table.js.map +1 -0
  124. package/dist/{lib/utils → esm/lib/table/simple-table}/row-utils.js +0 -8
  125. package/dist/esm/lib/table/simple-table/row-utils.js.map +1 -0
  126. package/dist/esm/lib/table/simple-table/table-accessors.js +262 -0
  127. package/dist/esm/lib/table/simple-table/table-accessors.js.map +1 -0
  128. package/dist/esm/lib/table/simple-table/table-column.js +6 -0
  129. package/dist/esm/lib/table/simple-table/table-column.js.map +1 -0
  130. package/dist/esm/lib/table/simple-table/table-schema.js +70 -0
  131. package/dist/esm/lib/table/simple-table/table-schema.js.map +1 -0
  132. package/dist/esm/lib/utils/assert.js +6 -0
  133. package/dist/esm/lib/utils/assert.js.map +1 -0
  134. package/dist/esm/lib/utils/async-queue.js +94 -0
  135. package/dist/esm/lib/utils/async-queue.js.map +1 -0
  136. package/dist/esm/types/category-gis.js +2 -0
  137. package/dist/esm/types/category-gis.js.map +1 -0
  138. package/dist/esm/types/category-image.js +2 -0
  139. package/dist/esm/types/category-image.js.map +1 -0
  140. package/dist/esm/types/category-mesh.js +2 -0
  141. package/dist/esm/types/category-mesh.js.map +1 -0
  142. package/dist/esm/types/category-table.js +2 -0
  143. package/dist/esm/types/category-table.js.map +1 -0
  144. package/dist/esm/types/category-texture.js +2 -0
  145. package/dist/esm/types/category-texture.js.map +1 -0
  146. package/dist/esm/types/schema.js +2 -0
  147. package/dist/esm/types/schema.js.map +1 -0
  148. package/dist/esm/types/types.js.map +1 -0
  149. package/dist/index.d.ts +27 -25
  150. package/dist/index.d.ts.map +1 -1
  151. package/dist/index.js +92 -13
  152. package/dist/{category → lib}/mesh/convert-mesh.d.ts +3 -3
  153. package/dist/lib/mesh/convert-mesh.d.ts.map +1 -0
  154. package/dist/lib/mesh/convert-mesh.js +40 -0
  155. package/dist/{category → lib}/mesh/deduce-mesh-schema.d.ts +5 -5
  156. package/dist/lib/mesh/deduce-mesh-schema.d.ts.map +1 -0
  157. package/dist/lib/mesh/deduce-mesh-schema.js +66 -0
  158. package/dist/lib/mesh/mesh-to-arrow-table.d.ts +1 -0
  159. package/dist/lib/mesh/mesh-to-arrow-table.d.ts.map +1 -0
  160. package/dist/lib/mesh/mesh-to-arrow-table.js +44 -0
  161. package/dist/{category → lib}/mesh/mesh-utils.d.ts +4 -4
  162. package/dist/lib/mesh/mesh-utils.d.ts.map +1 -0
  163. package/dist/lib/mesh/mesh-utils.js +51 -0
  164. package/dist/lib/table/arrow/arrow-type-utils.d.ts +4 -0
  165. package/dist/lib/table/arrow/arrow-type-utils.d.ts.map +1 -0
  166. package/dist/lib/table/arrow/arrow-type-utils.js +53 -0
  167. package/dist/lib/table/arrow/convert-schema-arrow.d.ts +13 -0
  168. package/dist/lib/table/arrow/convert-schema-arrow.d.ts.map +1 -0
  169. package/dist/lib/table/arrow/convert-schema-arrow.js +187 -0
  170. package/dist/lib/table/arrow/convert-table-to-arrow.d.ts +42 -0
  171. package/dist/lib/table/arrow/convert-table-to-arrow.d.ts.map +1 -0
  172. package/dist/lib/table/arrow/convert-table-to-arrow.js +57 -0
  173. package/dist/lib/{schema/impl/field.d.ts → table/arrow-api/arrow-like-field.d.ts} +4 -4
  174. package/dist/lib/table/arrow-api/arrow-like-field.d.ts.map +1 -0
  175. package/dist/lib/table/arrow-api/arrow-like-field.js +34 -0
  176. package/dist/lib/table/arrow-api/arrow-like-schema.d.ts +12 -0
  177. package/dist/lib/table/arrow-api/arrow-like-schema.d.ts.map +1 -0
  178. package/dist/lib/table/arrow-api/arrow-like-schema.js +81 -0
  179. package/dist/lib/table/arrow-api/arrow-like-table.d.ts +28 -0
  180. package/dist/lib/table/arrow-api/arrow-like-table.d.ts.map +1 -0
  181. package/dist/lib/table/arrow-api/arrow-like-table.js +53 -0
  182. package/dist/lib/{schema/impl/type.d.ts → table/arrow-api/arrow-like-type.d.ts} +7 -6
  183. package/dist/lib/table/arrow-api/arrow-like-type.d.ts.map +1 -0
  184. package/dist/lib/table/arrow-api/arrow-like-type.js +463 -0
  185. package/dist/lib/table/arrow-api/enum.d.ts.map +1 -0
  186. package/dist/lib/table/arrow-api/enum.js +97 -0
  187. package/dist/lib/{arrow → table/arrow-api}/get-type-info.d.ts +2 -3
  188. package/dist/lib/table/arrow-api/get-type-info.d.ts.map +1 -0
  189. package/dist/lib/table/arrow-api/get-type-info.js +29 -0
  190. package/dist/lib/table/arrow-api/index.d.ts +5 -0
  191. package/dist/lib/table/arrow-api/index.d.ts.map +1 -0
  192. package/dist/lib/table/arrow-api/index.js +25 -0
  193. package/dist/lib/{batches → table/batches}/base-table-batch-aggregator.d.ts +3 -3
  194. package/dist/lib/table/batches/base-table-batch-aggregator.d.ts.map +1 -0
  195. package/dist/lib/table/batches/base-table-batch-aggregator.js +60 -0
  196. package/dist/lib/{batches → table/batches}/columnar-table-batch-aggregator.d.ts +4 -4
  197. package/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts.map +1 -0
  198. package/dist/lib/table/batches/columnar-table-batch-aggregator.js +92 -0
  199. package/dist/lib/{batches → table/batches}/row-table-batch-aggregator.d.ts +3 -3
  200. package/dist/lib/table/batches/row-table-batch-aggregator.d.ts.map +1 -0
  201. package/dist/lib/table/batches/row-table-batch-aggregator.js +81 -0
  202. package/dist/lib/{batches → table/batches}/table-batch-aggregator.d.ts +2 -2
  203. package/dist/lib/table/batches/table-batch-aggregator.d.ts.map +1 -0
  204. package/dist/lib/table/batches/table-batch-aggregator.js +3 -0
  205. package/dist/lib/{batches → table/batches}/table-batch-builder.d.ts +5 -5
  206. package/dist/lib/table/batches/table-batch-builder.d.ts.map +1 -0
  207. package/dist/lib/table/batches/table-batch-builder.js +152 -0
  208. package/dist/lib/table/simple-table/convert-table.d.ts +8 -0
  209. package/dist/lib/table/simple-table/convert-table.d.ts.map +1 -0
  210. package/dist/lib/table/simple-table/convert-table.js +65 -0
  211. package/dist/lib/table/simple-table/data-type.d.ts +17 -0
  212. package/dist/lib/table/simple-table/data-type.d.ts.map +1 -0
  213. package/dist/lib/table/simple-table/data-type.js +93 -0
  214. package/dist/lib/table/simple-table/make-table.d.ts +65 -0
  215. package/dist/lib/table/simple-table/make-table.d.ts.map +1 -0
  216. package/dist/lib/table/simple-table/make-table.js +95 -0
  217. package/dist/lib/table/simple-table/row-utils.d.ts.map +1 -0
  218. package/dist/lib/table/simple-table/row-utils.js +33 -0
  219. package/dist/lib/table/simple-table/table-accessors.d.ts +67 -0
  220. package/dist/lib/table/simple-table/table-accessors.d.ts.map +1 -0
  221. package/dist/lib/table/simple-table/table-accessors.js +319 -0
  222. package/dist/lib/table/simple-table/table-column.d.ts +7 -0
  223. package/dist/lib/table/simple-table/table-column.d.ts.map +1 -0
  224. package/dist/lib/table/simple-table/table-column.js +41 -0
  225. package/dist/lib/table/simple-table/table-schema.d.ts +15 -0
  226. package/dist/lib/table/simple-table/table-schema.d.ts.map +1 -0
  227. package/dist/lib/table/simple-table/table-schema.js +85 -0
  228. package/dist/lib/utils/assert.js +11 -5
  229. package/dist/lib/utils/async-queue.js +82 -109
  230. package/dist/{category/gis.d.ts → types/category-gis.d.ts} +26 -26
  231. package/dist/types/category-gis.d.ts.map +1 -0
  232. package/dist/types/category-gis.js +2 -0
  233. package/dist/{category/image/image.d.ts → types/category-image.d.ts} +4 -4
  234. package/dist/types/category-image.d.ts.map +1 -0
  235. package/dist/types/category-image.js +2 -0
  236. package/dist/{category/mesh/mesh-types.d.ts → types/category-mesh.d.ts} +8 -10
  237. package/dist/types/category-mesh.d.ts.map +1 -0
  238. package/dist/types/category-mesh.js +3 -0
  239. package/dist/{category/table/table-types.d.ts → types/category-table.d.ts} +44 -34
  240. package/dist/types/category-table.d.ts.map +1 -0
  241. package/dist/types/category-table.js +3 -0
  242. package/dist/types/category-texture.d.ts +18 -0
  243. package/dist/types/category-texture.d.ts.map +1 -0
  244. package/dist/types/category-texture.js +3 -0
  245. package/dist/types/schema.d.ts +77 -0
  246. package/dist/types/schema.d.ts.map +1 -0
  247. package/dist/types/schema.js +3 -0
  248. package/dist/types/types.d.ts +15 -0
  249. package/dist/types/types.d.ts.map +1 -0
  250. package/dist/types/types.js +2 -0
  251. package/package.json +5 -6
  252. package/src/index.ts +65 -31
  253. package/src/{category → lib}/mesh/convert-mesh.ts +10 -8
  254. package/src/{category → lib}/mesh/deduce-mesh-schema.ts +20 -19
  255. package/src/{category → lib}/mesh/mesh-to-arrow-table.ts +5 -3
  256. package/src/{category → lib}/mesh/mesh-utils.ts +2 -2
  257. package/src/lib/{arrow → table/arrow}/arrow-type-utils.ts +16 -12
  258. package/src/lib/table/arrow/convert-schema-arrow.ts +232 -0
  259. package/src/lib/table/arrow/convert-table-to-arrow.ts +59 -0
  260. package/src/lib/{schema/impl/field.ts → table/arrow-api/arrow-like-field.ts} +6 -4
  261. package/src/lib/table/arrow-api/arrow-like-schema.ts +99 -0
  262. package/src/lib/table/arrow-api/arrow-like-table.ts +83 -0
  263. package/src/lib/{schema/impl/type.ts → table/arrow-api/arrow-like-type.ts} +2 -1
  264. package/src/lib/{arrow → table/arrow-api}/get-type-info.ts +4 -3
  265. package/src/lib/table/arrow-api/index.ts +6 -0
  266. package/src/lib/{batches → table/batches}/base-table-batch-aggregator.ts +5 -3
  267. package/src/lib/{batches → table/batches}/columnar-table-batch-aggregator.ts +5 -3
  268. package/src/lib/{batches → table/batches}/row-table-batch-aggregator.ts +6 -4
  269. package/src/lib/{batches → table/batches}/table-batch-aggregator.ts +4 -2
  270. package/src/lib/{batches → table/batches}/table-batch-builder.ts +8 -6
  271. package/src/lib/table/simple-table/convert-table.ts +72 -0
  272. package/src/lib/table/simple-table/data-type.ts +102 -0
  273. package/src/lib/table/simple-table/make-table.ts +108 -0
  274. package/src/lib/table/simple-table/table-accessors.ts +360 -0
  275. package/src/lib/table/simple-table/table-column.ts +47 -0
  276. package/src/lib/table/simple-table/table-schema.ts +97 -0
  277. package/src/{category/gis.ts → types/category-gis.ts} +9 -2
  278. package/src/{category/mesh/mesh-types.ts → types/category-mesh.ts} +6 -4
  279. package/src/types/category-table.ts +104 -0
  280. package/src/{category/texture/texture.ts → types/category-texture.ts} +3 -1
  281. package/src/types/schema.ts +97 -0
  282. package/src/types/types.ts +43 -0
  283. package/dist/bundle.js.map +0 -1
  284. package/dist/category/common.d.ts +0 -19
  285. package/dist/category/common.d.ts.map +0 -1
  286. package/dist/category/common.js +0 -2
  287. package/dist/category/common.js.map +0 -1
  288. package/dist/category/gis.d.ts.map +0 -1
  289. package/dist/category/gis.js +0 -2
  290. package/dist/category/gis.js.map +0 -1
  291. package/dist/category/image/image.d.ts.map +0 -1
  292. package/dist/category/image/image.js +0 -2
  293. package/dist/category/image/image.js.map +0 -1
  294. package/dist/category/mesh/convert-mesh.d.ts.map +0 -1
  295. package/dist/category/mesh/convert-mesh.js.map +0 -1
  296. package/dist/category/mesh/deduce-mesh-schema.d.ts.map +0 -1
  297. package/dist/category/mesh/deduce-mesh-schema.js +0 -42
  298. package/dist/category/mesh/deduce-mesh-schema.js.map +0 -1
  299. package/dist/category/mesh/mesh-to-arrow-table.d.ts +0 -11
  300. package/dist/category/mesh/mesh-to-arrow-table.d.ts.map +0 -1
  301. package/dist/category/mesh/mesh-to-arrow-table.js +0 -31
  302. package/dist/category/mesh/mesh-to-arrow-table.js.map +0 -1
  303. package/dist/category/mesh/mesh-types.d.ts.map +0 -1
  304. package/dist/category/mesh/mesh-types.js +0 -2
  305. package/dist/category/mesh/mesh-types.js.map +0 -1
  306. package/dist/category/mesh/mesh-utils.d.ts.map +0 -1
  307. package/dist/category/mesh/mesh-utils.js.map +0 -1
  308. package/dist/category/table/deduce-table-schema.d.ts +0 -9
  309. package/dist/category/table/deduce-table-schema.d.ts.map +0 -1
  310. package/dist/category/table/deduce-table-schema.js +0 -51
  311. package/dist/category/table/deduce-table-schema.js.map +0 -1
  312. package/dist/category/table/table-types.d.ts.map +0 -1
  313. package/dist/category/table/table-types.js +0 -2
  314. package/dist/category/table/table-types.js.map +0 -1
  315. package/dist/category/texture/texture.d.ts +0 -18
  316. package/dist/category/texture/texture.d.ts.map +0 -1
  317. package/dist/category/texture/texture.js +0 -2
  318. package/dist/category/texture/texture.js.map +0 -1
  319. package/dist/index.js.map +0 -1
  320. package/dist/lib/arrow/arrow-like-type-utils.d.ts +0 -4
  321. package/dist/lib/arrow/arrow-like-type-utils.d.ts.map +0 -1
  322. package/dist/lib/arrow/arrow-like-type-utils.js.map +0 -1
  323. package/dist/lib/arrow/arrow-type-utils.d.ts +0 -6
  324. package/dist/lib/arrow/arrow-type-utils.d.ts.map +0 -1
  325. package/dist/lib/arrow/arrow-type-utils.js +0 -62
  326. package/dist/lib/arrow/arrow-type-utils.js.map +0 -1
  327. package/dist/lib/arrow/get-type-info.d.ts.map +0 -1
  328. package/dist/lib/arrow/get-type-info.js.map +0 -1
  329. package/dist/lib/batches/base-table-batch-aggregator.d.ts.map +0 -1
  330. package/dist/lib/batches/base-table-batch-aggregator.js.map +0 -1
  331. package/dist/lib/batches/columnar-table-batch-aggregator.d.ts.map +0 -1
  332. package/dist/lib/batches/columnar-table-batch-aggregator.js.map +0 -1
  333. package/dist/lib/batches/row-table-batch-aggregator.d.ts.map +0 -1
  334. package/dist/lib/batches/row-table-batch-aggregator.js.map +0 -1
  335. package/dist/lib/batches/table-batch-aggregator.d.ts.map +0 -1
  336. package/dist/lib/batches/table-batch-aggregator.js.map +0 -1
  337. package/dist/lib/batches/table-batch-builder.d.ts.map +0 -1
  338. package/dist/lib/batches/table-batch-builder.js.map +0 -1
  339. package/dist/lib/schema/impl/enum.d.ts.map +0 -1
  340. package/dist/lib/schema/impl/enum.js.map +0 -1
  341. package/dist/lib/schema/impl/field.d.ts.map +0 -1
  342. package/dist/lib/schema/impl/field.js.map +0 -1
  343. package/dist/lib/schema/impl/schema.d.ts +0 -16
  344. package/dist/lib/schema/impl/schema.d.ts.map +0 -1
  345. package/dist/lib/schema/impl/schema.js.map +0 -1
  346. package/dist/lib/schema/impl/type.d.ts.map +0 -1
  347. package/dist/lib/schema/impl/type.js.map +0 -1
  348. package/dist/lib/schema/schema.d.ts +0 -5
  349. package/dist/lib/schema/schema.d.ts.map +0 -1
  350. package/dist/lib/schema/schema.js +0 -5
  351. package/dist/lib/schema/schema.js.map +0 -1
  352. package/dist/lib/schema-utils/deduce-column-type.d.ts +0 -3
  353. package/dist/lib/schema-utils/deduce-column-type.d.ts.map +0 -1
  354. package/dist/lib/schema-utils/deduce-column-type.js +0 -23
  355. package/dist/lib/schema-utils/deduce-column-type.js.map +0 -1
  356. package/dist/lib/utils/assert.js.map +0 -1
  357. package/dist/lib/utils/async-queue.js.map +0 -1
  358. package/dist/lib/utils/row-utils.d.ts.map +0 -1
  359. package/dist/lib/utils/row-utils.js.map +0 -1
  360. package/dist/types.d.ts +0 -8
  361. package/dist/types.d.ts.map +0 -1
  362. package/dist/types.js.map +0 -1
  363. package/src/category/common.ts +0 -30
  364. package/src/category/table/deduce-table-schema.ts +0 -123
  365. package/src/category/table/table-types.ts +0 -81
  366. package/src/lib/arrow/arrow-like-type-utils.ts +0 -35
  367. package/src/lib/schema/impl/schema.ts +0 -99
  368. package/src/lib/schema/schema.ts +0 -82
  369. package/src/lib/schema-utils/deduce-column-type.ts +0 -92
  370. package/src/types.ts +0 -19
  371. /package/dist/{lib → esm/lib/table}/batches/table-batch-aggregator.js +0 -0
  372. /package/dist/{types.js → esm/types/types.js} +0 -0
  373. /package/dist/lib/{schema/impl → table/arrow-api}/enum.d.ts +0 -0
  374. /package/dist/lib/{utils → table/simple-table}/row-utils.d.ts +0 -0
  375. /package/src/lib/{schema/impl → table/arrow-api}/enum.ts +0 -0
  376. /package/src/lib/{utils → table/simple-table}/row-utils.ts +0 -0
  377. /package/src/{category/image/image.ts → types/category-image.ts} +0 -0
@@ -0,0 +1,72 @@
1
+ // loaders.gl, MIT license
2
+ import {
3
+ getTableCell,
4
+ getTableLength,
5
+ getTableRowAsArray,
6
+ getTableRowAsObject
7
+ } from './table-accessors';
8
+ import {Table, ArrayRowTable, ObjectRowTable, ColumnarTable} from '../../../types/category-table';
9
+ import {deduceTableSchema} from './table-schema';
10
+ import {makeColumnFromField} from './table-column';
11
+
12
+ /** Convert any simple table into columnar format */
13
+ export function makeColumnarTable(table: Table): ColumnarTable {
14
+ // TODO - should schema really be optional?
15
+ const schema = table.schema || deduceTableSchema(table);
16
+ const fields = table.schema?.fields || [];
17
+
18
+ if (table.shape === 'columnar-table') {
19
+ return {...table, schema};
20
+ }
21
+
22
+ const length = getTableLength(table);
23
+
24
+ const columns: {[column: string]: ArrayLike<unknown>} = {};
25
+ for (const field of fields) {
26
+ const column = makeColumnFromField(field, length);
27
+ columns[field.name] = column;
28
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
29
+ column[rowIndex] = getTableCell(table, rowIndex, field.name);
30
+ }
31
+ }
32
+
33
+ return {
34
+ shape: 'columnar-table',
35
+ schema,
36
+ data: columns
37
+ };
38
+ }
39
+
40
+ /** Convert any table into array row format */
41
+ export function makeArrayRowTable(table: Table): ArrayRowTable {
42
+ if (table.shape === 'array-row-table') {
43
+ return table;
44
+ }
45
+ const length = getTableLength(table);
46
+ const data = new Array<unknown[]>(length);
47
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
48
+ data[rowIndex] = getTableRowAsArray(table, rowIndex);
49
+ }
50
+ return {
51
+ shape: 'array-row-table',
52
+ schema: table.schema,
53
+ data
54
+ };
55
+ }
56
+
57
+ /** Convert any table into object row format */
58
+ export function makeObjectRowTable(table: Table): ObjectRowTable {
59
+ if (table.shape === 'object-row-table') {
60
+ return table;
61
+ }
62
+ const length = getTableLength(table);
63
+ const data = new Array<{[key: string]: unknown}>(length);
64
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
65
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
66
+ }
67
+ return {
68
+ shape: 'object-row-table',
69
+ schema: table.schema,
70
+ data
71
+ };
72
+ }
@@ -0,0 +1,102 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import {DataType} from '../../../types/schema';
4
+ import {TypedArray, TypedArrayConstructor, ArrayType} from '../../../types/types';
5
+
6
+ /** Deduce column types from values */
7
+ export function getDataTypeFromValue(
8
+ value: unknown,
9
+ defaultNumberType: 'float32' = 'float32'
10
+ ): DataType {
11
+ if (value instanceof Date) {
12
+ return 'date-millisecond';
13
+ }
14
+ if (value instanceof Number) {
15
+ return defaultNumberType;
16
+ }
17
+ if (typeof value === 'string') {
18
+ return 'utf8';
19
+ }
20
+ if (value === null || value === 'undefined') {
21
+ return 'null';
22
+ }
23
+ return 'null';
24
+ }
25
+
26
+ /**
27
+ * Deduces a simple data type "descriptor from a typed array instance
28
+ */
29
+ export function getDataTypeFromArray(array: ArrayType): {type: DataType; nullable: boolean} {
30
+ let type = getDataTypeFromTypedArray(array as TypedArray);
31
+ if (type !== 'null') {
32
+ return {type, nullable: false};
33
+ }
34
+ if (array.length > 0) {
35
+ type = getDataTypeFromValue(array[0]);
36
+ return {type, nullable: true};
37
+ }
38
+
39
+ return {type: 'null', nullable: true};
40
+ }
41
+
42
+ /**
43
+ * Deduces a simple data type "descriptor from a typed array instance
44
+ */
45
+ export function getDataTypeFromTypedArray(array: TypedArray): DataType {
46
+ switch (array.constructor) {
47
+ case Int8Array:
48
+ return 'int8';
49
+ case Uint8Array:
50
+ case Uint8ClampedArray:
51
+ return 'uint8';
52
+ case Int16Array:
53
+ return 'int16';
54
+ case Uint16Array:
55
+ return 'uint16';
56
+ case Int32Array:
57
+ return 'int32';
58
+ case Uint32Array:
59
+ return 'uint32';
60
+ case Float32Array:
61
+ return 'float32';
62
+ case Float64Array:
63
+ return 'float64';
64
+ default:
65
+ return 'null';
66
+ }
67
+ }
68
+
69
+ export function getArrayTypeFromDataType(
70
+ type: DataType,
71
+ nullable: boolean | undefined
72
+ ): TypedArrayConstructor | ArrayConstructor {
73
+ if (!nullable) {
74
+ switch (type) {
75
+ case 'int8':
76
+ return Int8Array;
77
+ case 'uint8':
78
+ return Uint8Array;
79
+ case 'int16':
80
+ return Int16Array;
81
+ case 'uint16':
82
+ return Uint16Array;
83
+ case 'int32':
84
+ return Int32Array;
85
+ case 'uint32':
86
+ return Uint32Array;
87
+ case 'float32':
88
+ return Float32Array;
89
+ case 'float64':
90
+ return Float64Array;
91
+ default:
92
+ break;
93
+ }
94
+ }
95
+
96
+ // if (typeof BigInt64Array !== 'undefined') {
97
+ // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();
98
+ // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();
99
+ // }
100
+
101
+ return Array;
102
+ }
@@ -0,0 +1,108 @@
1
+ // loaders.gl, MIT license
2
+ import {Table, ArrayRowTable, ObjectRowTable, ColumnarTable} from '../../../types/category-table';
3
+ import {deduceTableSchema} from './table-schema';
4
+
5
+ /**
6
+ * Makes a typed table from data.
7
+ * @throws Row tables must contain at least one row. Columnar tables must contain empty arrays
8
+ */
9
+ export function makeTableFromData(data: unknown[][]): ArrayRowTable;
10
+ export function makeTableFromData(data: {[column: string]: unknown}[]): ObjectRowTable;
11
+ export function makeTableFromData(data: {[column: string]: ArrayLike<unknown>}): ColumnarTable;
12
+ export function makeTableFromData(data: unknown): Table {
13
+ let table: Table;
14
+ switch (getTableShapeFromData(data)) {
15
+ case 'array-row-table':
16
+ table = {shape: 'array-row-table', data: data as unknown[][]};
17
+ break;
18
+ case 'object-row-table':
19
+ table = {shape: 'object-row-table', data: data as {[key: string]: unknown}[]};
20
+ break;
21
+ case 'columnar-table':
22
+ table = {shape: 'columnar-table', data: data as {[column: string]: ArrayLike<unknown>}};
23
+ break;
24
+ default:
25
+ throw new Error('table');
26
+ }
27
+ const schema = deduceTableSchema(table);
28
+ return {...table, schema};
29
+ }
30
+
31
+ /** Helper function to get shape of data */
32
+ function getTableShapeFromData(data) {
33
+ if (Array.isArray(data)) {
34
+ if (data.length === 0) {
35
+ throw new Error('cannot deduce type of empty table');
36
+ }
37
+
38
+ // Deduce the table shape from the first row
39
+ const firstRow = data[0];
40
+
41
+ if (Array.isArray(firstRow)) {
42
+ return 'array-row-table';
43
+ }
44
+
45
+ if (firstRow && typeof firstRow === 'object') {
46
+ return 'object-row-table';
47
+ }
48
+ }
49
+
50
+ if (data && typeof data === 'object') {
51
+ return 'columnar-table';
52
+ }
53
+
54
+ throw new Error('invalid table');
55
+ }
56
+
57
+ /** Convert any table into object row format *
58
+ export function makeColumnarTable(table: Table): ColumnarTable {
59
+ if (table.shape === 'columnar-table') {
60
+ return table;
61
+ }
62
+ const length = getTableLength(table);
63
+ const data = new Array<{[key: string]: unknown}>(length);
64
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
65
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
66
+ }
67
+ return {
68
+ shape: 'columnar-table',
69
+ schema: table.schema,
70
+ data
71
+ };
72
+ }
73
+
74
+
75
+ /** Convert any table into array row format *
76
+ export function makeArrayRowTable(table: TableLike): ArrayRowTable {
77
+ if (table.shape === 'array-row-table') {
78
+ return table;
79
+ }
80
+ const length = getTableLength(table);
81
+ const data = new Array<unknown[]>(length);
82
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
83
+ data[rowIndex] = getTableRowAsArray(table, rowIndex);
84
+ }
85
+ return {
86
+ shape: 'array-row-table',
87
+ schema: table.schema,
88
+ data
89
+ };
90
+ }
91
+
92
+ /** Convert any table into object row format *
93
+ export function makeObjectRowTable(table: Table): ObjectRowTable {
94
+ if (table.shape === 'object-row-table') {
95
+ return table;
96
+ }
97
+ const length = getTableLength(table);
98
+ const data = new Array<{[key: string]: unknown}>(length);
99
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
100
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
101
+ }
102
+ return {
103
+ shape: 'object-row-table',
104
+ schema: table.schema,
105
+ data
106
+ };
107
+ }
108
+ */
@@ -0,0 +1,360 @@
1
+ // loaders.gl, MIT license
2
+
3
+ /* eslint-disable no-else-return */
4
+
5
+ import {Table, ArrayRowTable, ObjectRowTable} from '../../../types/category-table';
6
+
7
+ /**
8
+ * Returns the length of the table (i.e. the number of rows)
9
+ */
10
+ export function getTableLength(table: Table): number {
11
+ switch (table.shape) {
12
+ case 'array-row-table':
13
+ case 'object-row-table':
14
+ case 'geojson-row-table':
15
+ return table.data.length;
16
+
17
+ case 'arrow-table':
18
+ return table.data.numRows;
19
+
20
+ case 'columnar-table':
21
+ for (const column of Object.values(table.data)) {
22
+ return column.length || 0;
23
+ }
24
+ return 0;
25
+ default:
26
+ throw new Error('table');
27
+ }
28
+ }
29
+
30
+ /**
31
+ * Returns the number of columns in the table
32
+ * @throws Fails to deduce number of columns if the table has no schema and is empty
33
+ */
34
+ export function getTableNumCols(table: Table): number {
35
+ if (table.schema) {
36
+ return table.schema.fields.length;
37
+ }
38
+ if (getTableLength(table) === 0) {
39
+ throw new Error('empty table');
40
+ }
41
+ switch (table.shape) {
42
+ case 'array-row-table':
43
+ return table.data[0].length;
44
+ case 'object-row-table':
45
+ case 'geojson-row-table':
46
+ return Object.keys(table.data[0]).length;
47
+
48
+ case 'columnar-table':
49
+ return Object.keys(table.data).length;
50
+
51
+ case 'arrow-table':
52
+ return table.data.numCols;
53
+ default:
54
+ throw new Error('table');
55
+ }
56
+ }
57
+
58
+ /** Get a table cell value at row index and column name */
59
+ export function getTableCell(table: Table, rowIndex: number, columnName: string): unknown {
60
+ switch (table.shape) {
61
+ case 'array-row-table':
62
+ const columnIndex = getTableColumnIndex(table, columnName);
63
+ return table.data[rowIndex][columnIndex];
64
+
65
+ case 'object-row-table':
66
+ case 'geojson-row-table':
67
+ return table.data[rowIndex][columnName];
68
+
69
+ case 'columnar-table':
70
+ const column = table.data[columnName];
71
+ return column[rowIndex];
72
+
73
+ case 'arrow-table':
74
+ const arrowColumnIndex = table.data.schema.fields.findIndex(
75
+ (field) => field.name === columnName
76
+ );
77
+ return table.data.getChildAt(arrowColumnIndex)?.get(rowIndex);
78
+
79
+ default:
80
+ throw new Error('todo');
81
+ }
82
+ }
83
+
84
+ /** Get a table cell value at row index and column name */
85
+ export function getTableCellAt(table: Table, rowIndex: number, columnIndex: number): unknown {
86
+ switch (table.shape) {
87
+ case 'array-row-table':
88
+ return table.data[rowIndex][columnIndex];
89
+
90
+ case 'object-row-table':
91
+ case 'geojson-row-table':
92
+ let columnName = getTableColumnName(table, columnIndex);
93
+ return table.data[rowIndex][columnName];
94
+
95
+ case 'columnar-table':
96
+ columnName = getTableColumnName(table, columnIndex);
97
+ const column = table.data[columnName];
98
+ return column[rowIndex];
99
+
100
+ case 'arrow-table':
101
+ return table.data.getChildAt(columnIndex)?.get(rowIndex);
102
+
103
+ default:
104
+ throw new Error('todo');
105
+ }
106
+ }
107
+
108
+ /** Deduce the table row shape */
109
+ export function getTableRowShape(table: Table): 'array-row-table' | 'object-row-table' {
110
+ switch (table.shape) {
111
+ case 'array-row-table':
112
+ case 'object-row-table':
113
+ return table.shape;
114
+
115
+ case 'geojson-row-table':
116
+ return 'object-row-table';
117
+
118
+ case 'columnar-table':
119
+ default:
120
+ throw new Error('Not a row table');
121
+ }
122
+ }
123
+
124
+ /** Get the index of a named table column. Requires the table to have a schema */
125
+ export function getTableColumnIndex(table: Table, columnName: string): number {
126
+ const columnIndex = table.schema?.fields.findIndex((field) => field.name === columnName);
127
+ if (columnIndex === undefined) {
128
+ throw new Error(columnName);
129
+ }
130
+ return columnIndex;
131
+ }
132
+
133
+ /** Get the name of a table column by index. Requires the table to have a schema */
134
+ export function getTableColumnName(table: Table, columnIndex: number): string {
135
+ const columnName = table.schema?.fields[columnIndex]?.name;
136
+ if (!columnName) {
137
+ throw new Error(`${columnIndex}`);
138
+ }
139
+ return columnName;
140
+ }
141
+
142
+ /**
143
+ * Returns one row of the table in object format.
144
+ * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance
145
+ * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter
146
+ */
147
+ // eslint-disable-next-line complexity
148
+ export function getTableRowAsObject(
149
+ table: Table,
150
+ rowIndex: number,
151
+ target?: {[columnName: string]: unknown},
152
+ copy?: 'copy'
153
+ ): {[columnName: string]: unknown} {
154
+ switch (table.shape) {
155
+ case 'object-row-table':
156
+ return copy ? Object.fromEntries(Object.entries(table.data[rowIndex])) : table.data[rowIndex];
157
+
158
+ case 'array-row-table':
159
+ case 'geojson-row-table':
160
+ if (table.schema) {
161
+ const objectRow: {[columnName: string]: unknown} = target || {};
162
+ for (let i = 0; i < table.schema.fields.length; i++) {
163
+ objectRow[table.schema.fields[i].name] = table.data[rowIndex][i];
164
+ }
165
+ return objectRow;
166
+ }
167
+ throw new Error('no schema');
168
+
169
+ case 'columnar-table':
170
+ if (table.schema) {
171
+ const objectRow: {[columnName: string]: unknown} = target || {};
172
+ for (let i = 0; i < table.schema.fields.length; i++) {
173
+ objectRow[table.schema.fields[i].name] =
174
+ table.data[table.schema.fields[i].name][rowIndex];
175
+ }
176
+ return objectRow;
177
+ } else {
178
+ // eslint-disable-line no-else-return
179
+ const objectRow: {[columnName: string]: unknown} = target || {};
180
+ for (const [name, column] of Object.entries(table.data)) {
181
+ objectRow[name] = column[rowIndex];
182
+ }
183
+ return objectRow;
184
+ }
185
+
186
+ case 'arrow-table':
187
+ const objectRow: {[columnName: string]: unknown} = target || {};
188
+ const row = table.data.get(rowIndex);
189
+ const schema = table.data.schema;
190
+ for (let i = 0; i < schema.fields.length; i++) {
191
+ objectRow[schema.fields[i].name] = row?.[schema.fields[i].name];
192
+ }
193
+ return objectRow;
194
+
195
+ default:
196
+ throw new Error('shape');
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Returns one row of the table in array format.
202
+ * @param target Optional parameter will be used if needed to store the row. Can be reused between calls to improve performance.
203
+ * @returns an array representing the row. May be the original array in the row, a new object, or the target parameter
204
+ */
205
+ // eslint-disable-next-line complexity
206
+ export function getTableRowAsArray(
207
+ table: Table,
208
+ rowIndex: number,
209
+ target?: unknown[],
210
+ copy?: 'copy'
211
+ ): unknown[] {
212
+ switch (table.shape) {
213
+ case 'array-row-table':
214
+ return copy ? Array.from(table.data[rowIndex]) : table.data[rowIndex];
215
+
216
+ case 'object-row-table':
217
+ case 'geojson-row-table':
218
+ if (table.schema) {
219
+ const arrayRow: unknown[] = target || [];
220
+ for (let i = 0; i < table.schema.fields.length; i++) {
221
+ arrayRow[i] = table.data[rowIndex][table.schema.fields[i].name];
222
+ }
223
+ return arrayRow;
224
+ }
225
+ // Warning: just slap on the values, this risks mismatches between rows
226
+ return Object.values(table.data[rowIndex]);
227
+
228
+ case 'columnar-table':
229
+ if (table.schema) {
230
+ const arrayRow: unknown[] = target || [];
231
+ for (let i = 0; i < table.schema.fields.length; i++) {
232
+ arrayRow[i] = table.data[table.schema.fields[i].name][rowIndex];
233
+ }
234
+ return arrayRow;
235
+ } else {
236
+ // eslint-disable-line no-else-return
237
+ const arrayRow: unknown[] = target || [];
238
+ let i = 0;
239
+ for (const column of Object.values(table.data)) {
240
+ arrayRow[i] = column[rowIndex];
241
+ i++;
242
+ }
243
+ return arrayRow;
244
+ }
245
+
246
+ case 'arrow-table':
247
+ const arrayRow: unknown[] = target || [];
248
+ const row = table.data.get(rowIndex);
249
+ const schema = table.data.schema;
250
+ for (let i = 0; i < schema.fields.length; i++) {
251
+ arrayRow[i] = row?.[schema.fields[i].name];
252
+ }
253
+ return arrayRow;
254
+
255
+ default:
256
+ throw new Error('shape');
257
+ }
258
+ }
259
+
260
+ /** Convert any table into array row format */
261
+ export function makeArrayRowTable(table: Table): ArrayRowTable {
262
+ if (table.shape === 'array-row-table') {
263
+ return table;
264
+ }
265
+ const length = getTableLength(table);
266
+ const data = new Array<unknown[]>(length);
267
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
268
+ data[rowIndex] = getTableRowAsArray(table, rowIndex);
269
+ }
270
+ return {
271
+ shape: 'array-row-table',
272
+ schema: table.schema,
273
+ data
274
+ };
275
+ }
276
+
277
+ /** Convert any table into object row format */
278
+ export function makeObjectRowTable(table: Table): ObjectRowTable {
279
+ if (table.shape === 'object-row-table') {
280
+ return table;
281
+ }
282
+ const length = getTableLength(table);
283
+ const data = new Array<{[key: string]: unknown}>(length);
284
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
285
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
286
+ }
287
+ return {
288
+ shape: 'object-row-table',
289
+ schema: table.schema,
290
+ data
291
+ };
292
+ }
293
+
294
+ /** Convert any table into object row format */
295
+ export function makeColumnarTable(table: Table): ObjectRowTable {
296
+ if (table.shape === 'object-row-table') {
297
+ return table;
298
+ }
299
+ const length = getTableLength(table);
300
+ const data = new Array<{[key: string]: unknown}>(length);
301
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
302
+ data[rowIndex] = getTableRowAsObject(table, rowIndex);
303
+ }
304
+ return {
305
+ shape: 'object-row-table',
306
+ schema: table.schema,
307
+ data
308
+ };
309
+ }
310
+
311
+ // Row Iterators
312
+
313
+ /**
314
+ * Iterate over table rows
315
+ * @param table
316
+ * @param shape
317
+ */
318
+ export function* makeRowIterator(
319
+ table: Table,
320
+ shape: 'object-row-table' | 'array-row-table'
321
+ ): Iterable<unknown[] | {[key: string]: unknown}> {
322
+ switch (shape) {
323
+ case 'array-row-table':
324
+ yield* makeArrayRowIterator(table);
325
+ break;
326
+ case 'object-row-table':
327
+ yield* makeObjectRowIterator(table);
328
+ break;
329
+
330
+ default:
331
+ throw new Error(`Unknown row type ${shape}`);
332
+ }
333
+ }
334
+
335
+ /**
336
+ * Streaming processing: Iterate over table, yielding array rows
337
+ * @param table
338
+ * @param shape
339
+ */
340
+ export function* makeArrayRowIterator(table: Table, target: unknown[] = []): Iterable<unknown[]> {
341
+ const length = getTableLength(table);
342
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
343
+ yield getTableRowAsArray(table, rowIndex, target);
344
+ }
345
+ }
346
+
347
+ /**
348
+ * Streaming processing: Iterate over table, yielding object rows
349
+ * @param table
350
+ * @param shape
351
+ */
352
+ export function* makeObjectRowIterator(
353
+ table: Table,
354
+ target: {[key: string]: unknown} = {}
355
+ ): Iterable<{[key: string]: unknown}> {
356
+ const length = getTableLength(table);
357
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
358
+ yield getTableRowAsObject(table, rowIndex, target);
359
+ }
360
+ }
@@ -0,0 +1,47 @@
1
+ // loaders.gl, MIT license
2
+
3
+ // import type {TypedArray,} from '../../../types/types';
4
+ import {Field} from '../../../types/schema';
5
+ import {getArrayTypeFromDataType} from './data-type';
6
+
7
+ export interface ArrayType<T = unknown> {
8
+ readonly length: number;
9
+ [n: number]: T;
10
+ }
11
+
12
+ export function makeColumnFromField(field: Field, length: number): ArrayType {
13
+ const ArrayType = getArrayTypeFromDataType(field.type, field.nullable);
14
+ return new ArrayType(length);
15
+ }
16
+
17
+ /*
18
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
+ function deduceSchema(rows) {
20
+ const row = rows[0];
21
+
22
+ const schema = {};
23
+ let i = 0;
24
+ for (const columnName in row) {
25
+ const value = row[columnName];
26
+ switch (typeof value) {
27
+ case 'number':
28
+ case 'boolean':
29
+ // TODO - booleans could be handled differently...
30
+ schema[columnName] = {name: String(columnName), index: i, type: Float32Array};
31
+ break;
32
+
33
+ case 'object':
34
+ schema[columnName] = {name: String(columnName), index: i, type: Array};
35
+ break;
36
+
37
+ case 'string':
38
+ default:
39
+ schema[columnName] = {name: String(columnName), index: i, type: Array};
40
+ // We currently only handle numeric rows
41
+ // TODO we could offer a function to map strings to numbers?
42
+ }
43
+ i++;
44
+ }
45
+ return schema;
46
+ }
47
+ */