@loaders.gl/tile-converter 5.0.0-alpha.12 → 5.0.0-alpha.14

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 (132) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -4
  3. package/dist/converter.min.cjs +149 -158
  4. package/dist/i3s-server/bin/i3s-server.min.cjs +113 -158
  5. package/dist/index.cjs +17486 -17479
  6. package/dist/index.js +25572 -25560
  7. package/dist/v5/adapters.cjs +540 -190
  8. package/dist/v5/adapters.d.ts +4 -0
  9. package/dist/v5/adapters.js +501 -151
  10. package/dist/v5/archive-source.d.ts +1 -1
  11. package/dist/v5/browser.d.ts +1 -1
  12. package/dist/v5/conversion-api.d.ts +25 -0
  13. package/dist/v5/converter-cli.js +23 -7
  14. package/dist/v5/core.cjs +76 -17
  15. package/dist/v5/core.d.ts +1 -1
  16. package/dist/v5/core.js +69 -10
  17. package/dist/v5/feature-arrow.d.ts +1 -1
  18. package/dist/v5/i3s-mesh-conversion.d.ts +1 -1
  19. package/dist/v5/i3s-mesh-source-features.d.ts +2 -2
  20. package/dist/v5/i3s-mesh-source-material.d.ts +1 -1
  21. package/dist/v5/i3s-mesh-source.d.ts +2 -2
  22. package/dist/v5/i3s-selection-source.d.ts +3 -3
  23. package/dist/v5/index.cjs +11 -6
  24. package/dist/v5/index.d.ts +5 -1
  25. package/dist/v5/index.js +8 -0
  26. package/dist/v5/mesh-conversion.d.ts +3 -3
  27. package/dist/v5/mesh-draco.d.ts +2 -2
  28. package/dist/v5/mesh-features.d.ts +2 -2
  29. package/dist/v5/mesh-source-features.d.ts +4 -4
  30. package/dist/v5/mesh-source-schema.d.ts +2 -2
  31. package/dist/v5/mesh-source-texture.d.ts +3 -3
  32. package/dist/v5/mesh-source.d.ts +5 -5
  33. package/dist/v5/mesh-tileset-sink.d.ts +1 -1
  34. package/dist/v5/mesh.d.ts +1 -1
  35. package/dist/v5/node-conversion.d.ts +2 -0
  36. package/dist/v5/node-i3s-source.d.ts +3 -3
  37. package/dist/v5/node-source.d.ts +1 -1
  38. package/dist/v5/node.cjs +19 -6
  39. package/dist/v5/node.js +19 -6
  40. package/dist/v5/point-cloud-attributes.d.ts +19 -0
  41. package/dist/v5/point-cloud-conversion.d.ts +1 -1
  42. package/dist/v5/point-cloud-copc.d.ts +44 -0
  43. package/dist/v5/point-cloud-file.d.ts +4 -4
  44. package/dist/v5/point-cloud-potree.d.ts +3 -3
  45. package/dist/v5/point-cloud-source-encoder.d.ts +1 -1
  46. package/dist/v5/point-cloud-source.d.ts +1 -1
  47. package/dist/v5/point-cloud-tileset.d.ts +3 -3
  48. package/dist/v5/point-cloud.d.ts +1 -1
  49. package/dist/v5/spatial-conversion.d.ts +1 -1
  50. package/dist/v5/tileset-source.d.ts +1 -1
  51. package/package.json +17 -32
  52. package/src/v4/3d-tiles-converter/3d-tiles-converter.ts +11 -12
  53. package/src/v4/3d-tiles-converter/helpers/3d-tiles-content-converter.ts +7 -3
  54. package/src/v4/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.ts +2 -2
  55. package/src/v4/3d-tiles-converter/helpers/load-i3s.ts +3 -3
  56. package/src/v4/3d-tiles-converter/helpers/texture-atlas.ts +1 -1
  57. package/src/v4/3d-tiles-converter/helpers/validate-i3s-spatial-reference.ts +2 -2
  58. package/src/v4/3d-tiles-converter/json-templates/tileset.ts +58 -39
  59. package/src/v4/converter-cli.ts +3 -3
  60. package/src/v4/deps-installer/deps-installer.ts +3 -3
  61. package/src/v4/i3s-converter/helpers/attribute-metadata-info.ts +1 -1
  62. package/src/v4/i3s-converter/helpers/batch-ids-extensions.ts +9 -10
  63. package/src/v4/i3s-converter/helpers/conversion-gltf.ts +108 -0
  64. package/src/v4/i3s-converter/helpers/coordinate-converter.ts +6 -5
  65. package/src/v4/i3s-converter/helpers/create-scene-server-path.ts +5 -6
  66. package/src/v4/i3s-converter/helpers/feature-attributes.ts +4 -4
  67. package/src/v4/i3s-converter/helpers/geometry-attributes.ts +1 -1
  68. package/src/v4/i3s-converter/helpers/geometry-converter.ts +69 -77
  69. package/src/v4/i3s-converter/helpers/gltf-attributes.ts +58 -74
  70. package/src/v4/i3s-converter/helpers/load-3d-tiles.ts +5 -5
  71. package/src/v4/i3s-converter/helpers/node-debug.ts +7 -3
  72. package/src/v4/i3s-converter/helpers/node-index-document.ts +6 -7
  73. package/src/v4/i3s-converter/helpers/node-pages.ts +3 -4
  74. package/src/v4/i3s-converter/helpers/preprocess-3d-tiles.ts +1 -1
  75. package/src/v4/i3s-converter/helpers/tileset-traversal.ts +1 -1
  76. package/src/v4/i3s-converter/i3s-converter.ts +29 -31
  77. package/src/v4/i3s-converter/json-templates/geometry-definitions.ts +71 -66
  78. package/src/v4/i3s-converter/json-templates/layers.ts +97 -132
  79. package/src/v4/i3s-converter/json-templates/metadata.ts +31 -21
  80. package/src/v4/i3s-converter/json-templates/node.ts +60 -74
  81. package/src/v4/i3s-converter/json-templates/scene-server.ts +36 -27
  82. package/src/v4/i3s-converter/json-templates/shared-resources.ts +62 -123
  83. package/src/v4/i3s-converter/json-templates/store.ts +39 -58
  84. package/src/v4/i3s-converter/types.ts +4 -4
  85. package/src/v4/i3s-server/controllers/slpk-controller.ts +3 -3
  86. package/src/v4/i3s-server/utils/create-scene-server.ts +3 -3
  87. package/src/v4/lib/utils/builder-input.ts +8 -0
  88. package/src/v4/lib/utils/conversion-dump.ts +5 -1
  89. package/src/v4/lib/utils/file-utils.ts +1 -1
  90. package/src/v4/lib/utils/hash-string.ts +21 -0
  91. package/src/v4/lib/utils/lod-conversion-utils.ts +3 -3
  92. package/src/v4/pgm-loader.ts +2 -2
  93. package/src/v5/adapters.ts +5 -0
  94. package/src/v5/archive-source.ts +4 -4
  95. package/src/v5/browser.ts +1 -0
  96. package/src/v5/conversion-api.ts +115 -8
  97. package/src/v5/conversion-archive.ts +2 -2
  98. package/src/v5/core.ts +1 -0
  99. package/src/v5/feature-arrow.ts +2 -2
  100. package/src/v5/i3s-mesh-conversion.ts +2 -2
  101. package/src/v5/i3s-mesh-source-features.ts +3 -3
  102. package/src/v5/i3s-mesh-source-material.ts +18 -11
  103. package/src/v5/i3s-mesh-source.ts +2 -2
  104. package/src/v5/i3s-selection-source.ts +4 -4
  105. package/src/v5/index.ts +15 -0
  106. package/src/v5/mesh-conversion.ts +4 -4
  107. package/src/v5/mesh-draco.ts +2 -2
  108. package/src/v5/mesh-features.ts +3 -3
  109. package/src/v5/mesh-hierarchy.ts +1 -1
  110. package/src/v5/mesh-source-features.ts +137 -55
  111. package/src/v5/mesh-source-schema.ts +10 -4
  112. package/src/v5/mesh-source-texture.ts +49 -19
  113. package/src/v5/mesh-source.ts +65 -46
  114. package/src/v5/mesh-tileset-archive.ts +1 -1
  115. package/src/v5/mesh-tileset-sink.ts +1 -1
  116. package/src/v5/mesh.ts +1 -1
  117. package/src/v5/node-cli.ts +4 -0
  118. package/src/v5/node-conversion.ts +19 -2
  119. package/src/v5/node-source.ts +2 -2
  120. package/src/v5/point-cloud-attributes.ts +113 -0
  121. package/src/v5/point-cloud-conversion.ts +1 -1
  122. package/src/v5/point-cloud-copc.ts +289 -0
  123. package/src/v5/point-cloud-file.ts +8 -8
  124. package/src/v5/point-cloud-potree.ts +8 -4
  125. package/src/v5/point-cloud-source-encoder.ts +1 -1
  126. package/src/v5/point-cloud-source.ts +1 -1
  127. package/src/v5/point-cloud-spatial.ts +2 -2
  128. package/src/v5/point-cloud-tileset.ts +4 -4
  129. package/src/v5/point-cloud.ts +3 -3
  130. package/src/v5/selected-mesh-source.ts +4 -4
  131. package/src/v5/spatial-conversion.ts +2 -2
  132. package/src/v5/tileset-source.ts +2 -2
