@loaders.gl/3d-tiles 3.3.3 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/dist.min.js CHANGED
@@ -12215,7 +12215,7 @@
12215
12215
  if (!tile.contentUrl) {
12216
12216
  return TILE_TYPE.EMPTY;
12217
12217
  }
12218
- const contentUrl = tile.contentUrl;
12218
+ const contentUrl = tile.contentUrl.split("?")[0];
12219
12219
  const fileExtension = contentUrl.split(".").pop();
12220
12220
  switch (fileExtension) {
12221
12221
  case "pnts":
@@ -21,7 +21,7 @@ function getTileType(tile) {
21
21
  if (!tile.contentUrl) {
22
22
  return _tiles.TILE_TYPE.EMPTY;
23
23
  }
24
- var contentUrl = tile.contentUrl;
24
+ var contentUrl = tile.contentUrl.split('?')[0];
25
25
  var fileExtension = contentUrl.split('.').pop();
26
26
  switch (fileExtension) {
27
27
  case 'pnts':
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-header.js","names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","rootImplicitTilingExtension","getImplicitTilingExtensionData","root","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","replacedUrlTemplate","replaceContentUrlTemplate","subtreeUrl","load","Tile3DSubtreeLoader","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","parseImplicitTiles","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile-header.js","names":["getTileType","tile","contentUrl","TILE_TYPE","EMPTY","split","fileExtension","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","TILE_REFINEMENT","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","LOD_METRIC_TYPE","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","rootImplicitTilingExtension","getImplicitTilingExtensionData","root","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtreesUriTemplate","subtrees","replacedUrlTemplate","replaceContentUrlTemplate","subtreeUrl","load","Tile3DSubtreeLoader","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","parseImplicitTiles","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl.split('?')[0]; // Discard query string\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.3.3" !== 'undefined' ? "3.3.3" : 'latest';
7
+ var VERSION = typeof "3.3.4" !== 'undefined' ? "3.3.4" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -6,7 +6,7 @@ function getTileType(tile) {
6
6
  if (!tile.contentUrl) {
7
7
  return TILE_TYPE.EMPTY;
8
8
  }
9
- const contentUrl = tile.contentUrl;
9
+ const contentUrl = tile.contentUrl.split('?')[0];
10
10
  const fileExtension = contentUrl.split('.').pop();
11
11
  switch (fileExtension) {
12
12
  case 'pnts':
@@ -1 +1 @@
1
- {"version":3,"file":"parse-3d-tile-header.js","names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","fileExtension","split","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","rootImplicitTilingExtension","getImplicitTilingExtensionData","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl;\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-3d-tile-header.js","names":["Tile3DSubtreeLoader","load","LOD_METRIC_TYPE","TILE_REFINEMENT","TILE_TYPE","parseImplicitTiles","replaceContentUrlTemplate","getTileType","tile","contentUrl","EMPTY","split","fileExtension","pop","POINTCLOUD","SCENEGRAPH","getRefine","refine","REPLACE","ADD","resolveUri","uri","basePath","urlSchemeRegex","test","url","URL","decodeURI","toString","startsWith","normalizeTileData","options","content","contentUri","id","lodMetricType","GEOMETRIC_ERROR","lodMetricValue","geometricError","transformMatrix","transform","type","normalizeTileHeaders","tileset","root","rootImplicitTilingExtension","getImplicitTilingExtensionData","normalizeImplicitTileHeaders","stack","push","length","children","childHeader","childImplicitTilingExtension","implicitTilingExtension","subdivisionScheme","maximumLevel","subtreeLevels","subtrees","subtreesUriTemplate","replacedUrlTemplate","subtreeUrl","subtree","contentUrlTemplate","rootLodMetricValue","rootBoundingVolume","boundingVolume","implicitOptions","normalizeImplicitTileData","rootSubtree","replace","extensions","implicitTiling"],"sources":["../../../../src/lib/parsers/parse-3d-tile-header.ts"],"sourcesContent":["import type {LoaderOptions} from '@loaders.gl/loader-utils';\nimport {Tile3DSubtreeLoader} from '../../tile-3d-subtree-loader';\nimport {load} from '@loaders.gl/core';\nimport {Tileset3D, LOD_METRIC_TYPE, TILE_REFINEMENT, TILE_TYPE, Tile3D} from '@loaders.gl/tiles';\nimport {ImplicitTilingExtension, Subtree} from '../../types';\nimport {parseImplicitTiles, replaceContentUrlTemplate} from './helpers/parse-3d-implicit-tiles';\n\nfunction getTileType(tile) {\n if (!tile.contentUrl) {\n return TILE_TYPE.EMPTY;\n }\n\n const contentUrl = tile.contentUrl.split('?')[0]; // Discard query string\n const fileExtension = contentUrl.split('.').pop();\n switch (fileExtension) {\n case 'pnts':\n return TILE_TYPE.POINTCLOUD;\n case 'i3dm':\n case 'b3dm':\n case 'glb':\n case 'gltf':\n return TILE_TYPE.SCENEGRAPH;\n default:\n return fileExtension;\n }\n}\n\nfunction getRefine(refine) {\n switch (refine) {\n case 'REPLACE':\n case 'replace':\n return TILE_REFINEMENT.REPLACE;\n case 'ADD':\n case 'add':\n return TILE_REFINEMENT.ADD;\n default:\n return refine;\n }\n}\n\nfunction resolveUri(uri, basePath) {\n // url scheme per RFC3986\n const urlSchemeRegex = /^[a-z][0-9a-z+.-]*:/i;\n\n if (urlSchemeRegex.test(basePath)) {\n const url = new URL(uri, `${basePath}/`);\n return decodeURI(url.toString());\n } else if (uri.startsWith('/')) {\n return uri;\n }\n\n return `${basePath}/${uri}`;\n}\n\nexport function normalizeTileData(tile, options) {\n if (!tile) {\n return null;\n }\n if (tile.content) {\n const contentUri = tile.content.uri || tile.content.url;\n tile.contentUrl = resolveUri(contentUri, options.basePath);\n }\n tile.id = tile.contentUrl;\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n tile.type = getTileType(tile);\n tile.refine = getRefine(tile.refine);\n\n return tile;\n}\n\n// normalize tile headers\nexport async function normalizeTileHeaders(\n tileset: Tileset3D,\n options: LoaderOptions\n): Promise<Tileset3D> {\n const basePath = tileset.basePath;\n let root: Tileset3D;\n\n const rootImplicitTilingExtension = getImplicitTilingExtensionData(tileset?.root);\n if (rootImplicitTilingExtension && tileset.root) {\n root = await normalizeImplicitTileHeaders(\n tileset.root,\n tileset,\n rootImplicitTilingExtension,\n options\n );\n } else {\n root = normalizeTileData(tileset.root, tileset);\n }\n\n const stack: any[] = [];\n stack.push(root);\n\n while (stack.length > 0) {\n const tile = stack.pop() || {};\n const children = tile.children || [];\n for (let childHeader of children) {\n const childImplicitTilingExtension = getImplicitTilingExtensionData(childHeader);\n if (childImplicitTilingExtension) {\n childHeader = await normalizeImplicitTileHeaders(\n childHeader,\n tileset,\n childImplicitTilingExtension,\n options\n );\n } else {\n normalizeTileData(childHeader, {basePath});\n }\n\n stack.push(childHeader);\n }\n }\n\n return root;\n}\n\n/**\n * Do normalisation of implicit tile headers\n * TODO Check if Tile3D class can be a return type here.\n * @param tileset\n */\nexport async function normalizeImplicitTileHeaders(\n tile: Tile3D,\n tileset: Tileset3D,\n implicitTilingExtension: ImplicitTilingExtension,\n options: LoaderOptions\n) {\n const basePath = tileset.basePath;\n const {\n subdivisionScheme,\n maximumLevel,\n subtreeLevels,\n subtrees: {uri: subtreesUriTemplate}\n } = implicitTilingExtension;\n const replacedUrlTemplate = replaceContentUrlTemplate(subtreesUriTemplate, 0, 0, 0, 0);\n const subtreeUrl = resolveUri(replacedUrlTemplate, basePath);\n const subtree = await load(subtreeUrl, Tile3DSubtreeLoader, options);\n const contentUrlTemplate = resolveUri(tile.content.uri, basePath);\n const refine = tileset?.root?.refine;\n // @ts-ignore\n const rootLodMetricValue = tile.geometricError;\n const rootBoundingVolume = tile.boundingVolume;\n\n const implicitOptions = {\n contentUrlTemplate,\n subtreesUriTemplate,\n subdivisionScheme,\n subtreeLevels,\n maximumLevel,\n refine,\n basePath,\n lodMetricType: LOD_METRIC_TYPE.GEOMETRIC_ERROR,\n rootLodMetricValue,\n rootBoundingVolume,\n getTileType,\n getRefine\n };\n\n return await normalizeImplicitTileData(tile, subtree, implicitOptions);\n}\n\n/**\n * Do implicit data normalisation to create hierarchical tile structure\n * @param tile\n * @param rootSubtree\n * @param options\n * @returns\n */\nexport async function normalizeImplicitTileData(tile, rootSubtree: Subtree, options: any) {\n if (!tile) {\n return null;\n }\n\n tile.lodMetricType = LOD_METRIC_TYPE.GEOMETRIC_ERROR;\n tile.lodMetricValue = tile.geometricError;\n tile.transformMatrix = tile.transform;\n\n const {children, contentUrl} = await parseImplicitTiles({subtree: rootSubtree, options});\n\n if (contentUrl) {\n tile.contentUrl = contentUrl;\n tile.content = {uri: contentUrl.replace(`${options.basePath}/`, '')};\n }\n\n tile.refine = getRefine(tile.refine);\n tile.type = getTileType(tile);\n tile.children = children;\n tile.id = tile.contentUrl;\n\n return tile;\n}\n\n/**\n * Implicit Tiling data can be in 3DTILES_implicit_tiling for 3DTiles v.Next or directly in implicitTiling object for 3DTiles v1.1.\n * Spec 3DTiles v.Next - https://github.com/CesiumGS/3d-tiles/tree/main/extensions/3DTILES_implicit_tiling\n * Spec 3DTiles v.1.1 - https://github.com/CesiumGS/3d-tiles/tree/draft-1.1/specification/ImplicitTiling\n * @param tile\n * @returns\n */\nfunction getImplicitTilingExtensionData(tile: Tile3D | null): ImplicitTilingExtension {\n return tile?.extensions?.['3DTILES_implicit_tiling'] || tile?.implicitTiling;\n}\n"],"mappings":"AACA,SAAQA,mBAAmB,QAAO,8BAA8B;AAChE,SAAQC,IAAI,QAAO,kBAAkB;AACrC,SAAmBC,eAAe,EAAEC,eAAe,EAAEC,SAAS,QAAe,mBAAmB;AAEhG,SAAQC,kBAAkB,EAAEC,yBAAyB,QAAO,mCAAmC;AAE/F,SAASC,WAAW,CAACC,IAAI,EAAE;EACzB,IAAI,CAACA,IAAI,CAACC,UAAU,EAAE;IACpB,OAAOL,SAAS,CAACM,KAAK;EACxB;EAEA,MAAMD,UAAU,GAAGD,IAAI,CAACC,UAAU,CAACE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAChD,MAAMC,aAAa,GAAGH,UAAU,CAACE,KAAK,CAAC,GAAG,CAAC,CAACE,GAAG,EAAE;EACjD,QAAQD,aAAa;IACnB,KAAK,MAAM;MACT,OAAOR,SAAS,CAACU,UAAU;IAC7B,KAAK,MAAM;IACX,KAAK,MAAM;IACX,KAAK,KAAK;IACV,KAAK,MAAM;MACT,OAAOV,SAAS,CAACW,UAAU;IAC7B;MACE,OAAOH,aAAa;EAAC;AAE3B;AAEA,SAASI,SAAS,CAACC,MAAM,EAAE;EACzB,QAAQA,MAAM;IACZ,KAAK,SAAS;IACd,KAAK,SAAS;MACZ,OAAOd,eAAe,CAACe,OAAO;IAChC,KAAK,KAAK;IACV,KAAK,KAAK;MACR,OAAOf,eAAe,CAACgB,GAAG;IAC5B;MACE,OAAOF,MAAM;EAAC;AAEpB;AAEA,SAASG,UAAU,CAACC,GAAG,EAAEC,QAAQ,EAAE;EAEjC,MAAMC,cAAc,GAAG,sBAAsB;EAE7C,IAAIA,cAAc,CAACC,IAAI,CAACF,QAAQ,CAAC,EAAE;IACjC,MAAMG,GAAG,GAAG,IAAIC,GAAG,CAACL,GAAG,YAAKC,QAAQ,OAAI;IACxC,OAAOK,SAAS,CAACF,GAAG,CAACG,QAAQ,EAAE,CAAC;EAClC,CAAC,MAAM,IAAIP,GAAG,CAACQ,UAAU,CAAC,GAAG,CAAC,EAAE;IAC9B,OAAOR,GAAG;EACZ;EAEA,iBAAUC,QAAQ,cAAID,GAAG;AAC3B;AAEA,OAAO,SAASS,iBAAiB,CAACtB,IAAI,EAAEuB,OAAO,EAAE;EAC/C,IAAI,CAACvB,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EACA,IAAIA,IAAI,CAACwB,OAAO,EAAE;IAChB,MAAMC,UAAU,GAAGzB,IAAI,CAACwB,OAAO,CAACX,GAAG,IAAIb,IAAI,CAACwB,OAAO,CAACP,GAAG;IACvDjB,IAAI,CAACC,UAAU,GAAGW,UAAU,CAACa,UAAU,EAAEF,OAAO,CAACT,QAAQ,CAAC;EAC5D;EACAd,IAAI,CAAC0B,EAAE,GAAG1B,IAAI,CAACC,UAAU;EACzBD,IAAI,CAAC2B,aAAa,GAAGjC,eAAe,CAACkC,eAAe;EACpD5B,IAAI,CAAC6B,cAAc,GAAG7B,IAAI,CAAC8B,cAAc;EACzC9B,IAAI,CAAC+B,eAAe,GAAG/B,IAAI,CAACgC,SAAS;EACrChC,IAAI,CAACiC,IAAI,GAAGlC,WAAW,CAACC,IAAI,CAAC;EAC7BA,IAAI,CAACS,MAAM,GAAGD,SAAS,CAACR,IAAI,CAACS,MAAM,CAAC;EAEpC,OAAOT,IAAI;AACb;;AAGA,OAAO,eAAekC,oBAAoB,CACxCC,OAAkB,EAClBZ,OAAsB,EACF;EACpB,MAAMT,QAAQ,GAAGqB,OAAO,CAACrB,QAAQ;EACjC,IAAIsB,IAAe;EAEnB,MAAMC,2BAA2B,GAAGC,8BAA8B,CAACH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,IAAI,CAAC;EACjF,IAAIC,2BAA2B,IAAIF,OAAO,CAACC,IAAI,EAAE;IAC/CA,IAAI,GAAG,MAAMG,4BAA4B,CACvCJ,OAAO,CAACC,IAAI,EACZD,OAAO,EACPE,2BAA2B,EAC3Bd,OAAO,CACR;EACH,CAAC,MAAM;IACLa,IAAI,GAAGd,iBAAiB,CAACa,OAAO,CAACC,IAAI,EAAED,OAAO,CAAC;EACjD;EAEA,MAAMK,KAAY,GAAG,EAAE;EACvBA,KAAK,CAACC,IAAI,CAACL,IAAI,CAAC;EAEhB,OAAOI,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;IACvB,MAAM1C,IAAI,GAAGwC,KAAK,CAACnC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9B,MAAMsC,QAAQ,GAAG3C,IAAI,CAAC2C,QAAQ,IAAI,EAAE;IACpC,KAAK,IAAIC,WAAW,IAAID,QAAQ,EAAE;MAChC,MAAME,4BAA4B,GAAGP,8BAA8B,CAACM,WAAW,CAAC;MAChF,IAAIC,4BAA4B,EAAE;QAChCD,WAAW,GAAG,MAAML,4BAA4B,CAC9CK,WAAW,EACXT,OAAO,EACPU,4BAA4B,EAC5BtB,OAAO,CACR;MACH,CAAC,MAAM;QACLD,iBAAiB,CAACsB,WAAW,EAAE;UAAC9B;QAAQ,CAAC,CAAC;MAC5C;MAEA0B,KAAK,CAACC,IAAI,CAACG,WAAW,CAAC;IACzB;EACF;EAEA,OAAOR,IAAI;AACb;;AAOA,OAAO,eAAeG,4BAA4B,CAChDvC,IAAY,EACZmC,OAAkB,EAClBW,uBAAgD,EAChDvB,OAAsB,EACtB;EAAA;EACA,MAAMT,QAAQ,GAAGqB,OAAO,CAACrB,QAAQ;EACjC,MAAM;IACJiC,iBAAiB;IACjBC,YAAY;IACZC,aAAa;IACbC,QAAQ,EAAE;MAACrC,GAAG,EAAEsC;IAAmB;EACrC,CAAC,GAAGL,uBAAuB;EAC3B,MAAMM,mBAAmB,GAAGtD,yBAAyB,CAACqD,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EACtF,MAAME,UAAU,GAAGzC,UAAU,CAACwC,mBAAmB,EAAEtC,QAAQ,CAAC;EAC5D,MAAMwC,OAAO,GAAG,MAAM7D,IAAI,CAAC4D,UAAU,EAAE7D,mBAAmB,EAAE+B,OAAO,CAAC;EACpE,MAAMgC,kBAAkB,GAAG3C,UAAU,CAACZ,IAAI,CAACwB,OAAO,CAACX,GAAG,EAAEC,QAAQ,CAAC;EACjE,MAAML,MAAM,GAAG0B,OAAO,aAAPA,OAAO,wCAAPA,OAAO,CAAEC,IAAI,kDAAb,cAAe3B,MAAM;EAEpC,MAAM+C,kBAAkB,GAAGxD,IAAI,CAAC8B,cAAc;EAC9C,MAAM2B,kBAAkB,GAAGzD,IAAI,CAAC0D,cAAc;EAE9C,MAAMC,eAAe,GAAG;IACtBJ,kBAAkB;IAClBJ,mBAAmB;IACnBJ,iBAAiB;IACjBE,aAAa;IACbD,YAAY;IACZvC,MAAM;IACNK,QAAQ;IACRa,aAAa,EAAEjC,eAAe,CAACkC,eAAe;IAC9C4B,kBAAkB;IAClBC,kBAAkB;IAClB1D,WAAW;IACXS;EACF,CAAC;EAED,OAAO,MAAMoD,yBAAyB,CAAC5D,IAAI,EAAEsD,OAAO,EAAEK,eAAe,CAAC;AACxE;;AASA,OAAO,eAAeC,yBAAyB,CAAC5D,IAAI,EAAE6D,WAAoB,EAAEtC,OAAY,EAAE;EACxF,IAAI,CAACvB,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EAEAA,IAAI,CAAC2B,aAAa,GAAGjC,eAAe,CAACkC,eAAe;EACpD5B,IAAI,CAAC6B,cAAc,GAAG7B,IAAI,CAAC8B,cAAc;EACzC9B,IAAI,CAAC+B,eAAe,GAAG/B,IAAI,CAACgC,SAAS;EAErC,MAAM;IAACW,QAAQ;IAAE1C;EAAU,CAAC,GAAG,MAAMJ,kBAAkB,CAAC;IAACyD,OAAO,EAAEO,WAAW;IAAEtC;EAAO,CAAC,CAAC;EAExF,IAAItB,UAAU,EAAE;IACdD,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5BD,IAAI,CAACwB,OAAO,GAAG;MAACX,GAAG,EAAEZ,UAAU,CAAC6D,OAAO,WAAIvC,OAAO,CAACT,QAAQ,QAAK,EAAE;IAAC,CAAC;EACtE;EAEAd,IAAI,CAACS,MAAM,GAAGD,SAAS,CAACR,IAAI,CAACS,MAAM,CAAC;EACpCT,IAAI,CAACiC,IAAI,GAAGlC,WAAW,CAACC,IAAI,CAAC;EAC7BA,IAAI,CAAC2C,QAAQ,GAAGA,QAAQ;EACxB3C,IAAI,CAAC0B,EAAE,GAAG1B,IAAI,CAACC,UAAU;EAEzB,OAAOD,IAAI;AACb;;AASA,SAASsC,8BAA8B,CAACtC,IAAmB,EAA2B;EAAA;EACpF,OAAO,CAAAA,IAAI,aAAJA,IAAI,2CAAJA,IAAI,CAAE+D,UAAU,qDAAhB,iBAAmB,yBAAyB,CAAC,MAAI/D,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEgE,cAAc;AAC9E"}
@@ -1,3 +1,3 @@
1
1
 
2
- export const VERSION = typeof "3.3.3" !== 'undefined' ? "3.3.3" : 'latest';
2
+ export const VERSION = typeof "3.3.4" !== 'undefined' ? "3.3.4" : 'latest';
3
3
  //# sourceMappingURL=version.js.map
@@ -9,7 +9,7 @@ function getTileType(tile) {
9
9
  if (!tile.contentUrl) {
10
10
  return tiles_1.TILE_TYPE.EMPTY;
11
11
  }
12
- const contentUrl = tile.contentUrl;
12
+ const contentUrl = tile.contentUrl.split('?')[0]; // Discard query string
13
13
  const fileExtension = contentUrl.split('.').pop();
14
14
  switch (fileExtension) {
15
15
  case 'pnts':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/3d-tiles",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "description": "3D Tiles, an open standard for streaming massive heterogeneous 3D geospatial datasets.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -34,16 +34,16 @@
34
34
  "build-bundle": "esbuild src/bundle.ts --bundle --outfile=dist/dist.min.js"
35
35
  },
36
36
  "dependencies": {
37
- "@loaders.gl/draco": "3.3.3",
38
- "@loaders.gl/gltf": "3.3.3",
39
- "@loaders.gl/loader-utils": "3.3.3",
40
- "@loaders.gl/math": "3.3.3",
41
- "@loaders.gl/tiles": "3.3.3",
37
+ "@loaders.gl/draco": "3.3.4",
38
+ "@loaders.gl/gltf": "3.3.4",
39
+ "@loaders.gl/loader-utils": "3.3.4",
40
+ "@loaders.gl/math": "3.3.4",
41
+ "@loaders.gl/tiles": "3.3.4",
42
42
  "@math.gl/core": "^3.5.1",
43
43
  "@math.gl/geospatial": "^3.5.1"
44
44
  },
45
45
  "peerDependencies": {
46
46
  "@loaders.gl/core": "^3.2.0"
47
47
  },
48
- "gitHead": "44f4e272d8216f226a332eaae81e832e44c7e474"
48
+ "gitHead": "1d1a722ea9a04665acbe41359dfd01bf6d43a214"
49
49
  }
@@ -10,7 +10,7 @@ function getTileType(tile) {
10
10
  return TILE_TYPE.EMPTY;
11
11
  }
12
12
 
13
- const contentUrl = tile.contentUrl;
13
+ const contentUrl = tile.contentUrl.split('?')[0]; // Discard query string
14
14
  const fileExtension = contentUrl.split('.').pop();
15
15
  switch (fileExtension) {
16
16
  case 'pnts':