@loaders.gl/i3s 4.1.0-alpha.10 → 4.1.0-alpha.11

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.
@@ -106,7 +106,7 @@
106
106
  );
107
107
  globalThis._loadersgl_.version = NPM_TAG;
108
108
  } else {
109
- globalThis._loadersgl_.version = "4.1.0-alpha.10";
109
+ globalThis._loadersgl_.version = "4.1.0-alpha.11";
110
110
  }
111
111
  }
112
112
  return globalThis._loadersgl_.version;
@@ -1442,7 +1442,7 @@
1442
1442
  var navigator_ = globalThis.navigator || {};
1443
1443
 
1444
1444
  // ../../node_modules/@probe.gl/log/node_modules/@probe.gl/env/dist/utils/globals.js
1445
- var VERSION2 = true ? "4.1.0-alpha.10" : "untranspiled source";
1445
+ var VERSION2 = true ? "4.1.0-alpha.11" : "untranspiled source";
1446
1446
  var isBrowser4 = isBrowser3();
1447
1447
 
1448
1448
  // ../../node_modules/@probe.gl/log/dist/utils/local-storage.js
@@ -5310,7 +5310,7 @@
5310
5310
  _defineProperty(Ellipsoid, "WGS84", new Ellipsoid(WGS84_RADIUS_X, WGS84_RADIUS_Y, WGS84_RADIUS_Z));
5311
5311
 
5312
5312
  // ../images/src/lib/utils/version.ts
5313
- var VERSION3 = true ? "4.1.0-alpha.10" : "latest";
5313
+ var VERSION3 = true ? "4.1.0-alpha.11" : "latest";
5314
5314
 
5315
5315
  // ../images/src/lib/category-api/image-type.ts
5316
5316
  var parseImageNode = globalThis.loaders?.parseImageNode;
@@ -5716,7 +5716,7 @@
5716
5716
  };
5717
5717
 
5718
5718
  // ../draco/src/lib/utils/version.ts
5719
- var VERSION4 = true ? "4.1.0-alpha.10" : "latest";
5719
+ var VERSION4 = true ? "4.1.0-alpha.11" : "latest";
5720
5720
 
5721
5721
  // ../draco/src/draco-loader.ts
5722
5722
  var DracoLoader = {
@@ -6319,7 +6319,7 @@
6319
6319
  }
6320
6320
 
6321
6321
  // ../textures/src/lib/utils/version.ts
6322
- var VERSION5 = true ? "4.1.0-alpha.10" : "latest";
6322
+ var VERSION5 = true ? "4.1.0-alpha.11" : "latest";
6323
6323
 
6324
6324
  // ../textures/src/lib/parsers/basis-module-loader.ts
6325
6325
  var BASIS_EXTERNAL_LIBRARIES = {
@@ -7847,7 +7847,7 @@
7847
7847
  }
7848
7848
 
7849
7849
  // src/i3s-content-loader.ts
