@loaders.gl/schema 4.0.0-alpha.4 → 4.0.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +13589 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/index.js +406 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/mesh/convert-mesh.js +34 -0
- package/dist/es5/lib/mesh/convert-mesh.js.map +1 -0
- package/dist/es5/lib/mesh/deduce-mesh-schema.js +56 -0
- package/dist/es5/lib/mesh/deduce-mesh-schema.js.map +1 -0
- package/dist/es5/lib/mesh/mesh-to-arrow-table.js +2 -0
- package/dist/es5/lib/mesh/mesh-to-arrow-table.js.map +1 -0
- package/dist/es5/lib/mesh/mesh-utils.js +40 -0
- package/dist/es5/lib/mesh/mesh-utils.js.map +1 -0
- package/dist/es5/lib/table/arrow/arrow-type-utils.js +30 -0
- package/dist/es5/lib/table/arrow/arrow-type-utils.js.map +1 -0
- package/dist/es5/lib/table/arrow/convert-schema-arrow.js +179 -0
- package/dist/es5/lib/table/arrow/convert-schema-arrow.js.map +1 -0
- package/dist/es5/lib/table/arrow/convert-table-to-arrow.js +2 -0
- package/dist/es5/lib/table/arrow/convert-table-to-arrow.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-field.js +49 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-field.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-schema.js +118 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-schema.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-table.js +80 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-table.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-type.js +740 -0
- package/dist/es5/lib/table/arrow-api/arrow-like-type.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/enum.js +55 -0
- package/dist/es5/lib/table/arrow-api/enum.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/get-type-info.js +27 -0
- package/dist/es5/lib/table/arrow-api/get-type-info.js.map +1 -0
- package/dist/es5/lib/table/arrow-api/index.js +44 -0
- package/dist/es5/lib/table/arrow-api/index.js.map +1 -0
- package/dist/es5/lib/table/batches/base-table-batch-aggregator.js +78 -0
- package/dist/es5/lib/table/batches/base-table-batch-aggregator.js.map +1 -0
- package/dist/es5/lib/table/batches/columnar-table-batch-aggregator.js +106 -0
- package/dist/es5/lib/table/batches/columnar-table-batch-aggregator.js.map +1 -0
- package/dist/es5/lib/table/batches/row-table-batch-aggregator.js +96 -0
- package/dist/es5/lib/table/batches/row-table-batch-aggregator.js.map +1 -0
- package/dist/es5/lib/table/batches/table-batch-aggregator.js +2 -0
- package/dist/es5/lib/table/batches/table-batch-aggregator.js.map +1 -0
- package/dist/es5/lib/table/batches/table-batch-builder.js +173 -0
- package/dist/es5/lib/table/batches/table-batch-builder.js.map +1 -0
- package/dist/es5/lib/table/simple-table/convert-table.js +82 -0
- package/dist/es5/lib/table/simple-table/convert-table.js.map +1 -0
- package/dist/es5/lib/table/simple-table/data-type.js +94 -0
- package/dist/es5/lib/table/simple-table/data-type.js.map +1 -0
- package/dist/es5/lib/table/simple-table/make-table.js +60 -0
- package/dist/es5/lib/table/simple-table/make-table.js.map +1 -0
- package/dist/es5/lib/table/simple-table/row-utils.js +34 -0
- package/dist/es5/lib/table/simple-table/row-utils.js.map +1 -0
- package/dist/es5/lib/table/simple-table/table-accessors.js +343 -0
- package/dist/es5/lib/table/simple-table/table-accessors.js.map +1 -0
- package/dist/es5/lib/table/simple-table/table-column.js +12 -0
- package/dist/es5/lib/table/simple-table/table-column.js.map +1 -0
- package/dist/es5/lib/table/simple-table/table-schema.js +85 -0
- package/dist/es5/lib/table/simple-table/table-schema.js.map +1 -0
- package/dist/es5/lib/utils/assert.js +12 -0
- package/dist/es5/lib/utils/assert.js.map +1 -0
- package/dist/es5/lib/utils/async-queue.js +169 -0
- package/dist/es5/lib/utils/async-queue.js.map +1 -0
- package/dist/es5/types/category-gis.js +2 -0
- package/dist/es5/types/category-gis.js.map +1 -0
- package/dist/es5/types/category-image.js +2 -0
- package/dist/es5/types/category-image.js.map +1 -0
- package/dist/es5/types/category-mesh.js +2 -0
- package/dist/es5/types/category-mesh.js.map +1 -0
- package/dist/es5/types/category-table.js +2 -0
- package/dist/es5/types/category-table.js.map +1 -0
- package/dist/es5/types/category-texture.js +2 -0
- package/dist/es5/types/category-texture.js.map +1 -0
- package/dist/es5/types/schema.js +2 -0
- package/dist/es5/types/schema.js.map +1 -0
- package/dist/es5/types/types.js +2 -0
- package/dist/es5/types/types.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/{category → esm/lib}/mesh/convert-mesh.js +0 -11
- package/dist/esm/lib/mesh/convert-mesh.js.map +1 -0
- package/dist/esm/lib/mesh/deduce-mesh-schema.js +48 -0
- package/dist/esm/lib/mesh/deduce-mesh-schema.js.map +1 -0
- package/dist/esm/lib/mesh/mesh-to-arrow-table.js +2 -0
- package/dist/esm/lib/mesh/mesh-to-arrow-table.js.map +1 -0
- package/dist/{category → esm/lib}/mesh/mesh-utils.js +0 -5
- package/dist/esm/lib/mesh/mesh-utils.js.map +1 -0
- package/dist/{lib/arrow/arrow-like-type-utils.js → esm/lib/table/arrow/arrow-type-utils.js} +3 -11
- package/dist/esm/lib/table/arrow/arrow-type-utils.js.map +1 -0
- package/dist/esm/lib/table/arrow/convert-schema-arrow.js +158 -0
- package/dist/esm/lib/table/arrow/convert-schema-arrow.js.map +1 -0
- package/dist/esm/lib/table/arrow/convert-table-to-arrow.js +2 -0
- package/dist/esm/lib/table/arrow/convert-table-to-arrow.js.map +1 -0
- package/dist/{lib/schema/impl/field.js → esm/lib/table/arrow-api/arrow-like-field.js} +6 -13
- package/dist/esm/lib/table/arrow-api/arrow-like-field.js.map +1 -0
- package/dist/{lib/schema/impl/schema.js → esm/lib/table/arrow-api/arrow-like-schema.js} +22 -47
- package/dist/esm/lib/table/arrow-api/arrow-like-schema.js.map +1 -0
- package/dist/esm/lib/table/arrow-api/arrow-like-table.js +51 -0
- package/dist/esm/lib/table/arrow-api/arrow-like-table.js.map +1 -0
- package/dist/{lib/schema/impl/type.js → esm/lib/table/arrow-api/arrow-like-type.js} +11 -116
- package/dist/esm/lib/table/arrow-api/arrow-like-type.js.map +1 -0
- package/dist/{lib/schema/impl → esm/lib/table/arrow-api}/enum.js +3 -4
- package/dist/esm/lib/table/arrow-api/enum.js.map +1 -0
- package/dist/{lib/arrow → esm/lib/table/arrow-api}/get-type-info.js +1 -4
- package/dist/esm/lib/table/arrow-api/get-type-info.js.map +1 -0
- package/dist/esm/lib/table/arrow-api/index.js +5 -0
- package/dist/esm/lib/table/arrow-api/index.js.map +1 -0
- package/dist/{lib → esm/lib/table}/batches/base-table-batch-aggregator.js +1 -18
- package/dist/esm/lib/table/batches/base-table-batch-aggregator.js.map +1 -0
- package/dist/{lib → esm/lib/table}/batches/columnar-table-batch-aggregator.js +1 -24
- package/dist/esm/lib/table/batches/columnar-table-batch-aggregator.js.map +1 -0
- package/dist/{lib → esm/lib/table}/batches/row-table-batch-aggregator.js +2 -22
- package/dist/esm/lib/table/batches/row-table-batch-aggregator.js.map +1 -0
- package/dist/esm/lib/table/batches/table-batch-aggregator.js.map +1 -0
- package/dist/{lib → esm/lib/table}/batches/table-batch-builder.js +6 -49
- package/dist/esm/lib/table/batches/table-batch-builder.js.map +1 -0
- package/dist/esm/lib/table/simple-table/convert-table.js +59 -0
- package/dist/esm/lib/table/simple-table/convert-table.js.map +1 -0
- package/dist/esm/lib/table/simple-table/data-type.js +85 -0
- package/dist/esm/lib/table/simple-table/data-type.js.map +1 -0
- package/dist/esm/lib/table/simple-table/make-table.js +50 -0
- package/dist/esm/lib/table/simple-table/make-table.js.map +1 -0
- package/dist/{lib/utils → esm/lib/table/simple-table}/row-utils.js +0 -8
- package/dist/esm/lib/table/simple-table/row-utils.js.map +1 -0
- package/dist/esm/lib/table/simple-table/table-accessors.js +262 -0
- package/dist/esm/lib/table/simple-table/table-accessors.js.map +1 -0
- package/dist/esm/lib/table/simple-table/table-column.js +6 -0
- package/dist/esm/lib/table/simple-table/table-column.js.map +1 -0
- package/dist/esm/lib/table/simple-table/table-schema.js +70 -0
- package/dist/esm/lib/table/simple-table/table-schema.js.map +1 -0
- package/dist/esm/lib/utils/assert.js +6 -0
- package/dist/esm/lib/utils/assert.js.map +1 -0
- package/dist/esm/lib/utils/async-queue.js +94 -0
- package/dist/esm/lib/utils/async-queue.js.map +1 -0
- package/dist/esm/types/category-gis.js +2 -0
- package/dist/esm/types/category-gis.js.map +1 -0
- package/dist/esm/types/category-image.js +2 -0
- package/dist/esm/types/category-image.js.map +1 -0
- package/dist/esm/types/category-mesh.js +2 -0
- package/dist/esm/types/category-mesh.js.map +1 -0
- package/dist/esm/types/category-table.js +2 -0
- package/dist/esm/types/category-table.js.map +1 -0
- package/dist/esm/types/category-texture.js +2 -0
- package/dist/esm/types/category-texture.js.map +1 -0
- package/dist/esm/types/schema.js +2 -0
- package/dist/esm/types/schema.js.map +1 -0
- package/dist/esm/types/types.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +92 -13
- package/dist/lib/mesh/convert-mesh.d.ts +15 -0
- package/dist/lib/mesh/convert-mesh.d.ts.map +1 -0
- package/dist/lib/mesh/convert-mesh.js +40 -0
- package/dist/lib/mesh/deduce-mesh-schema.d.ts +24 -0
- package/dist/lib/mesh/deduce-mesh-schema.d.ts.map +1 -0
- package/dist/lib/mesh/deduce-mesh-schema.js +66 -0
- package/dist/lib/mesh/mesh-to-arrow-table.d.ts +1 -0
- package/dist/lib/mesh/mesh-to-arrow-table.d.ts.map +1 -0
- package/dist/lib/mesh/mesh-to-arrow-table.js +44 -0
- package/dist/lib/mesh/mesh-utils.d.ts +23 -0
- package/dist/lib/mesh/mesh-utils.d.ts.map +1 -0
- package/dist/lib/mesh/mesh-utils.js +51 -0
- package/dist/lib/table/arrow/arrow-type-utils.d.ts +4 -0
- package/dist/lib/table/arrow/arrow-type-utils.d.ts.map +1 -0
- package/dist/lib/table/arrow/arrow-type-utils.js +53 -0
- package/dist/lib/table/arrow/convert-schema-arrow.d.ts +13 -0
- package/dist/lib/table/arrow/convert-schema-arrow.d.ts.map +1 -0
- package/dist/lib/table/arrow/convert-schema-arrow.js +187 -0
- package/dist/lib/table/arrow/convert-table-to-arrow.d.ts +42 -0
- package/dist/lib/table/arrow/convert-table-to-arrow.d.ts.map +1 -0
- package/dist/lib/table/arrow/convert-table-to-arrow.js +57 -0
- package/dist/lib/table/arrow-api/arrow-like-field.d.ts +19 -0
- package/dist/lib/table/arrow-api/arrow-like-field.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/arrow-like-field.js +34 -0
- package/dist/lib/table/arrow-api/arrow-like-schema.d.ts +12 -0
- package/dist/lib/table/arrow-api/arrow-like-schema.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/arrow-like-schema.js +81 -0
- package/dist/lib/table/arrow-api/arrow-like-table.d.ts +28 -0
- package/dist/lib/table/arrow-api/arrow-like-table.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/arrow-like-table.js +53 -0
- package/dist/lib/table/arrow-api/arrow-like-type.d.ts +177 -0
- package/dist/lib/table/arrow-api/arrow-like-type.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/arrow-like-type.js +463 -0
- package/dist/lib/table/arrow-api/enum.d.ts +92 -0
- package/dist/lib/table/arrow-api/enum.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/enum.js +97 -0
- package/dist/lib/table/arrow-api/get-type-info.d.ts +13 -0
- package/dist/lib/table/arrow-api/get-type-info.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/get-type-info.js +29 -0
- package/dist/lib/table/arrow-api/index.d.ts +5 -0
- package/dist/lib/table/arrow-api/index.d.ts.map +1 -0
- package/dist/lib/table/arrow-api/index.js +25 -0
- package/dist/lib/table/batches/base-table-batch-aggregator.d.ts +19 -0
- package/dist/lib/table/batches/base-table-batch-aggregator.d.ts.map +1 -0
- package/dist/lib/table/batches/base-table-batch-aggregator.js +60 -0
- package/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts +23 -0
- package/dist/lib/table/batches/columnar-table-batch-aggregator.d.ts.map +1 -0
- package/dist/lib/table/batches/columnar-table-batch-aggregator.js +92 -0
- package/dist/lib/table/batches/row-table-batch-aggregator.d.ts +22 -0
- package/dist/lib/table/batches/row-table-batch-aggregator.d.ts.map +1 -0
- package/dist/lib/table/batches/row-table-batch-aggregator.js +81 -0
- package/dist/lib/table/batches/table-batch-aggregator.d.ts +25 -0
- package/dist/lib/table/batches/table-batch-aggregator.d.ts.map +1 -0
- package/dist/lib/table/batches/table-batch-aggregator.js +3 -0
- package/dist/lib/table/batches/table-batch-builder.d.ts +53 -0
- package/dist/lib/table/batches/table-batch-builder.d.ts.map +1 -0
- package/dist/lib/table/batches/table-batch-builder.js +152 -0
- package/dist/lib/table/simple-table/convert-table.d.ts +8 -0
- package/dist/lib/table/simple-table/convert-table.d.ts.map +1 -0
- package/dist/lib/table/simple-table/convert-table.js +65 -0
- package/dist/lib/table/simple-table/data-type.d.ts +17 -0
- package/dist/lib/table/simple-table/data-type.d.ts.map +1 -0
- package/dist/lib/table/simple-table/data-type.js +93 -0
- package/dist/lib/table/simple-table/make-table.d.ts +65 -0
- package/dist/lib/table/simple-table/make-table.d.ts.map +1 -0
- package/dist/lib/table/simple-table/make-table.js +95 -0
- package/dist/lib/table/simple-table/row-utils.d.ts +9 -0
- package/dist/lib/table/simple-table/row-utils.d.ts.map +1 -0
- package/dist/lib/table/simple-table/row-utils.js +33 -0
- package/dist/lib/table/simple-table/table-accessors.d.ts +67 -0
- package/dist/lib/table/simple-table/table-accessors.d.ts.map +1 -0
- package/dist/lib/table/simple-table/table-accessors.js +319 -0
- package/dist/lib/table/simple-table/table-column.d.ts +7 -0
- package/dist/lib/table/simple-table/table-column.d.ts.map +1 -0
- package/dist/lib/table/simple-table/table-column.js +41 -0
- package/dist/lib/table/simple-table/table-schema.d.ts +15 -0
- package/dist/lib/table/simple-table/table-schema.d.ts.map +1 -0
- package/dist/lib/table/simple-table/table-schema.js +85 -0
- package/dist/lib/utils/assert.d.ts +2 -0
- package/dist/lib/utils/assert.d.ts.map +1 -0
- package/dist/lib/utils/assert.js +11 -5
- package/dist/lib/utils/async-queue.d.ts +18 -0
- package/dist/lib/utils/async-queue.d.ts.map +1 -0
- package/dist/lib/utils/async-queue.js +82 -109
- package/dist/types/category-gis.d.ts +99 -0
- package/dist/types/category-gis.d.ts.map +1 -0
- package/dist/types/category-gis.js +2 -0
- package/dist/types/category-image.d.ts +18 -0
- package/dist/types/category-image.d.ts.map +1 -0
- package/dist/types/category-image.js +2 -0
- package/dist/types/category-mesh.d.ts +48 -0
- package/dist/types/category-mesh.d.ts.map +1 -0
- package/dist/types/category-mesh.js +3 -0
- package/dist/types/category-table.d.ts +86 -0
- package/dist/types/category-table.d.ts.map +1 -0
- package/dist/types/category-table.js +3 -0
- package/dist/types/category-texture.d.ts +18 -0
- package/dist/types/category-texture.d.ts.map +1 -0
- package/dist/types/category-texture.js +3 -0
- package/dist/types/schema.d.ts +77 -0
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/types/schema.js +3 -0
- package/dist/types/types.d.ts +15 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +2 -0
- package/package.json +7 -8
- package/src/index.ts +82 -29
- package/src/{category → lib}/mesh/convert-mesh.ts +10 -8
- package/src/{category → lib}/mesh/deduce-mesh-schema.ts +20 -19
- package/src/{category → lib}/mesh/mesh-to-arrow-table.ts +5 -3
- package/src/{category → lib}/mesh/mesh-utils.ts +2 -2
- package/src/lib/{arrow → table/arrow}/arrow-type-utils.ts +16 -12
- package/src/lib/table/arrow/convert-schema-arrow.ts +232 -0
- package/src/lib/table/arrow/convert-table-to-arrow.ts +59 -0
- package/src/lib/{schema/impl/field.ts → table/arrow-api/arrow-like-field.ts} +6 -4
- package/src/lib/table/arrow-api/arrow-like-schema.ts +99 -0
- package/src/lib/table/arrow-api/arrow-like-table.ts +83 -0
- package/src/lib/{schema/impl/type.ts → table/arrow-api/arrow-like-type.ts} +2 -1
- package/src/lib/{arrow → table/arrow-api}/get-type-info.ts +4 -3
- package/src/lib/table/arrow-api/index.ts +6 -0
- package/src/lib/{batches → table/batches}/base-table-batch-aggregator.ts +5 -3
- package/src/lib/{batches → table/batches}/columnar-table-batch-aggregator.ts +5 -3
- package/src/lib/{batches → table/batches}/row-table-batch-aggregator.ts +6 -4
- package/src/lib/{batches → table/batches}/table-batch-aggregator.ts +4 -2
- package/src/lib/{batches → table/batches}/table-batch-builder.ts +8 -6
- package/src/lib/table/simple-table/convert-table.ts +72 -0
- package/src/lib/table/simple-table/data-type.ts +102 -0
- package/src/lib/table/simple-table/make-table.ts +108 -0
- package/src/lib/table/simple-table/table-accessors.ts +360 -0
- package/src/lib/table/simple-table/table-column.ts +47 -0
- package/src/lib/table/simple-table/table-schema.ts +97 -0
- package/src/types/category-gis.ts +136 -0
- package/src/types/category-image.ts +19 -0
- package/src/{category/mesh/mesh-types.ts → types/category-mesh.ts} +6 -4
- package/src/types/category-table.ts +104 -0
- package/src/types/category-texture.ts +30 -0
- package/src/types/schema.ts +97 -0
- package/src/types/types.ts +43 -0
- package/dist/bundle.js.map +0 -1
- package/dist/category/common.js +0 -2
- package/dist/category/common.js.map +0 -1
- package/dist/category/gis.js +0 -2
- package/dist/category/gis.js.map +0 -1
- package/dist/category/mesh/convert-mesh.js.map +0 -1
- package/dist/category/mesh/deduce-mesh-schema.js +0 -42
- package/dist/category/mesh/deduce-mesh-schema.js.map +0 -1
- package/dist/category/mesh/mesh-to-arrow-table.js +0 -31
- package/dist/category/mesh/mesh-to-arrow-table.js.map +0 -1
- package/dist/category/mesh/mesh-types.js +0 -2
- package/dist/category/mesh/mesh-types.js.map +0 -1
- package/dist/category/mesh/mesh-utils.js.map +0 -1
- package/dist/category/table/deduce-table-schema.js +0 -51
- package/dist/category/table/deduce-table-schema.js.map +0 -1
- package/dist/category/table/table-types.js +0 -2
- package/dist/category/table/table-types.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/arrow/arrow-like-type-utils.js.map +0 -1
- package/dist/lib/arrow/arrow-type-utils.js +0 -62
- package/dist/lib/arrow/arrow-type-utils.js.map +0 -1
- package/dist/lib/arrow/get-type-info.js.map +0 -1
- package/dist/lib/batches/base-table-batch-aggregator.js.map +0 -1
- package/dist/lib/batches/columnar-table-batch-aggregator.js.map +0 -1
- package/dist/lib/batches/row-table-batch-aggregator.js.map +0 -1
- package/dist/lib/batches/table-batch-aggregator.js.map +0 -1
- package/dist/lib/batches/table-batch-builder.js.map +0 -1
- package/dist/lib/schema/impl/enum.js.map +0 -1
- package/dist/lib/schema/impl/field.js.map +0 -1
- package/dist/lib/schema/impl/schema.js.map +0 -1
- package/dist/lib/schema/impl/type.js.map +0 -1
- package/dist/lib/schema/index.js +0 -5
- package/dist/lib/schema/index.js.map +0 -1
- package/dist/lib/schema-utils/deduce-column-type.js +0 -23
- package/dist/lib/schema-utils/deduce-column-type.js.map +0 -1
- package/dist/lib/utils/assert.js.map +0 -1
- package/dist/lib/utils/async-queue.js.map +0 -1
- package/dist/lib/utils/row-utils.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/src/category/common.ts +0 -30
- package/src/category/gis.ts +0 -61
- package/src/category/table/deduce-table-schema.ts +0 -123
- package/src/category/table/table-types.ts +0 -81
- package/src/lib/arrow/arrow-like-type-utils.ts +0 -25
- package/src/lib/schema/impl/schema.ts +0 -99
- package/src/lib/schema/index.ts +0 -82
- package/src/lib/schema-utils/deduce-column-type.ts +0 -92
- package/src/types.ts +0 -19
- /package/dist/{lib → esm/lib/table}/batches/table-batch-aggregator.js +0 -0
- /package/dist/{types.js → esm/types/types.js} +0 -0
- /package/src/lib/{schema/impl → table/arrow-api}/enum.ts +0 -0
- /package/src/lib/{utils → table/simple-table}/row-utils.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-table-batch-aggregator.js","names":["DEFAULT_ROW_COUNT","BaseTableBatchAggregator","constructor","schema","options","_defineProperty","Array","isArray","_headers","key","index","name","rowCount","length","addArrayRow","row","cursor","Number","isFinite","rows","addObjectRow","getBatch","slice","batch","shape","batchType","data"],"sources":["../../../../../src/lib/table/batches/base-table-batch-aggregator.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema} from '../../../types/schema';\nimport type {TableBatch} from '../../../types/category-table';\nimport {TableBatchAggregator, TableBatchOptions} from './table-batch-aggregator';\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport class BaseTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n options: TableBatchOptions;\n\n length: number = 0;\n rows: any[] | null = null;\n cursor: number = 0;\n private _headers: string[] = [];\n\n constructor(schema: Schema, options: TableBatchOptions) {\n this.options = options;\n this.schema = schema;\n\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[], cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n\n addObjectRow(row: {[columnName: string]: any}, cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n this.rows = this.rows || new Array(DEFAULT_ROW_COUNT);\n this.rows[this.length] = row;\n this.length++;\n }\n\n getBatch(): TableBatch | null {\n let rows = this.rows;\n if (!rows) {\n return null;\n }\n\n rows = rows.slice(0, this.length);\n this.rows = null;\n\n const batch: TableBatch = {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n\n return batch;\n }\n}\n"],"mappings":";AAMA,MAAMA,iBAAiB,GAAG,GAAG;AAE7B,OAAO,MAAMC,wBAAwB,CAAiC;EASpEC,WAAWA,CAACC,MAAc,EAAEC,OAA0B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAAAA,eAAA,iBALvC,CAAC;IAAAA,eAAA,eACG,IAAI;IAAAA,eAAA,iBACR,CAAC;IAAAA,eAAA,mBACW,EAAE;IAG7B,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACD,MAAM,GAAGA,MAAM;IAIpB,IAAI,CAACG,KAAK,CAACC,OAAO,CAACJ,MAAM,CAAC,EAAE;MAC1B,IAAI,CAACK,QAAQ,GAAG,EAAE;MAClB,KAAK,MAAMC,GAAG,IAAIN,MAAM,EAAE;QACxB,IAAI,CAACK,QAAQ,CAACL,MAAM,CAACM,GAAG,CAAC,CAACC,KAAK,CAAC,GAAGP,MAAM,CAACM,GAAG,CAAC,CAACE,IAAI;MACrD;IACF;EACF;EAEAC,QAAQA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACC,MAAM;EACpB;EAEAC,WAAWA,CAACC,GAAU,EAAEC,MAAe,EAAQ;IAC7C,IAAIC,MAAM,CAACC,QAAQ,CAACF,MAAM,CAAC,EAAE;MAC3B,IAAI,CAACA,MAAM,GAAGA,MAAgB;IAChC;IAEA,IAAI,CAACG,IAAI,GAAG,IAAI,CAACA,IAAI,IAAI,IAAIb,KAAK,CAACN,iBAAiB,CAAC;IACrD,IAAI,CAACmB,IAAI,CAAC,IAAI,CAACN,MAAM,CAAC,GAAGE,GAAG;IAC5B,IAAI,CAACF,MAAM,EAAE;EACf;EAEAO,YAAYA,CAACL,GAAgC,EAAEC,MAAe,EAAQ;IACpE,IAAIC,MAAM,CAACC,QAAQ,CAACF,MAAM,CAAC,EAAE;MAC3B,IAAI,CAACA,MAAM,GAAGA,MAAgB;IAChC;IAEA,IAAI,CAACG,IAAI,GAAG,IAAI,CAACA,IAAI,IAAI,IAAIb,KAAK,CAACN,iBAAiB,CAAC;IACrD,IAAI,CAACmB,IAAI,CAAC,IAAI,CAACN,MAAM,CAAC,GAAGE,GAAG;IAC5B,IAAI,CAACF,MAAM,EAAE;EACf;EAEAQ,QAAQA,CAAA,EAAsB;IAC5B,IAAIF,IAAI,GAAG,IAAI,CAACA,IAAI;IACpB,IAAI,CAACA,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEAA,IAAI,GAAGA,IAAI,CAACG,KAAK,CAAC,CAAC,EAAE,IAAI,CAACT,MAAM,CAAC;IACjC,IAAI,CAACM,IAAI,GAAG,IAAI;IAEhB,MAAMI,KAAiB,GAAG;MACxBC,KAAK,EAAE,IAAI,CAACpB,OAAO,CAACoB,KAAK;MACzBC,SAAS,EAAE,MAAM;MACjBC,IAAI,EAAEP,IAAI;MACVN,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBV,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBa,MAAM,EAAE,IAAI,CAACA;IACf,CAAC;IAED,OAAOO,KAAK;EACd;AACF"}
|
|
@@ -1,58 +1,41 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
2
|
const DEFAULT_ROW_COUNT = 100;
|
|
3
|
-
export
|
|
3
|
+
export class ColumnarTableBatchAggregator {
|
|
4
4
|
constructor(schema, options) {
|
|
5
5
|
_defineProperty(this, "schema", void 0);
|
|
6
|
-
|
|
7
6
|
_defineProperty(this, "length", 0);
|
|
8
|
-
|
|
9
7
|
_defineProperty(this, "allocated", 0);
|
|
10
|
-
|
|
11
8
|
_defineProperty(this, "columns", {});
|
|
12
|
-
|
|
13
9
|
this.schema = schema;
|
|
14
|
-
|
|
15
10
|
this._reallocateColumns();
|
|
16
11
|
}
|
|
17
|
-
|
|
18
12
|
rowCount() {
|
|
19
13
|
return this.length;
|
|
20
14
|
}
|
|
21
|
-
|
|
22
15
|
addArrayRow(row) {
|
|
23
16
|
this._reallocateColumns();
|
|
24
|
-
|
|
25
17
|
let i = 0;
|
|
26
|
-
|
|
27
18
|
for (const fieldName in this.columns) {
|
|
28
19
|
this.columns[fieldName][this.length] = row[i++];
|
|
29
20
|
}
|
|
30
|
-
|
|
31
21
|
this.length++;
|
|
32
22
|
}
|
|
33
|
-
|
|
34
23
|
addObjectRow(row) {
|
|
35
24
|
this._reallocateColumns();
|
|
36
|
-
|
|
37
25
|
for (const fieldName in row) {
|
|
38
26
|
this.columns[fieldName][this.length] = row[fieldName];
|
|
39
27
|
}
|
|
40
|
-
|
|
41
28
|
this.length++;
|
|
42
29
|
}
|
|
43
|
-
|
|
44
30
|
getBatch() {
|
|
45
31
|
this._pruneColumns();
|
|
46
|
-
|
|
47
32
|
const columns = Array.isArray(this.schema) ? this.columns : {};
|
|
48
|
-
|
|
49
33
|
if (!Array.isArray(this.schema)) {
|
|
50
34
|
for (const fieldName in this.schema) {
|
|
51
35
|
const field = this.schema[fieldName];
|
|
52
36
|
columns[field.name] = this.columns[field.index];
|
|
53
37
|
}
|
|
54
38
|
}
|
|
55
|
-
|
|
56
39
|
this.columns = {};
|
|
57
40
|
const batch = {
|
|
58
41
|
shape: 'columnar-table',
|
|
@@ -63,20 +46,16 @@ export default class ColumnarTableBatchAggregator {
|
|
|
63
46
|
};
|
|
64
47
|
return batch;
|
|
65
48
|
}
|
|
66
|
-
|
|
67
49
|
_reallocateColumns() {
|
|
68
50
|
if (this.length < this.allocated) {
|
|
69
51
|
return;
|
|
70
52
|
}
|
|
71
|
-
|
|
72
53
|
this.allocated = this.allocated > 0 ? this.allocated *= 2 : DEFAULT_ROW_COUNT;
|
|
73
54
|
this.columns = {};
|
|
74
|
-
|
|
75
55
|
for (const fieldName in this.schema) {
|
|
76
56
|
const field = this.schema[fieldName];
|
|
77
57
|
const ArrayType = field.type || Float32Array;
|
|
78
58
|
const oldColumn = this.columns[field.index];
|
|
79
|
-
|
|
80
59
|
if (oldColumn && ArrayBuffer.isView(oldColumn)) {
|
|
81
60
|
const typedArray = new ArrayType(this.allocated);
|
|
82
61
|
typedArray.set(oldColumn);
|
|
@@ -89,12 +68,10 @@ export default class ColumnarTableBatchAggregator {
|
|
|
89
68
|
}
|
|
90
69
|
}
|
|
91
70
|
}
|
|
92
|
-
|
|
93
71
|
_pruneColumns() {
|
|
94
72
|
for (const [columnName, column] of Object.entries(this.columns)) {
|
|
95
73
|
this.columns[columnName] = column.slice(0, this.length);
|
|
96
74
|
}
|
|
97
75
|
}
|
|
98
|
-
|
|
99
76
|
}
|
|
100
77
|
//# sourceMappingURL=columnar-table-batch-aggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"columnar-table-batch-aggregator.js","names":["DEFAULT_ROW_COUNT","ColumnarTableBatchAggregator","constructor","schema","options","_defineProperty","_reallocateColumns","rowCount","length","addArrayRow","row","i","fieldName","columns","addObjectRow","getBatch","_pruneColumns","Array","isArray","field","name","index","batch","shape","batchType","data","allocated","ArrayType","type","Float32Array","oldColumn","ArrayBuffer","isView","typedArray","set","columnName","column","Object","entries","slice"],"sources":["../../../../../src/lib/table/batches/columnar-table-batch-aggregator.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema} from '../../../types/schema';\nimport type {ColumnarTableBatch, ArrowTableBatch} from '../../../types/category-table';\nimport {TableBatchAggregator} from './table-batch-aggregator';\n\ntype ColumnarTableBatchOptions = {};\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport class ColumnarTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n length: number = 0;\n allocated: number = 0;\n columns: {[columnName: string]: any[]} = {};\n\n constructor(schema: Schema, options: ColumnarTableBatchOptions) {\n this.schema = schema;\n this._reallocateColumns();\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[]) {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n let i = 0;\n // TODO what if no csv header, columns not populated?\n for (const fieldName in this.columns) {\n this.columns[fieldName][this.length] = row[i++];\n }\n this.length++;\n }\n\n addObjectRow(row: {[columnName: string]: any}): void {\n // If user keeps pushing rows beyond batch size, reallocate\n this._reallocateColumns();\n for (const fieldName in row) {\n this.columns[fieldName][this.length] = row[fieldName];\n }\n this.length++;\n }\n\n getBatch(): ColumnarTableBatch | ArrowTableBatch | null {\n this._pruneColumns();\n const columns = Array.isArray(this.schema) ? this.columns : {};\n\n // schema is an array if there're no headers\n // object if there are headers\n // columns should match schema format\n if (!Array.isArray(this.schema)) {\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n columns[field.name] = this.columns[field.index];\n }\n }\n\n this.columns = {};\n\n const batch: ColumnarTableBatch = {\n shape: 'columnar-table',\n batchType: 'data',\n data: columns,\n schema: this.schema,\n length: this.length\n };\n\n return batch;\n }\n\n // HELPERS\n\n _reallocateColumns() {\n if (this.length < this.allocated) {\n return;\n }\n\n // @ts-ignore TODO\n this.allocated = this.allocated > 0 ? (this.allocated *= 2) : DEFAULT_ROW_COUNT;\n this.columns = {};\n\n for (const fieldName in this.schema) {\n const field = this.schema[fieldName];\n const ArrayType = field.type || Float32Array;\n const oldColumn = this.columns[field.index];\n\n if (oldColumn && ArrayBuffer.isView(oldColumn)) {\n // Copy the old data to the new array\n const typedArray = new ArrayType(this.allocated);\n typedArray.set(oldColumn);\n this.columns[field.index] = typedArray;\n } else if (oldColumn) {\n // Plain array\n oldColumn.length = this.allocated;\n this.columns[field.index] = oldColumn;\n } else {\n // Create new\n this.columns[field.index] = new ArrayType(this.allocated);\n }\n }\n }\n\n _pruneColumns() {\n for (const [columnName, column] of Object.entries(this.columns)) {\n this.columns[columnName] = column.slice(0, this.length);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,49 +1,36 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { convertToArrayRow, convertToObjectRow } from '../
|
|
2
|
+
import { convertToArrayRow, convertToObjectRow } from '../simple-table/row-utils';
|
|
3
3
|
const DEFAULT_ROW_COUNT = 100;
|
|
4
|
-
export
|
|
4
|
+
export class RowTableBatchAggregator {
|
|
5
5
|
constructor(schema, options) {
|
|
6
6
|
_defineProperty(this, "schema", void 0);
|
|
7
|
-
|
|
8
7
|
_defineProperty(this, "options", void 0);
|
|
9
|
-
|
|
10
8
|
_defineProperty(this, "length", 0);
|
|
11
|
-
|
|
12
9
|
_defineProperty(this, "objectRows", null);
|
|
13
|
-
|
|
14
10
|
_defineProperty(this, "arrayRows", null);
|
|
15
|
-
|
|
16
11
|
_defineProperty(this, "cursor", 0);
|
|
17
|
-
|
|
18
12
|
_defineProperty(this, "_headers", []);
|
|
19
|
-
|
|
20
13
|
this.options = options;
|
|
21
14
|
this.schema = schema;
|
|
22
|
-
|
|
23
15
|
if (!Array.isArray(schema)) {
|
|
24
16
|
this._headers = [];
|
|
25
|
-
|
|
26
17
|
for (const key in schema) {
|
|
27
18
|
this._headers[schema[key].index] = schema[key].name;
|
|
28
19
|
}
|
|
29
20
|
}
|
|
30
21
|
}
|
|
31
|
-
|
|
32
22
|
rowCount() {
|
|
33
23
|
return this.length;
|
|
34
24
|
}
|
|
35
|
-
|
|
36
25
|
addArrayRow(row, cursor) {
|
|
37
26
|
if (Number.isFinite(cursor)) {
|
|
38
27
|
this.cursor = cursor;
|
|
39
28
|
}
|
|
40
|
-
|
|
41
29
|
switch (this.options.shape) {
|
|
42
30
|
case 'object-row-table':
|
|
43
31
|
const rowObject = convertToObjectRow(row, this._headers);
|
|
44
32
|
this.addObjectRow(rowObject, cursor);
|
|
45
33
|
break;
|
|
46
|
-
|
|
47
34
|
case 'array-row-table':
|
|
48
35
|
this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);
|
|
49
36
|
this.arrayRows[this.length] = row;
|
|
@@ -51,18 +38,15 @@ export default class RowTableBatchAggregator {
|
|
|
51
38
|
break;
|
|
52
39
|
}
|
|
53
40
|
}
|
|
54
|
-
|
|
55
41
|
addObjectRow(row, cursor) {
|
|
56
42
|
if (Number.isFinite(cursor)) {
|
|
57
43
|
this.cursor = cursor;
|
|
58
44
|
}
|
|
59
|
-
|
|
60
45
|
switch (this.options.shape) {
|
|
61
46
|
case 'array-row-table':
|
|
62
47
|
const rowArray = convertToArrayRow(row, this._headers);
|
|
63
48
|
this.addArrayRow(rowArray, cursor);
|
|
64
49
|
break;
|
|
65
|
-
|
|
66
50
|
case 'object-row-table':
|
|
67
51
|
this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);
|
|
68
52
|
this.objectRows[this.length] = row;
|
|
@@ -70,14 +54,11 @@ export default class RowTableBatchAggregator {
|
|
|
70
54
|
break;
|
|
71
55
|
}
|
|
72
56
|
}
|
|
73
|
-
|
|
74
57
|
getBatch() {
|
|
75
58
|
let rows = this.arrayRows || this.objectRows;
|
|
76
|
-
|
|
77
59
|
if (!rows) {
|
|
78
60
|
return null;
|
|
79
61
|
}
|
|
80
|
-
|
|
81
62
|
rows = rows.slice(0, this.length);
|
|
82
63
|
this.arrayRows = null;
|
|
83
64
|
this.objectRows = null;
|
|
@@ -90,6 +71,5 @@ export default class RowTableBatchAggregator {
|
|
|
90
71
|
cursor: this.cursor
|
|
91
72
|
};
|
|
92
73
|
}
|
|
93
|
-
|
|
94
74
|
}
|
|
95
75
|
//# sourceMappingURL=row-table-batch-aggregator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"row-table-batch-aggregator.js","names":["convertToArrayRow","convertToObjectRow","DEFAULT_ROW_COUNT","RowTableBatchAggregator","constructor","schema","options","_defineProperty","Array","isArray","_headers","key","index","name","rowCount","length","addArrayRow","row","cursor","Number","isFinite","shape","rowObject","addObjectRow","arrayRows","rowArray","objectRows","getBatch","rows","slice","batchType","data"],"sources":["../../../../../src/lib/table/batches/row-table-batch-aggregator.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema} from '../../../types/schema';\nimport type {TableBatch} from '../../../types/category-table';\n// import type {ArrayRowTableBatch, ObjectRowTableBatch} from '../../category/table';\nimport {convertToArrayRow, convertToObjectRow} from '../simple-table/row-utils';\nimport {TableBatchAggregator, TableBatchOptions} from './table-batch-aggregator';\n\nconst DEFAULT_ROW_COUNT = 100;\n\nexport class RowTableBatchAggregator implements TableBatchAggregator {\n schema: Schema;\n options: TableBatchOptions;\n\n length: number = 0;\n objectRows: {[columnName: string]: any} | null = null;\n arrayRows: any[] | null = null;\n cursor: number = 0;\n private _headers: string[] = [];\n\n constructor(schema: Schema, options: TableBatchOptions) {\n this.options = options;\n this.schema = schema;\n\n // schema is an array if there're no headers\n // object if there are headers\n if (!Array.isArray(schema)) {\n this._headers = [];\n for (const key in schema) {\n this._headers[schema[key].index] = schema[key].name;\n }\n }\n }\n\n rowCount(): number {\n return this.length;\n }\n\n addArrayRow(row: any[], cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'object-row-table':\n const rowObject = convertToObjectRow(row, this._headers);\n this.addObjectRow(rowObject, cursor);\n break;\n case 'array-row-table':\n this.arrayRows = this.arrayRows || new Array(DEFAULT_ROW_COUNT);\n this.arrayRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n addObjectRow(row: {[columnName: string]: any}, cursor?: number): void {\n if (Number.isFinite(cursor)) {\n this.cursor = cursor as number;\n }\n\n // eslint-disable-next-line default-case\n switch (this.options.shape) {\n case 'array-row-table':\n const rowArray = convertToArrayRow(row, this._headers);\n this.addArrayRow(rowArray, cursor);\n break;\n case 'object-row-table':\n this.objectRows = this.objectRows || new Array(DEFAULT_ROW_COUNT);\n this.objectRows[this.length] = row;\n this.length++;\n break;\n }\n }\n\n getBatch(): TableBatch | null {\n let rows = this.arrayRows || this.objectRows;\n if (!rows) {\n return null;\n }\n\n rows = rows.slice(0, this.length);\n this.arrayRows = null;\n this.objectRows = null;\n\n return {\n shape: this.options.shape,\n batchType: 'data',\n data: rows,\n length: this.length,\n schema: this.schema,\n cursor: this.cursor\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-batch-aggregator.js","names":[],"sources":["../../../../../src/lib/table/batches/table-batch-aggregator.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema} from '../../../types/schema';\nimport type {TableBatch} from '../../../types/category-table';\n\nexport interface TableBatchOptions {\n batchSize: number | string;\n [key: string]: any;\n}\n\nexport interface TableBatchConstructor {\n new (schema: Schema, options: TableBatchOptions): TableBatchAggregator;\n}\n\n/**\n * TableBatchBuilder delegates batch building to this interface\n */\nexport interface TableBatchAggregator {\n /** Number of rows */\n rowCount(): number;\n /** Add one row */\n addArrayRow(row: any[]): void;\n /** Add one row */\n addObjectRow(row: {[columnName: string]: any}): void;\n /** return a batch object */\n getBatch(): TableBatch | null;\n}\n"],"mappings":""}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import BaseTableBatchAggregator from './base-table-batch-aggregator';
|
|
3
|
-
import RowTableBatchAggregator from './row-table-batch-aggregator';
|
|
4
|
-
import ColumnarTableBatchAggregator from './columnar-table-batch-aggregator';
|
|
2
|
+
import { BaseTableBatchAggregator } from './base-table-batch-aggregator';
|
|
3
|
+
import { RowTableBatchAggregator } from './row-table-batch-aggregator';
|
|
4
|
+
import { ColumnarTableBatchAggregator } from './columnar-table-batch-aggregator';
|
|
5
5
|
const DEFAULT_OPTIONS = {
|
|
6
6
|
shape: 'array-row-table',
|
|
7
7
|
batchSize: 'auto',
|
|
@@ -10,113 +10,83 @@ const DEFAULT_OPTIONS = {
|
|
|
10
10
|
_limitMB: 0
|
|
11
11
|
};
|
|
12
12
|
const ERR_MESSAGE = 'TableBatchBuilder';
|
|
13
|
-
export
|
|
13
|
+
export class TableBatchBuilder {
|
|
14
14
|
constructor(schema, options) {
|
|
15
15
|
_defineProperty(this, "schema", void 0);
|
|
16
|
-
|
|
17
16
|
_defineProperty(this, "options", void 0);
|
|
18
|
-
|
|
19
17
|
_defineProperty(this, "aggregator", null);
|
|
20
|
-
|
|
21
18
|
_defineProperty(this, "batchCount", 0);
|
|
22
|
-
|
|
23
19
|
_defineProperty(this, "bytesUsed", 0);
|
|
24
|
-
|
|
25
20
|
_defineProperty(this, "isChunkComplete", false);
|
|
26
|
-
|
|
27
21
|
_defineProperty(this, "lastBatchEmittedMs", Date.now());
|
|
28
|
-
|
|
29
22
|
_defineProperty(this, "totalLength", 0);
|
|
30
|
-
|
|
31
23
|
_defineProperty(this, "totalBytes", 0);
|
|
32
|
-
|
|
33
24
|
_defineProperty(this, "rowBytes", 0);
|
|
34
|
-
|
|
35
25
|
this.schema = schema;
|
|
36
|
-
this.options = {
|
|
26
|
+
this.options = {
|
|
27
|
+
...DEFAULT_OPTIONS,
|
|
37
28
|
...options
|
|
38
29
|
};
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
limitReached() {
|
|
42
32
|
var _this$options, _this$options2;
|
|
43
|
-
|
|
44
33
|
if (Boolean((_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.limit) && this.totalLength >= this.options.limit) {
|
|
45
34
|
return true;
|
|
46
35
|
}
|
|
47
|
-
|
|
48
36
|
if (Boolean((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {
|
|
49
37
|
return true;
|
|
50
38
|
}
|
|
51
|
-
|
|
52
39
|
return false;
|
|
53
40
|
}
|
|
54
|
-
|
|
55
41
|
addRow(row) {
|
|
56
42
|
if (this.limitReached()) {
|
|
57
43
|
return;
|
|
58
44
|
}
|
|
59
|
-
|
|
60
45
|
this.totalLength++;
|
|
61
46
|
this.rowBytes = this.rowBytes || this._estimateRowMB(row);
|
|
62
47
|
this.totalBytes += this.rowBytes;
|
|
63
|
-
|
|
64
48
|
if (Array.isArray(row)) {
|
|
65
49
|
this.addArrayRow(row);
|
|
66
50
|
} else {
|
|
67
51
|
this.addObjectRow(row);
|
|
68
52
|
}
|
|
69
53
|
}
|
|
70
|
-
|
|
71
54
|
addArrayRow(row) {
|
|
72
55
|
if (!this.aggregator) {
|
|
73
56
|
const TableBatchType = this._getTableBatchType();
|
|
74
|
-
|
|
75
57
|
this.aggregator = new TableBatchType(this.schema, this.options);
|
|
76
58
|
}
|
|
77
|
-
|
|
78
59
|
this.aggregator.addArrayRow(row);
|
|
79
60
|
}
|
|
80
|
-
|
|
81
61
|
addObjectRow(row) {
|
|
82
62
|
if (!this.aggregator) {
|
|
83
63
|
const TableBatchType = this._getTableBatchType();
|
|
84
|
-
|
|
85
64
|
this.aggregator = new TableBatchType(this.schema, this.options);
|
|
86
65
|
}
|
|
87
|
-
|
|
88
66
|
this.aggregator.addObjectRow(row);
|
|
89
67
|
}
|
|
90
|
-
|
|
91
68
|
chunkComplete(chunk) {
|
|
92
69
|
if (chunk instanceof ArrayBuffer) {
|
|
93
70
|
this.bytesUsed += chunk.byteLength;
|
|
94
71
|
}
|
|
95
|
-
|
|
96
72
|
if (typeof chunk === 'string') {
|
|
97
73
|
this.bytesUsed += chunk.length;
|
|
98
74
|
}
|
|
99
|
-
|
|
100
75
|
this.isChunkComplete = true;
|
|
101
76
|
}
|
|
102
|
-
|
|
103
77
|
getFullBatch(options) {
|
|
104
78
|
return this._isFull() ? this._getBatch(options) : null;
|
|
105
79
|
}
|
|
106
|
-
|
|
107
80
|
getFinalBatch(options) {
|
|
108
81
|
return this._getBatch(options);
|
|
109
82
|
}
|
|
110
|
-
|
|
111
83
|
_estimateRowMB(row) {
|
|
112
84
|
return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;
|
|
113
85
|
}
|
|
114
|
-
|
|
115
86
|
_isFull() {
|
|
116
87
|
if (!this.aggregator || this.aggregator.rowCount() === 0) {
|
|
117
88
|
return false;
|
|
118
89
|
}
|
|
119
|
-
|
|
120
90
|
if (this.options.batchSize === 'auto') {
|
|
121
91
|
if (!this.isChunkComplete) {
|
|
122
92
|
return false;
|
|
@@ -124,25 +94,20 @@ export default class TableBatchBuilder {
|
|
|
124
94
|
} else if (this.options.batchSize > this.aggregator.rowCount()) {
|
|
125
95
|
return false;
|
|
126
96
|
}
|
|
127
|
-
|
|
128
97
|
if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {
|
|
129
98
|
return false;
|
|
130
99
|
}
|
|
131
|
-
|
|
132
100
|
this.isChunkComplete = false;
|
|
133
101
|
this.lastBatchEmittedMs = Date.now();
|
|
134
102
|
return true;
|
|
135
103
|
}
|
|
136
|
-
|
|
137
104
|
_getBatch(options) {
|
|
138
105
|
if (!this.aggregator) {
|
|
139
106
|
return null;
|
|
140
107
|
}
|
|
141
|
-
|
|
142
108
|
if (options !== null && options !== void 0 && options.bytesUsed) {
|
|
143
109
|
this.bytesUsed = options.bytesUsed;
|
|
144
110
|
}
|
|
145
|
-
|
|
146
111
|
const normalizedBatch = this.aggregator.getBatch();
|
|
147
112
|
normalizedBatch.count = this.batchCount;
|
|
148
113
|
normalizedBatch.bytesUsed = this.bytesUsed;
|
|
@@ -151,32 +116,24 @@ export default class TableBatchBuilder {
|
|
|
151
116
|
this.aggregator = null;
|
|
152
117
|
return normalizedBatch;
|
|
153
118
|
}
|
|
154
|
-
|
|
155
119
|
_getTableBatchType() {
|
|
156
120
|
switch (this.options.shape) {
|
|
157
121
|
case 'row-table':
|
|
158
122
|
return BaseTableBatchAggregator;
|
|
159
|
-
|
|
160
123
|
case 'array-row-table':
|
|
161
124
|
case 'object-row-table':
|
|
162
125
|
return RowTableBatchAggregator;
|
|
163
|
-
|
|
164
126
|
case 'columnar-table':
|
|
165
127
|
return ColumnarTableBatchAggregator;
|
|
166
|
-
|
|
167
128
|
case 'arrow-table':
|
|
168
129
|
if (!TableBatchBuilder.ArrowBatch) {
|
|
169
130
|
throw new Error(ERR_MESSAGE);
|
|
170
131
|
}
|
|
171
|
-
|
|
172
132
|
return TableBatchBuilder.ArrowBatch;
|
|
173
|
-
|
|
174
133
|
default:
|
|
175
134
|
throw new Error(ERR_MESSAGE);
|
|
176
135
|
}
|
|
177
136
|
}
|
|
178
|
-
|
|
179
137
|
}
|
|
180
|
-
|
|
181
138
|
_defineProperty(TableBatchBuilder, "ArrowBatch", void 0);
|
|
182
139
|
//# sourceMappingURL=table-batch-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-batch-builder.js","names":["BaseTableBatchAggregator","RowTableBatchAggregator","ColumnarTableBatchAggregator","DEFAULT_OPTIONS","shape","batchSize","batchDebounceMs","limit","_limitMB","ERR_MESSAGE","TableBatchBuilder","constructor","schema","options","_defineProperty","Date","now","limitReached","_this$options","_this$options2","Boolean","totalLength","totalBytes","addRow","row","rowBytes","_estimateRowMB","Array","isArray","addArrayRow","addObjectRow","aggregator","TableBatchType","_getTableBatchType","chunkComplete","chunk","ArrayBuffer","bytesUsed","byteLength","length","isChunkComplete","getFullBatch","_isFull","_getBatch","getFinalBatch","Object","keys","rowCount","lastBatchEmittedMs","normalizedBatch","getBatch","count","batchCount","assign","ArrowBatch","Error"],"sources":["../../../../../src/lib/table/batches/table-batch-builder.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Schema} from '../../../types/schema';\nimport type {TableBatch} from '../../../types/category-table';\nimport type {TableBatchAggregator, TableBatchConstructor} from './table-batch-aggregator';\nimport {BaseTableBatchAggregator} from './base-table-batch-aggregator';\nimport {RowTableBatchAggregator} from './row-table-batch-aggregator';\nimport {ColumnarTableBatchAggregator} from './columnar-table-batch-aggregator';\n\n// TODO define interface instead\ntype TableBatchBuilderOptions = {\n shape: 'row-table' | 'array-row-table' | 'object-row-table' | 'columnar-table' | 'arrow-table';\n batchSize?: number | 'auto';\n batchDebounceMs?: number;\n limit: number;\n _limitMB: number;\n};\n\ntype GetBatchOptions = {\n bytesUsed?: number;\n [key: string]: any;\n};\n\nconst DEFAULT_OPTIONS: Required<TableBatchBuilderOptions> = {\n shape: 'array-row-table',\n batchSize: 'auto',\n batchDebounceMs: 0,\n limit: 0,\n _limitMB: 0\n};\n\nconst ERR_MESSAGE = 'TableBatchBuilder';\n\n/** Incrementally builds batches from a stream of rows */\nexport class TableBatchBuilder {\n schema: Schema;\n options: Required<TableBatchBuilderOptions>;\n\n private aggregator: TableBatchAggregator | null = null;\n private batchCount: number = 0;\n private bytesUsed: number = 0;\n private isChunkComplete: boolean = false;\n private lastBatchEmittedMs: number = Date.now();\n private totalLength: number = 0;\n private totalBytes: number = 0;\n private rowBytes: number = 0;\n\n static ArrowBatch?: TableBatchConstructor;\n\n constructor(schema: Schema, options?: TableBatchBuilderOptions) {\n this.schema = schema;\n this.options = {...DEFAULT_OPTIONS, ...options};\n }\n\n limitReached(): boolean {\n if (Boolean(this.options?.limit) && this.totalLength >= this.options.limit) {\n return true;\n }\n if (Boolean(this.options?._limitMB) && this.totalBytes / 1e6 >= this.options._limitMB) {\n return true;\n }\n return false;\n }\n\n /** @deprecated Use addArrayRow or addObjectRow */\n addRow(row: any[] | {[columnName: string]: any}): void {\n if (this.limitReached()) {\n return;\n }\n this.totalLength++;\n this.rowBytes = this.rowBytes || this._estimateRowMB(row);\n this.totalBytes += this.rowBytes;\n if (Array.isArray(row)) {\n this.addArrayRow(row);\n } else {\n this.addObjectRow(row);\n }\n }\n\n /** Add one row to the batch */\n protected addArrayRow(row: any[]) {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addArrayRow(row);\n }\n\n /** Add one row to the batch */\n protected addObjectRow(row: {[columnName: string]: any}): void {\n if (!this.aggregator) {\n const TableBatchType = this._getTableBatchType();\n this.aggregator = new TableBatchType(this.schema, this.options);\n }\n this.aggregator.addObjectRow(row);\n }\n\n /** Mark an incoming raw memory chunk has completed */\n chunkComplete(chunk: ArrayBuffer | string): void {\n if (chunk instanceof ArrayBuffer) {\n this.bytesUsed += chunk.byteLength;\n }\n if (typeof chunk === 'string') {\n this.bytesUsed += chunk.length;\n }\n this.isChunkComplete = true;\n }\n\n getFullBatch(options?: GetBatchOptions): TableBatch | null {\n return this._isFull() ? this._getBatch(options) : null;\n }\n\n getFinalBatch(options?: GetBatchOptions): TableBatch | null {\n return this._getBatch(options);\n }\n\n // INTERNAL\n\n _estimateRowMB(row: any[] | object): number {\n return Array.isArray(row) ? row.length * 8 : Object.keys(row).length * 8;\n }\n\n private _isFull(): boolean {\n // No batch, not ready\n if (!this.aggregator || this.aggregator.rowCount() === 0) {\n return false;\n }\n\n // if batchSize === 'auto' we wait for chunk to complete\n // if batchSize === number, ensure we have enough rows\n if (this.options.batchSize === 'auto') {\n if (!this.isChunkComplete) {\n return false;\n }\n } else if (this.options.batchSize > this.aggregator.rowCount()) {\n return false;\n }\n\n // Debounce batches\n if (this.options.batchDebounceMs > Date.now() - this.lastBatchEmittedMs) {\n return false;\n }\n\n // Emit batch\n this.isChunkComplete = false;\n this.lastBatchEmittedMs = Date.now();\n return true;\n }\n\n /**\n * bytesUsed can be set via chunkComplete or via getBatch*\n */\n private _getBatch(options?: GetBatchOptions): TableBatch | null {\n if (!this.aggregator) {\n return null;\n }\n\n // TODO - this can overly increment bytes used?\n if (options?.bytesUsed) {\n this.bytesUsed = options.bytesUsed;\n }\n const normalizedBatch = this.aggregator.getBatch() as TableBatch;\n normalizedBatch.count = this.batchCount;\n normalizedBatch.bytesUsed = this.bytesUsed;\n Object.assign(normalizedBatch, options);\n\n this.batchCount++;\n this.aggregator = null;\n return normalizedBatch;\n }\n\n private _getTableBatchType(): TableBatchConstructor {\n switch (this.options.shape) {\n case 'row-table':\n return BaseTableBatchAggregator;\n case 'array-row-table':\n case 'object-row-table':\n return RowTableBatchAggregator;\n case 'columnar-table':\n return ColumnarTableBatchAggregator;\n case 'arrow-table':\n if (!TableBatchBuilder.ArrowBatch) {\n throw new Error(ERR_MESSAGE);\n }\n return TableBatchBuilder.ArrowBatch;\n default:\n throw new Error(ERR_MESSAGE);\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { getTableCell, getTableLength, getTableRowAsArray, getTableRowAsObject } from './table-accessors';
|
|
2
|
+
import { deduceTableSchema } from './table-schema';
|
|
3
|
+
import { makeColumnFromField } from './table-column';
|
|
4
|
+
export function makeColumnarTable(table) {
|
|
5
|
+
var _table$schema;
|
|
6
|
+
const schema = table.schema || deduceTableSchema(table);
|
|
7
|
+
const fields = ((_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields) || [];
|
|
8
|
+
if (table.shape === 'columnar-table') {
|
|
9
|
+
return {
|
|
10
|
+
...table,
|
|
11
|
+
schema
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const length = getTableLength(table);
|
|
15
|
+
const columns = {};
|
|
16
|
+
for (const field of fields) {
|
|
17
|
+
const column = makeColumnFromField(field, length);
|
|
18
|
+
columns[field.name] = column;
|
|
19
|
+
for (let rowIndex = 0; rowIndex < length; rowIndex++) {
|
|
20
|
+
column[rowIndex] = getTableCell(table, rowIndex, field.name);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
shape: 'columnar-table',
|
|
25
|
+
schema,
|
|
26
|
+
data: columns
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function makeArrayRowTable(table) {
|
|
30
|
+
if (table.shape === 'array-row-table') {
|
|
31
|
+
return table;
|
|
32
|
+
}
|
|
33
|
+
const length = getTableLength(table);
|
|
34
|
+
const data = new Array(length);
|
|
35
|
+
for (let rowIndex = 0; rowIndex < length; rowIndex++) {
|
|
36
|
+
data[rowIndex] = getTableRowAsArray(table, rowIndex);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
shape: 'array-row-table',
|
|
40
|
+
schema: table.schema,
|
|
41
|
+
data
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function makeObjectRowTable(table) {
|
|
45
|
+
if (table.shape === 'object-row-table') {
|
|
46
|
+
return table;
|
|
47
|
+
}
|
|
48
|
+
const length = getTableLength(table);
|
|
49
|
+
const data = new Array(length);
|
|
50
|
+
for (let rowIndex = 0; rowIndex < length; rowIndex++) {
|
|
51
|
+
data[rowIndex] = getTableRowAsObject(table, rowIndex);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
shape: 'object-row-table',
|
|
55
|
+
schema: table.schema,
|
|
56
|
+
data
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=convert-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-table.js","names":["getTableCell","getTableLength","getTableRowAsArray","getTableRowAsObject","deduceTableSchema","makeColumnFromField","makeColumnarTable","table","_table$schema","schema","fields","shape","length","columns","field","column","name","rowIndex","data","makeArrayRowTable","Array","makeObjectRowTable"],"sources":["../../../../../src/lib/table/simple-table/convert-table.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport {\n getTableCell,\n getTableLength,\n getTableRowAsArray,\n getTableRowAsObject\n} from './table-accessors';\nimport {Table, ArrayRowTable, ObjectRowTable, ColumnarTable} from '../../../types/category-table';\nimport {deduceTableSchema} from './table-schema';\nimport {makeColumnFromField} from './table-column';\n\n/** Convert any simple table into columnar format */\nexport function makeColumnarTable(table: Table): ColumnarTable {\n // TODO - should schema really be optional?\n const schema = table.schema || deduceTableSchema(table);\n const fields = table.schema?.fields || [];\n\n if (table.shape === 'columnar-table') {\n return {...table, schema};\n }\n\n const length = getTableLength(table);\n\n const columns: {[column: string]: ArrayLike<unknown>} = {};\n for (const field of fields) {\n const column = makeColumnFromField(field, length);\n columns[field.name] = column;\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n column[rowIndex] = getTableCell(table, rowIndex, field.name);\n }\n }\n\n return {\n shape: 'columnar-table',\n schema,\n data: columns\n };\n}\n\n/** Convert any table into array row format */\nexport function makeArrayRowTable(table: Table): ArrayRowTable {\n if (table.shape === 'array-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<unknown[]>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsArray(table, rowIndex);\n }\n return {\n shape: 'array-row-table',\n schema: table.schema,\n data\n };\n}\n\n/** Convert any table into object row format */\nexport function makeObjectRowTable(table: Table): ObjectRowTable {\n if (table.shape === 'object-row-table') {\n return table;\n }\n const length = getTableLength(table);\n const data = new Array<{[key: string]: unknown}>(length);\n for (let rowIndex = 0; rowIndex < length; rowIndex++) {\n data[rowIndex] = getTableRowAsObject(table, rowIndex);\n }\n return {\n shape: 'object-row-table',\n schema: table.schema,\n data\n };\n}\n"],"mappings":"AACA,SACEA,YAAY,EACZC,cAAc,EACdC,kBAAkB,EAClBC,mBAAmB,QACd,mBAAmB;AAE1B,SAAQC,iBAAiB,QAAO,gBAAgB;AAChD,SAAQC,mBAAmB,QAAO,gBAAgB;AAGlD,OAAO,SAASC,iBAAiBA,CAACC,KAAY,EAAiB;EAAA,IAAAC,aAAA;EAE7D,MAAMC,MAAM,GAAGF,KAAK,CAACE,MAAM,IAAIL,iBAAiB,CAACG,KAAK,CAAC;EACvD,MAAMG,MAAM,GAAG,EAAAF,aAAA,GAAAD,KAAK,CAACE,MAAM,cAAAD,aAAA,uBAAZA,aAAA,CAAcE,MAAM,KAAI,EAAE;EAEzC,IAAIH,KAAK,CAACI,KAAK,KAAK,gBAAgB,EAAE;IACpC,OAAO;MAAC,GAAGJ,KAAK;MAAEE;IAAM,CAAC;EAC3B;EAEA,MAAMG,MAAM,GAAGX,cAAc,CAACM,KAAK,CAAC;EAEpC,MAAMM,OAA+C,GAAG,CAAC,CAAC;EAC1D,KAAK,MAAMC,KAAK,IAAIJ,MAAM,EAAE;IAC1B,MAAMK,MAAM,GAAGV,mBAAmB,CAACS,KAAK,EAAEF,MAAM,CAAC;IACjDC,OAAO,CAACC,KAAK,CAACE,IAAI,CAAC,GAAGD,MAAM;IAC5B,KAAK,IAAIE,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGL,MAAM,EAAEK,QAAQ,EAAE,EAAE;MACpDF,MAAM,CAACE,QAAQ,CAAC,GAAGjB,YAAY,CAACO,KAAK,EAAEU,QAAQ,EAAEH,KAAK,CAACE,IAAI,CAAC;IAC9D;EACF;EAEA,OAAO;IACLL,KAAK,EAAE,gBAAgB;IACvBF,MAAM;IACNS,IAAI,EAAEL;EACR,CAAC;AACH;AAGA,OAAO,SAASM,iBAAiBA,CAACZ,KAAY,EAAiB;EAC7D,IAAIA,KAAK,CAACI,KAAK,KAAK,iBAAiB,EAAE;IACrC,OAAOJ,KAAK;EACd;EACA,MAAMK,MAAM,GAAGX,cAAc,CAACM,KAAK,CAAC;EACpC,MAAMW,IAAI,GAAG,IAAIE,KAAK,CAAYR,MAAM,CAAC;EACzC,KAAK,IAAIK,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGL,MAAM,EAAEK,QAAQ,EAAE,EAAE;IACpDC,IAAI,CAACD,QAAQ,CAAC,GAAGf,kBAAkB,CAACK,KAAK,EAAEU,QAAQ,CAAC;EACtD;EACA,OAAO;IACLN,KAAK,EAAE,iBAAiB;IACxBF,MAAM,EAAEF,KAAK,CAACE,MAAM;IACpBS;EACF,CAAC;AACH;AAGA,OAAO,SAASG,kBAAkBA,CAACd,KAAY,EAAkB;EAC/D,IAAIA,KAAK,CAACI,KAAK,KAAK,kBAAkB,EAAE;IACtC,OAAOJ,KAAK;EACd;EACA,MAAMK,MAAM,GAAGX,cAAc,CAACM,KAAK,CAAC;EACpC,MAAMW,IAAI,GAAG,IAAIE,KAAK,CAA2BR,MAAM,CAAC;EACxD,KAAK,IAAIK,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAGL,MAAM,EAAEK,QAAQ,EAAE,EAAE;IACpDC,IAAI,CAACD,QAAQ,CAAC,GAAGd,mBAAmB,CAACI,KAAK,EAAEU,QAAQ,CAAC;EACvD;EACA,OAAO;IACLN,KAAK,EAAE,kBAAkB;IACzBF,MAAM,EAAEF,KAAK,CAACE,MAAM;IACpBS;EACF,CAAC;AACH"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export function getDataTypeFromValue(value) {
|
|
2
|
+
let defaultNumberType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'float32';
|
|
3
|
+
if (value instanceof Date) {
|
|
4
|
+
return 'date-millisecond';
|
|
5
|
+
}
|
|
6
|
+
if (value instanceof Number) {
|
|
7
|
+
return defaultNumberType;
|
|
8
|
+
}
|
|
9
|
+
if (typeof value === 'string') {
|
|
10
|
+
return 'utf8';
|
|
11
|
+
}
|
|
12
|
+
if (value === null || value === 'undefined') {
|
|
13
|
+
return 'null';
|
|
14
|
+
}
|
|
15
|
+
return 'null';
|
|
16
|
+
}
|
|
17
|
+
export function getDataTypeFromArray(array) {
|
|
18
|
+
let type = getDataTypeFromTypedArray(array);
|
|
19
|
+
if (type !== 'null') {
|
|
20
|
+
return {
|
|
21
|
+
type,
|
|
22
|
+
nullable: false
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (array.length > 0) {
|
|
26
|
+
type = getDataTypeFromValue(array[0]);
|
|
27
|
+
return {
|
|
28
|
+
type,
|
|
29
|
+
nullable: true
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
type: 'null',
|
|
34
|
+
nullable: true
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function getDataTypeFromTypedArray(array) {
|
|
38
|
+
switch (array.constructor) {
|
|
39
|
+
case Int8Array:
|
|
40
|
+
return 'int8';
|
|
41
|
+
case Uint8Array:
|
|
42
|
+
case Uint8ClampedArray:
|
|
43
|
+
return 'uint8';
|
|
44
|
+
case Int16Array:
|
|
45
|
+
return 'int16';
|
|
46
|
+
case Uint16Array:
|
|
47
|
+
return 'uint16';
|
|
48
|
+
case Int32Array:
|
|
49
|
+
return 'int32';
|
|
50
|
+
case Uint32Array:
|
|
51
|
+
return 'uint32';
|
|
52
|
+
case Float32Array:
|
|
53
|
+
return 'float32';
|
|
54
|
+
case Float64Array:
|
|
55
|
+
return 'float64';
|
|
56
|
+
default:
|
|
57
|
+
return 'null';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function getArrayTypeFromDataType(type, nullable) {
|
|
61
|
+
if (!nullable) {
|
|
62
|
+
switch (type) {
|
|
63
|
+
case 'int8':
|
|
64
|
+
return Int8Array;
|
|
65
|
+
case 'uint8':
|
|
66
|
+
return Uint8Array;
|
|
67
|
+
case 'int16':
|
|
68
|
+
return Int16Array;
|
|
69
|
+
case 'uint16':
|
|
70
|
+
return Uint16Array;
|
|
71
|
+
case 'int32':
|
|
72
|
+
return Int32Array;
|
|
73
|
+
case 'uint32':
|
|
74
|
+
return Uint32Array;
|
|
75
|
+
case 'float32':
|
|
76
|
+
return Float32Array;
|
|
77
|
+
case 'float64':
|
|
78
|
+
return Float64Array;
|
|
79
|
+
default:
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return Array;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=data-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-type.js","names":["getDataTypeFromValue","value","defaultNumberType","arguments","length","undefined","Date","Number","getDataTypeFromArray","array","type","getDataTypeFromTypedArray","nullable","constructor","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","getArrayTypeFromDataType","Array"],"sources":["../../../../../src/lib/table/simple-table/data-type.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {DataType} from '../../../types/schema';\nimport {TypedArray, TypedArrayConstructor, ArrayType} from '../../../types/types';\n\n/** Deduce column types from values */\nexport function getDataTypeFromValue(\n value: unknown,\n defaultNumberType: 'float32' = 'float32'\n): DataType {\n if (value instanceof Date) {\n return 'date-millisecond';\n }\n if (value instanceof Number) {\n return defaultNumberType;\n }\n if (typeof value === 'string') {\n return 'utf8';\n }\n if (value === null || value === 'undefined') {\n return 'null';\n }\n return 'null';\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromArray(array: ArrayType): {type: DataType; nullable: boolean} {\n let type = getDataTypeFromTypedArray(array as TypedArray);\n if (type !== 'null') {\n return {type, nullable: false};\n }\n if (array.length > 0) {\n type = getDataTypeFromValue(array[0]);\n return {type, nullable: true};\n }\n\n return {type: 'null', nullable: true};\n}\n\n/**\n * Deduces a simple data type \"descriptor from a typed array instance\n */\nexport function getDataTypeFromTypedArray(array: TypedArray): DataType {\n switch (array.constructor) {\n case Int8Array:\n return 'int8';\n case Uint8Array:\n case Uint8ClampedArray:\n return 'uint8';\n case Int16Array:\n return 'int16';\n case Uint16Array:\n return 'uint16';\n case Int32Array:\n return 'int32';\n case Uint32Array:\n return 'uint32';\n case Float32Array:\n return 'float32';\n case Float64Array:\n return 'float64';\n default:\n return 'null';\n }\n}\n\nexport function getArrayTypeFromDataType(\n type: DataType,\n nullable: boolean | undefined\n): TypedArrayConstructor | ArrayConstructor {\n if (!nullable) {\n switch (type) {\n case 'int8':\n return Int8Array;\n case 'uint8':\n return Uint8Array;\n case 'int16':\n return Int16Array;\n case 'uint16':\n return Uint16Array;\n case 'int32':\n return Int32Array;\n case 'uint32':\n return Uint32Array;\n case 'float32':\n return Float32Array;\n case 'float64':\n return Float64Array;\n default:\n break;\n }\n }\n\n // if (typeof BigInt64Array !== 'undefined') {\n // TYPED_ARRAY_TO_TYPE.BigInt64Array = new Int64();\n // TYPED_ARRAY_TO_TYPE.BigUint64Array = new Uint64();\n // }\n\n return Array;\n}\n"],"mappings":"AAMA,OAAO,SAASA,oBAAoBA,CAClCC,KAAc,EAEJ;EAAA,IADVC,iBAA4B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,SAAS;EAExC,IAAIF,KAAK,YAAYK,IAAI,EAAE;IACzB,OAAO,kBAAkB;EAC3B;EACA,IAAIL,KAAK,YAAYM,MAAM,EAAE;IAC3B,OAAOL,iBAAiB;EAC1B;EACA,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,MAAM;EACf;EACA,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK,WAAW,EAAE;IAC3C,OAAO,MAAM;EACf;EACA,OAAO,MAAM;AACf;AAKA,OAAO,SAASO,oBAAoBA,CAACC,KAAgB,EAAuC;EAC1F,IAAIC,IAAI,GAAGC,yBAAyB,CAACF,KAAmB,CAAC;EACzD,IAAIC,IAAI,KAAK,MAAM,EAAE;IACnB,OAAO;MAACA,IAAI;MAAEE,QAAQ,EAAE;IAAK,CAAC;EAChC;EACA,IAAIH,KAAK,CAACL,MAAM,GAAG,CAAC,EAAE;IACpBM,IAAI,GAAGV,oBAAoB,CAACS,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO;MAACC,IAAI;MAAEE,QAAQ,EAAE;IAAI,CAAC;EAC/B;EAEA,OAAO;IAACF,IAAI,EAAE,MAAM;IAAEE,QAAQ,EAAE;EAAI,CAAC;AACvC;AAKA,OAAO,SAASD,yBAAyBA,CAACF,KAAiB,EAAY;EACrE,QAAQA,KAAK,CAACI,WAAW;IACvB,KAAKC,SAAS;MACZ,OAAO,MAAM;IACf,KAAKC,UAAU;IACf,KAAKC,iBAAiB;MACpB,OAAO,OAAO;IAChB,KAAKC,UAAU;MACb,OAAO,OAAO;IAChB,KAAKC,WAAW;MACd,OAAO,QAAQ;IACjB,KAAKC,UAAU;MACb,OAAO,OAAO;IAChB,KAAKC,WAAW;MACd,OAAO,QAAQ;IACjB,KAAKC,YAAY;MACf,OAAO,SAAS;IAClB,KAAKC,YAAY;MACf,OAAO,SAAS;IAClB;MACE,OAAO,MAAM;EACjB;AACF;AAEA,OAAO,SAASC,wBAAwBA,CACtCb,IAAc,EACdE,QAA6B,EACa;EAC1C,IAAI,CAACA,QAAQ,EAAE;IACb,QAAQF,IAAI;MACV,KAAK,MAAM;QACT,OAAOI,SAAS;MAClB,KAAK,OAAO;QACV,OAAOC,UAAU;MACnB,KAAK,OAAO;QACV,OAAOE,UAAU;MACnB,KAAK,QAAQ;QACX,OAAOC,WAAW;MACpB,KAAK,OAAO;QACV,OAAOC,UAAU;MACnB,KAAK,QAAQ;QACX,OAAOC,WAAW;MACpB,KAAK,SAAS;QACZ,OAAOC,YAAY;MACrB,KAAK,SAAS;QACZ,OAAOC,YAAY;MACrB;QACE;IACJ;EACF;EAOA,OAAOE,KAAK;AACd"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { deduceTableSchema } from './table-schema';
|
|
2
|
+
export function makeTableFromData(data) {
|
|
3
|
+
let table;
|
|
4
|
+
switch (getTableShapeFromData(data)) {
|
|
5
|
+
case 'array-row-table':
|
|
6
|
+
table = {
|
|
7
|
+
shape: 'array-row-table',
|
|
8
|
+
data: data
|
|
9
|
+
};
|
|
10
|
+
break;
|
|
11
|
+
case 'object-row-table':
|
|
12
|
+
table = {
|
|
13
|
+
shape: 'object-row-table',
|
|
14
|
+
data: data
|
|
15
|
+
};
|
|
16
|
+
break;
|
|
17
|
+
case 'columnar-table':
|
|
18
|
+
table = {
|
|
19
|
+
shape: 'columnar-table',
|
|
20
|
+
data: data
|
|
21
|
+
};
|
|
22
|
+
break;
|
|
23
|
+
default:
|
|
24
|
+
throw new Error('table');
|
|
25
|
+
}
|
|
26
|
+
const schema = deduceTableSchema(table);
|
|
27
|
+
return {
|
|
28
|
+
...table,
|
|
29
|
+
schema
|
|
30
|
+
};
|
|
31
|
+
}
|
|
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
|
+
const firstRow = data[0];
|
|
38
|
+
if (Array.isArray(firstRow)) {
|
|
39
|
+
return 'array-row-table';
|
|
40
|
+
}
|
|
41
|
+
if (firstRow && typeof firstRow === 'object') {
|
|
42
|
+
return 'object-row-table';
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (data && typeof data === 'object') {
|
|
46
|
+
return 'columnar-table';
|
|
47
|
+
}
|
|
48
|
+
throw new Error('invalid table');
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=make-table.js.map
|