@loaders.gl/json 4.0.0-alpha.9 → 4.0.0-beta.2

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 (113) hide show
  1. package/dist/dist.min.js +132 -82
  2. package/dist/es5/geojson-loader.js +30 -21
  3. package/dist/es5/geojson-loader.js.map +1 -1
  4. package/dist/es5/geojson-writer.js.map +1 -1
  5. package/dist/es5/json-loader.js +2 -2
  6. package/dist/es5/json-loader.js.map +1 -1
  7. package/dist/es5/json-writer.js +1 -1
  8. package/dist/es5/json-writer.js.map +1 -1
  9. package/dist/es5/lib/encoder-utils/encode-table-row.js +54 -0
  10. package/dist/es5/lib/encoder-utils/encode-table-row.js.map +1 -0
  11. package/dist/es5/lib/encoder-utils/encode-utils.js.map +1 -0
  12. package/dist/es5/lib/encoder-utils/utf8-encoder.js.map +1 -0
  13. package/dist/es5/lib/encoders/geojson-encoder.js +47 -84
  14. package/dist/es5/lib/encoders/geojson-encoder.js.map +1 -1
  15. package/dist/es5/lib/encoders/json-encoder.js +3 -3
  16. package/dist/es5/lib/encoders/json-encoder.js.map +1 -1
  17. package/dist/es5/lib/parsers/parse-json-in-batches.js +1 -1
  18. package/dist/es5/lib/parsers/parse-json-in-batches.js.map +1 -1
  19. package/dist/es5/lib/parsers/parse-ndjson-in-batches.js.map +1 -1
  20. package/dist/es5/ndgeoson-loader.js +10 -13
  21. package/dist/es5/ndgeoson-loader.js.map +1 -1
  22. package/dist/es5/ndjson-loader.js +1 -1
  23. package/dist/es5/ndjson-loader.js.map +1 -1
  24. package/dist/esm/geojson-loader.js +31 -22
  25. package/dist/esm/geojson-loader.js.map +1 -1
  26. package/dist/esm/geojson-writer.js.map +1 -1
  27. package/dist/esm/json-loader.js +2 -2
  28. package/dist/esm/json-loader.js.map +1 -1
  29. package/dist/esm/json-writer.js +1 -1
  30. package/dist/esm/json-writer.js.map +1 -1
  31. package/dist/esm/lib/encoder-utils/encode-table-row.js +44 -0
  32. package/dist/esm/lib/encoder-utils/encode-table-row.js.map +1 -0
  33. package/dist/esm/lib/encoder-utils/encode-utils.js.map +1 -0
  34. package/dist/esm/lib/encoder-utils/utf8-encoder.js.map +1 -0
  35. package/dist/esm/lib/encoders/geojson-encoder.js +9 -52
  36. package/dist/esm/lib/encoders/geojson-encoder.js.map +1 -1
  37. package/dist/esm/lib/encoders/json-encoder.js +3 -3
  38. package/dist/esm/lib/encoders/json-encoder.js.map +1 -1
  39. package/dist/esm/lib/parsers/parse-json-in-batches.js +1 -1
  40. package/dist/esm/lib/parsers/parse-json-in-batches.js.map +1 -1
  41. package/dist/esm/lib/parsers/parse-ndjson-in-batches.js.map +1 -1
  42. package/dist/esm/ndgeoson-loader.js +9 -11
  43. package/dist/esm/ndgeoson-loader.js.map +1 -1
  44. package/dist/esm/ndjson-loader.js +1 -1
  45. package/dist/esm/ndjson-loader.js.map +1 -1
  46. package/dist/geojson-loader.d.ts +3 -2
  47. package/dist/geojson-loader.d.ts.map +1 -1
  48. package/dist/geojson-worker.js +55 -209
  49. package/dist/geojson-writer.d.ts +8 -3
  50. package/dist/geojson-writer.d.ts.map +1 -1
  51. package/dist/json-loader.d.ts +1 -1
  52. package/dist/json-loader.d.ts.map +1 -1
  53. package/dist/json-writer.d.ts +13 -3
  54. package/dist/json-writer.d.ts.map +1 -1
  55. package/dist/lib/encoder-utils/encode-table-row.d.ts +7 -0
  56. package/dist/lib/encoder-utils/encode-table-row.d.ts.map +1 -0
  57. package/dist/lib/encoder-utils/encode-utils.d.ts.map +1 -0
  58. package/dist/lib/encoder-utils/utf8-encoder.d.ts.map +1 -0
  59. package/dist/lib/encoders/geojson-encoder.d.ts +2 -8
  60. package/dist/lib/encoders/geojson-encoder.d.ts.map +1 -1
  61. package/dist/lib/encoders/json-encoder.d.ts +1 -10
  62. package/dist/lib/encoders/json-encoder.d.ts.map +1 -1
  63. package/dist/lib/parsers/parse-json-in-batches.d.ts.map +1 -1
  64. package/dist/lib/parsers/parse-ndjson-in-batches.d.ts +2 -2
  65. package/dist/lib/parsers/parse-ndjson-in-batches.d.ts.map +1 -1
  66. package/dist/ndgeoson-loader.d.ts +4 -24
  67. package/dist/ndgeoson-loader.d.ts.map +1 -1
  68. package/package.json +5 -5
  69. package/src/geojson-loader.ts +42 -27
  70. package/src/geojson-writer.ts +8 -3
  71. package/src/json-loader.ts +2 -2
  72. package/src/json-writer.ts +12 -4
  73. package/src/lib/encoder-utils/encode-table-row.ts +69 -0
  74. package/src/lib/encoders/geojson-encoder.ts +15 -78
  75. package/src/lib/encoders/json-encoder.ts +3 -11
  76. package/src/lib/parsers/parse-json-in-batches.ts +2 -1
  77. package/src/lib/parsers/parse-ndjson-in-batches.ts +2 -2
  78. package/src/ndgeoson-loader.ts +16 -13
  79. package/dist/bundle.js +0 -5
  80. package/dist/es5/lib/encoders/encode-utils.js.map +0 -1
  81. package/dist/es5/lib/encoders/utf8-encoder.js.map +0 -1
  82. package/dist/esm/lib/encoders/encode-utils.js.map +0 -1
  83. package/dist/esm/lib/encoders/utf8-encoder.js.map +0 -1
  84. package/dist/geojson-loader.js +0 -77
  85. package/dist/geojson-writer.js +0 -22
  86. package/dist/index.js +0 -24
  87. package/dist/json-loader.js +0 -42
  88. package/dist/json-writer.js +0 -18
  89. package/dist/lib/clarinet/clarinet.js +0 -535
  90. package/dist/lib/encoders/encode-utils.d.ts.map +0 -1
  91. package/dist/lib/encoders/encode-utils.js +0 -47
  92. package/dist/lib/encoders/geojson-encoder.js +0 -104
  93. package/dist/lib/encoders/json-encoder.js +0 -22
  94. package/dist/lib/encoders/utf8-encoder.d.ts.map +0 -1
  95. package/dist/lib/encoders/utf8-encoder.js +0 -32
  96. package/dist/lib/json-parser/json-parser.js +0 -98
  97. package/dist/lib/json-parser/streaming-json-parser.js +0 -100
  98. package/dist/lib/jsonpath/jsonpath.js +0 -89
  99. package/dist/lib/parsers/parse-json-in-batches.js +0 -100
  100. package/dist/lib/parsers/parse-json.js +0 -32
  101. package/dist/lib/parsers/parse-ndjson-in-batches.js +0 -36
  102. package/dist/lib/parsers/parse-ndjson.js +0 -17
  103. package/dist/ndgeoson-loader.js +0 -37
  104. package/dist/ndjson-loader.js +0 -27
  105. package/dist/workers/geojson-worker.js +0 -5
  106. /package/dist/es5/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
  107. /package/dist/es5/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
  108. /package/dist/esm/lib/{encoders → encoder-utils}/encode-utils.js +0 -0
  109. /package/dist/esm/lib/{encoders → encoder-utils}/utf8-encoder.js +0 -0
  110. /package/dist/lib/{encoders → encoder-utils}/encode-utils.d.ts +0 -0
  111. /package/dist/lib/{encoders → encoder-utils}/utf8-encoder.d.ts +0 -0
  112. /package/src/lib/{encoders → encoder-utils}/encode-utils.ts +0 -0
  113. /package/src/lib/{encoders → encoder-utils}/utf8-encoder.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ndgeoson-loader.js","names":["_parseNdjson","require","_parseNdjsonInBatches","VERSION","DEFAULT_NDGEOJSON_LOADER_OPTIONS","geojson","shape","gis","format","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","_parse","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseNDJSONSync","TextDecoder","decode","stop","_x","apply","arguments","parseTextSync","parseInBatches","parseNDJSONInBatches","options","exports","_typecheckNDJSONLoader"],"sources":["../../src/ndgeoson-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type NDGeoJSONLoaderOptions = LoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format: 'geojson';\n };\n};\n\nconst DEFAULT_NDGEOJSON_LOADER_OPTIONS = {\n geojson: {\n shape: 'object-row-table'\n },\n gis: {\n format: 'geojson'\n }\n};\n\nexport const NDJSONLoader = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'ndgeojson'],\n mimeTypes: [\n 'application/geo+x-ndjson',\n 'application/geo+x-ldjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/geo+json-seq',\n 'application/x-ndjson'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: DEFAULT_NDGEOJSON_LOADER_OPTIONS\n};\n\nexport const _typecheckNDJSONLoader: LoaderWithParser = NDJSONLoader;\n"],"mappings":";;;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAW3E,IAAMC,gCAAgC,GAAG;EACvCC,OAAO,EAAE;IACPC,KAAK,EAAE;EACT,CAAC;EACDC,GAAG,EAAE;IACHC,MAAM,EAAE;EACV;AACF,CAAC;AAEM,IAAMC,YAAY,GAAG;EAC1BC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEV,OAAO;EAChBW,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EACnCC,SAAS,EAAE,CACT,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,4BAAe,EAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAN,MAAAkB,EAAA;MAAA,OAAAjB,MAAA,CAAAkB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAApB,KAAA;EAAA;EACjGqB,aAAa,EAAEP,4BAAe;EAC9BQ,cAAc,EAAEC,0CAAoB;EACpCC,OAAO,EAAEtC;AACX,CAAC;AAACuC,OAAA,CAAAlC,YAAA,GAAAA,YAAA;AAEK,IAAMmC,sBAAwC,GAAGnC,YAAY;AAACkC,OAAA,CAAAC,sBAAA,GAAAA,sBAAA"}
1
+ {"version":3,"file":"ndgeoson-loader.js","names":["_parseNdjson","require","_parseNdjsonInBatches","VERSION","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","_parse","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseNDJSONSync","TextDecoder","decode","stop","_x","apply","arguments","parseTextSync","parseInBatches","parseNDJSONInBatches","options","geojson","shape","gis","format","exports"],"sources":["../../src/ndgeoson-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\nimport {ArrayRowTable, ObjectRowTable, Batch} from '@loaders.gl/schema';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for NDGeoJSONLoader */\nexport type NDGeoJSONLoaderOptions = LoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format: 'geojson';\n };\n};\n\n/** NDGeoJSONLoader */\nexport const NDJSONLoader: LoaderWithParser<\n ArrayRowTable | ObjectRowTable,\n Batch,\n NDGeoJSONLoaderOptions\n> = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'ndgeojson'],\n mimeTypes: [\n 'application/geo+x-ndjson',\n 'application/geo+x-ldjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/geo+json-seq',\n 'application/x-ndjson'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: {\n geojson: {\n shape: 'object-row-table'\n },\n gis: {\n format: 'geojson'\n }\n }\n};\n"],"mappings":";;;;;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAKA,IAAME,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAapE,IAAMC,YAIZ,GAAG;EACFC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EACnCC,SAAS,EAAE,CACT,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,4BAAe,EAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAN,MAAAkB,EAAA;MAAA,OAAAjB,MAAA,CAAAkB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAApB,KAAA;EAAA;EACjGqB,aAAa,EAAEP,4BAAe;EAC9BQ,cAAc,EAAEC,0CAAoB;EACpCC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,GAAG,EAAE;MACHC,MAAM,EAAE;IACV;EACF;AACF,CAAC;AAACC,OAAA,CAAAtC,YAAA,GAAAA,YAAA"}
@@ -9,7 +9,7 @@ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"))
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _parseNdjson = require("./lib/parsers/parse-ndjson");
11
11
  var _parseNdjsonInBatches = require("./lib/parsers/parse-ndjson-in-batches");