7850
- var VERSION6 = true ? "4.1.0-alpha.10" : "latest";
7850
+ var VERSION6 = true ? "4.1.0-alpha.11" : "latest";
7851
7851
  var I3SContentLoader = {
7852
7852
  name: "I3S Content (Indexed Scene Layers)",
7853
7853
  id: "i3s-content",
@@ -3,7 +3,7 @@ import { I3SContentLoader } from "./i3s-content-loader.js";
3
3
  import { normalizeTileData, normalizeTilesetData } from "./lib/parsers/parse-i3s.js";
4
4
  import { COORDINATE_SYSTEM } from "./lib/parsers/constants.js";
5
5
  import { getUrlWithoutParams } from "./lib/utils/url-utils.js";
6
- const VERSION = typeof "4.1.0-alpha.10" !== 'undefined' ? "4.1.0-alpha.10" : 'latest';
6
+ const VERSION = typeof "4.1.0-alpha.11" !== 'undefined' ? "4.1.0-alpha.11" : 'latest';
7
7
  const TILESET_REGEX = /layers\/[0-9]+$/;
8
8
  const TILE_HEADER_REGEX = /nodes\/([0-9-]+|root)$/;
9
9
  const SLPK_HEX = '504b0304';
@@ -1,4 +1,4 @@
1
- const VERSION = typeof "4.1.0-alpha.10" !== 'undefined' ? "4.1.0-alpha.10" : 'latest';
1
+ const VERSION = typeof "4.1.0-alpha.11" !== 'undefined' ? "4.1.0-alpha.11" : 'latest';
2
2
  export const I3SNodePageLoader = {
3
3
  name: 'I3S Node Page',
4
4
  id: 'i3s-node-page',
@@ -1,6 +1,6 @@
1
1
  import { DataViewFile } from '@loaders.gl/loader-utils';
2
2
  import { parseSLPKArchive } from "./lib/parsers/parse-slpk/parse-slpk.js";
3
- const VERSION = typeof "4.1.0-alpha.10" !== 'undefined' ? "4.1.0-alpha.10" : 'latest';
3
+ const VERSION = typeof "4.1.0-alpha.11" !== 'undefined' ? "4.1.0-alpha.11" : 'latest';
4
4
  export const SLPKLoader = {
5
5
  name: 'I3S SLPK (Scene Layer Package)',
6
6
  id: 'slpk',
package/dist/index.cjs CHANGED
@@ -27,6 +27,7 @@ __export(src_exports, {
27
27
  I3SContentLoader: () => I3SContentLoader,
28
28
  I3SLoader: () => I3SLoader,
29
29
  I3SNodePageLoader: () => I3SNodePageLoader,
30
+ LayerError: () => LayerError,
30
31
  SLPKLoader: () => SLPKLoader,
31
32
  customizeColors: () => customizeColors,
32
33
  loadFeatureAttributes: () => loadFeatureAttributes,
@@ -1420,12 +1421,19 @@ var SUPPORTED_LAYERS_TYPES = [
1420
1421
  ];
1421
1422
  var NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = "NO_AVAILABLE_SUPPORTED_LAYERS_ERROR";
1422
1423
  var NOT_SUPPORTED_CRS_ERROR = "NOT_SUPPORTED_CRS_ERROR";
1424
+ var LayerError = class extends Error {
1425
+ constructor(message, details) {
1426
+ super(message);
1427
+ this.details = details;
1428
+ this.name = "LayerError";
1429
+ }
1430
+ };
1423
1431
  async function parseWebscene(data) {
1424
1432
  const layer0 = JSON.parse(new TextDecoder().decode(data));
1425
1433
  const { operationalLayers } = layer0;
1426
1434
  const { layers, unsupportedLayers } = await parseOperationalLayers(operationalLayers, true);
1427
1435
  if (!layers.length) {
1428
- throw new Error(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR);
1436
+ throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
1429
1437
  }
1430
1438
  return {
1431
1439
  header: layer0,
package/dist/index.d.ts CHANGED
@@ -10,5 +10,6 @@ export { I3SNodePageLoader } from './i3s-node-page-loader';
10
10
  export { ArcGISWebSceneLoader } from './arcgis-webscene-loader';
11
11
  export type { SLPKArchive } from './lib/parsers/parse-slpk/slpk-archieve';
12
12
  export { parseSLPKArchive } from './lib/parsers/parse-slpk/parse-slpk';
13
+ export { LayerError } from './lib/parsers/parse-arcgis-webscene';
13
14
  export { customizeColors } from './lib/utils/customize-colors';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D,YAAY,EAAC,WAAW,EAAC,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EACf,GAAG,EACH,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,KAAK,EACL,SAAS,EACT,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,SAAS,EACT,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,UAAU,EACV,cAAc,EACd,SAAS,EACT,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,2BAA2B,EAC5B,MAAM,SAAS,CAAC;AACjB,YAAY,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAE,qBAAqB,EAAC,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAC,2BAA2B,EAAC,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,oBAAoB,EAAC,MAAM,0BAA0B,CAAC;AAE9D,YAAY,EAAC,WAAW,EAAC,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAC,gBAAgB,EAAC,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAC,UAAU,EAAC,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC"}
package/dist/index.js CHANGED
@@ -7,5 +7,6 @@ export { I3SBuildingSceneLayerLoader } from "./i3s-building-scene-layer-loader.j
7
7
  export { I3SNodePageLoader } from "./i3s-node-page-loader.js";
8
8
  export { ArcGISWebSceneLoader } from "./arcgis-webscene-loader.js";
9
9
  export { parseSLPKArchive } from "./lib/parsers/parse-slpk/parse-slpk.js";
10
+ export { LayerError } from "./lib/parsers/parse-arcgis-webscene.js";
10
11
  export { customizeColors } from "./lib/utils/customize-colors.js";
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["COORDINATE_SYSTEM","I3SLoader","SLPKLoader","I3SContentLoader","I3SAttributeLoader","loadFeatureAttributes","I3SBuildingSceneLayerLoader","I3SNodePageLoader","ArcGISWebSceneLoader","parseSLPKArchive","customizeColors"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n I3STilesetHeader,\n I3STileContent,\n I3STileHeader,\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 TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent,\n StatisticsInfo,\n StatsInfo,\n Histogram,\n ValueCount,\n BuildingSceneSublayer,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\nexport type {I3SLoaderOptions} from './i3s-loader';\n\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n\nexport {I3SLoader} from './i3s-loader';\nexport {SLPKLoader} from './i3s-slpk-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {I3SNodePageLoader} from './i3s-node-page-loader';\nexport {ArcGISWebSceneLoader} from './arcgis-webscene-loader';\n\nexport type {SLPKArchive} from './lib/parsers/parse-slpk/slpk-archieve';\nexport {parseSLPKArchive} from './lib/parsers/parse-slpk/parse-slpk';\nexport {customizeColors} from './lib/utils/customize-colors';\n"],"mappings":"SAyCQA,iBAAiB;AAAA,SAEjBC,SAAS;AAAA,SACTC,UAAU;AAAA,SACVC,gBAAgB;AAAA,SAChBC,kBAAkB,EAAEC,qBAAqB;AAAA,SACzCC,2BAA2B;AAAA,SAC3BC,iBAAiB;AAAA,SACjBC,oBAAoB;AAAA,SAGpBC,gBAAgB;AAAA,SAChBC,eAAe"}
1
+ {"version":3,"file":"index.js","names":["COORDINATE_SYSTEM","I3SLoader","SLPKLoader","I3SContentLoader","I3SAttributeLoader","loadFeatureAttributes","I3SBuildingSceneLayerLoader","I3SNodePageLoader","ArcGISWebSceneLoader","parseSLPKArchive","LayerError","customizeColors"],"sources":["../src/index.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {\n BoundingVolumes,\n Mbs,\n Obb,\n I3STilesetHeader,\n I3STileContent,\n I3STileHeader,\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 TextureDefinitionInfo,\n MaterialDefinitionInfo,\n FullExtent,\n StatisticsInfo,\n StatsInfo,\n Histogram,\n ValueCount,\n BuildingSceneSublayer,\n OperationalLayer,\n TextureSetDefinitionFormats\n} from './types';\nexport type {I3SLoaderOptions} from './i3s-loader';\n\nexport {COORDINATE_SYSTEM} from './lib/parsers/constants';\n\nexport {I3SLoader} from './i3s-loader';\nexport {SLPKLoader} from './i3s-slpk-loader';\nexport {I3SContentLoader} from './i3s-content-loader';\nexport {I3SAttributeLoader, loadFeatureAttributes} from './i3s-attribute-loader';\nexport {I3SBuildingSceneLayerLoader} from './i3s-building-scene-layer-loader';\nexport {I3SNodePageLoader} from './i3s-node-page-loader';\nexport {ArcGISWebSceneLoader} from './arcgis-webscene-loader';\n\nexport type {SLPKArchive} from './lib/parsers/parse-slpk/slpk-archieve';\nexport {parseSLPKArchive} from './lib/parsers/parse-slpk/parse-slpk';\nexport {LayerError} from './lib/parsers/parse-arcgis-webscene';\nexport {customizeColors} from './lib/utils/customize-colors';\n"],"mappings":"SAyCQA,iBAAiB;AAAA,SAEjBC,SAAS;AAAA,SACTC,UAAU;AAAA,SACVC,gBAAgB;AAAA,SAChBC,kBAAkB,EAAEC,qBAAqB;AAAA,SACzCC,2BAA2B;AAAA,SAC3BC,iBAAiB;AAAA,SACjBC,oBAAoB;AAAA,SAGpBC,gBAAgB;AAAA,SAChBC,UAAU;AAAA,SACVC,eAAe"}
@@ -1,4 +1,14 @@
1
1
  import type { ArcGISWebSceneData } from '../../types';
2
+ /**
3
+ * Provides additional information in the exception Error object, e.g. unsupported layer types.
4
+ * @param message - message used in the Error object
5
+ * @param details - additional information that can be used to handle the exception.
6
+ * @example throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
7
+ */
8
+ export declare class LayerError extends Error {
9
+ details: unknown;
10
+ constructor(message: string, details: unknown);
11
+ }
2
12
  /**
3
13
  * Parses ArcGIS WebScene
4
14
  * @param data
@@ -1 +1 @@
1
- {"version":3,"file":"parse-arcgis-webscene.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-arcgis-webscene.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AA2BtE;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAclF"}
1
+ {"version":3,"file":"parse-arcgis-webscene.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-arcgis-webscene.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,kBAAkB,EAAmB,MAAM,aAAa,CAAC;AA2BtE;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAG1B,OAAO,EAAE,OAAO;gBADvB,OAAO,EAAE,MAAM,EACR,OAAO,EAAE,OAAO;CAK1B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAclF"}
@@ -7,6 +7,13 @@ const GROUP_LAYER = 'GroupLayer';
7
7
  const SUPPORTED_LAYERS_TYPES = [ARCGIS_SCENE_SERVER_LAYER_TYPE, INTEGRATED_MESH_LAYER, BUILDING_SCENE_LAYER, GROUP_LAYER];
8
8
  const NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = 'NO_AVAILABLE_SUPPORTED_LAYERS_ERROR';
9
9
  const NOT_SUPPORTED_CRS_ERROR = 'NOT_SUPPORTED_CRS_ERROR';
10
+ export class LayerError extends Error {
11
+ constructor(message, details) {
12
+ super(message);
13
+ this.details = details;
14
+ this.name = 'LayerError';
15
+ }
16
+ }
10
17
  export async function parseWebscene(data) {
11
18
  const layer0 = JSON.parse(new TextDecoder().decode(data));
12
19
  const {
@@ -17,7 +24,7 @@ export async function parseWebscene(data) {
17
24
  unsupportedLayers
18
25
  } = await parseOperationalLayers(operationalLayers, true);
19
26
  if (!layers.length) {
20
- throw new Error(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR);
27
+ throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
21
28
  }
22
29
  return {
23
30
  header: layer0,
@@ -1 +1 @@
1
- {"version":3,"file":"parse-arcgis-webscene.js","names":["JSONLoader","load","SUPPORTED_WKID","ARCGIS_SCENE_SERVER_LAYER_TYPE","BUILDING_SCENE_LAYER","INTEGRATED_MESH_LAYER","GROUP_LAYER","SUPPORTED_LAYERS_TYPES","NO_AVAILABLE_SUPPORTED_LAYERS_ERROR","NOT_SUPPORTED_CRS_ERROR","parseWebscene","data","layer0","JSON","parse","TextDecoder","decode","operationalLayers","layers","unsupportedLayers","parseOperationalLayers","length","Error","header","layersList","needToCheckCRS","index","_layer$layers","layer","isLayerSupported","includes","layerType","checkSupportedIndexCRS","push","childLayers","childUnsupportedLayers","_layerJson$spatialRef","layerJson","url","wkid","spatialReference","error"],"sources":["../../../src/lib/parsers/parse-arcgis-webscene.ts"],"sourcesContent":["import {JSONLoader, load} from '@loaders.gl/core';\nimport type {ArcGISWebSceneData, OperationalLayer} from '../../types';\n\n/**\n * WKID, or Well-Known ID, of the CRS. Specify either WKID or WKT of the CRS.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/spatialReference.cmn.md\n */\nconst SUPPORTED_WKID = 4326;\n\nconst ARCGIS_SCENE_SERVER_LAYER_TYPE = 'ArcGISSceneServiceLayer';\nconst BUILDING_SCENE_LAYER = 'BuildingSceneLayer';\nconst INTEGRATED_MESH_LAYER = 'IntegratedMeshLayer';\nconst GROUP_LAYER = 'GroupLayer';\n\n/**\n * Supported layers list\n * Possible operational layers in WebScene: https://developers.arcgis.com/web-scene-specification/objects/operationalLayers/\n */\nconst SUPPORTED_LAYERS_TYPES = [\n ARCGIS_SCENE_SERVER_LAYER_TYPE,\n INTEGRATED_MESH_LAYER,\n BUILDING_SCENE_LAYER,\n GROUP_LAYER\n];\n\nconst NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = 'NO_AVAILABLE_SUPPORTED_LAYERS_ERROR';\nconst NOT_SUPPORTED_CRS_ERROR = 'NOT_SUPPORTED_CRS_ERROR';\n\n/**\n * Parses ArcGIS WebScene\n * @param data\n */\nexport async function parseWebscene(data: ArrayBuffer): Promise<ArcGISWebSceneData> {\n const layer0 = JSON.parse(new TextDecoder().decode(data));\n const {operationalLayers} = layer0;\n const {layers, unsupportedLayers} = await parseOperationalLayers(operationalLayers, true);\n\n if (!layers.length) {\n throw new Error(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR);\n }\n\n return {\n header: layer0,\n layers,\n unsupportedLayers\n };\n}\n\n/**\n * Recursively parses WebScene operational layers.\n * @param layersList\n */\nasync function parseOperationalLayers(\n layersList: OperationalLayer[],\n needToCheckCRS: boolean\n): Promise<{layers: OperationalLayer[]; unsupportedLayers: OperationalLayer[]}> {\n const layers: OperationalLayer[] = [];\n let unsupportedLayers: OperationalLayer[] = [];\n\n for (let index = 0; index < layersList.length; index++) {\n const layer = layersList[index];\n const isLayerSupported = SUPPORTED_LAYERS_TYPES.includes(layer.layerType);\n\n if (isLayerSupported) {\n if (needToCheckCRS && layer.layerType !== GROUP_LAYER) {\n await checkSupportedIndexCRS(layer);\n needToCheckCRS = false;\n }\n\n layers.push(layer);\n } else {\n unsupportedLayers.push(layer);\n }\n\n if (layer.layers?.length) {\n const {layers: childLayers, unsupportedLayers: childUnsupportedLayers} =\n await parseOperationalLayers(layer.layers, needToCheckCRS);\n layer.layers = childLayers;\n unsupportedLayers = [...unsupportedLayers, ...childUnsupportedLayers];\n }\n }\n\n return {layers, unsupportedLayers};\n}\n\n/**\n * Check if layer has supported CRS\n * @param layer\n */\nasync function checkSupportedIndexCRS(layer: OperationalLayer) {\n try {\n const layerJson = await load(layer.url, JSONLoader);\n // @ts-expect-error\n const wkid = layerJson?.spatialReference?.wkid;\n\n if (wkid !== SUPPORTED_WKID) {\n throw new Error(NOT_SUPPORTED_CRS_ERROR);\n }\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-arcgis-webscene.js","names":["JSONLoader","load","SUPPORTED_WKID","ARCGIS_SCENE_SERVER_LAYER_TYPE","BUILDING_SCENE_LAYER","INTEGRATED_MESH_LAYER","GROUP_LAYER","SUPPORTED_LAYERS_TYPES","NO_AVAILABLE_SUPPORTED_LAYERS_ERROR","NOT_SUPPORTED_CRS_ERROR","LayerError","Error","constructor","message","details","name","parseWebscene","data","layer0","JSON","parse","TextDecoder","decode","operationalLayers","layers","unsupportedLayers","parseOperationalLayers","length","header","layersList","needToCheckCRS","index","_layer$layers","layer","isLayerSupported","includes","layerType","checkSupportedIndexCRS","push","childLayers","childUnsupportedLayers","_layerJson$spatialRef","layerJson","url","wkid","spatialReference","error"],"sources":["../../../src/lib/parsers/parse-arcgis-webscene.ts"],"sourcesContent":["import {JSONLoader, load} from '@loaders.gl/core';\nimport type {ArcGISWebSceneData, OperationalLayer} from '../../types';\n\n/**\n * WKID, or Well-Known ID, of the CRS. Specify either WKID or WKT of the CRS.\n * Spec - https://github.com/Esri/i3s-spec/blob/master/docs/1.8/spatialReference.cmn.md\n */\nconst SUPPORTED_WKID = 4326;\n\nconst ARCGIS_SCENE_SERVER_LAYER_TYPE = 'ArcGISSceneServiceLayer';\nconst BUILDING_SCENE_LAYER = 'BuildingSceneLayer';\nconst INTEGRATED_MESH_LAYER = 'IntegratedMeshLayer';\nconst GROUP_LAYER = 'GroupLayer';\n\n/**\n * Supported layers list\n * Possible operational layers in WebScene: https://developers.arcgis.com/web-scene-specification/objects/operationalLayers/\n */\nconst SUPPORTED_LAYERS_TYPES = [\n ARCGIS_SCENE_SERVER_LAYER_TYPE,\n INTEGRATED_MESH_LAYER,\n BUILDING_SCENE_LAYER,\n GROUP_LAYER\n];\n\nconst NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = 'NO_AVAILABLE_SUPPORTED_LAYERS_ERROR';\nconst NOT_SUPPORTED_CRS_ERROR = 'NOT_SUPPORTED_CRS_ERROR';\n\n/**\n * Provides additional information in the exception Error object, e.g. unsupported layer types.\n * @param message - message used in the Error object\n * @param details - additional information that can be used to handle the exception.\n * @example throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);\n */\nexport class LayerError extends Error {\n constructor(\n message: string,\n public details: unknown\n ) {\n super(message);\n this.name = 'LayerError';\n }\n}\n\n/**\n * Parses ArcGIS WebScene\n * @param data\n */\nexport async function parseWebscene(data: ArrayBuffer): Promise<ArcGISWebSceneData> {\n const layer0 = JSON.parse(new TextDecoder().decode(data));\n const {operationalLayers} = layer0;\n const {layers, unsupportedLayers} = await parseOperationalLayers(operationalLayers, true);\n\n if (!layers.length) {\n throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);\n }\n\n return {\n header: layer0,\n layers,\n unsupportedLayers\n };\n}\n\n/**\n * Recursively parses WebScene operational layers.\n * @param layersList\n */\nasync function parseOperationalLayers(\n layersList: OperationalLayer[],\n needToCheckCRS: boolean\n): Promise<{layers: OperationalLayer[]; unsupportedLayers: OperationalLayer[]}> {\n const layers: OperationalLayer[] = [];\n let unsupportedLayers: OperationalLayer[] = [];\n\n for (let index = 0; index < layersList.length; index++) {\n const layer = layersList[index];\n const isLayerSupported = SUPPORTED_LAYERS_TYPES.includes(layer.layerType);\n\n if (isLayerSupported) {\n if (needToCheckCRS && layer.layerType !== GROUP_LAYER) {\n await checkSupportedIndexCRS(layer);\n needToCheckCRS = false;\n }\n\n layers.push(layer);\n } else {\n unsupportedLayers.push(layer);\n }\n\n if (layer.layers?.length) {\n const {layers: childLayers, unsupportedLayers: childUnsupportedLayers} =\n await parseOperationalLayers(layer.layers, needToCheckCRS);\n layer.layers = childLayers;\n unsupportedLayers = [...unsupportedLayers, ...childUnsupportedLayers];\n }\n }\n\n return {layers, unsupportedLayers};\n}\n\n/**\n * Check if layer has supported CRS\n * @param layer\n */\nasync function checkSupportedIndexCRS(layer: OperationalLayer) {\n try {\n const layerJson = await load(layer.url, JSONLoader);\n // @ts-expect-error\n const wkid = layerJson?.spatialReference?.wkid;\n\n if (wkid !== SUPPORTED_WKID) {\n throw new Error(NOT_SUPPORTED_CRS_ERROR);\n }\n } catch (error) {\n throw error;\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/i3s",
3
- "version": "4.1.0-alpha.10",
3
+ "version": "4.1.0-alpha.11",
4
4
  "description": "i3s .",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -41,14 +41,14 @@
41
41
  "build-worker-node": "esbuild src/workers/i3s-content-worker-node.ts --outfile=dist/i3s-content-worker-node.js --platform=node --target=node16 --minify --bundle --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\""
42
42
  },
43
43
  "dependencies": {
44
- "@loaders.gl/compression": "4.1.0-alpha.10",
45
- "@loaders.gl/crypto": "4.1.0-alpha.10",
46
- "@loaders.gl/draco": "4.1.0-alpha.10",
47
- "@loaders.gl/images": "4.1.0-alpha.10",
48
- "@loaders.gl/loader-utils": "4.1.0-alpha.10",
49
- "@loaders.gl/schema": "4.1.0-alpha.10",
50
- "@loaders.gl/textures": "4.1.0-alpha.10",
51
- "@loaders.gl/tiles": "4.1.0-alpha.10",
44
+ "@loaders.gl/compression": "4.1.0-alpha.11",
45
+ "@loaders.gl/crypto": "4.1.0-alpha.11",
46
+ "@loaders.gl/draco": "4.1.0-alpha.11",
47
+ "@loaders.gl/images": "4.1.0-alpha.11",
48
+ "@loaders.gl/loader-utils": "4.1.0-alpha.11",
49
+ "@loaders.gl/schema": "4.1.0-alpha.11",
50
+ "@loaders.gl/textures": "4.1.0-alpha.11",
51
+ "@loaders.gl/tiles": "4.1.0-alpha.11",
52
52
  "@math.gl/core": "^4.0.0",
53
53
  "@math.gl/culling": "^4.0.0",
54
54
  "@math.gl/geospatial": "^4.0.0"
@@ -56,5 +56,5 @@
56
56
  "peerDependencies": {
57
57
  "@loaders.gl/core": "^4.0.0"
58
58
  },
59
- "gitHead": "19f43c2d90d8b50860c3f8e487429779a386287d"
59
+ "gitHead": "5d3e23bf93762b48c8c1d6d926ede7a97fe43ab0"
60
60
  }
package/src/index.ts CHANGED
@@ -51,4 +51,5 @@ export {ArcGISWebSceneLoader} from './arcgis-webscene-loader';
51
51
 
52
52
  export type {SLPKArchive} from './lib/parsers/parse-slpk/slpk-archieve';
53
53
  export {parseSLPKArchive} from './lib/parsers/parse-slpk/parse-slpk';
54
+ export {LayerError} from './lib/parsers/parse-arcgis-webscene';
54
55
  export {customizeColors} from './lib/utils/customize-colors';
@@ -26,6 +26,22 @@ const SUPPORTED_LAYERS_TYPES = [
26
26
  const NO_AVAILABLE_SUPPORTED_LAYERS_ERROR = 'NO_AVAILABLE_SUPPORTED_LAYERS_ERROR';
27
27
  const NOT_SUPPORTED_CRS_ERROR = 'NOT_SUPPORTED_CRS_ERROR';
28
28
 
29
+ /**
30
+ * Provides additional information in the exception Error object, e.g. unsupported layer types.
31
+ * @param message - message used in the Error object
32
+ * @param details - additional information that can be used to handle the exception.
33
+ * @example throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
34
+ */
35
+ export class LayerError extends Error {
36
+ constructor(
37
+ message: string,
38
+ public details: unknown
39
+ ) {
40
+ super(message);
41
+ this.name = 'LayerError';
42
+ }
43
+ }
44
+
29
45
  /**
30
46
  * Parses ArcGIS WebScene
31
47
  * @param data
@@ -36,7 +52,7 @@ export async function parseWebscene(data: ArrayBuffer): Promise<ArcGISWebSceneDa
36
52
  const {layers, unsupportedLayers} = await parseOperationalLayers(operationalLayers, true);
37
53
 
38
54
  if (!layers.length) {
39
- throw new Error(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR);
55
+ throw new LayerError(NO_AVAILABLE_SUPPORTED_LAYERS_ERROR, unsupportedLayers);
40
56
  }
41
57
 
42
58
  return {