package/dist/v5/index.js CHANGED
@@ -42,6 +42,11 @@ import {
42
42
  import { createPointCloudTilesetSink } from "@loaders.gl/tile-converter/v5/adapters";
43
43
  import { transformPointCloudSourceTile } from "@loaders.gl/tile-converter/v5/adapters";
44
44
  import { createI3SMeshTilesetConversionSource } from "@loaders.gl/tile-converter/v5/adapters";
45
+ import { mapPointCloudAttributes } from "@loaders.gl/tile-converter/v5/adapters";
46
+ import {
47
+ encodePointCloudCOPC,
48
+ createCOPCConversionCodec
49
+ } from "@loaders.gl/tile-converter/v5/adapters";
45
50
  import { convertPointCloudToTileset } from "@loaders.gl/tile-converter/v5/adapters";
46
51
  import {
47
52
  encodePotreeArchive,
@@ -57,6 +62,7 @@ export {
57
62
  convertPointCloudToPotree,
58
63
  convertPointCloudToTileset,
59
64
  convertTileset,
65
+ createCOPCConversionCodec,
60
66
  createI3SConversionSpatialContext,
61
67
  createI3SMeshConversionCodec,
62
68
  createI3SMeshSink,
@@ -74,6 +80,7 @@ export {
74
80
  createTiles3DConversionSpatialContext,
75
81
  createTilesetConversionSource,
76
82
  encodeMeshTile,
83
+ encodePointCloudCOPC,
77
84
  encodePointCloudSource,
78
85
  encodePointCloudSourceTile,
79
86
  encodePointCloudTile,
@@ -82,6 +89,7 @@ export {
82
89
  encodeTileConversionArchiveInBatches,
83
90
  extractMeshVertices,
84
91
  inspectTileset,
92
+ mapPointCloudAttributes,
85
93
  openPointCloudFile,
86
94
  transformPointCloudSourceTile,
87
95
  traversePointCloudSource,
@@ -1,6 +1,6 @@
1
- import type { TilesetSpatialReference } from '@loaders.gl/tiles';
2
- import type { MeshGeometry } from '@loaders.gl/schema';
3
- import type { LoadLibraryOptions } from '@loaders.gl/worker-utils';
1
+ import type { TilesetSpatialReference } from '@loaders.gl/tiles-3d';
2
+ import type { MeshGeometry } from '@loaders.gl/core/schema';
3
+ import type { LoadLibraryOptions } from '@loaders.gl/core/worker-utils';
4
4
  import type { TileConversionCodec } from '@loaders.gl/tile-converter/v5/core';
5
5
  import type { Tiles3DConversionSpatialContext, I3SConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
6
6
  import type { MeshTileFeatures } from './mesh-features.js';
@@ -1,5 +1,5 @@
1
- import type { MeshGeometry } from '@loaders.gl/schema';
2
- import type { LoadLibraryOptions } from '@loaders.gl/worker-utils';
1
+ import type { MeshGeometry } from '@loaders.gl/core/schema';
2
+ import type { LoadLibraryOptions } from '@loaders.gl/core/worker-utils';
3
3
  import { type MeshTileOptions } from './mesh.js';
4
4
  /** Encodes the validated single-mesh profile with lossless Edge Breaker and no raw fallback. */
5
5
  export declare function encodeDracoMeshTile(geometry: MeshGeometry, options: MeshTileOptions, libraryOptions?: LoadLibraryOptions): Promise<{
@@ -1,6 +1,6 @@
1
- import type { MeshGeometry } from '@loaders.gl/schema';
1
+ import type { MeshGeometry } from '@loaders.gl/core/schema';
2
2
  import type { GLTFScenegraph } from '@loaders.gl/gltf';
3
- import type { I3SMeshFeatures } from '@loaders.gl/i3s';
3
+ import type { I3SMeshFeatures } from '@loaders.gl/tiles-3d/i3s';
4
4
  /** Explicit-schema Arrow features; stable identifiers are distinct from geometry row indices. */
5
5
  export type MeshTileFeatures = Pick<I3SMeshFeatures, 'batches' | 'triangleFeatureIndices' | 'featureIdField'>;
6
6
  /** Expands shared vertices so each complete triangle retains its own feature row through Draco. */
@@ -1,6 +1,6 @@
1
- import type { MeshGeometry } from '@loaders.gl/schema';
2
- import type { GLTFPostprocessed, GLTFMeshPrimitivePostprocessed } from '@loaders.gl/gltf';
3
- import type { I3SMeshFeatures } from '@loaders.gl/i3s';
1
+ import type { MeshGeometry } from '@loaders.gl/core/schema';
2
+ import type { GLTFWithBuffers, GLTFMeshPrimitive } from '@loaders.gl/gltf';
3
+ import type { I3SMeshFeatures } from '@loaders.gl/tiles-3d/i3s';
4
4
  import type { FeatureArrowBatchOptions } from './feature-arrow.js';
5
5
  import type { MeshSourceSchemaOptions } from './mesh-source-schema.js';
6
6
  /** Explicit source feature mapping; target type changes must be authorized separately. */
@@ -13,7 +13,7 @@ export interface MeshSourceFeatureOptions extends FeatureArrowBatchOptions {
13
13
  readonly integer64Encoding?: 'decimal-string';
14
14
  }
15
15
  /** Extracts legacy batch tables or one decoded modern property table and validates geometry ownership. */
16
- export declare function extractMeshFeatures(gltf: GLTFPostprocessed, primitive: GLTFMeshPrimitivePostprocessed, payload: {
16
+ export declare function extractMeshFeatures(gltf: GLTFWithBuffers, primitive: GLTFMeshPrimitive, payload: {
17
17
  batchTableJson?: Record<string, unknown>;
18
18
  header?: {
19
19
  batchLength?: number;
@@ -1,4 +1,4 @@
1
- import type { GLTFPostprocessed } from '@loaders.gl/gltf';
1
+ import type { GLTF } from '@loaders.gl/gltf';
2
2
  import type { MeshSourceFeatureOptions } from './mesh-source-features.js';
3
3
  /** Class and identifier selection for a mapping derived from an inline glTF schema. */
4
4
  export type MeshSourceSchemaOptions = Omit<MeshSourceFeatureOptions, 'schema' | 'rawMetadataField'>;
@@ -9,4 +9,4 @@ export type MeshSourceSchemaOptions = Omit<MeshSourceFeatureOptions, 'schema' |
9
9
  * Arrays, enums, vectors, transformed numeric properties and external schemas fail explicitly.
10
10
  * This does not authorize destination type changes or loss of source class semantics.
11
11
  */
12
- export declare function createMeshSourceFeatureOptions(gltf: GLTFPostprocessed, options: MeshSourceSchemaOptions): MeshSourceFeatureOptions;
12
+ export declare function createMeshSourceFeatureOptions(gltf: GLTF, options: MeshSourceSchemaOptions): MeshSourceFeatureOptions;
@@ -1,6 +1,6 @@
1
- import type { GLTFMaterialPostprocessed } from '@loaders.gl/gltf';
1
+ import type { GLTFMaterial, GLTFWithBuffers } from '@loaders.gl/gltf';
2
2
  import type { MeshTileTexture } from './mesh.js';
3
3
  /** Maps a buffer-view or base64 PNG/JPEG image, sampling and UV transform without decoding pixels. */
4
- export declare function mapMeshSourceTexture(textureInfo: NonNullable<GLTFMaterialPostprocessed['pbrMetallicRoughness']>['baseColorTexture']): MeshTileTexture;
4
+ export declare function mapMeshSourceTexture(gltf: GLTFWithBuffers, textureInfo: NonNullable<GLTFMaterial['pbrMetallicRoughness']>['baseColorTexture']): MeshTileTexture;
5
5
  /** Resolves one external encoded image through an explicitly supplied application reader. */
6
- export declare function resolveMeshSourceTexture(textureInfo: NonNullable<GLTFMaterialPostprocessed['pbrMetallicRoughness']>['baseColorTexture'], readExternalResource: ((uri: string, contentUri: string | undefined, signal?: AbortSignal) => Promise<Uint8Array>) | undefined, contentUri: string | undefined, signal?: AbortSignal): Promise<MeshTileTexture>;
6
+ export declare function resolveMeshSourceTexture(gltf: GLTFWithBuffers, textureInfo: NonNullable<GLTFMaterial['pbrMetallicRoughness']>['baseColorTexture'], readExternalResource: ((uri: string, contentUri: string | undefined, signal?: AbortSignal) => Promise<Uint8Array>) | undefined, contentUri: string | undefined, signal?: AbortSignal): Promise<MeshTileTexture>;
@@ -1,12 +1,12 @@
1
- import type { GLTFMaterialPostprocessed } from '@loaders.gl/gltf';
2
- import type { Tileset3D, TilesetSourceMetadata } from '@loaders.gl/tiles';
1
+ import type { GLTFWithBuffers, GLTFMaterial } from '@loaders.gl/gltf';
2
+ import type { Tileset3D, TilesetSourceMetadata } from '@loaders.gl/tiles-3d';
3
3
  import type { TileConversionSource } from '@loaders.gl/tile-converter/v5/core';
4
4
  import type { TilesetConversionSourceOptions } from '@loaders.gl/tile-converter/v5/core';
5
5
  import type { MeshConversionInput } from './mesh-conversion.js';
6
6
  import type { MeshTileMaterial } from './mesh.js';
7
7
  import type { MeshSourceFeatureOptions } from './mesh-source-features.js';
8
8
  import type { MeshSourceSchemaOptions } from './mesh-source-schema.js';
9
- import type { I3SMeshFeatures } from '@loaders.gl/i3s';
9
+ import type { I3SMeshFeatures } from '@loaders.gl/tiles-3d/i3s';
10
10
  export type { MeshSourceFeatureOptions } from './mesh-source-features.js';
11
11
  /** Source mesh with optional explicit-schema feature data and triangle association. */
12
12
  export interface MeshSourceResource extends MeshConversionInput {
@@ -27,7 +27,7 @@ export interface MeshTilesetSourceOptions extends TilesetConversionSourceOptions
27
27
  * optional buffer-view or base64 data-URI PNG/JPEG images, TEXCOORD_0, glTF sampling and
28
28
  * KHR_texture_transform controls on TEXCOORD_0. Decode content with
29
29
  * `gltf.excludeExtensions: {KHR_texture_transform: false}` to retain authored UVs/transforms.
30
- * Triangle strips are expanded with alternating winding; the glTF loader already expands fans.
30
+ * Triangle strips are expanded with alternating winding; fans are expanded explicitly at the mesh boundary.
31
31
  * Shared traversal retains placement identity and unloads content according to the supplied policy.
32
32
  * The adapter applies node transforms, glTF up-axis correction, RTC translation, and tile placement
33
33
  * once, retaining Float64 absolute positions and inverse-transpose unit normals. Animation, skins,
@@ -41,4 +41,4 @@ export interface MeshTilesetSourceOptions extends TilesetConversionSourceOptions
41
41
  */
42
42
  export declare function createMeshTilesetConversionSource(tileset: Tileset3D, options?: MeshTilesetSourceOptions): TileConversionSource<TilesetSourceMetadata, MeshSourceResource>;
43
43
  /** Maps supported PBR controls and an embedded base-color image, rejecting unmapped semantics. */
44
- export declare function mapMeshSourceMaterial(material: GLTFMaterialPostprocessed | undefined, readExternalResource: MeshTilesetSourceOptions['readExternalResource'], contentUri: string | undefined, signal?: AbortSignal): Promise<MeshTileMaterial | undefined>;
44
+ export declare function mapMeshSourceMaterial(material: GLTFMaterial | undefined, readExternalResource: MeshTilesetSourceOptions['readExternalResource'], contentUri: string | undefined, signal: AbortSignal | undefined, gltf: GLTFWithBuffers): Promise<MeshTileMaterial | undefined>;
@@ -1,4 +1,4 @@
1
- import type { Tiles3DTilesetJSON, Tiles3DTileJSON } from '@loaders.gl/3d-tiles';
1
+ import type { Tiles3DTilesetJSON, Tiles3DTileJSON } from '@loaders.gl/tiles-3d/3d-tiles';
2
2
  import type { TileConversionSink } from '@loaders.gl/tile-converter/v5/core';
3
3
  import type { BrowserTileConversionFile } from '@loaders.gl/tile-converter/v5/core';
4
4
  import type { EncodedMeshConversionResource } from './mesh-conversion.js';
package/dist/v5/mesh.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { GLTFScenegraph } from '@loaders.gl/gltf';
2
- import type { MeshAttribute, MeshGeometry } from '@loaders.gl/schema';
2
+ import type { MeshAttribute, MeshGeometry } from '@loaders.gl/core/schema';
3
3
  import { type MeshTileFeatures } from './mesh-features.js';
4
4
  /** Explicit glTF wrapping and filtering for the selected base-color image. */
5
5
  export interface MeshTileSampler {
@@ -5,6 +5,8 @@ import type { NodeTilesetConversionSourceOptions } from './node-source.js';
5
5
  export type NodeTileConversionOutputFormat = '3d-tiles' | '3tz' | 'slpk';
6
6
  /** Selected static mesh conversion with application-owned Node output. */
7
7
  export interface NodeTileConversionOptions extends Omit<NodeTilesetConversionSourceOptions, 'format'> {
8
+ /** Include portable stages and Node setup/output elapsed milliseconds in the report. */
9
+ readonly profile?: boolean;
8
10
  /** Explicit 3D Tiles, I3S layer or indexed archive source. */
9
11
  readonly format?: '3d-tiles' | '3tz' | 'i3s' | 'slpk';
10
12
  /** Explicit I3S attribute mapping, also supplied by the CLI feature-schema file. */
@@ -14,7 +14,7 @@ export declare function createNodeI3SConversionSource(options: NodeI3SConversion
14
14
  metadataBytes: number;
15
15
  kind: "i3s";
16
16
  rootUrl: string;
17
- layer: import("@loaders.gl/i3s").SceneLayer3D;
17
+ layer: import("@loaders.gl/tiles-3d/i3s").SceneLayer3D;
18
18
  resources: readonly import("@loaders.gl/tile-converter/v5/adapters").I3SMeshConversionResourceDescriptor[];
19
19
  }>;
20
20
  /** Creates an original-coordinate selected mesh source using application-provided Draco assets. */
@@ -23,14 +23,14 @@ export declare function createNodeI3SConversionSource(options: NodeI3SConversion
23
23
  inspect: () => Promise<import("@loaders.gl/tile-converter/v5/adapters").I3SMeshConversionInspection>;
24
24
  read(): AsyncGenerator<{
25
25
  id: string;
26
- features?: import("@loaders.gl/i3s").I3SMeshFeatures;
26
+ features?: import("@loaders.gl/tiles-3d/i3s").I3SMeshFeatures;
27
27
  sourceLayerType?: "3DObject" | "IntegratedMesh";
28
28
  contentResourceId?: string;
29
29
  contentPrimitive?: {
30
30
  readonly index: number;
31
31
  readonly last: boolean;
32
32
  };
33
- mesh: import("@loaders.gl/schema").MeshGeometry;
33
+ mesh: import("@loaders.gl/core/schema").MeshGeometry;
34
34
  normalReferenceFrame?: "earth-centered" | "vertex-reference-frame";
35
35
  material?: import("@loaders.gl/tile-converter/v5/adapters").MeshTileMaterial;
36
36
  origin: readonly [number, number, number];
@@ -1,4 +1,4 @@
1
- import type { ReadableFile } from '@loaders.gl/loader-utils';
1
+ import type { ReadableFile } from '@loaders.gl/core/loader-utils';
2
2
  import type { BrowserTilesetConversionInspection, BrowserTilesetConversionInputResource, TileConversionSource } from '@loaders.gl/tile-converter/v5/core';
3
3
  /** Maximum budgets for the initial Node source profile; callers may lower them. */
4
4
  export declare const NODE_TILESET_LIMITS: {
package/dist/v5/node.cjs CHANGED
@@ -42,7 +42,7 @@ module.exports = __toCommonJS(node_exports);
42
42
  var import_promises = require("node:fs/promises");
43
43
  var import_node_path = require("node:path");
44
44
  var import_node_url = require("node:url");
45
- var import_d_tiles2 = require("@loaders.gl/3d-tiles");
45
+ var import_d_tiles2 = require("@loaders.gl/tiles-3d/3d-tiles");
46
46
  var import_core2 = require("@loaders.gl/tile-converter/v5/core");
47
47
 
48
48
  // src/v5/conversion-api.ts
@@ -139,9 +139,9 @@ function createTileConversionResourceFetcher(options) {
139
139
  }
140
140
 
141
141
  // src/v5/archive-source.ts
142
- var import_loader_utils = require("@loaders.gl/loader-utils");
143
- var import_i3s = require("@loaders.gl/i3s");
144
- var import_d_tiles = require("@loaders.gl/3d-tiles");
142
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
143
+ var import_i3s = require("@loaders.gl/tiles-3d/i3s");
144
+ var import_d_tiles = require("@loaders.gl/tiles-3d/3d-tiles");
145
145
  var import_core = require("@loaders.gl/tile-converter/v5/core");
146
146
  async function openTileConversionArchive(descriptor, maxInputBytes, signal, fetcher = fetch) {
147
147
  signal.throwIfAborted();
@@ -665,6 +665,8 @@ async function createNodeI3SConversionSource(options) {
665
665
 
666
666
  // src/v5/node-conversion.ts
667
667
  async function convertNodeTileset(options) {
668
+ const started = options.profile ? performance.now() : 0;
669
+ let setupMilliseconds = 0;
668
670
  const signal = options.signal ?? new AbortController().signal;
669
671
  const maxOutputBytes = options.maxOutputBytes ?? import_adapters2.SELECTED_MESH_LIMITS.maxOutputBytes;
670
672
  if (!["3d-tiles", "3tz", "slpk"].includes(options.outputFormat) || !Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 1 || maxOutputBytes > import_adapters2.SELECTED_MESH_LIMITS.maxOutputBytes)
@@ -705,7 +707,7 @@ async function convertNodeTileset(options) {
705
707
  let report;
706
708
  try {
707
709
  const inspection = await rawSource.inspect(signal);
708
- await import("@loaders.gl/polyfills");
710
+ await import("@loaders.gl/core/polyfills");
709
711
  const { getDracoLibraryOptions } = await import("@loaders.gl/draco/bundled");
710
712
  const dracoLibraryOptions = getDracoLibraryOptions({
711
713
  decoderProfile: "full",
@@ -733,7 +735,9 @@ async function convertNodeTileset(options) {
733
735
  }
734
736
  );
735
737
  const { source, spatialContext, geometricError } = selection;
738
+ setupMilliseconds = options.profile ? performance.now() - started : 0;
736
739
  const common = {
740
+ profile: options.profile,
737
741
  source,
738
742
  signal,
739
743
  measureInputBytes: import_adapters2.measureMeshBytes,
@@ -784,6 +788,7 @@ async function convertNodeTileset(options) {
784
788
  } finally {
785
789
  await rawSource.close();
786
790
  }
791
+ const outputStarted = options.profile ? performance.now() : 0;
787
792
  signal.throwIfAborted();
788
793
  if (options.outputFormat !== "3d-tiles" && !options.output) {
789
794
  for await (const chunk of (0, import_adapters2.encodeTileConversionArchiveInBatches)(files, {
@@ -801,7 +806,15 @@ async function convertNodeTileset(options) {
801
806
  maxOutputBytes,
802
807
  signal
803
808
  );
804
- return report;
809
+ return report.timings ? {
810
+ ...report,
811
+ timings: {
812
+ ...report.timings,
813
+ setupMilliseconds,
814
+ outputMilliseconds: performance.now() - outputStarted,
815
+ totalMilliseconds: performance.now() - started
816
+ }
817
+ } : report;
805
818
  }
806
819
  async function writeNodeTileConversionOutput(files, output, format, maxOutputBytes, signal) {
807
820
  signal.throwIfAborted();
package/dist/v5/node.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { open, realpath } from "node:fs/promises";
3
3
  import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
5
- import { parse3DTilesArchive as parse3DTilesArchive2 } from "@loaders.gl/3d-tiles";
5
+ import { parse3DTilesArchive as parse3DTilesArchive2 } from "@loaders.gl/tiles-3d/3d-tiles";
6
6
  import {
7
7
  createBrowserTilesetConversionSource,
8
8
  TileConversionError as TileConversionError3
@@ -102,9 +102,9 @@ function createTileConversionResourceFetcher(options) {
102
102
  }
103
103
 
104
104
  // src/v5/archive-source.ts
105
- import { BlobFile, HttpFile } from "@loaders.gl/loader-utils";
106
- import { parseSLPKArchive } from "@loaders.gl/i3s";
107
- import { parse3DTilesArchive } from "@loaders.gl/3d-tiles";
105
+ import { BlobFile, HttpFile } from "@loaders.gl/core/loader-utils";
106
+ import { parseSLPKArchive } from "@loaders.gl/tiles-3d/i3s";
107
+ import { parse3DTilesArchive } from "@loaders.gl/tiles-3d/3d-tiles";
108
108
  import { TileConversionError as TileConversionError2 } from "@loaders.gl/tile-converter/v5/core";
109
109
  async function openTileConversionArchive(descriptor, maxInputBytes, signal, fetcher = fetch) {
110
110
  signal.throwIfAborted();
@@ -643,6 +643,8 @@ async function createNodeI3SConversionSource(options) {
643
643
 
644
644
  // src/v5/node-conversion.ts
645
645
  async function convertNodeTileset(options) {
646
+ const started = options.profile ? performance.now() : 0;
647
+ let setupMilliseconds = 0;
646
648
  const signal = options.signal ?? new AbortController().signal;
647
649
  const maxOutputBytes = options.maxOutputBytes ?? SELECTED_MESH_LIMITS.maxOutputBytes;
648
650
  if (!["3d-tiles", "3tz", "slpk"].includes(options.outputFormat) || !Number.isSafeInteger(maxOutputBytes) || maxOutputBytes < 1 || maxOutputBytes > SELECTED_MESH_LIMITS.maxOutputBytes)
@@ -683,7 +685,7 @@ async function convertNodeTileset(options) {
683
685
  let report;
684
686
  try {
685
687
  const inspection = await rawSource.inspect(signal);
686
- await import("@loaders.gl/polyfills");
688
+ await import("@loaders.gl/core/polyfills");
687
689
  const { getDracoLibraryOptions } = await import("@loaders.gl/draco/bundled");
688
690
  const dracoLibraryOptions = getDracoLibraryOptions({
689
691
  decoderProfile: "full",
@@ -711,7 +713,9 @@ async function convertNodeTileset(options) {
711
713
  }
712
714
  );
713
715
  const { source, spatialContext, geometricError } = selection;
716
+ setupMilliseconds = options.profile ? performance.now() - started : 0;
714
717
  const common = {
718
+ profile: options.profile,
715
719
  source,
716
720
  signal,
717
721
  measureInputBytes: measureMeshBytes,
@@ -762,6 +766,7 @@ async function convertNodeTileset(options) {
762
766
  } finally {
763
767
  await rawSource.close();
764
768
  }
769
+ const outputStarted = options.profile ? performance.now() : 0;
765
770
  signal.throwIfAborted();
766
771
  if (options.outputFormat !== "3d-tiles" && !options.output) {
767
772
  for await (const chunk of encodeTileConversionArchiveInBatches(files, {
@@ -779,7 +784,15 @@ async function convertNodeTileset(options) {
779
784
  maxOutputBytes,
780
785
  signal
781
786
  );
782
- return report;
787
+ return report.timings ? {
788
+ ...report,
789
+ timings: {
790
+ ...report.timings,
791
+ setupMilliseconds,
792
+ outputMilliseconds: performance.now() - outputStarted,
793
+ totalMilliseconds: performance.now() - started
794
+ }
795
+ } : report;
783
796
  }
784
797
  async function writeNodeTileConversionOutput(files, output, format, maxOutputBytes, signal) {
785
798
  signal.throwIfAborted();
@@ -0,0 +1,19 @@
1
+ import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
2
+ /** Explicit source-name mapping and authorized semantic losses. */
3
+ export interface PointCloudAttributeMapping {
4
+ /** Destination attribute name to source attribute name. Values and normalization remain unchanged. */
5
+ readonly attributes: Readonly<Record<string, string>>;
6
+ /** Source attributes intentionally omitted, each with a nonempty reason. */
7
+ readonly drop?: Readonly<Record<string, string>>;
8
+ }
9
+ /** Decoded mapped rows and a record of every authorized omission. */
10
+ export interface MappedPointCloud {
11
+ /** Mesh with renamed attributes sharing immutable source values. */
12
+ readonly mesh: Mesh;
13
+ /** Explicit source-name/reason pairs, sorted deterministically. */
14
+ readonly droppedAttributes: Readonly<Record<string, string>>;
15
+ }
16
+ /** Maps decoded point attributes without implicit aliases, casts, projection or silent omissions. */
17
+ export declare function mapPointCloudAttributes(input: Mesh | MeshArrowTable, mapping: PointCloudAttributeMapping): MappedPointCloud;
18
+ /** Converts decoded point input after optional retained-buffer accounting and null validation. */
19
+ export declare function getPointCloudMesh(input: Mesh | MeshArrowTable, maxInputBytes?: number): Mesh;
@@ -1,4 +1,4 @@
1
- import type { PointCloudTilesetSource } from '@loaders.gl/tiles';
1
+ import type { PointCloudTilesetSource } from '@loaders.gl/tiles-3d';
2
2
  import type { TileConversionProgress, TileConversionReport, TileConversionSink } from '@loaders.gl/tile-converter/v5/core';
3
3
  import type { PointCloudSourceTile } from '@loaders.gl/tile-converter/v5/core';
4
4
  import type { EncodedPointCloudSourceTile, EncodePointCloudSourceOptions } from './point-cloud-source-encoder.js';
@@ -0,0 +1,44 @@
1
+ import { type COPCWriterOptions } from '@loaders.gl/tiles-3d/copc';
2
+ import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
3
+ import { type TileConversionCodec } from '@loaders.gl/tile-converter/v5/core';
4
+ import { type PointCloudAttributeMapping } from './point-cloud-attributes.js';
5
+ /** Bounded, explicitly placed COPC batch authoring. */
6
+ export interface EncodePointCloudCOPCOptions {
7
+ /** All attribute aliases and semantic omissions must be explicit. */
8
+ readonly mapping: PointCloudAttributeMapping;
9
+ /** LAS axis scales; positions must already be absolute coordinates in the declared CRS. */
10
+ readonly scale: readonly [number, number, number];
11
+ /** LAS axis offsets used for signed int32 quantization. */
12
+ readonly offset: readonly [number, number, number];
13
+ /** Explicit OGC WKT CRS declaration; no inference or reprojection is performed. */
14
+ readonly wkt: string;
15
+ /** Maximum Euclidean quantization error in source units. */
16
+ readonly maxPositionError: number;
17
+ /** Maximum distinct retained source buffer bytes; default 64 MiB. */
18
+ readonly maxInputBytes?: number;
19
+ /** Maximum rows in one batch; default 1000000. */
20
+ readonly maxPoints?: number;
21
+ /** Maximum completed encoded bytes; default 128 MiB. Writer temporary memory is additional. */
22
+ readonly maxOutputBytes?: number;
23
+ /** Explicit LAS Extra Bytes names for custom typed attributes, including exact 64-bit IDs. */
24
+ readonly extraBytes?: NonNullable<COPCWriterOptions['copc']>['extraBytes'];
25
+ /** Optional octree organization forwarded to the owning COPC writer. */
26
+ readonly organization?: Pick<NonNullable<COPCWriterOptions['copc']>, 'nodePointLimit' | 'maximumDepth' | 'hierarchyPageDepth' | 'spacing'>;
27
+ /** Cancellation before validation and before/after synchronous writer execution. */
28
+ readonly signal?: AbortSignal;
29
+ }
30
+ /** A complete COPC file and its explicit precision/loss report. */
31
+ export interface EncodedPointCloudCOPC {
32
+ /** Range-readable COPC 1.0 / LAZ 1.4 bytes. */
33
+ readonly copc: ArrayBuffer;
34
+ /** Exact encoded point count. */
35
+ readonly pointCount: number;
36
+ /** Maximum reconstructed Euclidean position error. */
37
+ readonly maximumPositionError: number;
38
+ /** Authorized attribute omissions and reasons. */
39
+ readonly droppedAttributes: Readonly<Record<string, string>>;
40
+ }
41
+ /** Encodes one decoded point batch as COPC with explicit mappings, CRS and precision gates. */
42
+ export declare function encodePointCloudCOPC(input: Mesh | MeshArrowTable, options: EncodePointCloudCOPCOptions): Promise<EncodedPointCloudCOPC>;
43
+ /** Creates a v5 codec for one independently authored COPC file per decoded input batch. */
44
+ export declare function createCOPCConversionCodec(options: EncodePointCloudCOPCOptions): TileConversionCodec<unknown, Mesh | MeshArrowTable, EncodedPointCloudCOPC>;
@@ -1,7 +1,7 @@
1
- import type { COPCTileSource, COPCSourceLoaderOptions } from '@loaders.gl/copc';
2
- import { PotreeSourceLoader } from '@loaders.gl/potree';
3
- import type { PotreeDataset, PotreeWriterNode, PotreeWriterOptions, PotreeSourceLoaderOptions } from '@loaders.gl/potree';
4
- import type { Mesh, MeshArrowTable, MeshGeometry } from '@loaders.gl/schema';
1
+ import type { COPCTileSource, COPCSourceLoaderOptions } from '@loaders.gl/tiles-3d/copc';
2
+ import { PotreeSourceLoader } from '@loaders.gl/tiles-3d/potree';
3
+ import type { PotreeDataset, PotreeWriterNode, PotreeWriterOptions, PotreeSourceLoaderOptions } from '@loaders.gl/tiles-3d/potree';
4
+ import type { Mesh, MeshArrowTable, MeshGeometry } from '@loaders.gl/core/schema';
5
5
  /** Explicit local-file input; no format is inferred from an extension. */
6
6
  export type OpenPointCloudFileOptions = {
7
7
  /** Maximum retained input Blob size. This does not bound decoded heap. */
@@ -1,6 +1,6 @@
1
- import type { Mesh, MeshArrowTable } from '@loaders.gl/schema';
2
- import { type PointCloudTilerOptions } from '@loaders.gl/schema-utils';
3
- import type { PotreeDataset, PotreeWriterOptions } from '@loaders.gl/potree';
1
+ import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
2
+ import { type PointCloudTilerOptions } from '@loaders.gl/core/schema-utils';
3
+ import type { PotreeDataset, PotreeWriterOptions } from '@loaders.gl/tiles-3d/potree';
4
4
  /** Bounded authoring of one decoded dataset in its already placed native coordinates. */
5
5
  export interface ConvertPointCloudToPotreeOptions {
6
6
  /** Explicit CRS declaration written verbatim; coordinates are not reprojected. */
@@ -1,4 +1,4 @@
1
- import type { PointCloudBoundingVolume, PointCloudCoordinateSystem, PointCloudTilesetSource, TilesetSpatialReference } from '@loaders.gl/tiles';
1
+ import type { PointCloudBoundingVolume, PointCloudCoordinateSystem, PointCloudTilesetSource, TilesetSpatialReference } from '@loaders.gl/tiles-3d';
2
2
  import type { PointCloudSpatialOptions } from './point-cloud-spatial.js';
3
3
  import type { EncodePointCloudTileOptions, EncodedPointCloudTile } from './point-cloud.js';
4
4
  import type { PointCloudSourceTile, TraversePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/core';
@@ -1,4 +1,4 @@
1
- import type { PointCloudTileContent, PointCloudTileHeader, PointCloudTilesetSource } from '@loaders.gl/tiles';
1
+ import type { PointCloudTileContent, PointCloudTileHeader, PointCloudTilesetSource } from '@loaders.gl/tiles-3d';
2
2
  /** A source tile and its decoded point content, including null content when no payload exists. */
3
3
  export type PointCloudSourceTile = {
4
4
  /** Header with the source tile's hierarchy, bounds, and LOD metadata. */
@@ -1,6 +1,6 @@
1
- import type { Mesh, MeshArrowTable } from '@loaders.gl/schema';
2
- import type { PointCloudTilerOptions } from '@loaders.gl/schema-utils';
3
- import type { TilesetSpatialReference } from '@loaders.gl/tiles';
1
+ import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
2
+ import type { PointCloudTilerOptions } from '@loaders.gl/core/schema-utils';
3
+ import type { TilesetSpatialReference } from '@loaders.gl/tiles-3d';
4
4
  import type { BrowserTileConversionFile, TileConversionProgress, TileConversionReport } from '@loaders.gl/tile-converter/v5/core';
5
5
  import type { PointCloudTilesetSinkOptions } from './point-cloud-tileset-sink.js';
6
6
  import type { TileConversionArchiveOptions } from './conversion-archive.js';
@@ -1,4 +1,4 @@
1
- import type { Mesh, MeshArrowTable, MeshAttribute } from '@loaders.gl/schema';
1
+ import type { Mesh, MeshArrowTable, MeshAttribute } from '@loaders.gl/core/schema';
2
2
  /** Options for encoding one Arrow or mesh point batch as a 3D Tiles point tile. */
3
3
  export interface EncodePointCloudTileOptions {
4
4
  /** Optional origin subtracted from absolute positions and stored as the PNTS RTC_CENTER. */
@@ -1,4 +1,4 @@
1
- import type { CreateTilesetSpatialReferenceOptions, I3SSpatialBounds, I3STransformedPositions, I3STransformedGeometry, Tiles3DSpatialBoundingVolume, TilesetSpatialOptions, TilesetSpatialReference } from '@loaders.gl/tiles';
1
+ import type { CreateTilesetSpatialReferenceOptions, I3SSpatialBounds, I3STransformedPositions, I3STransformedGeometry, Tiles3DSpatialBoundingVolume, TilesetSpatialOptions, TilesetSpatialReference } from '@loaders.gl/tiles-3d';
2
2
  /** Portable coordinate operations and output metadata for a 3D Tiles conversion. */
3
3
  export interface Tiles3DConversionSpatialContext {
4
4
  /** Source and selected target CRS, height reference, units, and transformation state. */
@@ -1,4 +1,4 @@
1
- import type { Tileset3D, TilesetContentTraversalItem, TilesetSourceMetadata, TraverseTilesetContentsOptions } from '@loaders.gl/tiles';
1
+ import type { Tileset3D, TilesetContentTraversalItem, TilesetSourceMetadata, TraverseTilesetContentsOptions } from '@loaders.gl/tiles-3d';
2
2
  import type { TileConversionSource } from './conversion-api.js';
3
3
  /** Decoded-content lifetime options for source-backed conversion. */
4
4
  export type TilesetConversionSourceOptions = Pick<TraverseTilesetContentsOptions, 'unloadContent'>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/tile-converter",
3
- "version": "5.0.0-alpha.12",
3
+ "version": "5.0.0-alpha.14",
4
4
  "description": "Converter",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -64,7 +64,6 @@
64
64
  "README.md"
65
65
  ],
66
66
  "browser": {
67
- "archiver": false,
68
67
  "fs": false,
69
68
  "join-images": false,
70
69
  "path": false,
@@ -80,40 +79,26 @@
80
79
  "build-v5-entrypoints": "esbuild src/v5/core.ts src/v5/adapters.ts src/v5/index.ts src/v5/browser.ts --bundle --packages=external --external:@loaders.gl/* --platform=browser --outdir=dist/v5 --format=esm && esbuild src/v5/core.ts src/v5/adapters.ts src/v5/index.ts src/v5/browser.ts --bundle --packages=external --external:@loaders.gl/* --platform=browser --outdir=dist/v5 --format=cjs --out-extension:.js=.cjs && esbuild src/v5/node.ts src/v5/converter-cli.ts --bundle --packages=external --external:@loaders.gl/* --platform=node --outdir=dist/v5 --format=esm && esbuild src/v5/node.ts --bundle --packages=external --external:@loaders.gl/* --platform=node --outdir=dist/v5 --format=cjs --out-extension:.js=.cjs"
81
80
  },
82
81
  "dependencies": {
83
- "@loaders.gl/3d-tiles": "5.0.0-alpha.12",
84
- "@loaders.gl/compression": "5.0.0-alpha.12",
85
- "@loaders.gl/copc": "5.0.0-alpha.12",
86
- "@loaders.gl/crypto": "5.0.0-alpha.12",
87
- "@loaders.gl/draco": "5.0.0-alpha.12",
88
- "@loaders.gl/gltf": "5.0.0-alpha.12",
89
- "@loaders.gl/i3s": "5.0.0-alpha.12",
90
- "@loaders.gl/images": "5.0.0-alpha.12",
91
- "@loaders.gl/loader-utils": "5.0.0-alpha.12",
92
- "@loaders.gl/polyfills": "5.0.0-alpha.12",
93
- "@loaders.gl/potree": "5.0.0-alpha.12",
94
- "@loaders.gl/schema": "5.0.0-alpha.12",
95
- "@loaders.gl/schema-utils": "5.0.0-alpha.12",
96
- "@loaders.gl/textures": "5.0.0-alpha.12",
97
- "@loaders.gl/tiles": "5.0.0-alpha.12",
98
- "@loaders.gl/worker-utils": "5.0.0-alpha.12",
99
- "@loaders.gl/zip": "5.0.0-alpha.12",
100
- "@math.gl/core": "5.0.0-alpha.16",
101
- "@math.gl/crs": "5.0.0-alpha.16",
102
- "@math.gl/culling": "5.0.0-alpha.16",
103
- "@math.gl/geoid": "5.0.0-alpha.16",
104
- "@math.gl/geometry-utils": "5.0.0-alpha.16",
105
- "@math.gl/geospatial": "5.0.0-alpha.16",
82
+ "@loaders.gl/archives": "5.0.0-alpha.14",
83
+ "@loaders.gl/compression": "5.0.0-alpha.14",
84
+ "@loaders.gl/core": "5.0.0-alpha.14",
85
+ "@loaders.gl/crypto": "5.0.0-alpha.14",
86
+ "@loaders.gl/draco": "5.0.0-alpha.14",
87
+ "@loaders.gl/gltf": "5.0.0-alpha.14",
88
+ "@loaders.gl/images": "5.0.0-alpha.14",
89
+ "@loaders.gl/textures": "5.0.0-alpha.14",
90
+ "@loaders.gl/tiles": "5.0.0-alpha.14",
91
+ "@loaders.gl/tiles-3d": "5.0.0-alpha.14",
92
+ "@math.gl/core": "5.0.0-alpha.20",
93
+ "@math.gl/earth": "5.0.0-alpha.20",
94
+ "@math.gl/geometry": "5.0.0-alpha.20",
95
+ "@math.gl/geospatial": "5.0.0-alpha.20",
106
96
  "ajv": "^8.12.0",
107
- "archiver": "^5.0.0",
108
97
  "cors": "^2.8.5",
109
- "crypt": "^0.0.2",
110
98
  "debug": "~4.3.4",
111
99
  "express": "~4.19.2",
112
100
  "inquirer": "^8.0.0",
113
- "json-map-transform": "^1.2.6",
114
- "md5": "^2.3.0",
115
- "morgan": "~1.9.1",
116
- "uuid": "^9.0.0"
101
+ "morgan": "~1.12.1"
117
102
  },
118
103
  "quarantinedDependencies": {
119
104
  "join-images": "^1.1.3",
@@ -127,5 +112,5 @@
127
112
  "peerDependencies": {
128
113
  "@loaders.gl/core": "~5.0.0-alpha.0"
129
114
  },
130
- "gitHead": "8cbff6cb3e55c4eb1305072743992af27ff0c171"
115
+ "gitHead": "226b7bca7ecb3684b7386487ee76565ca240d7d9"
131
116
  }