@loaders.gl/schema 3.4.14 → 3.4.15

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 (36) hide show
  1. package/dist/es5/bundle.js +1 -1
  2. package/dist/es5/bundle.js.map +1 -1
  3. package/dist/es5/category/mesh/convert-mesh.js +2 -7
  4. package/dist/es5/category/mesh/convert-mesh.js.map +1 -1
  5. package/dist/es5/category/mesh/deduce-mesh-schema.js +8 -8
  6. package/dist/es5/category/mesh/deduce-mesh-schema.js.map +1 -1
  7. package/dist/es5/category/mesh/mesh-to-arrow-table.js +17 -16
  8. package/dist/es5/category/mesh/mesh-to-arrow-table.js.map +1 -1
  9. package/dist/es5/category/mesh/mesh-utils.js +15 -15
  10. package/dist/es5/category/mesh/mesh-utils.js.map +1 -1
  11. package/dist/es5/category/table/deduce-table-schema.js +9 -9
  12. package/dist/es5/category/table/deduce-table-schema.js.map +1 -1
  13. package/dist/es5/index.js +51 -51
  14. package/dist/es5/lib/arrow/get-type-info.js +3 -3
  15. package/dist/es5/lib/arrow/get-type-info.js.map +1 -1
  16. package/dist/es5/lib/batches/base-table-batch-aggregator.js +38 -51
  17. package/dist/es5/lib/batches/base-table-batch-aggregator.js.map +1 -1
  18. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js +60 -81
  19. package/dist/es5/lib/batches/columnar-table-batch-aggregator.js.map +1 -1
  20. package/dist/es5/lib/batches/row-table-batch-aggregator.js +53 -66
  21. package/dist/es5/lib/batches/row-table-batch-aggregator.js.map +1 -1
  22. package/dist/es5/lib/batches/table-batch-builder.js +101 -127
  23. package/dist/es5/lib/batches/table-batch-builder.js.map +1 -1
  24. package/dist/es5/lib/schema/impl/enum.js +1 -1
  25. package/dist/es5/lib/schema/impl/field.js +17 -30
  26. package/dist/es5/lib/schema/impl/field.js.map +1 -1
  27. package/dist/es5/lib/schema/impl/schema.js +55 -105
  28. package/dist/es5/lib/schema/impl/schema.js.map +1 -1
  29. package/dist/es5/lib/schema/impl/type.js +375 -675
  30. package/dist/es5/lib/schema/impl/type.js.map +1 -1
  31. package/dist/es5/lib/schema/schema.js +37 -37
  32. package/dist/es5/lib/utils/async-queue.js +72 -138
  33. package/dist/es5/lib/utils/async-queue.js.map +1 -1
  34. package/dist/es5/lib/utils/row-utils.js +4 -4
  35. package/dist/es5/lib/utils/row-utils.js.map +1 -1
  36. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["_assert","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","Schema","fields","metadata","_classCallCheck2","default","_defineProperty2","assert","checkNames","Map","_createClass2","key","compareTo","other","select","nameMap","create","_len","arguments","columnNames","_key","_i","_columnNames","selectedFields","filter","field","selectAt","_this","_len2","columnIndices","_key2","map","index","Boolean","assign","schemaOrFields","otherSchema","mergeMaps","fieldMap","_iterator","_step","_iterator2","_step2","mergedFields","values","exports","usedNames","_iterator3","_step3","console","warn","m1","m2","concat","_toConsumableArray2"],"sources":["../../../../../src/lib/schema/impl/schema.ts"],"sourcesContent":["import {assert} from '../../utils/assert';\nimport Field from './field';\n\nexport type SchemaMetadata = Map<string, any>;\n\n/**\n * ArrowJS `Schema` API-compatible class for row-based tables (returned from `DataTable`)\n * https://loaders.gl/arrowjs/docs/api-reference/schema\n */\nexport default class Schema {\n fields: Field[];\n // TODO - Arrow just allows Map<string, string>\n metadata: SchemaMetadata;\n\n constructor(fields: Field[], metadata?: SchemaMetadata) {\n assert(Array.isArray(fields));\n checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields;\n this.metadata = metadata || new Map();\n }\n\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other: Schema): boolean {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n\n select(...columnNames: string[]): Schema {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new Schema(selectedFields, this.metadata);\n }\n\n selectAt(...columnIndices: number[]): Schema {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new Schema(selectedFields, this.metadata);\n }\n\n assign(schemaOrFields: Schema | Field[]): Schema {\n let fields: Field[];\n let metadata: SchemaMetadata = this.metadata;\n\n if (schemaOrFields instanceof Schema) {\n const otherSchema = schemaOrFields;\n fields = otherSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);\n } else {\n fields = schemaOrFields;\n }\n\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap: {[key: string]: Field} = Object.create(null);\n\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n\n const mergedFields = Object.values(fieldMap);\n\n return new Schema(mergedFields, metadata);\n }\n}\n\n// Warn if any duplicated field names\nfunction checkNames(fields: Field[]): void {\n const usedNames: Record<string, boolean> = {};\n for (const field of fields) {\n if (usedNames[field.name]) {\n // eslint-disable-next-line\n console.warn('Schema: duplicated field name', field.name, field);\n }\n usedNames[field.name] = true;\n }\n}\n\nfunction mergeMaps<T>(m1: T, m2: T): T {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","names":["_assert","require","Schema","constructor","fields","metadata","_defineProperty2","default","assert","Array","isArray","checkNames","Map","compareTo","other","length","i","select","nameMap","Object","create","_len","arguments","columnNames","_key","name","selectedFields","filter","field","selectAt","_len2","columnIndices","_key2","map","index","Boolean","assign","schemaOrFields","otherSchema","mergeMaps","fieldMap","mergedFields","values","exports","usedNames","console","warn","m1","m2"],"sources":["../../../../../src/lib/schema/impl/schema.ts"],"sourcesContent":["import {assert} from '../../utils/assert';\nimport Field from './field';\n\nexport type SchemaMetadata = Map<string, any>;\n\n/**\n * ArrowJS `Schema` API-compatible class for row-based tables (returned from `DataTable`)\n * https://loaders.gl/arrowjs/docs/api-reference/schema\n */\nexport default class Schema {\n fields: Field[];\n // TODO - Arrow just allows Map<string, string>\n metadata: SchemaMetadata;\n\n constructor(fields: Field[], metadata?: SchemaMetadata) {\n assert(Array.isArray(fields));\n checkNames(fields);\n // For kepler fields, create arrow compatible `Fields` that have kepler fields as `metadata`\n this.fields = fields;\n this.metadata = metadata || new Map();\n }\n\n // TODO - arrow only seems to compare fields, not metadata\n compareTo(other: Schema): boolean {\n if (this.metadata !== other.metadata) {\n return false;\n }\n if (this.fields.length !== other.fields.length) {\n return false;\n }\n for (let i = 0; i < this.fields.length; ++i) {\n if (!this.fields[i].compareTo(other.fields[i])) {\n return false;\n }\n }\n return true;\n }\n\n select(...columnNames: string[]): Schema {\n // Ensure column names reference valid fields\n const nameMap = Object.create(null);\n for (const name of columnNames) {\n nameMap[name] = true;\n }\n const selectedFields = this.fields.filter((field) => nameMap[field.name]);\n return new Schema(selectedFields, this.metadata);\n }\n\n selectAt(...columnIndices: number[]): Schema {\n // Ensure column indices reference valid fields\n const selectedFields = columnIndices.map((index) => this.fields[index]).filter(Boolean);\n return new Schema(selectedFields, this.metadata);\n }\n\n assign(schemaOrFields: Schema | Field[]): Schema {\n let fields: Field[];\n let metadata: SchemaMetadata = this.metadata;\n\n if (schemaOrFields instanceof Schema) {\n const otherSchema = schemaOrFields;\n fields = otherSchema.fields;\n metadata = mergeMaps(mergeMaps(new Map(), this.metadata), otherSchema.metadata);\n } else {\n fields = schemaOrFields;\n }\n\n // Create a merged list of fields, overwrite fields in place, new fields at end\n const fieldMap: {[key: string]: Field} = Object.create(null);\n\n for (const field of this.fields) {\n fieldMap[field.name] = field;\n }\n\n for (const field of fields) {\n fieldMap[field.name] = field;\n }\n\n const mergedFields = Object.values(fieldMap);\n\n return new Schema(mergedFields, metadata);\n }\n}\n\n// Warn if any duplicated field names\nfunction checkNames(fields: Field[]): void {\n const usedNames: Record<string, boolean> = {};\n for (const field of fields) {\n if (usedNames[field.name]) {\n // eslint-disable-next-line\n console.warn('Schema: duplicated field name', field.name, field);\n }\n usedNames[field.name] = true;\n }\n}\n\nfunction mergeMaps<T>(m1: T, m2: T): T {\n // @ts-ignore\n return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n"],"mappings":"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"}