@loaders.gl/i3s 3.1.3 → 4.0.0-alpha.5

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 (112) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/bundle.js.map +1 -0
  3. package/dist/dist.min.js +28 -25
  4. package/dist/i3s-attribute-loader.js +130 -155
  5. package/dist/i3s-attribute-loader.js.map +1 -0
  6. package/dist/i3s-building-scene-layer-loader.js +18 -23
  7. package/dist/i3s-building-scene-layer-loader.js.map +1 -0
  8. package/dist/i3s-content-loader.js +22 -25
  9. package/dist/i3s-content-loader.js.map +1 -0
  10. package/dist/i3s-content-worker.js +23 -21
  11. package/dist/i3s-loader.js +81 -84
  12. package/dist/i3s-loader.js.map +1 -0
  13. package/dist/i3s-node-page-loader.js +17 -21
  14. package/dist/i3s-node-page-loader.js.map +1 -0
  15. package/dist/index.js +6 -14
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/helpers/i3s-nodepages-tiles.js +228 -221
  18. package/dist/lib/helpers/i3s-nodepages-tiles.js.map +1 -0
  19. package/dist/lib/parsers/constants.js +63 -85
  20. package/dist/lib/parsers/constants.js.map +1 -0
  21. package/dist/lib/parsers/parse-i3s-attribute.js +62 -86
  22. package/dist/lib/parsers/parse-i3s-attribute.js.map +1 -0
  23. package/dist/lib/parsers/parse-i3s-building-scene-layer.js +40 -41
  24. package/dist/lib/parsers/parse-i3s-building-scene-layer.js.map +1 -0
  25. package/dist/lib/parsers/parse-i3s-tile-content.d.ts.map +1 -1
  26. package/dist/lib/parsers/parse-i3s-tile-content.js +458 -441
  27. package/dist/lib/parsers/parse-i3s-tile-content.js.map +1 -0
  28. package/dist/lib/parsers/parse-i3s.js +88 -86
  29. package/dist/lib/parsers/parse-i3s.js.map +1 -0
  30. package/dist/lib/utils/convert-i3s-obb-to-mbs.js +8 -19
  31. package/dist/lib/utils/convert-i3s-obb-to-mbs.js.map +1 -0
  32. package/dist/lib/utils/url-utils.js +28 -41
  33. package/dist/lib/utils/url-utils.js.map +1 -0
  34. package/dist/types.d.ts +2 -3
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js +19 -18
  37. package/dist/types.js.map +1 -0
  38. package/dist/workers/i3s-content-worker.js +4 -5
  39. package/dist/workers/i3s-content-worker.js.map +1 -0
  40. package/package.json +12 -12
  41. package/src/i3s-building-scene-layer-loader.ts +1 -1
  42. package/src/i3s-content-loader.ts +1 -1
  43. package/src/lib/parsers/parse-i3s-tile-content.ts +4 -1
  44. package/src/types.ts +2 -3
  45. package/dist/es5/bundle.js +0 -7
  46. package/dist/es5/bundle.js.map +0 -1
  47. package/dist/es5/i3s-attribute-loader.js +0 -249
  48. package/dist/es5/i3s-attribute-loader.js.map +0 -1
  49. package/dist/es5/i3s-building-scene-layer-loader.js +0 -58
  50. package/dist/es5/i3s-building-scene-layer-loader.js.map +0 -1
  51. package/dist/es5/i3s-content-loader.js +0 -60
  52. package/dist/es5/i3s-content-loader.js.map +0 -1
  53. package/dist/es5/i3s-loader.js +0 -233
  54. package/dist/es5/i3s-loader.js.map +0 -1
  55. package/dist/es5/i3s-node-page-loader.js +0 -72
  56. package/dist/es5/i3s-node-page-loader.js.map +0 -1
  57. package/dist/es5/index.js +0 -52
  58. package/dist/es5/index.js.map +0 -1
  59. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js +0 -393
  60. package/dist/es5/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  61. package/dist/es5/lib/parsers/constants.js +0 -89
  62. package/dist/es5/lib/parsers/constants.js.map +0 -1
  63. package/dist/es5/lib/parsers/parse-i3s-attribute.js +0 -124
  64. package/dist/es5/lib/parsers/parse-i3s-attribute.js.map +0 -1
  65. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js +0 -86
  66. package/dist/es5/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  67. package/dist/es5/lib/parsers/parse-i3s-tile-content.js +0 -635
  68. package/dist/es5/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  69. package/dist/es5/lib/parsers/parse-i3s.js +0 -155
  70. package/dist/es5/lib/parsers/parse-i3s.js.map +0 -1
  71. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js +0 -24
  72. package/dist/es5/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  73. package/dist/es5/lib/utils/url-utils.js +0 -40
  74. package/dist/es5/lib/utils/url-utils.js.map +0 -1
  75. package/dist/es5/types.js +0 -29
  76. package/dist/es5/types.js.map +0 -1
  77. package/dist/es5/workers/i3s-content-worker.js +0 -8
  78. package/dist/es5/workers/i3s-content-worker.js.map +0 -1
  79. package/dist/esm/bundle.js +0 -5
  80. package/dist/esm/bundle.js.map +0 -1
  81. package/dist/esm/i3s-attribute-loader.js +0 -152
  82. package/dist/esm/i3s-attribute-loader.js.map +0 -1
  83. package/dist/esm/i3s-building-scene-layer-loader.js +0 -21
  84. package/dist/esm/i3s-building-scene-layer-loader.js.map +0 -1
  85. package/dist/esm/i3s-content-loader.js +0 -25
  86. package/dist/esm/i3s-content-loader.js.map +0 -1
  87. package/dist/esm/i3s-loader.js +0 -97
  88. package/dist/esm/i3s-loader.js.map +0 -1
  89. package/dist/esm/i3s-node-page-loader.js +0 -22
  90. package/dist/esm/i3s-node-page-loader.js.map +0 -1
  91. package/dist/esm/index.js +0 -6
  92. package/dist/esm/index.js.map +0 -1
  93. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js +0 -239
  94. package/dist/esm/lib/helpers/i3s-nodepages-tiles.js.map +0 -1
  95. package/dist/esm/lib/parsers/constants.js +0 -67
  96. package/dist/esm/lib/parsers/constants.js.map +0 -1
  97. package/dist/esm/lib/parsers/parse-i3s-attribute.js +0 -74
  98. package/dist/esm/lib/parsers/parse-i3s-attribute.js.map +0 -1
  99. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js +0 -45
  100. package/dist/esm/lib/parsers/parse-i3s-building-scene-layer.js.map +0 -1
  101. package/dist/esm/lib/parsers/parse-i3s-tile-content.js +0 -494
  102. package/dist/esm/lib/parsers/parse-i3s-tile-content.js.map +0 -1
  103. package/dist/esm/lib/parsers/parse-i3s.js +0 -91
  104. package/dist/esm/lib/parsers/parse-i3s.js.map +0 -1
  105. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js +0 -9
  106. package/dist/esm/lib/utils/convert-i3s-obb-to-mbs.js.map +0 -1
  107. package/dist/esm/lib/utils/url-utils.js +0 -31
  108. package/dist/esm/lib/utils/url-utils.js.map +0 -1
  109. package/dist/esm/types.js +0 -21
  110. package/dist/esm/types.js.map +0 -1
  111. package/dist/esm/workers/i3s-content-worker.js +0 -4
  112. package/dist/esm/workers/i3s-content-worker.js.map +0 -1