12
- var VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'latest';
12
+ var VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
13
13
  var NDJSONLoader = {
14
14
  name: 'NDJSON',
15
15
  id: 'ndjson',
@@ -1 +1 @@
1
- {"version":3,"file":"ndjson-loader.js","names":["_parseNdjson","require","_parseNdjsonInBatches","VERSION","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","_parse","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseNDJSONSync","TextDecoder","decode","stop","_x","apply","arguments","parseTextSync","parseInBatches","parseNDJSONInBatches","options","exports"],"sources":["../../src/ndjson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {ObjectRowTable, ArrayRowTable, TableBatch} from '@loaders.gl/schema';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const NDJSONLoader: LoaderWithParser<\n ObjectRowTable | ArrayRowTable,\n TableBatch,\n LoaderOptions\n> = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'jsonl'],\n mimeTypes: [\n 'application/x-ndjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/json-seq'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: {}\n};\n"],"mappings":";;;;;;;;;AAIA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAEpE,IAAMC,YAIZ,GAAG;EACFC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC/BC,SAAS,EAAE,CACT,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,4BAAe,EAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAN,MAAAkB,EAAA;MAAA,OAAAjB,MAAA,CAAAkB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAApB,KAAA;EAAA;EACjGqB,aAAa,EAAEP,4BAAe;EAC9BQ,cAAc,EAAEC,0CAAoB;EACpCC,OAAO,EAAE,CAAC;AACZ,CAAC;AAACC,OAAA,CAAAlC,YAAA,GAAAA,YAAA"}
1
+ {"version":3,"file":"ndjson-loader.js","names":["_parseNdjson","require","_parseNdjsonInBatches","VERSION","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","_parse","_asyncToGenerator2","default","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseNDJSONSync","TextDecoder","decode","stop","_x","apply","arguments","parseTextSync","parseInBatches","parseNDJSONInBatches","options","exports"],"sources":["../../src/ndjson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {ObjectRowTable, ArrayRowTable, TableBatch} from '@loaders.gl/schema';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport const NDJSONLoader: LoaderWithParser<\n ObjectRowTable | ArrayRowTable,\n TableBatch,\n LoaderOptions\n> = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'jsonl'],\n mimeTypes: [\n 'application/x-ndjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/json-seq'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: {}\n};\n"],"mappings":";;;;;;;;;AAIA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,qBAAA,GAAAD,OAAA;AAIA,IAAME,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAEpE,IAAMC,YAIZ,GAAG;EACFC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC/BC,SAAS,EAAE,CACT,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAAE,SAAAC,QAAOC,WAAwB;MAAA,OAAAH,YAAA,CAAAD,OAAA,CAAAK,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAAK,IAAAC,4BAAe,EAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAG,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAN,MAAAkB,EAAA;MAAA,OAAAjB,MAAA,CAAAkB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAApB,KAAA;EAAA;EACjGqB,aAAa,EAAEP,4BAAe;EAC9BQ,cAAc,EAAEC,0CAAoB;EACpCC,OAAO,EAAE,CAAC;AACZ,CAAC;AAACC,OAAA,CAAAlC,YAAA,GAAAA,YAAA"}
@@ -1,18 +1,6 @@
1
1
  import { geojsonToBinary } from '@loaders.gl/gis';
2
- import { parseJSONSync } from './lib/parsers/parse-json';
3
2
  import { parseJSONInBatches } from './lib/parsers/parse-json-in-batches';
4
- const VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'latest';
5
- const DEFAULT_GEOJSON_LOADER_OPTIONS = {
6
- geojson: {
7
- shape: 'object-row-table'
8
- },
9
- json: {
10
- jsonpaths: ['$', '$.features']
11
- },
12
- gis: {
13
- format: 'geojson'
14
- }
15
- };
3
+ const VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
16
4
  export const GeoJSONWorkerLoader = {
17
5
  name: 'GeoJSON',
18
6
  id: 'geojson',
@@ -23,7 +11,18 @@ export const GeoJSONWorkerLoader = {
23
11
  mimeTypes: ['application/geo+json'],
24
12
  category: 'geometry',
25
13
  text: true,
26
- options: DEFAULT_GEOJSON_LOADER_OPTIONS
14
+ options: {
15
+ geojson: {
16
+ shape: 'object-row-table'
17
+ },
18
+ json: {
19
+ shape: 'object-row-table',
20
+ jsonpaths: ['$', '$.features']
21
+ },
22
+ gis: {
23
+ format: 'geojson'
24
+ }
25
+ }
27
26
  };
28
27
  export const GeoJSONLoader = {
29
28
  ...GeoJSONWorkerLoader,
@@ -35,31 +34,41 @@ async function parse(arrayBuffer, options) {
35
34
  return parseTextSync(new TextDecoder().decode(arrayBuffer), options);
36
35
  }
37
36
  function parseTextSync(text, options) {
37
+ var _geojson;
38
38
  options = {
39
- ...DEFAULT_GEOJSON_LOADER_OPTIONS,
39
+ ...GeoJSONLoader.options,
40
40
  ...options
41
41
  };
42
- options.json = {
43
- ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson,
42
+ options.geojson = {
43
+ ...GeoJSONLoader.options.geojson,
44
44
  ...options.geojson
45
45
  };
46
46
  options.gis = options.gis || {};
47
- const table = parseJSONSync(text, options);
48
- table.shape = 'geojson-row-table';
47
+ let geojson;
48
+ try {
49
+ geojson = JSON.parse(text);
50
+ } catch {
51
+ geojson = {};
52
+ }
53
+ const table = {
54
+ shape: 'geojson-table',
55
+ type: 'FeatureCollection',
56
+ features: ((_geojson = geojson) === null || _geojson === void 0 ? void 0 : _geojson.features) || []
57
+ };
49
58
  switch (options.gis.format) {
50
59
  case 'binary':
51
- return geojsonToBinary(table.data);
60
+ return geojsonToBinary(table.features);
52
61
  default:
53
62
  return table;
54
63
  }
55
64
  }
56
65
  function parseInBatches(asyncIterator, options) {
57
66
  options = {
58
- ...DEFAULT_GEOJSON_LOADER_OPTIONS,
67
+ ...GeoJSONLoader.options,
59
68
  ...options
60
69
  };
61
70
  options.json = {
62
- ...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson,
71
+ ...GeoJSONLoader.options.geojson,
63
72
  ...options.geojson
64
73
  };
65
74
  const geojsonIterator = parseJSONInBatches(asyncIterator, options);
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-loader.js","names":["geojsonToBinary","parseJSONSync","parseJSONInBatches","VERSION","DEFAULT_GEOJSON_LOADER_OPTIONS","geojson","shape","json","jsonpaths","gis","format","GeoJSONWorkerLoader","name","id","module","version","worker","extensions","mimeTypes","category","text","options","GeoJSONLoader","parse","parseTextSync","parseInBatches","arrayBuffer","TextDecoder","decode","table","data","asyncIterator","geojsonIterator","makeBinaryGeometryIterator","batch"],"sources":["../../src/geojson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {JSONLoaderOptions} from './json-loader';\nimport {geojsonToBinary} from '@loaders.gl/gis';\nimport {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-in-batches';\nimport {GeoJSONRowTable} from '@loaders.gl/schema';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type GeoJSONLoaderOptions = JSONLoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format?: 'geojson' | 'binary';\n };\n};\n\nconst DEFAULT_GEOJSON_LOADER_OPTIONS = {\n geojson: {\n shape: 'object-row-table'\n },\n json: {\n jsonpaths: ['$', '$.features']\n },\n gis: {\n format: 'geojson'\n }\n};\n\n/**\n * GeoJSON loader\n */\nexport const GeoJSONWorkerLoader: Loader = {\n name: 'GeoJSON',\n id: 'geojson',\n module: 'geojson',\n version: VERSION,\n worker: true,\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n category: 'geometry',\n text: true,\n options: DEFAULT_GEOJSON_LOADER_OPTIONS\n};\n\nexport const GeoJSONLoader: LoaderWithParser = {\n ...GeoJSONWorkerLoader,\n parse,\n parseTextSync,\n parseInBatches\n};\n\nasync function parse(arrayBuffer, options) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text, options) {\n // Apps can call the parse method directly, we so apply default options here\n options = {...DEFAULT_GEOJSON_LOADER_OPTIONS, ...options};\n options.json = {...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson, ...options.geojson};\n options.gis = options.gis || {};\n const table = parseJSONSync(text, options) as GeoJSONRowTable;\n table.shape = 'geojson-row-table';\n switch (options.gis.format) {\n case 'binary':\n return geojsonToBinary(table.data);\n default:\n return table;\n }\n}\n\nfunction parseInBatches(asyncIterator, options): AsyncIterable<any> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...DEFAULT_GEOJSON_LOADER_OPTIONS, ...options};\n options.json = {...DEFAULT_GEOJSON_LOADER_OPTIONS.geojson, ...options.geojson};\n\n const geojsonIterator = parseJSONInBatches(asyncIterator, options);\n\n switch (options.gis.format) {\n case 'binary':\n return makeBinaryGeometryIterator(geojsonIterator);\n default:\n return geojsonIterator;\n }\n}\n\nasync function* makeBinaryGeometryIterator(geojsonIterator) {\n for await (const batch of geojsonIterator) {\n batch.data = geojsonToBinary(batch.data);\n yield batch;\n }\n}\n"],"mappings":"AAIA,SAAQA,eAAe,QAAO,iBAAiB;AAC/C,SAAQC,aAAa,QAAO,0BAA0B;AACtD,SAAQC,kBAAkB,QAAO,qCAAqC;AAKtE,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAW3E,MAAMC,8BAA8B,GAAG;EACrCC,OAAO,EAAE;IACPC,KAAK,EAAE;EACT,CAAC;EACDC,IAAI,EAAE;IACJC,SAAS,EAAE,CAAC,GAAG,EAAE,YAAY;EAC/B,CAAC;EACDC,GAAG,EAAE;IACHC,MAAM,EAAE;EACV;AACF,CAAC;AAKD,OAAO,MAAMC,mBAA2B,GAAG;EACzCC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEZ,OAAO;EAChBa,MAAM,EAAE,IAAI;EACZC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAEjB;AACX,CAAC;AAED,OAAO,MAAMkB,aAA+B,GAAG;EAC7C,GAAGX,mBAAmB;EACtBY,KAAK;EACLC,aAAa;EACbC;AACF,CAAC;AAED,eAAeF,KAAKA,CAACG,WAAW,EAAEL,OAAO,EAAE;EACzC,OAAOG,aAAa,CAAC,IAAIG,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,EAAEL,OAAO,CAAC;AACtE;AAEA,SAASG,aAAaA,CAACJ,IAAI,EAAEC,OAAO,EAAE;EAEpCA,OAAO,GAAG;IAAC,GAAGjB,8BAA8B;IAAE,GAAGiB;EAAO,CAAC;EACzDA,OAAO,CAACd,IAAI,GAAG;IAAC,GAAGH,8BAA8B,CAACC,OAAO;IAAE,GAAGgB,OAAO,CAAChB;EAAO,CAAC;EAC9EgB,OAAO,CAACZ,GAAG,GAAGY,OAAO,CAACZ,GAAG,IAAI,CAAC,CAAC;EAC/B,MAAMoB,KAAK,GAAG5B,aAAa,CAACmB,IAAI,EAAEC,OAAO,CAAoB;EAC7DQ,KAAK,CAACvB,KAAK,GAAG,mBAAmB;EACjC,QAAQe,OAAO,CAACZ,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOV,eAAe,CAAC6B,KAAK,CAACC,IAAI,CAAC;IACpC;MACE,OAAOD,KAAK;EAChB;AACF;AAEA,SAASJ,cAAcA,CAACM,aAAa,EAAEV,OAAO,EAAsB;EAElEA,OAAO,GAAG;IAAC,GAAGjB,8BAA8B;IAAE,GAAGiB;EAAO,CAAC;EACzDA,OAAO,CAACd,IAAI,GAAG;IAAC,GAAGH,8BAA8B,CAACC,OAAO;IAAE,GAAGgB,OAAO,CAAChB;EAAO,CAAC;EAE9E,MAAM2B,eAAe,GAAG9B,kBAAkB,CAAC6B,aAAa,EAAEV,OAAO,CAAC;EAElE,QAAQA,OAAO,CAACZ,GAAG,CAACC,MAAM;IACxB,KAAK,QAAQ;MACX,OAAOuB,0BAA0B,CAACD,eAAe,CAAC;IACpD;MACE,OAAOA,eAAe;EAC1B;AACF;AAEA,gBAAgBC,0BAA0BA,CAACD,eAAe,EAAE;EAC1D,WAAW,MAAME,KAAK,IAAIF,eAAe,EAAE;IACzCE,KAAK,CAACJ,IAAI,GAAG9B,eAAe,CAACkC,KAAK,CAACJ,IAAI,CAAC;IACxC,MAAMI,KAAK;EACb;AACF"}
1
+ {"version":3,"file":"geojson-loader.js","names":["geojsonToBinary","parseJSONInBatches","VERSION","GeoJSONWorkerLoader","name","id","module","version","worker","extensions","mimeTypes","category","text","options","geojson","shape","json","jsonpaths","gis","format","GeoJSONLoader","parse","parseTextSync","parseInBatches","arrayBuffer","TextDecoder","decode","_geojson","JSON","table","type","features","asyncIterator","geojsonIterator","makeBinaryGeometryIterator","batch","data"],"sources":["../../src/geojson-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Loader, LoaderWithParser} from '@loaders.gl/loader-utils';\nimport type {GeoJSON, GeoJSONTable, TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from './json-loader';\nimport {geojsonToBinary} from '@loaders.gl/gis';\n// import {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type GeoJSONLoaderOptions = JSONLoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format?: 'geojson' | 'binary';\n };\n};\n\n/**\n * GeoJSON loader\n */\nexport const GeoJSONWorkerLoader: Loader<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n name: 'GeoJSON',\n id: 'geojson',\n module: 'geojson',\n version: VERSION,\n worker: true,\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n category: 'geometry',\n text: true,\n options: {\n geojson: {\n shape: 'object-row-table'\n },\n json: {\n shape: 'object-row-table',\n jsonpaths: ['$', '$.features']\n },\n gis: {\n format: 'geojson'\n }\n }\n};\n\nexport const GeoJSONLoader: LoaderWithParser<GeoJSON, TableBatch, GeoJSONLoaderOptions> = {\n ...GeoJSONWorkerLoader,\n // @ts-expect-error\n parse,\n // @ts-expect-error\n parseTextSync,\n parseInBatches\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: GeoJSONLoaderOptions) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text: string, options?: GeoJSONLoaderOptions) {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.geojson = {...GeoJSONLoader.options.geojson, ...options.geojson};\n options.gis = options.gis || {};\n\n let geojson;\n try {\n geojson = JSON.parse(text);\n } catch {\n geojson = {};\n }\n\n const table: GeoJSONTable = {\n shape: 'geojson-table',\n // TODO - deduce schema from geojson\n // TODO check that parsed data is of type FeatureCollection\n type: 'FeatureCollection',\n features: geojson?.features || []\n };\n\n switch (options.gis.format) {\n case 'binary':\n return geojsonToBinary(table.features);\n default:\n return table;\n }\n}\n\nfunction parseInBatches(asyncIterator, options): AsyncIterable<TableBatch> {\n // Apps can call the parse method directly, we so apply default options here\n options = {...GeoJSONLoader.options, ...options};\n options.json = {...GeoJSONLoader.options.geojson, ...options.geojson};\n\n const geojsonIterator = parseJSONInBatches(asyncIterator, options);\n\n switch (options.gis.format) {\n case 'binary':\n return makeBinaryGeometryIterator(geojsonIterator);\n default:\n return geojsonIterator;\n }\n}\n\nasync function* makeBinaryGeometryIterator(geojsonIterator) {\n for await (const batch of geojsonIterator) {\n batch.data = geojsonToBinary(batch.data);\n yield batch;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-writer.js","names":["encodeTableAsGeojsonInBatches","GeoJSONWriter","id","version","module","name","extensions","mimeTypes","options","geojson","featureArray","geometryColumn","text","encodeInBatches","tableIterator"],"sources":["../../src/geojson-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright Foursquare, Inc 20222\n\nimport type {Writer} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {GeoJSONWriterOptions} from './lib/encoders/geojson-encoder';\nimport {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder';\n\nexport type {GeoJSONWriterOptions};\n\nexport const GeoJSONWriter: Writer<Table, TableBatch, GeoJSONWriterOptions> = {\n id: 'geojson',\n version: 'latest',\n module: 'geojson',\n name: 'GeoJSON',\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n options: {\n geojson: {\n featureArray: false,\n geometryColumn: null\n }\n },\n text: true,\n encodeInBatches: (tableIterator: AsyncIterable<TableBatch>, options) =>\n encodeTableAsGeojsonInBatches(tableIterator, options)\n};\n"],"mappings":"AAMA,SAAQA,6BAA6B,QAAO,gCAAgC;AAI5E,OAAO,MAAMC,aAA8D,GAAG;EAC5EC,EAAE,EAAE,SAAS;EACbC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,YAAY,EAAE,KAAK;MACnBC,cAAc,EAAE;IAClB;EACF,CAAC;EACDC,IAAI,EAAE,IAAI;EACVC,eAAe,EAAEA,CAACC,aAAwC,EAAEN,OAAO,KACjER,6BAA6B,CAACc,aAAa,EAAEN,OAAO;AACxD,CAAC"}
1
+ {"version":3,"file":"geojson-writer.js","names":["encodeTableAsGeojsonInBatches","GeoJSONWriter","id","version","module","name","extensions","mimeTypes","options","geojson","featureArray","geometryColumn","text","encodeInBatches","tableIterator"],"sources":["../../src/geojson-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright Foursquare, Inc 20222\n\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder';\n\nexport type GeoJSONWriterOptions = WriterOptions & {\n geojson?: {\n featureArray?: boolean;\n geometryColumn?: number | null;\n };\n chunkSize?: number;\n};\n\nexport const GeoJSONWriter: Writer<Table, TableBatch, GeoJSONWriterOptions> = {\n id: 'geojson',\n version: 'latest',\n module: 'geojson',\n name: 'GeoJSON',\n extensions: ['geojson'],\n mimeTypes: ['application/geo+json'],\n options: {\n geojson: {\n featureArray: false,\n geometryColumn: null\n }\n },\n text: true,\n encodeInBatches: (tableIterator: AsyncIterable<TableBatch>, options) =>\n encodeTableAsGeojsonInBatches(tableIterator, options)\n};\n"],"mappings":"AAKA,SAAQA,6BAA6B,QAAO,gCAAgC;AAU5E,OAAO,MAAMC,aAA8D,GAAG;EAC5EC,EAAE,EAAE,SAAS;EACbC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,sBAAsB,CAAC;EACnCC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,YAAY,EAAE,KAAK;MACnBC,cAAc,EAAE;IAClB;EACF,CAAC;EACDC,IAAI,EAAE,IAAI;EACVC,eAAe,EAAEA,CAACC,aAAwC,EAAEN,OAAO,KACjER,6BAA6B,CAACc,aAAa,EAAEN,OAAO;AACxD,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { parseJSONSync } from './lib/parsers/parse-json';
2
2
  import { parseJSONInBatches } from './lib/parsers/parse-json-in-batches';
3
- const VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'latest';
3
+ const VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
4
4
  const DEFAULT_JSON_LOADER_OPTIONS = {
5
5
  json: {
6
- shape: 'row-table',
6
+ shape: 'object-row-table',
7
7
  table: false,
8
8
  jsonpaths: []
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"json-loader.js","names":["parseJSONSync","parseJSONInBatches","VERSION","DEFAULT_JSON_LOADER_OPTIONS","json","shape","table","jsonpaths","JSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","parseTextSync","parseInBatches","options","arrayBuffer","TextDecoder","decode","jsonOptions","asyncIterator"],"sources":["../../src/json-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\ntype ParseJSONOptions = {\n shape?: 'row-table';\n table?: boolean;\n jsonpaths?: string[];\n};\n\n/**\n * @param table -\n * @param jsonpaths -\n */\nexport type JSONLoaderOptions = LoaderOptions & {\n json?: ParseJSONOptions;\n};\n\nconst DEFAULT_JSON_LOADER_OPTIONS: {json: Required<ParseJSONOptions>} = {\n json: {\n shape: 'row-table',\n table: false,\n jsonpaths: []\n // batchSize: 'auto'\n }\n};\n\nexport const JSONLoader: LoaderWithParser<Table, TableBatch, JSONLoaderOptions> = {\n name: 'JSON',\n id: 'json',\n module: 'json',\n version: VERSION,\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json'],\n category: 'table',\n text: true,\n parse,\n parseTextSync,\n parseInBatches,\n options: DEFAULT_JSON_LOADER_OPTIONS\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: JSONLoaderOptions) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text: string, options?: JSONLoaderOptions) {\n const jsonOptions = {...options, json: {...DEFAULT_JSON_LOADER_OPTIONS.json, ...options?.json}};\n return parseJSONSync(text, jsonOptions as JSONLoaderOptions);\n}\n\nfunction parseInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: JSONLoaderOptions\n): AsyncIterable<TableBatch> {\n const jsonOptions = {...options, json: {...DEFAULT_JSON_LOADER_OPTIONS.json, ...options?.json}};\n return parseJSONInBatches(asyncIterator, jsonOptions as JSONLoaderOptions);\n}\n"],"mappings":"AAIA,SAAQA,aAAa,QAAO,0BAA0B;AACtD,SAAQC,kBAAkB,QAAO,qCAAqC;AAItE,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAgB3E,MAAMC,2BAA+D,GAAG;EACtEC,IAAI,EAAE;IACJC,KAAK,EAAE,WAAW;IAClBC,KAAK,EAAE,KAAK;IACZC,SAAS,EAAE;EAEb;AACF,CAAC;AAED,OAAO,MAAMC,UAAkE,GAAG;EAChFC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEV,OAAO;EAChBW,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;EAC/BC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;EACLC,aAAa;EACbC,cAAc;EACdC,OAAO,EAAEjB;AACX,CAAC;AAED,eAAec,KAAKA,CAACI,WAAwB,EAAED,OAA2B,EAAE;EAC1E,OAAOF,aAAa,CAAC,IAAII,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,EAAED,OAAO,CAAC;AACtE;AAEA,SAASF,aAAaA,CAACF,IAAY,EAAEI,OAA2B,EAAE;EAChE,MAAMI,WAAW,GAAG;IAAC,GAAGJ,OAAO;IAAEhB,IAAI,EAAE;MAAC,GAAGD,2BAA2B,CAACC,IAAI;MAAE,IAAGgB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,IAAI;IAAA;EAAC,CAAC;EAC/F,OAAOJ,aAAa,CAACgB,IAAI,EAAEQ,WAAgC,CAAC;AAC9D;AAEA,SAASL,cAAcA,CACrBM,aAAiE,EACjEL,OAA2B,EACA;EAC3B,MAAMI,WAAW,GAAG;IAAC,GAAGJ,OAAO;IAAEhB,IAAI,EAAE;MAAC,GAAGD,2BAA2B,CAACC,IAAI;MAAE,IAAGgB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,IAAI;IAAA;EAAC,CAAC;EAC/F,OAAOH,kBAAkB,CAACwB,aAAa,EAAED,WAAgC,CAAC;AAC5E"}
1
+ {"version":3,"file":"json-loader.js","names":["parseJSONSync","parseJSONInBatches","VERSION","DEFAULT_JSON_LOADER_OPTIONS","json","shape","table","jsonpaths","JSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","parseTextSync","parseInBatches","options","arrayBuffer","TextDecoder","decode","jsonOptions","asyncIterator"],"sources":["../../src/json-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseJSONSync} from './lib/parsers/parse-json';\nimport {parseJSONInBatches} from './lib/parsers/parse-json-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\ntype ParseJSONOptions = {\n shape: 'object-row-table'; // TODO - 'auto'?\n table?: boolean;\n jsonpaths?: string[];\n};\n\n/**\n * @param table -\n * @param jsonpaths -\n */\nexport type JSONLoaderOptions = LoaderOptions & {\n json?: ParseJSONOptions;\n};\n\nconst DEFAULT_JSON_LOADER_OPTIONS: {json: Required<ParseJSONOptions>} = {\n json: {\n shape: 'object-row-table',\n table: false,\n jsonpaths: []\n // batchSize: 'auto'\n }\n};\n\nexport const JSONLoader: LoaderWithParser<Table, TableBatch, JSONLoaderOptions> = {\n name: 'JSON',\n id: 'json',\n module: 'json',\n version: VERSION,\n extensions: ['json', 'geojson'],\n mimeTypes: ['application/json'],\n category: 'table',\n text: true,\n parse,\n parseTextSync,\n parseInBatches,\n options: DEFAULT_JSON_LOADER_OPTIONS\n};\n\nasync function parse(arrayBuffer: ArrayBuffer, options?: JSONLoaderOptions) {\n return parseTextSync(new TextDecoder().decode(arrayBuffer), options);\n}\n\nfunction parseTextSync(text: string, options?: JSONLoaderOptions) {\n const jsonOptions = {...options, json: {...DEFAULT_JSON_LOADER_OPTIONS.json, ...options?.json}};\n return parseJSONSync(text, jsonOptions as JSONLoaderOptions);\n}\n\nfunction parseInBatches(\n asyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: JSONLoaderOptions\n): AsyncIterable<TableBatch> {\n const jsonOptions = {...options, json: {...DEFAULT_JSON_LOADER_OPTIONS.json, ...options?.json}};\n return parseJSONInBatches(asyncIterator, jsonOptions as JSONLoaderOptions);\n}\n"],"mappings":"AAIA,SAAQA,aAAa,QAAO,0BAA0B;AACtD,SAAQC,kBAAkB,QAAO,qCAAqC;AAItE,MAAMC,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAgB3E,MAAMC,2BAA+D,GAAG;EACtEC,IAAI,EAAE;IACJC,KAAK,EAAE,kBAAkB;IACzBC,KAAK,EAAE,KAAK;IACZC,SAAS,EAAE;EAEb;AACF,CAAC;AAED,OAAO,MAAMC,UAAkE,GAAG;EAChFC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEV,OAAO;EAChBW,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;EAC/BC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK;EACLC,aAAa;EACbC,cAAc;EACdC,OAAO,EAAEjB;AACX,CAAC;AAED,eAAec,KAAKA,CAACI,WAAwB,EAAED,OAA2B,EAAE;EAC1E,OAAOF,aAAa,CAAC,IAAII,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,EAAED,OAAO,CAAC;AACtE;AAEA,SAASF,aAAaA,CAACF,IAAY,EAAEI,OAA2B,EAAE;EAChE,MAAMI,WAAW,GAAG;IAAC,GAAGJ,OAAO;IAAEhB,IAAI,EAAE;MAAC,GAAGD,2BAA2B,CAACC,IAAI;MAAE,IAAGgB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,IAAI;IAAA;EAAC,CAAC;EAC/F,OAAOJ,aAAa,CAACgB,IAAI,EAAEQ,WAAgC,CAAC;AAC9D;AAEA,SAASL,cAAcA,CACrBM,aAAiE,EACjEL,OAA2B,EACA;EAC3B,MAAMI,WAAW,GAAG;IAAC,GAAGJ,OAAO;IAAEhB,IAAI,EAAE;MAAC,GAAGD,2BAA2B,CAACC,IAAI;MAAE,IAAGgB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEhB,IAAI;IAAA;EAAC,CAAC;EAC/F,OAAOH,kBAAkB,CAACwB,aAAa,EAAED,WAAgC,CAAC;AAC5E"}
@@ -9,6 +9,6 @@ export const JSONWriter = {
9
9
  options: {},
10
10
  text: true,
11
11
  encode: async (table, options) => new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,
12
- encodeText: (table, options) => encodeTableAsJSON(table, options)
12
+ encodeTextSync: (table, options) => encodeTableAsJSON(table, options)
13
13
  };
14
14
  //# sourceMappingURL=json-writer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-writer.js","names":["encodeTableAsJSON","JSONWriter","id","version","module","name","extensions","mimeTypes","options","text","encode","table","TextEncoder","buffer","encodeText"],"sources":["../../src/json-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* global TextEncoder */\nimport type {Writer} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport type {JSONWriterOptions} from './lib/encoders/json-encoder';\nimport {encodeTableAsJSON} from './lib/encoders/json-encoder';\n\nexport type {JSONWriterOptions};\n\nexport const JSONWriter: Writer<Table, TableBatch, JSONWriterOptions> = {\n id: 'json',\n version: 'latest',\n module: 'json',\n name: 'JSON',\n extensions: ['json'],\n mimeTypes: ['application/json'],\n options: {},\n text: true,\n encode: async (table: Table, options: JSONWriterOptions) =>\n new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,\n encodeText: (table: Table, options: JSONWriterOptions) => encodeTableAsJSON(table, options)\n};\n"],"mappings":"AAOA,SAAQA,iBAAiB,QAAO,6BAA6B;AAI7D,OAAO,MAAMC,UAAwD,GAAG;EACtEC,EAAE,EAAE,MAAM;EACVC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,OAAO,EAAE,CAAC,CAAC;EACXC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,MAAAA,CAAOC,KAAY,EAAEH,OAA0B,KACrD,IAAII,WAAW,CAAC,CAAC,CAACF,MAAM,CAACV,iBAAiB,CAACW,KAAK,EAAEH,OAAO,CAAC,CAAC,CAACK,MAAM;EACpEC,UAAU,EAAEA,CAACH,KAAY,EAAEH,OAA0B,KAAKR,iBAAiB,CAACW,KAAK,EAAEH,OAAO;AAC5F,CAAC"}
1
+ {"version":3,"file":"json-writer.js","names":["encodeTableAsJSON","JSONWriter","id","version","module","name","extensions","mimeTypes","options","text","encode","table","TextEncoder","buffer","encodeTextSync"],"sources":["../../src/json-writer.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\n/* global TextEncoder */\nimport type {Writer, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {Table, TableBatch} from '@loaders.gl/schema';\nimport {encodeTableAsJSON} from './lib/encoders/json-encoder';\n\nexport type JSONWriterOptions = WriterOptions & {\n json?: {\n shape?: 'object-row-table' | 'array-row-table';\n wrapper?: (table: TableJSON) => unknown;\n };\n};\n\ntype RowArray = unknown[];\ntype RowObject = {[key: string]: unknown};\ntype TableJSON = RowArray[] | RowObject[];\n\nexport const JSONWriter: Writer<Table, TableBatch, JSONWriterOptions> = {\n id: 'json',\n version: 'latest',\n module: 'json',\n name: 'JSON',\n extensions: ['json'],\n mimeTypes: ['application/json'],\n options: {},\n text: true,\n encode: async (table: Table, options: JSONWriterOptions) =>\n new TextEncoder().encode(encodeTableAsJSON(table, options)).buffer,\n encodeTextSync: (table: Table, options: JSONWriterOptions) => encodeTableAsJSON(table, options)\n};\n"],"mappings":"AAMA,SAAQA,iBAAiB,QAAO,6BAA6B;AAa7D,OAAO,MAAMC,UAAwD,GAAG;EACtEC,EAAE,EAAE,MAAM;EACVC,OAAO,EAAE,QAAQ;EACjBC,MAAM,EAAE,MAAM;EACdC,IAAI,EAAE,MAAM;EACZC,UAAU,EAAE,CAAC,MAAM,CAAC;EACpBC,SAAS,EAAE,CAAC,kBAAkB,CAAC;EAC/BC,OAAO,EAAE,CAAC,CAAC;EACXC,IAAI,EAAE,IAAI;EACVC,MAAM,EAAE,MAAAA,CAAOC,KAAY,EAAEH,OAA0B,KACrD,IAAII,WAAW,CAAC,CAAC,CAACF,MAAM,CAACV,iBAAiB,CAACW,KAAK,EAAEH,OAAO,CAAC,CAAC,CAACK,MAAM;EACpEC,cAAc,EAAEA,CAACH,KAAY,EAAEH,OAA0B,KAAKR,iBAAiB,CAACW,KAAK,EAAEH,OAAO;AAChG,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { getTableRowAsObject } from '@loaders.gl/schema';
2
+ import { getRowPropertyObject } from './encode-utils';
3
+ export function encodeTableRow(table, rowIndex, geometryColumnIndex, utf8Encoder) {
4
+ const row = getTableRowAsObject(table, rowIndex);
5
+ if (!row) return;
6
+ const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);
7
+ const featureString = JSON.stringify(featureWithProperties);
8
+ utf8Encoder.push(featureString);
9
+ }
10
+ function getFeatureFromRow(table, row, geometryColumnIndex) {
11
+ var _table$schema, _featureOrGeometry, _featureOrGeometry2;
12
+ const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);
13
+ const columnName = (_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields[geometryColumnIndex].name;
14
+ let featureOrGeometry = columnName && row[columnName];
15
+ if (!featureOrGeometry) {
16
+ return {
17
+ type: 'Feature',
18
+ geometry: null,
19
+ properties
20
+ };
21
+ }
22
+ if (typeof featureOrGeometry === 'string') {
23
+ try {
24
+ featureOrGeometry = JSON.parse(featureOrGeometry);
25
+ } catch (err) {
26
+ throw new Error('Invalid string geometry');
27
+ }
28
+ }
29
+ if (typeof featureOrGeometry !== 'object' || typeof ((_featureOrGeometry = featureOrGeometry) === null || _featureOrGeometry === void 0 ? void 0 : _featureOrGeometry.type) !== 'string') {
30
+ throw new Error('invalid geometry column value');
31
+ }
32
+ if (((_featureOrGeometry2 = featureOrGeometry) === null || _featureOrGeometry2 === void 0 ? void 0 : _featureOrGeometry2.type) === 'Feature') {
33
+ return {
34
+ ...featureOrGeometry,
35
+ properties
36
+ };
37
+ }
38
+ return {
39
+ type: 'Feature',
40
+ geometry: featureOrGeometry,
41
+ properties
42
+ };
43
+ }
44
+ //# sourceMappingURL=encode-table-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-table-row.js","names":["getTableRowAsObject","getRowPropertyObject","encodeTableRow","table","rowIndex","geometryColumnIndex","utf8Encoder","row","featureWithProperties","getFeatureFromRow","featureString","JSON","stringify","push","_table$schema","_featureOrGeometry","_featureOrGeometry2","properties","columnName","schema","fields","name","featureOrGeometry","type","geometry","parse","err","Error"],"sources":["../../../../src/lib/encoder-utils/encode-table-row.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Feature} from '@loaders.gl/schema';\nimport {Table, getTableRowAsObject} from '@loaders.gl/schema';\nimport {getRowPropertyObject} from './encode-utils';\nimport {Utf8ArrayBufferEncoder} from './utf8-encoder';\n\ntype Row = {[key: string]: unknown};\n\n// Helpers\n\n/**\n * Encode a row. Currently this ignores properties in the geometry column.\n */\nexport function encodeTableRow(\n table: Table,\n rowIndex: number,\n geometryColumnIndex: number,\n utf8Encoder: Utf8ArrayBufferEncoder\n): void {\n const row = getTableRowAsObject(table, rowIndex);\n if (!row) return;\n const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);\n const featureString = JSON.stringify(featureWithProperties);\n utf8Encoder.push(featureString);\n}\n\n/**\n * Encode a row as a Feature. Currently this ignores properties objects in the geometry column.\n */\nfunction getFeatureFromRow(table: Table, row: Row, geometryColumnIndex: number): Feature {\n // Extract non-feature/geometry properties\n const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);\n\n // Extract geometry feature\n const columnName = table.schema?.fields[geometryColumnIndex].name;\n let featureOrGeometry =\n columnName && (row[columnName] as {[key: string]: unknown} | string | null | undefined);\n\n // GeoJSON support null geometries\n if (!featureOrGeometry) {\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: null, properties};\n }\n\n // Support string geometries?\n // TODO: This assumes GeoJSON strings, which may not be the correct format\n // (could be WKT, encoded WKB...)\n if (typeof featureOrGeometry === 'string') {\n try {\n featureOrGeometry = JSON.parse(featureOrGeometry);\n } catch (err) {\n throw new Error('Invalid string geometry');\n }\n }\n\n if (typeof featureOrGeometry !== 'object' || typeof featureOrGeometry?.type !== 'string') {\n throw new Error('invalid geometry column value');\n }\n\n if (featureOrGeometry?.type === 'Feature') {\n // @ts-ignore Feature type does not support null geometries\n return {...featureOrGeometry, properties};\n }\n\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: featureOrGeometry, properties};\n}\n"],"mappings":"AAIA,SAAeA,mBAAmB,QAAO,oBAAoB;AAC7D,SAAQC,oBAAoB,QAAO,gBAAgB;AAUnD,OAAO,SAASC,cAAcA,CAC5BC,KAAY,EACZC,QAAgB,EAChBC,mBAA2B,EAC3BC,WAAmC,EAC7B;EACN,MAAMC,GAAG,GAAGP,mBAAmB,CAACG,KAAK,EAAEC,QAAQ,CAAC;EAChD,IAAI,CAACG,GAAG,EAAE;EACV,MAAMC,qBAAqB,GAAGC,iBAAiB,CAACN,KAAK,EAAEI,GAAG,EAAEF,mBAAmB,CAAC;EAChF,MAAMK,aAAa,GAAGC,IAAI,CAACC,SAAS,CAACJ,qBAAqB,CAAC;EAC3DF,WAAW,CAACO,IAAI,CAACH,aAAa,CAAC;AACjC;AAKA,SAASD,iBAAiBA,CAACN,KAAY,EAAEI,GAAQ,EAAEF,mBAA2B,EAAW;EAAA,IAAAS,aAAA,EAAAC,kBAAA,EAAAC,mBAAA;EAEvF,MAAMC,UAAU,GAAGhB,oBAAoB,CAACE,KAAK,EAAEI,GAAG,EAAE,CAACF,mBAAmB,CAAC,CAAC;EAG1E,MAAMa,UAAU,IAAAJ,aAAA,GAAGX,KAAK,CAACgB,MAAM,cAAAL,aAAA,uBAAZA,aAAA,CAAcM,MAAM,CAACf,mBAAmB,CAAC,CAACgB,IAAI;EACjE,IAAIC,iBAAiB,GACnBJ,UAAU,IAAKX,GAAG,CAACW,UAAU,CAA0D;EAGzF,IAAI,CAACI,iBAAiB,EAAE;IAEtB,OAAO;MAACC,IAAI,EAAE,SAAS;MAAEC,QAAQ,EAAE,IAAI;MAAEP;IAAU,CAAC;EACtD;EAKA,IAAI,OAAOK,iBAAiB,KAAK,QAAQ,EAAE;IACzC,IAAI;MACFA,iBAAiB,GAAGX,IAAI,CAACc,KAAK,CAACH,iBAAiB,CAAC;IACnD,CAAC,CAAC,OAAOI,GAAG,EAAE;MACZ,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;IAC5C;EACF;EAEA,IAAI,OAAOL,iBAAiB,KAAK,QAAQ,IAAI,SAAAP,kBAAA,GAAOO,iBAAiB,cAAAP,kBAAA,uBAAjBA,kBAAA,CAAmBQ,IAAI,MAAK,QAAQ,EAAE;IACxF,MAAM,IAAII,KAAK,CAAC,+BAA+B,CAAC;EAClD;EAEA,IAAI,EAAAX,mBAAA,GAAAM,iBAAiB,cAAAN,mBAAA,uBAAjBA,mBAAA,CAAmBO,IAAI,MAAK,SAAS,EAAE;IAEzC,OAAO;MAAC,GAAGD,iBAAiB;MAAEL;IAAU,CAAC;EAC3C;EAGA,OAAO;IAACM,IAAI,EAAE,SAAS;IAAEC,QAAQ,EAAEF,iBAAiB;IAAEL;EAAU,CAAC;AACnE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-utils.js","names":["getTableLength","getTableNumCols","getTableRowAsArray","detectGeometryColumnIndex","table","_table$schema$fields$","_table$schema","geometryIndex","schema","fields","findIndex","field","name","row","columnIndex","value","Error","getRowPropertyObject","excludeColumnIndices","arguments","length","undefined","properties","_table$schema2","columnName","includes"],"sources":["../../../../src/lib/encoder-utils/encode-utils.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, getTableLength, getTableNumCols, getTableRowAsArray} from '@loaders.gl/schema';\n\ntype Row = {[key: string]: unknown};\n\n/**\n * Attempts to identify which column contains geometry\n * Currently just returns name (key) of first object-valued column\n * @todo look for hints in schema metadata\n * @todo look for WKB\n */\nexport function detectGeometryColumnIndex(table: Table): number {\n // TODO - look for hints in schema metadata\n\n // look for a column named geometry\n const geometryIndex = table.schema?.fields.findIndex((field) => field.name === 'geometry') ?? -1;\n if (geometryIndex > -1) {\n return geometryIndex;\n }\n\n // look at the data\n // TODO - this drags in the indices\n if (getTableLength(table) > 0) {\n const row = getTableRowAsArray(table, 0);\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); columnIndex++) {\n const value = row?.[columnIndex];\n if (value && typeof value === 'object') {\n return columnIndex;\n }\n }\n }\n\n throw new Error('Failed to detect geometry column');\n}\n\n/**\n * Return a row as a property (key/value) object, excluding selected columns\n */\nexport function getRowPropertyObject(\n table: Table,\n row: Row,\n excludeColumnIndices: number[] = []\n): {[columnName: string]: unknown} {\n const properties = {};\n for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) {\n const columnName = table.schema?.fields[columnIndex].name;\n if (columnName && !excludeColumnIndices.includes(columnIndex)) {\n properties[columnName] = row[columnName];\n }\n }\n return properties;\n}\n"],"mappings":"AAGA,SAAeA,cAAc,EAAEC,eAAe,EAAEC,kBAAkB,QAAO,oBAAoB;AAU7F,OAAO,SAASC,yBAAyBA,CAACC,KAAY,EAAU;EAAA,IAAAC,qBAAA,EAAAC,aAAA;EAI9D,MAAMC,aAAa,IAAAF,qBAAA,IAAAC,aAAA,GAAGF,KAAK,CAACI,MAAM,cAAAF,aAAA,uBAAZA,aAAA,CAAcG,MAAM,CAACC,SAAS,CAAEC,KAAK,IAAKA,KAAK,CAACC,IAAI,KAAK,UAAU,CAAC,cAAAP,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC;EAChG,IAAIE,aAAa,GAAG,CAAC,CAAC,EAAE;IACtB,OAAOA,aAAa;EACtB;EAIA,IAAIP,cAAc,CAACI,KAAK,CAAC,GAAG,CAAC,EAAE;IAC7B,MAAMS,GAAG,GAAGX,kBAAkB,CAACE,KAAK,EAAE,CAAC,CAAC;IACxC,KAAK,IAAIU,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGb,eAAe,CAACG,KAAK,CAAC,EAAEU,WAAW,EAAE,EAAE;MAC7E,MAAMC,KAAK,GAAGF,GAAG,aAAHA,GAAG,uBAAHA,GAAG,CAAGC,WAAW,CAAC;MAChC,IAAIC,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;QACtC,OAAOD,WAAW;MACpB;IACF;EACF;EAEA,MAAM,IAAIE,KAAK,CAAC,kCAAkC,CAAC;AACrD;AAKA,OAAO,SAASC,oBAAoBA,CAClCb,KAAY,EACZS,GAAQ,EAEyB;EAAA,IADjCK,oBAA8B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAEnC,MAAMG,UAAU,GAAG,CAAC,CAAC;EACrB,KAAK,IAAIR,WAAW,GAAG,CAAC,EAAEA,WAAW,GAAGb,eAAe,CAACG,KAAK,CAAC,EAAE,EAAEU,WAAW,EAAE;IAAA,IAAAS,cAAA;IAC7E,MAAMC,UAAU,IAAAD,cAAA,GAAGnB,KAAK,CAACI,MAAM,cAAAe,cAAA,uBAAZA,cAAA,CAAcd,MAAM,CAACK,WAAW,CAAC,CAACF,IAAI;IACzD,IAAIY,UAAU,IAAI,CAACN,oBAAoB,CAACO,QAAQ,CAACX,WAAW,CAAC,EAAE;MAC7DQ,UAAU,CAACE,UAAU,CAAC,GAAGX,GAAG,CAACW,UAAU,CAAC;IAC1C;EACF;EACA,OAAOF,UAAU;AACnB"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utf8-encoder.js","names":["Utf8ArrayBufferEncoder","constructor","chunkSize","_defineProperty","TextEncoder","push","_len","arguments","length","strings","Array","_key","string","totalLength","isFull","getArrayBufferBatch","textEncoder","encode","getStringBatch","buffer","stringChunk","join"],"sources":["../../../../src/lib/encoder-utils/utf8-encoder.ts"],"sourcesContent":["// loaders.gl, MIT License\n\n/* global TextEncoder */\nexport class Utf8ArrayBufferEncoder {\n private readonly chunkSize: number;\n private strings: string[] = [];\n private totalLength = 0;\n private textEncoder: TextEncoder = new TextEncoder();\n\n constructor(chunkSize: number) {\n this.chunkSize = chunkSize;\n }\n\n push(...strings: string[]): void {\n for (const string of strings) {\n this.strings.push(string);\n this.totalLength += string.length;\n }\n }\n\n isFull(): boolean {\n return this.totalLength >= this.chunkSize;\n }\n\n getArrayBufferBatch(): ArrayBufferLike {\n return this.textEncoder.encode(this.getStringBatch()).buffer;\n }\n\n getStringBatch(): string {\n const stringChunk = this.strings.join('');\n this.strings = [];\n this.totalLength = 0;\n return stringChunk;\n }\n}\n"],"mappings":";AAGA,OAAO,MAAMA,sBAAsB,CAAC;EAMlCC,WAAWA,CAACC,SAAiB,EAAE;IAAAC,eAAA;IAAAA,eAAA,kBAJH,EAAE;IAAAA,eAAA,sBACR,CAAC;IAAAA,eAAA,sBACY,IAAIC,WAAW,CAAC,CAAC;IAGlD,IAAI,CAACF,SAAS,GAAGA,SAAS;EAC5B;EAEAG,IAAIA,CAAA,EAA6B;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAzBC,OAAO,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;MAAPF,OAAO,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;IAAA;IACb,KAAK,MAAMC,MAAM,IAAIH,OAAO,EAAE;MAC5B,IAAI,CAACA,OAAO,CAACJ,IAAI,CAACO,MAAM,CAAC;MACzB,IAAI,CAACC,WAAW,IAAID,MAAM,CAACJ,MAAM;IACnC;EACF;EAEAM,MAAMA,CAAA,EAAY;IAChB,OAAO,IAAI,CAACD,WAAW,IAAI,IAAI,CAACX,SAAS;EAC3C;EAEAa,mBAAmBA,CAAA,EAAoB;IACrC,OAAO,IAAI,CAACC,WAAW,CAACC,MAAM,CAAC,IAAI,CAACC,cAAc,CAAC,CAAC,CAAC,CAACC,MAAM;EAC9D;EAEAD,cAAcA,CAAA,EAAW;IACvB,MAAME,WAAW,GAAG,IAAI,CAACX,OAAO,CAACY,IAAI,CAAC,EAAE,CAAC;IACzC,IAAI,CAACZ,OAAO,GAAG,EAAE;IACjB,IAAI,CAACI,WAAW,GAAG,CAAC;IACpB,OAAOO,WAAW;EACpB;AACF"}
@@ -1,7 +1,7 @@
1
1
  import { getTableLength } from '@loaders.gl/schema';
2
- import { getTableRowAsObject } from '@loaders.gl/schema';
3
- import { detectGeometryColumnIndex, getRowPropertyObject } from './encode-utils';
4
- import { Utf8ArrayBufferEncoder } from './utf8-encoder';
2
+ import { detectGeometryColumnIndex } from '../encoder-utils/encode-utils';
3
+ import { encodeTableRow } from '../encoder-utils/encode-table-row';
4
+ import { Utf8ArrayBufferEncoder } from '../encoder-utils/utf8-encoder';
5
5
  export function encodeTableAsGeojsonInBatches(batchIterator) {
6
6
  try {
7
7
  let inputOpts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -18,14 +18,11 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
18
18
  utf8Encoder.push('[');
19
19
  let geometryColumn = options.geojson.geometryColumn;
20
20
  let isFirstLine = true;
21
- for await (const batch of batchIterator) {
22
- const {
23
- table,
24
- start,
25
- end = getTableLength(batch.table) - start
26
- } = batch;
21
+ let start = 0;
22
+ for await (const tableBatch of batchIterator) {
23
+ const end = start + getTableLength(tableBatch);
27
24
  if (!geometryColumn) {
28
- geometryColumn = geometryColumn || detectGeometryColumnIndex(table);
25
+ geometryColumn = geometryColumn || detectGeometryColumnIndex(tableBatch);
29
26
  }
30
27
  for (let rowIndex = start; rowIndex < end; ++rowIndex) {
31
28
  if (!isFirstLine) {
@@ -33,10 +30,11 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
33
30
  }
34
31
  utf8Encoder.push('\n');
35
32
  isFirstLine = false;
36
- encodeRow(table, rowIndex, geometryColumn, utf8Encoder);
33
+ encodeTableRow(tableBatch, rowIndex, geometryColumn, utf8Encoder);
37
34
  if (utf8Encoder.isFull()) {
38
35
  yield utf8Encoder.getArrayBufferBatch();
39
36
  }
37
+ start = end;
40
38
  }
41
39
  const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();
42
40
  if (arrayBufferBatch.byteLength > 0) {
@@ -54,45 +52,4 @@ export function encodeTableAsGeojsonInBatches(batchIterator) {
54
52
  return Promise.reject(e);
55
53
  }
56
54
  }
57
- function encodeRow(table, rowIndex, geometryColumnIndex, utf8Encoder) {
58
- const row = getTableRowAsObject(table, rowIndex);
59
- if (!row) return;
60
- const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);
61
- const featureString = JSON.stringify(featureWithProperties);
62
- utf8Encoder.push(featureString);
63
- }
64
- function getFeatureFromRow(table, row, geometryColumnIndex) {
65
- var _table$schema, _featureOrGeometry, _featureOrGeometry2;
66
- const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);
67
- const columnName = (_table$schema = table.schema) === null || _table$schema === void 0 ? void 0 : _table$schema.fields[geometryColumnIndex].name;
68
- let featureOrGeometry = columnName && row[columnName];
69
- if (!featureOrGeometry) {
70
- return {
71
- type: 'Feature',
72
- geometry: null,
73
- properties
74
- };
75
- }
76
- if (typeof featureOrGeometry === 'string') {
77
- try {
78
- featureOrGeometry = JSON.parse(featureOrGeometry);
79
- } catch (err) {
80
- throw new Error('Invalid string geometry');
81
- }
82
- }
83
- if (typeof featureOrGeometry !== 'object' || typeof ((_featureOrGeometry = featureOrGeometry) === null || _featureOrGeometry === void 0 ? void 0 : _featureOrGeometry.type) !== 'string') {
84
- throw new Error('invalid geometry column value');
85
- }
86
- if (((_featureOrGeometry2 = featureOrGeometry) === null || _featureOrGeometry2 === void 0 ? void 0 : _featureOrGeometry2.type) === 'Feature') {
87
- return {
88
- ...featureOrGeometry,
89
- properties
90
- };
91
- }
92
- return {
93
- type: 'Feature',
94
- geometry: featureOrGeometry,
95
- properties
96
- };
97
- }
98
55
  //# sourceMappingURL=geojson-encoder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"geojson-encoder.js","names":["getTableLength","getTableRowAsObject","detectGeometryColumnIndex","getRowPropertyObject","Utf8ArrayBufferEncoder","encodeTableAsGeojsonInBatches","batchIterator","inputOpts","arguments","length","undefined","options","geojson","chunkSize","utf8Encoder","featureArray","push","geometryColumn","isFirstLine","batch","table","start","end","rowIndex","encodeRow","isFull","getArrayBufferBatch","arrayBufferBatch","byteLength","e","Promise","reject","geometryColumnIndex","row","featureWithProperties","getFeatureFromRow","featureString","JSON","stringify","_table$schema","_featureOrGeometry","_featureOrGeometry2","properties","columnName","schema","fields","name","featureOrGeometry","type","geometry","parse","err","Error"],"sources":["../../../../src/lib/encoders/geojson-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Feature, getTableLength} from '@loaders.gl/schema';\nimport {Table, TableBatch, getTableRowAsObject} from '@loaders.gl/schema';\nimport {detectGeometryColumnIndex, getRowPropertyObject} from './encode-utils';\nimport {Utf8ArrayBufferEncoder} from './utf8-encoder';\n\ntype Row = {[key: string]: unknown};\n\nexport type GeoJSONWriterOptions = {\n geojson?: {\n featureArray?: boolean;\n geometryColumn?: number | null;\n };\n chunkSize?: number;\n};\n\n/**\n * Encode a table as GeoJSON\n */\n// eslint-disable-next-line max-statements\nexport async function* encodeTableAsGeojsonInBatches(\n batchIterator: AsyncIterable<TableBatch>, // | Iterable<TableBatch>,\n inputOpts: GeoJSONWriterOptions = {}\n): AsyncIterable<ArrayBuffer> {\n const options: Required<GeoJSONWriterOptions> = {geojson: {}, chunkSize: 10000, ...inputOpts};\n\n const utf8Encoder = new Utf8ArrayBufferEncoder(options.chunkSize);\n\n if (!options.geojson.featureArray) {\n utf8Encoder.push('{\\n', '\"type\": \"FeatureCollection\",\\n', '\"features\":\\n');\n }\n utf8Encoder.push('['); // Note no newline\n\n let geometryColumn = options.geojson.geometryColumn;\n\n let isFirstLine = true;\n\n for await (const batch of batchIterator) {\n const {table, start, end = getTableLength(batch.table) - start} = batch;\n\n // Deduce geometry column if not already done\n if (!geometryColumn) {\n geometryColumn = geometryColumn || detectGeometryColumnIndex(table);\n }\n\n for (let rowIndex = start; rowIndex < end; ++rowIndex) {\n // Add a comma except on final feature\n if (!isFirstLine) {\n utf8Encoder.push(',');\n }\n utf8Encoder.push('\\n');\n isFirstLine = false;\n\n encodeRow(table, rowIndex, geometryColumn, utf8Encoder);\n\n // eslint-disable-next-line max-depth\n if (utf8Encoder.isFull()) {\n yield utf8Encoder.getArrayBufferBatch();\n }\n }\n const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();\n if (arrayBufferBatch.byteLength > 0) {\n yield arrayBufferBatch;\n }\n }\n\n utf8Encoder.push('\\n');\n\n // Add completing rows and emit final batch\n utf8Encoder.push(']\\n');\n if (!options.geojson.featureArray) {\n utf8Encoder.push('}');\n }\n\n // Note: Since we pushed a few final lines, the last batch will always exist, no need to check first\n yield utf8Encoder.getArrayBufferBatch();\n}\n\n// Helpers\n\n/**\n * Encode a row. Currently this ignores properties in the geometry column.\n */\nfunction encodeRow(\n table: Table,\n rowIndex: number,\n geometryColumnIndex: number,\n utf8Encoder: Utf8ArrayBufferEncoder\n): void {\n const row = getTableRowAsObject(table, rowIndex);\n if (!row) return;\n const featureWithProperties = getFeatureFromRow(table, row, geometryColumnIndex);\n const featureString = JSON.stringify(featureWithProperties);\n utf8Encoder.push(featureString);\n}\n\n/**\n * Encode a row as a Feature. Currently this ignores properties objects in the geometry column.\n */\nfunction getFeatureFromRow(table: Table, row: Row, geometryColumnIndex: number): Feature {\n // Extract non-feature/geometry properties\n const properties = getRowPropertyObject(table, row, [geometryColumnIndex]);\n\n // Extract geometry feature\n const columnName = table.schema?.fields[geometryColumnIndex].name;\n let featureOrGeometry =\n columnName && (row[columnName] as {[key: string]: unknown} | string | null | undefined);\n\n // GeoJSON support null geometries\n if (!featureOrGeometry) {\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: null, properties};\n }\n\n // Support string geometries?\n // TODO: This assumes GeoJSON strings, which may not be the correct format\n // (could be WKT, encoded WKB...)\n if (typeof featureOrGeometry === 'string') {\n try {\n featureOrGeometry = JSON.parse(featureOrGeometry);\n } catch (err) {\n throw new Error('Invalid string geometry');\n }\n }\n\n if (typeof featureOrGeometry !== 'object' || typeof featureOrGeometry?.type !== 'string') {\n throw new Error('invalid geometry column value');\n }\n\n if (featureOrGeometry?.type === 'Feature') {\n // @ts-ignore Feature type does not support null geometries\n return {...featureOrGeometry, properties};\n }\n\n // @ts-ignore Feature type does not support null geometries\n return {type: 'Feature', geometry: featureOrGeometry, properties};\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"geojson-encoder.js","names":["getTableLength","detectGeometryColumnIndex","encodeTableRow","Utf8ArrayBufferEncoder","encodeTableAsGeojsonInBatches","batchIterator","inputOpts","arguments","length","undefined","options","geojson","chunkSize","utf8Encoder","featureArray","push","geometryColumn","isFirstLine","start","tableBatch","end","rowIndex","isFull","getArrayBufferBatch","arrayBufferBatch","byteLength","e","Promise","reject"],"sources":["../../../../src/lib/encoders/geojson-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport type {TableBatch} from '@loaders.gl/schema';\nimport {getTableLength} from '@loaders.gl/schema';\nimport {detectGeometryColumnIndex} from '../encoder-utils/encode-utils';\nimport {encodeTableRow} from '../encoder-utils/encode-table-row';\nimport {Utf8ArrayBufferEncoder} from '../encoder-utils/utf8-encoder';\nimport type {GeoJSONWriterOptions} from '../../geojson-writer';\n\n/**\n * Encode a table as GeoJSON\n */\n// eslint-disable-next-line max-statements\nexport async function* encodeTableAsGeojsonInBatches(\n batchIterator: AsyncIterable<TableBatch>, // | Iterable<TableBatch>,\n inputOpts: GeoJSONWriterOptions = {}\n): AsyncIterable<ArrayBuffer> {\n // @ts-expect-error\n const options: Required<GeoJSONWriterOptions> = {geojson: {}, chunkSize: 10000, ...inputOpts};\n\n const utf8Encoder = new Utf8ArrayBufferEncoder(options.chunkSize);\n\n if (!options.geojson.featureArray) {\n utf8Encoder.push('{\\n', '\"type\": \"FeatureCollection\",\\n', '\"features\":\\n');\n }\n utf8Encoder.push('['); // Note no newline\n\n let geometryColumn = options.geojson.geometryColumn;\n\n let isFirstLine = true;\n\n let start = 0;\n for await (const tableBatch of batchIterator) {\n const end = start + getTableLength(tableBatch);\n\n // Deduce geometry column if not already done\n if (!geometryColumn) {\n geometryColumn = geometryColumn || detectGeometryColumnIndex(tableBatch);\n }\n\n for (let rowIndex = start; rowIndex < end; ++rowIndex) {\n // Add a comma except on final feature\n if (!isFirstLine) {\n utf8Encoder.push(',');\n }\n utf8Encoder.push('\\n');\n isFirstLine = false;\n\n encodeTableRow(tableBatch, rowIndex, geometryColumn, utf8Encoder);\n\n // eslint-disable-next-line max-depth\n if (utf8Encoder.isFull()) {\n yield utf8Encoder.getArrayBufferBatch();\n }\n\n start = end;\n }\n\n const arrayBufferBatch = utf8Encoder.getArrayBufferBatch();\n if (arrayBufferBatch.byteLength > 0) {\n yield arrayBufferBatch;\n }\n }\n\n utf8Encoder.push('\\n');\n\n // Add completing rows and emit final batch\n utf8Encoder.push(']\\n');\n if (!options.geojson.featureArray) {\n utf8Encoder.push('}');\n }\n\n // Note: Since we pushed a few final lines, the last batch will always exist, no need to check first\n yield utf8Encoder.getArrayBufferBatch();\n}\n"],"mappings":"AAIA,SAAQA,cAAc,QAAO,oBAAoB;AACjD,SAAQC,yBAAyB,QAAO,+BAA+B;AACvE,SAAQC,cAAc,QAAO,mCAAmC;AAChE,SAAQC,sBAAsB,QAAO,+BAA+B;AAOpE,OAAO,SAAgBC,6BAA6BA,CAClDC,aAAwC;EAAA;IAAA,IACxCC,SAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,0BACR;MAE5B,MAAMG,OAAuC,GAAG;QAACC,OAAO,EAAE,CAAC,CAAC;QAAEC,SAAS,EAAE,KAAK;QAAE,GAAGN;MAAS,CAAC;MAE7F,MAAMO,WAAW,GAAG,IAAIV,sBAAsB,CAACO,OAAO,CAACE,SAAS,CAAC;MAEjE,IAAI,CAACF,OAAO,CAACC,OAAO,CAACG,YAAY,EAAE;QACjCD,WAAW,CAACE,IAAI,CAAC,KAAK,EAAE,gCAAgC,EAAE,eAAe,CAAC;MAC5E;MACAF,WAAW,CAACE,IAAI,CAAC,GAAG,CAAC;MAErB,IAAIC,cAAc,GAAGN,OAAO,CAACC,OAAO,CAACK,cAAc;MAEnD,IAAIC,WAAW,GAAG,IAAI;MAEtB,IAAIC,KAAK,GAAG,CAAC;MACb,WAAW,MAAMC,UAAU,IAAId,aAAa,EAAE;QAC5C,MAAMe,GAAG,GAAGF,KAAK,GAAGlB,cAAc,CAACmB,UAAU,CAAC;QAG9C,IAAI,CAACH,cAAc,EAAE;UACnBA,cAAc,GAAGA,cAAc,IAAIf,yBAAyB,CAACkB,UAAU,CAAC;QAC1E;QAEA,KAAK,IAAIE,QAAQ,GAAGH,KAAK,EAAEG,QAAQ,GAAGD,GAAG,EAAE,EAAEC,QAAQ,EAAE;UAErD,IAAI,CAACJ,WAAW,EAAE;YAChBJ,WAAW,CAACE,IAAI,CAAC,GAAG,CAAC;UACvB;UACAF,WAAW,CAACE,IAAI,CAAC,IAAI,CAAC;UACtBE,WAAW,GAAG,KAAK;UAEnBf,cAAc,CAACiB,UAAU,EAAEE,QAAQ,EAAEL,cAAc,EAAEH,WAAW,CAAC;UAGjE,IAAIA,WAAW,CAACS,MAAM,CAAC,CAAC,EAAE;YACxB,MAAMT,WAAW,CAACU,mBAAmB,CAAC,CAAC;UACzC;UAEAL,KAAK,GAAGE,GAAG;QACb;QAEA,MAAMI,gBAAgB,GAAGX,WAAW,CAACU,mBAAmB,CAAC,CAAC;QAC1D,IAAIC,gBAAgB,CAACC,UAAU,GAAG,CAAC,EAAE;UACnC,MAAMD,gBAAgB;QACxB;MACF;MAEAX,WAAW,CAACE,IAAI,CAAC,IAAI,CAAC;MAGtBF,WAAW,CAACE,IAAI,CAAC,KAAK,CAAC;MACvB,IAAI,CAACL,OAAO,CAACC,OAAO,CAACG,YAAY,EAAE;QACjCD,WAAW,CAACE,IAAI,CAAC,GAAG,CAAC;MACvB;MAGA,MAAMF,WAAW,CAACU,mBAAmB,CAAC,CAAC;IACzC,CAAC;EAAA,SAAAG,CAAA;IAAA,OAAAC,OAAA,CAAAC,MAAA,CAAAF,CAAA;EAAA;AAAA"}
@@ -1,7 +1,7 @@
1
1
  import { makeRowIterator } from '@loaders.gl/schema';
2
- export function encodeTableAsJSON(table) {
3
- let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4
- const shape = options.shape || 'object-row-table';
2
+ export function encodeTableAsJSON(table, options) {
3
+ var _options$json;
4
+ const shape = (options === null || options === void 0 ? void 0 : (_options$json = options.json) === null || _options$json === void 0 ? void 0 : _options$json.shape) || 'object-row-table';
5
5
  const strings = [];
6
6
  const rowIterator = makeRowIterator(table, shape);
7
7
  for (const row of rowIterator) {
@@ -1 +1 @@
1
- {"version":3,"file":"json-encoder.js","names":["makeRowIterator","encodeTableAsJSON","table","options","arguments","length","undefined","shape","strings","rowIterator","row","push","JSON","stringify","concat","join"],"sources":["../../../../src/lib/encoders/json-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeRowIterator} from '@loaders.gl/schema';\n\ntype RowArray = unknown[];\ntype RowObject = {[key: string]: unknown};\ntype TableJSON = RowArray[] | RowObject[];\n\nexport type JSONWriterOptions = {\n shape?: 'object-row-table' | 'array-row-table';\n wrapper?: (table: TableJSON) => unknown;\n};\n\n/**\n * Encode a table as a JSON string\n */\nexport function encodeTableAsJSON(table: Table, options: JSONWriterOptions = {}): string {\n const shape = options.shape || 'object-row-table';\n\n const strings: string[] = [];\n const rowIterator = makeRowIterator(table, shape);\n for (const row of rowIterator) {\n // Round elements etc\n // processRow(wrappedRow, table.schema);\n // const wrappedRow = options.wrapper ? options.wrapper(row) : row;\n strings.push(JSON.stringify(row));\n }\n return `[${strings.join(',')}]`;\n}\n"],"mappings":"AAGA,SAAeA,eAAe,QAAO,oBAAoB;AAczD,OAAO,SAASC,iBAAiBA,CAACC,KAAY,EAA2C;EAAA,IAAzCC,OAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC7E,MAAMG,KAAK,GAAGJ,OAAO,CAACI,KAAK,IAAI,kBAAkB;EAEjD,MAAMC,OAAiB,GAAG,EAAE;EAC5B,MAAMC,WAAW,GAAGT,eAAe,CAACE,KAAK,EAAEK,KAAK,CAAC;EACjD,KAAK,MAAMG,GAAG,IAAID,WAAW,EAAE;IAI7BD,OAAO,CAACG,IAAI,CAACC,IAAI,CAACC,SAAS,CAACH,GAAG,CAAC,CAAC;EACnC;EACA,WAAAI,MAAA,CAAWN,OAAO,CAACO,IAAI,CAAC,GAAG,CAAC;AAC9B"}
1
+ {"version":3,"file":"json-encoder.js","names":["makeRowIterator","encodeTableAsJSON","table","options","_options$json","shape","json","strings","rowIterator","row","push","JSON","stringify","concat","join"],"sources":["../../../../src/lib/encoders/json-encoder.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright 2022 Foursquare Labs, Inc.\n\nimport {Table, makeRowIterator} from '@loaders.gl/schema';\nimport type {JSONWriterOptions} from '../../json-writer';\n\n/**\n * Encode a table as a JSON string\n */\nexport function encodeTableAsJSON(table: Table, options?: JSONWriterOptions): string {\n const shape = options?.json?.shape || 'object-row-table';\n\n const strings: string[] = [];\n const rowIterator = makeRowIterator(table, shape);\n for (const row of rowIterator) {\n // Round elements etc\n // processRow(wrappedRow, table.schema);\n // const wrappedRow = options.wrapper ? options.wrapper(row) : row;\n strings.push(JSON.stringify(row));\n }\n return `[${strings.join(',')}]`;\n}\n"],"mappings":"AAGA,SAAeA,eAAe,QAAO,oBAAoB;AAMzD,OAAO,SAASC,iBAAiBA,CAACC,KAAY,EAAEC,OAA2B,EAAU;EAAA,IAAAC,aAAA;EACnF,MAAMC,KAAK,GAAG,CAAAF,OAAO,aAAPA,OAAO,wBAAAC,aAAA,GAAPD,OAAO,CAAEG,IAAI,cAAAF,aAAA,uBAAbA,aAAA,CAAeC,KAAK,KAAI,kBAAkB;EAExD,MAAME,OAAiB,GAAG,EAAE;EAC5B,MAAMC,WAAW,GAAGR,eAAe,CAACE,KAAK,EAAEG,KAAK,CAAC;EACjD,KAAK,MAAMI,GAAG,IAAID,WAAW,EAAE;IAI7BD,OAAO,CAACG,IAAI,CAACC,IAAI,CAACC,SAAS,CAACH,GAAG,CAAC,CAAC;EACnC;EACA,WAAAI,MAAA,CAAWN,OAAO,CAACO,IAAI,CAAC,GAAG,CAAC;AAC9B"}
@@ -13,7 +13,7 @@ export async function* parseJSONInBatches(binaryAsyncIterator, options) {
13
13
  } = options.json || {};
14
14
  let isFirstChunk = true;
15
15
  const schema = null;
16
- const shape = (options === null || options === void 0 ? void 0 : (_options$json = options.json) === null || _options$json === void 0 ? void 0 : _options$json.shape) || 'row-table';
16
+ const shape = (options === null || options === void 0 ? void 0 : (_options$json = options.json) === null || _options$json === void 0 ? void 0 : _options$json.shape) || 'object-row-table';
17
17
  const tableBatchBuilder = new TableBatchBuilder(schema, {
18
18
  ...options,
19
19
  shape
@@ -1 +1 @@
1
- {"version":3,"file":"parse-json-in-batches.js","names":["TableBatchBuilder","assert","makeTextDecoderIterator","StreamingJSONParser","JSONPath","parseJSONInBatches","binaryAsyncIterator","options","_options$json","asyncIterator","metadata","jsonpaths","json","isFirstChunk","schema","shape","tableBatchBuilder","parser","chunk","rows","write","jsonpath","length","getStreamingJsonPathAsString","initialBatch","batchType","data","bytesUsed","container","getPartialResult","row","addRow","batch","getFullBatch","chunkComplete","getFinalBatch","finalBatch","rebuildJsonObject","topLevelObject","streamingPath","setFieldAtPath"],"sources":["../../../../src/lib/parsers/parse-json-in-batches.ts"],"sourcesContent":["import type {TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from '../../json-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {assert, makeTextDecoderIterator} from '@loaders.gl/loader-utils';\nimport StreamingJSONParser from '../json-parser/streaming-json-parser';\nimport JSONPath from '../jsonpath/jsonpath';\n\n// TODO - support batch size 0 = no batching/single batch?\n// eslint-disable-next-line max-statements, complexity\nexport async function* parseJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: JSONLoaderOptions\n): AsyncIterable<TableBatch> {\n const asyncIterator = makeTextDecoderIterator(binaryAsyncIterator);\n\n const {metadata} = options;\n const {jsonpaths} = options.json || {};\n\n let isFirstChunk: boolean = true;\n\n // TODO fix Schema deduction\n const schema = null; // new Schema([]);\n const shape = options?.json?.shape || 'row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n const parser = new StreamingJSONParser({jsonpaths});\n\n for await (const chunk of asyncIterator) {\n const rows = parser.write(chunk);\n\n const jsonpath = rows.length > 0 && parser.getStreamingJsonPathAsString();\n\n if (rows.length > 0 && isFirstChunk) {\n if (metadata) {\n const initialBatch: TableBatch = {\n // Common fields\n shape,\n batchType: 'partial-result',\n data: [],\n length: 0,\n bytesUsed: 0,\n // JSON additions\n container: parser.getPartialResult(),\n jsonpath\n };\n yield initialBatch;\n }\n isFirstChunk = false;\n // schema = deduceSchema(rows);\n }\n\n // Add the row\n for (const row of rows) {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n tableBatchBuilder.chunkComplete(chunk);\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n // yield final batch\n const jsonpath = parser.getStreamingJsonPathAsString();\n const batch = tableBatchBuilder.getFinalBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n\n if (metadata) {\n const finalBatch: TableBatch = {\n shape,\n batchType: 'final-result',\n container: parser.getPartialResult(),\n jsonpath: parser.getStreamingJsonPathAsString(),\n data: [],\n length: 0\n // schema: null\n };\n yield finalBatch;\n }\n}\n\nexport function rebuildJsonObject(batch, data) {\n // Last batch will have this special type and will provide all the root object of the parsed file\n assert(batch.batchType === 'final-result');\n\n // The streamed JSON data is a top level array (jsonpath = '$'), just return the array of row objects\n if (batch.jsonpath === '$') {\n return data;\n }\n\n // (jsonpath !== '$') The streamed data is not a top level array, so stitch it back in to the top-level object\n if (batch.jsonpath && batch.jsonpath.length > 1) {\n const topLevelObject = batch.container;\n const streamingPath = new JSONPath(batch.jsonpath);\n streamingPath.setFieldAtPath(topLevelObject, data);\n return topLevelObject;\n }\n\n // No jsonpath, in this case nothing was streamed.\n return batch.container;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-json-in-batches.js","names":["TableBatchBuilder","assert","makeTextDecoderIterator","StreamingJSONParser","JSONPath","parseJSONInBatches","binaryAsyncIterator","options","_options$json","asyncIterator","metadata","jsonpaths","json","isFirstChunk","schema","shape","tableBatchBuilder","parser","chunk","rows","write","jsonpath","length","getStreamingJsonPathAsString","initialBatch","batchType","data","bytesUsed","container","getPartialResult","row","addRow","batch","getFullBatch","chunkComplete","getFinalBatch","finalBatch","rebuildJsonObject","topLevelObject","streamingPath","setFieldAtPath"],"sources":["../../../../src/lib/parsers/parse-json-in-batches.ts"],"sourcesContent":["import type {TableBatch} from '@loaders.gl/schema';\nimport type {JSONLoaderOptions} from '../../json-loader';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {assert, makeTextDecoderIterator} from '@loaders.gl/loader-utils';\nimport StreamingJSONParser from '../json-parser/streaming-json-parser';\nimport JSONPath from '../jsonpath/jsonpath';\n\n// TODO - support batch size 0 = no batching/single batch?\n// eslint-disable-next-line max-statements, complexity\nexport async function* parseJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options: JSONLoaderOptions\n): AsyncIterable<TableBatch> {\n const asyncIterator = makeTextDecoderIterator(binaryAsyncIterator);\n\n const {metadata} = options;\n const {jsonpaths} = options.json || {};\n\n let isFirstChunk: boolean = true;\n\n // TODO fix Schema deduction\n const schema = null; // new Schema([]);\n // TODO - detect shape from data?\n const shape = options?.json?.shape || 'object-row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n const parser = new StreamingJSONParser({jsonpaths});\n\n for await (const chunk of asyncIterator) {\n const rows = parser.write(chunk);\n\n const jsonpath = rows.length > 0 && parser.getStreamingJsonPathAsString();\n\n if (rows.length > 0 && isFirstChunk) {\n if (metadata) {\n const initialBatch: TableBatch = {\n // Common fields\n shape,\n batchType: 'partial-result',\n data: [],\n length: 0,\n bytesUsed: 0,\n // JSON additions\n container: parser.getPartialResult(),\n jsonpath\n };\n yield initialBatch;\n }\n isFirstChunk = false;\n // schema = deduceSchema(rows);\n }\n\n // Add the row\n for (const row of rows) {\n tableBatchBuilder.addRow(row);\n // If a batch has been completed, emit it\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n tableBatchBuilder.chunkComplete(chunk);\n const batch = tableBatchBuilder.getFullBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n }\n\n // yield final batch\n const jsonpath = parser.getStreamingJsonPathAsString();\n const batch = tableBatchBuilder.getFinalBatch({jsonpath});\n if (batch) {\n yield batch;\n }\n\n if (metadata) {\n const finalBatch: TableBatch = {\n shape,\n batchType: 'final-result',\n container: parser.getPartialResult(),\n jsonpath: parser.getStreamingJsonPathAsString(),\n data: [],\n length: 0\n // schema: null\n };\n yield finalBatch;\n }\n}\n\nexport function rebuildJsonObject(batch, data) {\n // Last batch will have this special type and will provide all the root object of the parsed file\n assert(batch.batchType === 'final-result');\n\n // The streamed JSON data is a top level array (jsonpath = '$'), just return the array of row objects\n if (batch.jsonpath === '$') {\n return data;\n }\n\n // (jsonpath !== '$') The streamed data is not a top level array, so stitch it back in to the top-level object\n if (batch.jsonpath && batch.jsonpath.length > 1) {\n const topLevelObject = batch.container;\n const streamingPath = new JSONPath(batch.jsonpath);\n streamingPath.setFieldAtPath(topLevelObject, data);\n return topLevelObject;\n }\n\n // No jsonpath, in this case nothing was streamed.\n return batch.container;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-ndjson-in-batches.js","names":["TableBatchBuilder","makeLineIterator","makeNumberedLineIterator","makeTextDecoderIterator","parseNDJSONInBatches","binaryAsyncIterator","options","textIterator","lineIterator","numberedLineIterator","schema","shape","tableBatchBuilder","counter","line","row","JSON","parse","addRow","chunkComplete","batch","getFullBatch","error","Error","concat","getFinalBatch"],"sources":["../../../../src/lib/parsers/parse-ndjson-in-batches.ts"],"sourcesContent":["import type {Batch} from '@loaders.gl/schema';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {\n LoaderOptions,\n makeLineIterator,\n makeNumberedLineIterator,\n makeTextDecoderIterator\n} from '@loaders.gl/loader-utils';\n\nexport async function* parseNDJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: LoaderOptions\n): AsyncIterable<Batch> {\n const textIterator = makeTextDecoderIterator(binaryAsyncIterator);\n const lineIterator = makeLineIterator(textIterator);\n const numberedLineIterator = makeNumberedLineIterator(lineIterator);\n\n const schema = null;\n const shape = 'row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n for await (const {counter, line} of numberedLineIterator) {\n try {\n const row = JSON.parse(line);\n tableBatchBuilder.addRow(row);\n tableBatchBuilder.chunkComplete(line);\n const batch = tableBatchBuilder.getFullBatch();\n if (batch) {\n yield batch;\n }\n } catch (error) {\n throw new Error(`NDJSONLoader: failed to parse JSON on line ${counter}`);\n }\n }\n\n const batch = tableBatchBuilder.getFinalBatch();\n if (batch) {\n yield batch;\n }\n}\n"],"mappings":"AACA,SAAQA,iBAAiB,QAAO,oBAAoB;AACpD,SAEEC,gBAAgB,EAChBC,wBAAwB,EACxBC,uBAAuB,QAClB,0BAA0B;AAEjC,OAAO,gBAAgBC,oBAAoBA,CACzCC,mBAAuE,EACvEC,OAAuB,EACD;EACtB,MAAMC,YAAY,GAAGJ,uBAAuB,CAACE,mBAAmB,CAAC;EACjE,MAAMG,YAAY,GAAGP,gBAAgB,CAACM,YAAY,CAAC;EACnD,MAAME,oBAAoB,GAAGP,wBAAwB,CAACM,YAAY,CAAC;EAEnE,MAAME,MAAM,GAAG,IAAI;EACnB,MAAMC,KAAK,GAAG,WAAW;EAEzB,MAAMC,iBAAiB,GAAG,IAAIZ,iBAAiB,CAACU,MAAM,EAAE;IACtD,GAAGJ,OAAO;IACVK;EACF,CAAC,CAAC;EAEF,WAAW,MAAM;IAACE,OAAO;IAAEC;EAAI,CAAC,IAAIL,oBAAoB,EAAE;IACxD,IAAI;MACF,MAAMM,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC;MAC5BF,iBAAiB,CAACM,MAAM,CAACH,GAAG,CAAC;MAC7BH,iBAAiB,CAACO,aAAa,CAACL,IAAI,CAAC;MACrC,MAAMM,KAAK,GAAGR,iBAAiB,CAACS,YAAY,CAAC,CAAC;MAC9C,IAAID,KAAK,EAAE;QACT,MAAMA,KAAK;MACb;IACF,CAAC,CAAC,OAAOE,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,+CAAAC,MAAA,CAA+CX,OAAO,CAAE,CAAC;IAC1E;EACF;EAEA,MAAMO,KAAK,GAAGR,iBAAiB,CAACa,aAAa,CAAC,CAAC;EAC/C,IAAIL,KAAK,EAAE;IACT,MAAMA,KAAK;EACb;AACF"}
1
+ {"version":3,"file":"parse-ndjson-in-batches.js","names":["TableBatchBuilder","makeLineIterator","makeNumberedLineIterator","makeTextDecoderIterator","parseNDJSONInBatches","binaryAsyncIterator","options","textIterator","lineIterator","numberedLineIterator","schema","shape","tableBatchBuilder","counter","line","row","JSON","parse","addRow","chunkComplete","batch","getFullBatch","error","Error","concat","getFinalBatch"],"sources":["../../../../src/lib/parsers/parse-ndjson-in-batches.ts"],"sourcesContent":["import type {TableBatch} from '@loaders.gl/schema';\nimport {TableBatchBuilder} from '@loaders.gl/schema';\nimport {\n LoaderOptions,\n makeLineIterator,\n makeNumberedLineIterator,\n makeTextDecoderIterator\n} from '@loaders.gl/loader-utils';\n\nexport async function* parseNDJSONInBatches(\n binaryAsyncIterator: AsyncIterable<ArrayBuffer> | Iterable<ArrayBuffer>,\n options?: LoaderOptions\n): AsyncIterable<TableBatch> {\n const textIterator = makeTextDecoderIterator(binaryAsyncIterator);\n const lineIterator = makeLineIterator(textIterator);\n const numberedLineIterator = makeNumberedLineIterator(lineIterator);\n\n const schema = null;\n const shape = 'row-table';\n // @ts-ignore\n const tableBatchBuilder = new TableBatchBuilder(schema, {\n ...options,\n shape\n });\n\n for await (const {counter, line} of numberedLineIterator) {\n try {\n const row = JSON.parse(line);\n tableBatchBuilder.addRow(row);\n tableBatchBuilder.chunkComplete(line);\n const batch = tableBatchBuilder.getFullBatch();\n if (batch) {\n yield batch;\n }\n } catch (error) {\n throw new Error(`NDJSONLoader: failed to parse JSON on line ${counter}`);\n }\n }\n\n const batch = tableBatchBuilder.getFinalBatch();\n if (batch) {\n yield batch;\n }\n}\n"],"mappings":"AACA,SAAQA,iBAAiB,QAAO,oBAAoB;AACpD,SAEEC,gBAAgB,EAChBC,wBAAwB,EACxBC,uBAAuB,QAClB,0BAA0B;AAEjC,OAAO,gBAAgBC,oBAAoBA,CACzCC,mBAAuE,EACvEC,OAAuB,EACI;EAC3B,MAAMC,YAAY,GAAGJ,uBAAuB,CAACE,mBAAmB,CAAC;EACjE,MAAMG,YAAY,GAAGP,gBAAgB,CAACM,YAAY,CAAC;EACnD,MAAME,oBAAoB,GAAGP,wBAAwB,CAACM,YAAY,CAAC;EAEnE,MAAME,MAAM,GAAG,IAAI;EACnB,MAAMC,KAAK,GAAG,WAAW;EAEzB,MAAMC,iBAAiB,GAAG,IAAIZ,iBAAiB,CAACU,MAAM,EAAE;IACtD,GAAGJ,OAAO;IACVK;EACF,CAAC,CAAC;EAEF,WAAW,MAAM;IAACE,OAAO;IAAEC;EAAI,CAAC,IAAIL,oBAAoB,EAAE;IACxD,IAAI;MACF,MAAMM,GAAG,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAC;MAC5BF,iBAAiB,CAACM,MAAM,CAACH,GAAG,CAAC;MAC7BH,iBAAiB,CAACO,aAAa,CAACL,IAAI,CAAC;MACrC,MAAMM,KAAK,GAAGR,iBAAiB,CAACS,YAAY,CAAC,CAAC;MAC9C,IAAID,KAAK,EAAE;QACT,MAAMA,KAAK;MACb;IACF,CAAC,CAAC,OAAOE,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,+CAAAC,MAAA,CAA+CX,OAAO,CAAE,CAAC;IAC1E;EACF;EAEA,MAAMO,KAAK,GAAGR,iBAAiB,CAACa,aAAa,CAAC,CAAC;EAC/C,IAAIL,KAAK,EAAE;IACT,MAAMA,KAAK;EACb;AACF"}
@@ -1,14 +1,6 @@
1
1
  import { parseNDJSONSync } from './lib/parsers/parse-ndjson';
2
2
  import { parseNDJSONInBatches } from './lib/parsers/parse-ndjson-in-batches';
3
- const VERSION = typeof "4.0.0-alpha.9" !== 'undefined' ? "4.0.0-alpha.9" : 'latest';
4
- const DEFAULT_NDGEOJSON_LOADER_OPTIONS = {
5
- geojson: {
6
- shape: 'object-row-table'
7
- },
8
- gis: {
9
- format: 'geojson'
10
- }
11
- };
3
+ const VERSION = typeof "4.0.0-beta.2" !== 'undefined' ? "4.0.0-beta.2" : 'latest';
12
4
  export const NDJSONLoader = {
13
5
  name: 'NDJSON',
14
6
  id: 'ndjson',
@@ -21,7 +13,13 @@ export const NDJSONLoader = {
21
13
  parse: async arrayBuffer => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),
22
14
  parseTextSync: parseNDJSONSync,
23
15
  parseInBatches: parseNDJSONInBatches,
24
- options: DEFAULT_NDGEOJSON_LOADER_OPTIONS
16
+ options: {
17
+ geojson: {
18
+ shape: 'object-row-table'
19
+ },
20
+ gis: {
21
+ format: 'geojson'
22
+ }
23
+ }
25
24
  };
26
- export const _typecheckNDJSONLoader = NDJSONLoader;
27
25
  //# sourceMappingURL=ndgeoson-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ndgeoson-loader.js","names":["parseNDJSONSync","parseNDJSONInBatches","VERSION","DEFAULT_NDGEOJSON_LOADER_OPTIONS","geojson","shape","gis","format","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","arrayBuffer","TextDecoder","decode","parseTextSync","parseInBatches","options","_typecheckNDJSONLoader"],"sources":["../../src/ndgeoson-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type NDGeoJSONLoaderOptions = LoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format: 'geojson';\n };\n};\n\nconst DEFAULT_NDGEOJSON_LOADER_OPTIONS = {\n geojson: {\n shape: 'object-row-table'\n },\n gis: {\n format: 'geojson'\n }\n};\n\nexport const NDJSONLoader = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'ndgeojson'],\n mimeTypes: [\n 'application/geo+x-ndjson',\n 'application/geo+x-ldjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/geo+json-seq',\n 'application/x-ndjson'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: DEFAULT_NDGEOJSON_LOADER_OPTIONS\n};\n\nexport const _typecheckNDJSONLoader: LoaderWithParser = NDJSONLoader;\n"],"mappings":"AACA,SAAQA,eAAe,QAAO,4BAA4B;AAC1D,SAAQC,oBAAoB,QAAO,uCAAuC;AAI1E,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAW3E,MAAMC,gCAAgC,GAAG;EACvCC,OAAO,EAAE;IACPC,KAAK,EAAE;EACT,CAAC;EACDC,GAAG,EAAE;IACHC,MAAM,EAAE;EACV;AACF,CAAC;AAED,OAAO,MAAMC,YAAY,GAAG;EAC1BC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEV,OAAO;EAChBW,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EACnCC,SAAS,EAAE,CACT,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,MAAOC,WAAwB,IAAKlB,eAAe,CAAC,IAAImB,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,CAAC;EACjGG,aAAa,EAAErB,eAAe;EAC9BsB,cAAc,EAAErB,oBAAoB;EACpCsB,OAAO,EAAEpB;AACX,CAAC;AAED,OAAO,MAAMqB,sBAAwC,GAAGhB,YAAY"}
1
+ {"version":3,"file":"ndgeoson-loader.js","names":["parseNDJSONSync","parseNDJSONInBatches","VERSION","NDJSONLoader","name","id","module","version","extensions","mimeTypes","category","text","parse","arrayBuffer","TextDecoder","decode","parseTextSync","parseInBatches","options","geojson","shape","gis","format"],"sources":["../../src/ndgeoson-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport {parseNDJSONSync} from './lib/parsers/parse-ndjson';\nimport {parseNDJSONInBatches} from './lib/parsers/parse-ndjson-in-batches';\nimport {ArrayRowTable, ObjectRowTable, Batch} from '@loaders.gl/schema';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for NDGeoJSONLoader */\nexport type NDGeoJSONLoaderOptions = LoaderOptions & {\n geojson?: {\n shape?: 'object-row-table';\n };\n gis?: {\n format: 'geojson';\n };\n};\n\n/** NDGeoJSONLoader */\nexport const NDJSONLoader: LoaderWithParser<\n ArrayRowTable | ObjectRowTable,\n Batch,\n NDGeoJSONLoaderOptions\n> = {\n name: 'NDJSON',\n id: 'ndjson',\n module: 'json',\n version: VERSION,\n extensions: ['ndjson', 'ndgeojson'],\n mimeTypes: [\n 'application/geo+x-ndjson',\n 'application/geo+x-ldjson',\n 'application/jsonlines', // https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html#cm-batch\n 'application/geo+json-seq',\n 'application/x-ndjson'\n ],\n category: 'table',\n text: true,\n parse: async (arrayBuffer: ArrayBuffer) => parseNDJSONSync(new TextDecoder().decode(arrayBuffer)),\n parseTextSync: parseNDJSONSync,\n parseInBatches: parseNDJSONInBatches,\n options: {\n geojson: {\n shape: 'object-row-table'\n },\n gis: {\n format: 'geojson'\n }\n }\n};\n"],"mappings":"AACA,SAAQA,eAAe,QAAO,4BAA4B;AAC1D,SAAQC,oBAAoB,QAAO,uCAAuC;AAK1E,MAAMC,OAAO,GAAG,qBAAkB,KAAK,WAAW,oBAAiB,QAAQ;AAa3E,OAAO,MAAMC,YAIZ,GAAG;EACFC,IAAI,EAAE,QAAQ;EACdC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAChBM,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;EACnCC,SAAS,EAAE,CACT,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,CACvB;EACDC,QAAQ,EAAE,OAAO;EACjBC,IAAI,EAAE,IAAI;EACVC,KAAK,EAAE,MAAOC,WAAwB,IAAKb,eAAe,CAAC,IAAIc,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,CAAC;EACjGG,aAAa,EAAEhB,eAAe;EAC9BiB,cAAc,EAAEhB,oBAAoB;EACpCiB,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,KAAK,EAAE;IACT,CAAC;IACDC,GAAG,EAAE;MACHC,MAAM,EAAE;IACV;EACF;AACF,CAAC"}