@@ -55,9 +55,8 @@
55
55
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
56
56
 
57
57
  // ../worker-utils/src/lib/env-utils/version.ts
58
- var DEFAULT_VERSION = "latest";
59
- var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : DEFAULT_VERSION;
60
- if (typeof __VERSION__ === "undefined") {
58
+ var VERSION = true ? "4.0.0-alpha.5" : DEFAULT_VERSION;
59
+ if (false) {
61
60
  console.error("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
62
61
  }
63
62
 
@@ -459,7 +458,7 @@
459
458
  }
460
459
 
461
460
  // ../worker-utils/src/lib/worker-api/get-worker-url.ts
462
- var NPM_TAG = "latest";
461
+ var NPM_TAG = "beta";
463
462
  function getWorkerURL(worker, options = {}) {
464
463
  const workerOptions = options[worker.id] || {};
465
464
  const workerFile = `${worker.id}-worker.js`;
@@ -494,7 +493,7 @@
494
493
 
495
494
  // ../worker-utils/src/lib/library-utils/library-utils.ts
496
495
  var node = __toModule(require_require_utils());
497
- var LATEST = "latest";
496
+ var LATEST = "beta";
498
497
  var VERSION2 = typeof VERSION !== "undefined" ? VERSION : LATEST;
499
498
  var loadLibraryPromises = {};
500
499
  async function loadLibrary(libraryUrl, moduleName = null, options = {}) {
@@ -1002,7 +1001,7 @@
1002
1001
  var process_ = globals3.process || {};
1003
1002
 
1004
1003
  // ../../node_modules/probe.gl/dist/esm/utils/globals.js
1005
- var VERSION3 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "untranspiled source";
1004
+ var VERSION3 = true ? "4.0.0-alpha.5" : "untranspiled source";
1006
1005
  var isBrowser4 = isBrowser3();
1007
1006
 
1008
1007
  // ../../node_modules/probe.gl/dist/esm/utils/local-storage.js
@@ -4305,7 +4304,7 @@
4305
4304
  };
4306
4305
 
4307
4306
  // ../images/src/lib/utils/version.ts
4308
- var VERSION4 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
4307
+ var VERSION4 = true ? "4.0.0-alpha.5" : "latest";
4309
4308
 
4310
4309
  // ../images/src/lib/category-api/image-type.ts
4311
4310
  var { _parseImageNode } = globalThis;
@@ -4653,7 +4652,7 @@
4653
4652
  };
4654
4653
 
4655
4654
  // ../draco/src/lib/utils/version.ts
4656
- var VERSION5 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
4655
+ var VERSION5 = true ? "4.0.0-alpha.5" : "latest";
4657
4656
 
4658
4657
  // ../draco/src/draco-loader.ts
4659
4658
  var DEFAULT_DRACO_OPTIONS = {
@@ -5637,10 +5636,10 @@
5637
5636
  }
5638
5637
 
5639
5638
  // ../textures/src/lib/utils/version.ts
5640
- var VERSION6 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
5639
+ var VERSION6 = true ? "4.0.0-alpha.5" : "beta";
5641
5640
 
5642
5641
  // ../textures/src/lib/parsers/basis-module-loader.ts
5643
- var VERSION7 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
5642
+ var VERSION7 = true ? "4.0.0-alpha.5" : "beta";
5644
5643
  var BASIS_CDN_ENCODER_WASM = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.wasm`;
5645
5644
  var BASIS_CDN_ENCODER_JS = `https://unpkg.com/@loaders.gl/textures@${VERSION7}/dist/libs/basis_encoder.js`;
5646
5645
  var loadBasisTranscoderPromise;
@@ -6121,7 +6120,7 @@
6121
6120
  const basisFile = new BasisFile(new Uint8Array(data));
6122
6121
  try {
6123
6122
  if (!basisFile.startTranscoding()) {
6124
- return null;
6123
+ throw new Error("Failed to start basis transcoding");
6125
6124
  }
6126
6125
  const imageCount = basisFile.getNumImages();
6127
6126
  const images = [];
@@ -6147,22 +6146,22 @@
6147
6146
  const decodedSize = basisFile.getImageTranscodedSizeInBytes(imageIndex, levelIndex, basisFormat);
6148
6147
  const decodedData = new Uint8Array(decodedSize);
6149
6148
  if (!basisFile.transcodeImage(decodedData, imageIndex, levelIndex, basisFormat, 0, 0)) {
6150
- return null;
6149
+ throw new Error("failed to start Basis transcoding");
6151
6150
  }
6152
6151
  return {
6153
6152
  width,
6154
6153
  height,
6155
6154
  data: decodedData,
6156
6155
  compressed,
6157
- hasAlpha,
6158
- format
6156
+ format,
6157
+ hasAlpha
6159
6158
  };
6160
6159
  }
6161
6160
  function parseKTX2File(KTX2File, data, options) {
6162
6161
  const ktx2File = new KTX2File(new Uint8Array(data));
6163
6162
  try {
6164
6163
  if (!ktx2File.startTranscoding()) {
6165
- return null;
6164
+ throw new Error("failed to start KTX2 transcoding");
6166
6165
  }
6167
6166
  const levelsCount = ktx2File.getLevels();
6168
6167
  const levels = [];
@@ -6170,7 +6169,7 @@
6170
6169
  levels.push(transcodeKTX2Image(ktx2File, levelIndex, options));
6171
6170
  break;
6172
6171
  }
6173
- return levels;
6172
+ return [levels];
6174
6173
  } finally {
6175
6174
  ktx2File.close();
6176
6175
  ktx2File.delete();
@@ -6182,14 +6181,14 @@
6182
6181
  const decodedSize = ktx2File.getImageTranscodedSizeInBytes(levelIndex, 0, 0, basisFormat);
6183
6182
  const decodedData = new Uint8Array(decodedSize);
6184
6183
  if (!ktx2File.transcodeImage(decodedData, levelIndex, 0, 0, basisFormat, 0, -1, -1)) {
6185
- return null;
6184
+ throw new Error("Failed to transcode KTX2 image");
6186
6185
  }
6187
6186
  return {
6188
6187
  width,
6189
6188
  height,
6190
6189
  data: decodedData,
6191
6190
  compressed,
6192
- alphaFlag,
6191
+ hasAlpha: alphaFlag,
6193
6192
  format
6194
6193
  };
6195
6194
  }
@@ -6575,7 +6574,7 @@
6575
6574
  containerFormat: "ktx2",
6576
6575
  module: "encoder"
6577
6576
  };
6578
- return await parseBasis(arrayBuffer, options);
6577
+ return (await parseBasis(arrayBuffer, options))[0];
6579
6578
  }
6580
6579
  return parseCompressedTexture(arrayBuffer);
6581
6580
  }
@@ -7309,7 +7308,10 @@
7309
7308
  tile.content.texture = await parse(arrayBuffer2, loader, options2);
7310
7309
  }
7311
7310
  } else if (loader === CompressedTextureLoader || loader === BasisLoader) {
7312
- const texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
7311
+ let texture = await load(arrayBuffer2, loader, tile.textureLoaderOptions);
7312
+ if (loader === BasisLoader) {
7313
+ texture = texture[0];
7314
+ }
7313
7315
  tile.content.texture = {
7314
7316
  compressed: true,
7315
7317
  mipmaps: false,
@@ -7643,7 +7645,7 @@
7643
7645
  }
7644
7646
 
7645
7647
  // src/i3s-content-loader.ts
7646
- var VERSION8 = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
7648
+ var VERSION8 = true ? "4.0.0-alpha.5" : "beta";
7647
7649
  var I3SContentLoader = {
7648
7650
  name: "I3S Content (Indexed Scene Layers)",
7649
7651
  id: "i3s-content",
@@ -1,100 +1,97 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.I3SLoader = void 0;
4
- const core_1 = require("@loaders.gl/core");
5
- const i3s_content_loader_1 = require("./i3s-content-loader");
6
- const parse_i3s_1 = require("./lib/parsers/parse-i3s");
7
- const constants_1 = require("./lib/parsers/constants");
8
- // __VERSION__ is injected by babel-plugin-version-inline
9
- // @ts-ignore TS2304: Cannot find name '__VERSION__'.
10
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
1
+ import { load, parse } from '@loaders.gl/core';
2
+ import { I3SContentLoader } from './i3s-content-loader';
3
+ import { normalizeTileData, normalizeTilesetData } from './lib/parsers/parse-i3s';
4
+ import { COORDINATE_SYSTEM } from './lib/parsers/constants';
5
+ const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : 'latest';
11
6
  const TILESET_REGEX = /layers\/[0-9]+$/;
12
7
  const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
13
8
  const SLPK_HEX = '504b0304';
14
- /**
15
- * Loader for I3S - Indexed 3D Scene Layer
16
- */
17
- exports.I3SLoader = {
18
- name: 'I3S (Indexed Scene Layers)',
19
- id: 'i3s',
20
- module: 'i3s',
21
- version: VERSION,
22
- mimeTypes: ['application/octet-stream'],
23
- parse: parseI3S,
24
- extensions: ['bin'],
25
- options: {
26
- i3s: {
27
- loadContent: true,
28
- token: null,
29
- isTileset: 'auto',
30
- isTileHeader: 'auto',
31
- tile: null,
32
- tileset: null,
33
- useDracoGeometry: true,
34
- useCompressedTextures: true,
35
- decodeTextures: true,
36
- coordinateSystem: constants_1.COORDINATE_SYSTEM.METER_OFFSETS
37
- }
9
+ export const I3SLoader = {
10
+ name: 'I3S (Indexed Scene Layers)',
11
+ id: 'i3s',
12
+ module: 'i3s',
13
+ version: VERSION,
14
+ mimeTypes: ['application/octet-stream'],
15
+ parse: parseI3S,
16
+ extensions: ['bin'],
17
+ options: {
18
+ i3s: {
19
+ loadContent: true,
20
+ token: null,
21
+ isTileset: 'auto',
22
+ isTileHeader: 'auto',
23
+ tile: null,
24
+ tileset: null,
25
+ useDracoGeometry: true,
26
+ useCompressedTextures: true,
27
+ decodeTextures: true,
28
+ coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS
38
29
  }
30
+ }
39
31
  };
32
+
40
33
  async function parseI3S(data, options, context) {
41
- const url = context.url;
42
- options.i3s = options.i3s || {};
43
- const magicNumber = getMagicNumber(data);
44
- // check if file is slpk
45
- if (magicNumber === SLPK_HEX) {
46
- throw new Error('Files with .slpk extention currently are not supported by I3SLoader');
34
+ const url = context.url;
35
+ options.i3s = options.i3s || {};
36
+ const magicNumber = getMagicNumber(data);
37
+
38
+ if (magicNumber === SLPK_HEX) {
39
+ throw new Error('Files with .slpk extention currently are not supported by I3SLoader');
40
+ }
41
+
42
+ let isTileset;
43
+
44
+ if (options.i3s.isTileset === 'auto') {
45
+ isTileset = TILESET_REGEX.test(url);
46
+ } else {
47
+ isTileset = options.i3s.isTileset;
48
+ }
49
+
50
+ let isTileHeader;
51
+
52
+ if (options.isTileHeader === 'auto') {
53
+ isTileHeader = TILE_HEADER_REGEX.test(url);
54
+ } else {
55
+ isTileHeader = options.i3s.isTileHeader;
56
+ }
57
+
58
+ if (isTileset) {
59
+ data = await parseTileset(data, options, context);
60
+ } else if (isTileHeader) {
61
+ data = await parseTile(data, options, context);
62
+
63
+ if (options.i3s.loadContent) {
64
+ options.i3s.tile = data;
65
+ await load(data.contentUrl, I3SLoader, options);
47
66
  }
48
- // auto detect file type based on url
49
- let isTileset;
50
- if (options.i3s.isTileset === 'auto') {
51
- isTileset = TILESET_REGEX.test(url);
52
- }
53
- else {
54
- isTileset = options.i3s.isTileset;
55
- }
56
- let isTileHeader;
57
- if (options.isTileHeader === 'auto') {
58
- isTileHeader = TILE_HEADER_REGEX.test(url);
59
- }
60
- else {
61
- isTileHeader = options.i3s.isTileHeader;
62
- }
63
- if (isTileset) {
64
- data = await parseTileset(data, options, context);
65
- }
66
- else if (isTileHeader) {
67
- data = await parseTile(data, options, context);
68
- if (options.i3s.loadContent) {
69
- options.i3s.tile = data;
70
- await (0, core_1.load)(data.contentUrl, exports.I3SLoader, options);
71
- }
72
- }
73
- else {
74
- data = await parseTileContent(data, options);
75
- }
76
- return data;
67
+ } else {
68
+ data = await parseTileContent(data, options);
69
+ }
70
+
71
+ return data;
77
72
  }
73
+
78
74
  async function parseTileContent(arrayBuffer, options) {
79
- return await (0, core_1.parse)(arrayBuffer, i3s_content_loader_1.I3SContentLoader, options);
75
+ return await parse(arrayBuffer, I3SContentLoader, options);
80
76
  }
77
+
81
78
  async function parseTileset(data, options, context) {
82
- const tilesetJson = JSON.parse(new TextDecoder().decode(data));
83
- // eslint-disable-next-line no-use-before-define
84
- tilesetJson.loader = exports.I3SLoader;
85
- await (0, parse_i3s_1.normalizeTilesetData)(tilesetJson, options, context);
86
- return tilesetJson;
79
+ const tilesetJson = JSON.parse(new TextDecoder().decode(data));
80
+ tilesetJson.loader = I3SLoader;
81
+ await normalizeTilesetData(tilesetJson, options, context);
82
+ return tilesetJson;
87
83
  }
84
+
88
85
  async function parseTile(data, options, context) {
89
- data = JSON.parse(new TextDecoder().decode(data));
90
- return (0, parse_i3s_1.normalizeTileData)(data, options, context);
86
+ data = JSON.parse(new TextDecoder().decode(data));
87
+ return normalizeTileData(data, options, context);
91
88
  }
89
+
92
90
  function getMagicNumber(data) {
93
- if (data instanceof ArrayBuffer) {
94
- // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system
95
- return [...new Uint8Array(data, 0, 4)]
96
- .map((value) => value.toString(16).padStart(2, '0'))
97
- .join('');
98
- }
99
- return null;
91
+ if (data instanceof ArrayBuffer) {
92
+ return [...new Uint8Array(data, 0, 4)].map(value => value.toString(16).padStart(2, '0')).join('');
93
+ }
94
+
95
+ return null;
100
96
  }
97
+ //# sourceMappingURL=i3s-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i3s-loader.ts"],"names":["load","parse","I3SContentLoader","normalizeTileData","normalizeTilesetData","COORDINATE_SYSTEM","VERSION","TILESET_REGEX","TILE_HEADER_REGEX","SLPK_HEX","I3SLoader","name","id","module","version","mimeTypes","parseI3S","extensions","options","i3s","loadContent","token","isTileset","isTileHeader","tile","tileset","useDracoGeometry","useCompressedTextures","decodeTextures","coordinateSystem","METER_OFFSETS","data","context","url","magicNumber","getMagicNumber","Error","test","parseTileset","parseTile","contentUrl","parseTileContent","arrayBuffer","tilesetJson","JSON","TextDecoder","decode","loader","ArrayBuffer","Uint8Array","map","value","toString","padStart","join"],"mappings":"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","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {load, parse} from '@loaders.gl/core';\nimport {I3SContentLoader} from './i3s-content-loader';\nimport {normalizeTileData, normalizeTilesetData} from './lib/parsers/parse-i3s';\nimport {COORDINATE_SYSTEM} from './lib/parsers/constants';\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\nconst TILESET_REGEX = /layers\\/[0-9]+$/;\nconst TILE_HEADER_REGEX = /nodes\\/([0-9-]+|root)$/;\nconst SLPK_HEX = '504b0304';\n\n/**\n * Loader for I3S - Indexed 3D Scene Layer\n */\nexport const I3SLoader: LoaderWithParser = {\n name: 'I3S (Indexed Scene Layers)',\n id: 'i3s',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/octet-stream'],\n parse: parseI3S,\n extensions: ['bin'],\n options: {\n i3s: {\n loadContent: true,\n token: null,\n isTileset: 'auto',\n isTileHeader: 'auto',\n tile: null,\n tileset: null,\n useDracoGeometry: true,\n useCompressedTextures: true,\n decodeTextures: true,\n coordinateSystem: COORDINATE_SYSTEM.METER_OFFSETS\n }\n }\n};\n\nasync function parseI3S(data, options, context) {\n const url = context.url;\n options.i3s = options.i3s || {};\n const magicNumber = getMagicNumber(data);\n\n // check if file is slpk\n if (magicNumber === SLPK_HEX) {\n throw new Error('Files with .slpk extention currently are not supported by I3SLoader');\n }\n\n // auto detect file type based on url\n let isTileset;\n if (options.i3s.isTileset === 'auto') {\n isTileset = TILESET_REGEX.test(url);\n } else {\n isTileset = options.i3s.isTileset;\n }\n\n let isTileHeader;\n if (options.isTileHeader === 'auto') {\n isTileHeader = TILE_HEADER_REGEX.test(url);\n } else {\n isTileHeader = options.i3s.isTileHeader;\n }\n\n if (isTileset) {\n data = await parseTileset(data, options, context);\n } else if (isTileHeader) {\n data = await parseTile(data, options, context);\n if (options.i3s.loadContent) {\n options.i3s.tile = data;\n await load(data.contentUrl, I3SLoader, options);\n }\n } else {\n data = await parseTileContent(data, options);\n }\n\n return data;\n}\n\nasync function parseTileContent(arrayBuffer, options) {\n return await parse(arrayBuffer, I3SContentLoader, options);\n}\n\nasync function parseTileset(data, options, context) {\n const tilesetJson = JSON.parse(new TextDecoder().decode(data));\n // eslint-disable-next-line no-use-before-define\n tilesetJson.loader = I3SLoader;\n await normalizeTilesetData(tilesetJson, options, context);\n\n return tilesetJson;\n}\n\nasync function parseTile(data, options, context) {\n data = JSON.parse(new TextDecoder().decode(data));\n return normalizeTileData(data, options, context);\n}\n\nfunction getMagicNumber(data) {\n if (data instanceof ArrayBuffer) {\n // slice binary data (4 bytes from the beginning) and transform it to hexadecimal numeral system\n return [...new Uint8Array(data, 0, 4)]\n .map((value) => value.toString(16).padStart(2, '0'))\n .join('');\n }\n return null;\n}\n"],"file":"i3s-loader.js"}
@@ -1,26 +1,22 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.I3SNodePageLoader = void 0;
4
- // __VERSION__ is injected by babel-plugin-version-inline
5
- // @ts-ignore TS2304: Cannot find name '__VERSION__'.
6
- const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
1
+ const VERSION = typeof "4.0.0-alpha.5" !== 'undefined' ? "4.0.0-alpha.5" : 'latest';
2
+
7
3
  async function parseNodePage(data) {
8
- return JSON.parse(new TextDecoder().decode(data));
4
+ return JSON.parse(new TextDecoder().decode(data));
9
5
  }
10
- /**
11
- * Loader for I3S node pages
12
- */
13
- exports.I3SNodePageLoader = {
14
- name: 'I3S Node Page',
15
- id: 'i3s-node-page',
16
- module: 'i3s',
17
- version: VERSION,
18
- mimeTypes: ['application/json'],
19
- parse,
20
- extensions: ['json'],
21
- options: {}
6
+
7
+ export const I3SNodePageLoader = {
8
+ name: 'I3S Node Page',
9
+ id: 'i3s-node-page',
10
+ module: 'i3s',
11
+ version: VERSION,
12
+ mimeTypes: ['application/json'],
13
+ parse,
14
+ extensions: ['json'],
15
+ options: {}
22
16
  };
17
+
23
18
  async function parse(data) {
24
- data = parseNodePage(data);
25
- return data;
19
+ data = parseNodePage(data);
20
+ return data;
26
21
  }
22
+ //# sourceMappingURL=i3s-node-page-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/i3s-node-page-loader.ts"],"names":["VERSION","parseNodePage","data","JSON","parse","TextDecoder","decode","I3SNodePageLoader","name","id","module","version","mimeTypes","extensions","options"],"mappings":"AAIA,MAAMA,OAAO,GAAG,2BAAuB,WAAvB,qBAAmD,QAAnE;;AAEA,eAAeC,aAAf,CAA6BC,IAA7B,EAAmC;AACjC,SAAOC,IAAI,CAACC,KAAL,CAAW,IAAIC,WAAJ,GAAkBC,MAAlB,CAAyBJ,IAAzB,CAAX,CAAP;AACD;;AAKD,OAAO,MAAMK,iBAAmC,GAAG;AACjDC,EAAAA,IAAI,EAAE,eAD2C;AAEjDC,EAAAA,EAAE,EAAE,eAF6C;AAGjDC,EAAAA,MAAM,EAAE,KAHyC;AAIjDC,EAAAA,OAAO,EAAEX,OAJwC;AAKjDY,EAAAA,SAAS,EAAE,CAAC,kBAAD,CALsC;AAMjDR,EAAAA,KANiD;AAOjDS,EAAAA,UAAU,EAAE,CAAC,MAAD,CAPqC;AAQjDC,EAAAA,OAAO,EAAE;AARwC,CAA5C;;AAWP,eAAeV,KAAf,CAAqBF,IAArB,EAA2B;AACzBA,EAAAA,IAAI,GAAGD,aAAa,CAACC,IAAD,CAApB;AACA,SAAOA,IAAP;AACD","sourcesContent":["import type {LoaderWithParser} from '@loaders.gl/loader-utils';\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\nasync function parseNodePage(data) {\n return JSON.parse(new TextDecoder().decode(data));\n}\n\n/**\n * Loader for I3S node pages\n */\nexport const I3SNodePageLoader: LoaderWithParser = {\n name: 'I3S Node Page',\n id: 'i3s-node-page',\n module: 'i3s',\n version: VERSION,\n mimeTypes: ['application/json'],\n parse,\n extensions: ['json'],\n options: {}\n};\n\nasync function parse(data) {\n data = parseNodePage(data);\n return data;\n}\n"],"file":"i3s-node-page-loader.js"}
package/dist/index.js CHANGED
@@ -1,14 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.COORDINATE_SYSTEM = exports.I3SBuildingSceneLayerLoader = exports.loadFeatureAttributes = exports.I3SAttributeLoader = exports.I3SContentLoader = exports.I3SLoader = void 0;
4
- var i3s_loader_1 = require("./i3s-loader");
5
- Object.defineProperty(exports, "I3SLoader", { enumerable: true, get: function () { return i3s_loader_1.I3SLoader; } });
6
- var i3s_content_loader_1 = require("./i3s-content-loader");
7
- Object.defineProperty(exports, "I3SContentLoader", { enumerable: true, get: function () { return i3s_content_loader_1.I3SContentLoader; } });
8
- var i3s_attribute_loader_1 = require("./i3s-attribute-loader");
9
- Object.defineProperty(exports, "I3SAttributeLoader", { enumerable: true, get: function () { return i3s_attribute_loader_1.I3SAttributeLoader; } });
10
- Object.defineProperty(exports, "loadFeatureAttributes", { enumerable: true, get: function () { return i3s_attribute_loader_1.loadFeatureAttributes; } });
11
- var i3s_building_scene_layer_loader_1 = require("./i3s-building-scene-layer-loader");
12
- Object.defineProperty(exports, "I3SBuildingSceneLayerLoader", { enumerable: true, get: function () { return i3s_building_scene_layer_loader_1.I3SBuildingSceneLayerLoader; } });
13
- var constants_1 = require("./lib/parsers/constants");
14
- Object.defineProperty(exports, "COORDINATE_SYSTEM", { enumerable: true, get: function () { return constants_1.COORDINATE_SYSTEM; } });
1
+ export { I3SLoader } from './i3s-loader';
2
+ export { I3SContentLoader } from './i3s-content-loader';
3
+ export { I3SAttributeLoader, loadFeatureAttributes } from './i3s-attribute-loader';
4
+ export { I3SBuildingSceneLayerLoader } from './i3s-building-scene-layer-loader';
5
+ export { COORDINATE_SYSTEM } from './lib/parsers/constants';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts"],"names":["I3SLoader","I3SContentLoader","I3SAttributeLoader","loadFeatureAttributes","I3SBuildingSceneLayerLoader","COORDINATE_SYSTEM"],"mappings":"AAAA,SAAQA,SAAR,QAAwB,cAAxB;AACA,SAAQC,gBAAR,QAA+B,sBAA/B;AACA,SAAQC,kBAAR,EAA4BC,qBAA5B,QAAwD,wBAAxD;AACA,SAAQC,2BAAR,QAA0C,mCAA1C;AAuBA,SAAQC,iBAAR,QAAgC,yBAAhC","sourcesContent":["export {I3SLoader} from './i3s-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n SceneLayer3D,\n AttributeStorageInfo,\n Field,\n ESRIField,\n PopupInfo,\n Node3DIndexDocument,\n LodSelection,\n NodeReference,\n Resource,\n MaxScreenThresholdSQ,\n NodeInPage,\n SharedResources,\n Attribute,\n Extent,\n FeatureAttribute,\n FieldInfo,\n I3SMaterialDefinition\n} from './types';\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n"],"file":"index.js"}