@loaders.gl/tile-converter 5.0.0-alpha.11 → 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 (152) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +180 -4
  3. package/bin/converter-v5.js +2 -0
  4. package/dist/converter.min.cjs +172 -182
  5. package/dist/i3s-server/bin/i3s-server.min.cjs +113 -158
  6. package/dist/index.cjs +18832 -19228
  7. package/dist/index.js +19566 -19968
  8. package/dist/v5/adapters.cjs +2002 -230
  9. package/dist/v5/adapters.d.ts +20 -0
  10. package/dist/v5/adapters.js +2005 -214
  11. package/dist/v5/archive-source.d.ts +36 -0
  12. package/dist/v5/browser-tileset-source.d.ts +55 -11
  13. package/dist/v5/browser.cjs +18 -0
  14. package/dist/v5/browser.d.ts +15 -1
  15. package/dist/v5/browser.js +26 -0
  16. package/dist/v5/conversion-api.d.ts +34 -0
  17. package/dist/v5/converter-cli.d.ts +1 -0
  18. package/dist/v5/converter-cli.js +1230 -0
  19. package/dist/v5/core.cjs +547 -77
  20. package/dist/v5/core.d.ts +3 -1
  21. package/dist/v5/core.js +540 -70
  22. package/dist/v5/feature-arrow.d.ts +1 -1
  23. package/dist/v5/i3s-mesh-conversion.d.ts +5 -1
  24. package/dist/v5/i3s-mesh-source-features.d.ts +2 -2
  25. package/dist/v5/i3s-mesh-source-material.d.ts +1 -1
  26. package/dist/v5/i3s-mesh-source.d.ts +2 -2
  27. package/dist/v5/i3s-selection-source.d.ts +70 -0
  28. package/dist/v5/index.cjs +15 -0
  29. package/dist/v5/index.d.ts +13 -1
  30. package/dist/v5/index.js +22 -0
  31. package/dist/v5/mesh-conversion.d.ts +21 -3
  32. package/dist/v5/mesh-draco.d.ts +2 -2
  33. package/dist/v5/mesh-features.d.ts +2 -2
  34. package/dist/v5/mesh-hierarchy.d.ts +47 -0
  35. package/dist/v5/mesh-source-features.d.ts +6 -5
  36. package/dist/v5/mesh-source-schema.d.ts +12 -0
  37. package/dist/v5/mesh-source-texture.d.ts +3 -3
  38. package/dist/v5/mesh-source.d.ts +10 -7
  39. package/dist/v5/mesh-tileset-sink.d.ts +5 -0
  40. package/dist/v5/mesh.d.ts +1 -1
  41. package/dist/v5/node-cli.d.ts +9 -0
  42. package/dist/v5/node-conversion.d.ts +34 -0
  43. package/dist/v5/node-feature-schema.d.ts +3 -0
  44. package/dist/v5/node-i3s-source.d.ts +41 -0
  45. package/dist/v5/node-source.d.ts +47 -0
  46. package/dist/v5/node.cjs +913 -0
  47. package/dist/v5/node.d.ts +6 -0
  48. package/dist/v5/node.js +890 -0
  49. package/dist/v5/point-cloud-attributes.d.ts +19 -0
  50. package/dist/v5/point-cloud-conversion.d.ts +1 -1
  51. package/dist/v5/point-cloud-copc.d.ts +44 -0
  52. package/dist/v5/point-cloud-file.d.ts +83 -0
  53. package/dist/v5/point-cloud-potree.d.ts +47 -0
  54. package/dist/v5/point-cloud-source-encoder.d.ts +1 -1
  55. package/dist/v5/point-cloud-source.d.ts +1 -1
  56. package/dist/v5/point-cloud-tileset.d.ts +44 -0
  57. package/dist/v5/point-cloud.d.ts +1 -1
  58. package/dist/v5/resource-manifest.d.ts +10 -1
  59. package/dist/v5/selected-mesh-source.d.ts +53 -0
  60. package/dist/v5/spatial-conversion.d.ts +1 -1
  61. package/dist/v5/tileset-source.d.ts +1 -1
  62. package/package.json +25 -32
  63. package/src/index.ts +4 -1
  64. package/src/v4/3d-tiles-converter/3d-tiles-converter.ts +11 -12
  65. package/src/v4/3d-tiles-converter/helpers/3d-tiles-content-converter.ts +7 -3
  66. package/src/v4/3d-tiles-converter/helpers/i3s-obb-to-3d-tiles-obb.ts +2 -2
  67. package/src/v4/3d-tiles-converter/helpers/load-i3s.ts +4 -6
  68. package/src/v4/3d-tiles-converter/helpers/texture-atlas.ts +1 -1
  69. package/src/v4/3d-tiles-converter/helpers/validate-i3s-spatial-reference.ts +2 -2
  70. package/src/v4/3d-tiles-converter/json-templates/tileset.ts +58 -39
  71. package/src/v4/converter-cli.ts +10 -4
  72. package/src/v4/deps-installer/deps-installer.ts +3 -3
  73. package/src/v4/i3s-converter/helpers/attribute-metadata-info.ts +1 -1
  74. package/src/v4/i3s-converter/helpers/batch-ids-extensions.ts +9 -10
  75. package/src/v4/i3s-converter/helpers/conversion-gltf.ts +108 -0
  76. package/src/v4/i3s-converter/helpers/coordinate-converter.ts +6 -5
  77. package/src/v4/i3s-converter/helpers/create-scene-server-path.ts +5 -6
  78. package/src/v4/i3s-converter/helpers/feature-attributes.ts +4 -4
  79. package/src/v4/i3s-converter/helpers/geometry-attributes.ts +1 -1
  80. package/src/v4/i3s-converter/helpers/geometry-converter.ts +69 -77
  81. package/src/v4/i3s-converter/helpers/gltf-attributes.ts +58 -74
  82. package/src/v4/i3s-converter/helpers/load-3d-tiles.ts +6 -54
  83. package/src/v4/i3s-converter/helpers/node-debug.ts +7 -3
  84. package/src/v4/i3s-converter/helpers/node-index-document.ts +11 -9
  85. package/src/v4/i3s-converter/helpers/node-pages.ts +3 -4
  86. package/src/v4/i3s-converter/helpers/preprocess-3d-tiles.ts +2 -2
  87. package/src/v4/i3s-converter/helpers/tileset-traversal.ts +1 -1
  88. package/src/v4/i3s-converter/i3s-converter.ts +29 -31
  89. package/src/v4/i3s-converter/json-templates/geometry-definitions.ts +71 -66
  90. package/src/v4/i3s-converter/json-templates/layers.ts +97 -132
  91. package/src/v4/i3s-converter/json-templates/metadata.ts +31 -21
  92. package/src/v4/i3s-converter/json-templates/node.ts +60 -74
  93. package/src/v4/i3s-converter/json-templates/scene-server.ts +36 -27
  94. package/src/v4/i3s-converter/json-templates/shared-resources.ts +62 -123
  95. package/src/v4/i3s-converter/json-templates/store.ts +39 -57
  96. package/src/v4/i3s-converter/types.ts +4 -4
  97. package/src/v4/i3s-server/controllers/slpk-controller.ts +3 -3
  98. package/src/v4/i3s-server/utils/create-scene-server.ts +3 -3
  99. package/src/v4/lib/utils/builder-input.ts +8 -0
  100. package/src/v4/lib/utils/conversion-dump.ts +5 -1
  101. package/src/v4/lib/utils/file-utils.ts +1 -1
  102. package/src/v4/lib/utils/hash-string.ts +21 -0
  103. package/src/v4/lib/utils/lod-conversion-utils.ts +3 -3
  104. package/src/v4/pgm-loader.ts +2 -2
  105. package/src/v5/adapters.ts +53 -0
  106. package/src/v5/archive-source.ts +235 -0
  107. package/src/v5/browser-tileset-source.ts +418 -48
  108. package/src/v5/browser.ts +46 -0
  109. package/src/v5/conversion-api.ts +184 -17
  110. package/src/v5/conversion-archive.ts +2 -2
  111. package/src/v5/converter-cli.ts +28 -0
  112. package/src/v5/core.ts +7 -0
  113. package/src/v5/feature-arrow.ts +2 -2
  114. package/src/v5/i3s-mesh-conversion.ts +41 -3
  115. package/src/v5/i3s-mesh-sink.ts +1 -1
  116. package/src/v5/i3s-mesh-source-features.ts +3 -3
  117. package/src/v5/i3s-mesh-source-material.ts +18 -11
  118. package/src/v5/i3s-mesh-source.ts +3 -2
  119. package/src/v5/i3s-selection-source.ts +298 -0
  120. package/src/v5/index.ts +41 -0
  121. package/src/v5/mesh-conversion.ts +24 -4
  122. package/src/v5/mesh-draco.ts +2 -2
  123. package/src/v5/mesh-features.ts +3 -3
  124. package/src/v5/mesh-hierarchy.ts +648 -0
  125. package/src/v5/mesh-source-features.ts +165 -51
  126. package/src/v5/mesh-source-schema.ts +140 -0
  127. package/src/v5/mesh-source-texture.ts +49 -19
  128. package/src/v5/mesh-source.ts +80 -49
  129. package/src/v5/mesh-tileset-archive.ts +1 -1
  130. package/src/v5/mesh-tileset-sink.ts +2 -2
  131. package/src/v5/mesh.ts +1 -1
  132. package/src/v5/node-cli.ts +201 -0
  133. package/src/v5/node-conversion.ts +362 -0
  134. package/src/v5/node-feature-schema.ts +155 -0
  135. package/src/v5/node-i3s-source.ts +181 -0
  136. package/src/v5/node-source.ts +328 -0
  137. package/src/v5/node.ts +16 -0
  138. package/src/v5/point-cloud-attributes.ts +113 -0
  139. package/src/v5/point-cloud-conversion.ts +1 -1
  140. package/src/v5/point-cloud-copc.ts +289 -0
  141. package/src/v5/point-cloud-file.ts +306 -0
  142. package/src/v5/point-cloud-potree.ts +134 -0
  143. package/src/v5/point-cloud-source-encoder.ts +1 -1
  144. package/src/v5/point-cloud-source.ts +1 -1
  145. package/src/v5/point-cloud-spatial.ts +2 -2
  146. package/src/v5/point-cloud-tileset.ts +137 -0
  147. package/src/v5/point-cloud.ts +3 -3
  148. package/src/v5/resource-fetcher.ts +4 -1
  149. package/src/v5/resource-manifest.ts +40 -5
  150. package/src/v5/selected-mesh-source.ts +384 -0
  151. package/src/v5/spatial-conversion.ts +90 -19
  152. package/src/v5/tileset-source.ts +2 -2
@@ -0,0 +1,36 @@
1
+ import type { HttpFileIdentity, ReadableFile } from '@loaders.gl/core/loader-utils';
2
+ /** Cloneable archive input; a remote identity is retained across inspection and conversion. */
3
+ export interface TileConversionArchiveInput {
4
+ /** Immutable local Blob or HTTP(S) archive URL, including any query credentials. */
5
+ readonly input: Blob | string;
6
+ /** Explicit archive format, including for URLs without a filename extension. */
7
+ readonly format: 'slpk' | '3tz';
8
+ /** Pinned remote length and validator; local File contents are immutable. */
9
+ readonly identity?: HttpFileIdentity;
10
+ }
11
+ /** Opens an indexed archive with bounded reads and confines dependency URLs to its virtual root. */
12
+ export declare function openTileConversionArchive(descriptor: TileConversionArchiveInput, maxInputBytes: number, signal: AbortSignal, fetcher?: typeof fetch): Promise<{
13
+ rootUrl: string;
14
+ descriptor: {
15
+ identity?: HttpFileIdentity;
16
+ input: Blob | string;
17
+ format: "slpk" | "3tz";
18
+ } | undefined;
19
+ /** Resolves only resources belonging to this archive, without external network fallback. */
20
+ fetcher: (input: URL | RequestInfo, options: RequestInit | undefined) => Promise<Response>;
21
+ /** Releases the readable file on success, failure or cancellation. */
22
+ close: () => Promise<void>;
23
+ }>;
24
+ /** Owns an indexed readable file and confines entry/dependency requests to its virtual root. */
25
+ export declare function createTileConversionArchiveTransport(file: ReadableFile, format: 'slpk' | '3tz', maxInputBytes: number, signal: AbortSignal, descriptor?: TileConversionArchiveInput): Promise<{
26
+ rootUrl: string;
27
+ descriptor: {
28
+ identity?: HttpFileIdentity;
29
+ input: Blob | string;
30
+ format: "slpk" | "3tz";
31
+ } | undefined;
32
+ /** Resolves only resources belonging to this archive, without external network fallback. */
33
+ fetcher: (input: URL | RequestInfo, options: RequestInit | undefined) => Promise<Response>;
34
+ /** Releases the readable file on success, failure or cancellation. */
35
+ close: () => Promise<void>;
36
+ }>;
@@ -4,6 +4,8 @@ type TilesetContent = {
4
4
  url?: string;
5
5
  };
6
6
  type TilesetTile = {
7
+ /** Source metric error, scaled conservatively during selected mesh extraction. */
8
+ geometricError?: number;
7
9
  content?: TilesetContent;
8
10
  contents?: TilesetContent[];
9
11
  children?: TilesetTile[];
@@ -17,27 +19,46 @@ type TilesetDocument = {
17
19
  };
18
20
  root?: TilesetTile;
19
21
  };
20
- /** Input options for bounded traversal of one explicit 3D Tiles tileset. */
22
+ /** Input options for bounded traversal of explicit 3D Tiles documents. */
21
23
  export interface BrowserTilesetConversionSourceOptions {
22
24
  /** URL of the root tileset JSON document. */
23
25
  readonly input: string;
24
- /** Maximum bytes retained across the tileset JSON and all content resources. */
26
+ /** Maximum aggregate response bytes across root/nested JSON and content resources. */
25
27
  readonly maxInputBytes: number;
26
- /** Maximum number of content resources to visit. */
28
+ /** Maximum content declarations across all documents, including external JSON references. */
27
29
  readonly maxInputResources: number;
30
+ /** Maximum documents read, including the root and repeated placements; defaults to 1 (no nesting). */
31
+ readonly maxTilesetDocuments?: number;
32
+ /** Inspect declared .json external tilesets without fetching mesh content; defaults to false. */
33
+ readonly inspectNestedTilesets?: boolean;
28
34
  /** Fetch implementation, defaulting to the browser global. */
29
35
  readonly fetcher?: typeof fetch;
30
36
  }
31
37
  /** Inspection result for an explicit 3D Tiles source. */
32
38
  export interface BrowserTilesetConversionInspection {
33
- /** Absolute URL of the root tileset document. */
39
+ /** Final response URL of the root document, falling back to the requested URL for virtual transports. */
34
40
  readonly rootUrl: string;
35
41
  /** Parsed root document used for deterministic content traversal. */
36
42
  readonly tileset: TilesetDocument;
37
- /** Ordered content descriptors. */
43
+ /** Ordered root declarations, or binary candidates from an expanded metadata inspection. */
38
44
  readonly resources: readonly BrowserTilesetResourceDescriptor[];
39
- /** Root document bytes charged against the input limit. */
45
+ /** Inspected root/nested metadata bytes charged against the aggregate input limit. */
40
46
  readonly tilesetBytes: number;
47
+ /** Inspected document placements, including repeated references; absent for root-only inspection. */
48
+ readonly documents?: readonly BrowserTilesetDocumentPlacement[];
49
+ }
50
+ /** One inspected document at a distinct external placement. */
51
+ export interface BrowserTilesetDocumentPlacement {
52
+ /** Full external content placement introducing this document; absent for the entry root. */
53
+ readonly parentResourceId?: string;
54
+ /** Effective document URL, including inherited query credentials. */
55
+ readonly url: string;
56
+ /** Original parsed document; its metadata and glTF conventions stay scoped to this document. */
57
+ readonly tileset: TilesetDocument;
58
+ /** Combined placement above this document's root. */
59
+ readonly parentTransform: readonly number[];
60
+ /** Conservative inherited metric error, when declared by all external ancestors. */
61
+ readonly parentGeometricError?: number;
41
62
  }
42
63
  /** Placement metadata for one ordered content resource. */
43
64
  export interface BrowserTilesetResourceDescriptor {
@@ -45,9 +66,13 @@ export interface BrowserTilesetResourceDescriptor {
45
66
  readonly resourceId: string;
46
67
  /** Original URI declared by the tileset. */
47
68
  readonly uri: string;
48
- /** Tile child indexes from the tileset root. */
69
+ /** Tile child indexes within the declaring document. */
49
70
  readonly tilePath: readonly number[];
50
- /** Combined root-to-tile transform in column-major order. */
71
+ /** Declaring nested document URL; absent for root-document content. */
72
+ readonly tilesetUrl?: string;
73
+ /** Placement index in an expanded inspection's documents. */
74
+ readonly documentIndex?: number;
75
+ /** Combined entry-root-to-tile transform in column-major order, including external roots. */
51
76
  readonly transform: readonly number[];
52
77
  }
53
78
  /** One raw content resource from a browser-readable explicit tileset. */
@@ -56,15 +81,34 @@ export interface BrowserTilesetConversionInputResource extends BrowserTilesetRes
56
81
  readonly data: Uint8Array;
57
82
  /** Optional content type reported by the response. */
58
83
  readonly contentType?: string;
84
+ /** Effective content response URL used to resolve decoder dependencies after redirects. */
85
+ readonly contentUrl?: string;
59
86
  }
60
87
  /**
61
88
  * Creates a bounded browser source for explicit 3D Tiles 1.0 and 1.1 tilesets.
62
89
  *
63
- * Traversal visits each declared content placement once in depth-first order. Implicit tiling and
64
- * nested external tilesets are rejected; content decoding and conversion remain codec work.
90
+ * Traversal visits declared placements in depth-first order. Set maxTilesetDocuments above 1
91
+ * to follow explicit external tilesets, with shared byte/declaration limits and active-path cycle
92
+ * detection. Inspection reads the root by default; inspectNestedTilesets follows declared .json
93
+ * references without fetching binary content. Other nested metadata is discovered during reading.
94
+ * Implicit tiling remains unsupported; content decoding and conversion remain codec work.
95
+ * Bounds, metadata and LOD authoring policy remain application responsibilities.
65
96
  *
66
97
  * @param options - Tileset URL and aggregate byte and resource limits.
67
- * @returns A source yielding ordered raw tile resources with placement transforms.
98
+ * @returns A source yielding raw resources and placement transforms; it does not preserve output LOD.
68
99
  */
69
100
  export declare function createBrowserTilesetConversionSource(options: BrowserTilesetConversionSourceOptions): TileConversionSource<BrowserTilesetConversionInspection, BrowserTilesetConversionInputResource>;
101
+ /** A selected document and conservative source error for one content placement. */
102
+ export interface BrowserTilesetContentSelection {
103
+ /** Cloned document retaining its metadata, ancestor transforms and only the selected content. */
104
+ readonly tileset: TilesetDocument;
105
+ /** Resolved resource URL, carrying same-origin document query parameters. */
106
+ readonly contentUrl: string;
107
+ /** Conservative source geometric error in meters, including transform scaling. */
108
+ readonly geometricError: number;
109
+ /** Whether the original selected tile has no children. */
110
+ readonly isLeaf: boolean;
111
+ }
112
+ /** Selects one inspected content while keeping declaring-document conventions and placement. */
113
+ export declare function selectBrowserTilesetContent(inspection: BrowserTilesetConversionInspection, descriptor: BrowserTilesetResourceDescriptor): BrowserTilesetContentSelection;
70
114
  export {};
@@ -20,8 +20,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/v5/browser.ts
21
21
  var browser_exports = {};
22
22
  __export(browser_exports, {
23
+ SELECTED_MESH_LIMITS: () => import_adapters19.SELECTED_MESH_LIMITS,
23
24
  TileConversionError: () => import_core.TileConversionError,
24
25
  convertPointCloudSource: () => import_adapters3.convertPointCloudSource,
26
+ convertPointCloudToPotree: () => import_adapters18.convertPointCloudToPotree,
27
+ convertPointCloudToTileset: () => import_adapters15.convertPointCloudToTileset,
25
28
  convertTileset: () => import_core.convertTileset,
26
29
  createBoundedMemoryTileConversionSink: () => import_core3.createBoundedMemoryTileConversionSink,
27
30
  createBrowserTileConversionSource: () => import_core4.createBrowserTileConversionSource,
@@ -31,8 +34,11 @@ __export(browser_exports, {
31
34
  createI3SMeshSink: () => import_adapters11.createI3SMeshSink,
32
35
  createI3SMeshTilesetConversionSource: () => import_adapters14.createI3SMeshTilesetConversionSource,
33
36
  createMeshConversionCodec: () => import_adapters5.createMeshConversionCodec,
37
+ createMeshHierarchyTilesetSink: () => import_adapters20.createMeshHierarchyTilesetSink,
38
+ createMeshSourceFeatureOptions: () => import_adapters17.createMeshSourceFeatureOptions,
34
39
  createMeshTilesetConversionSource: () => import_adapters9.createMeshTilesetConversionSource,
35
40
  createPointCloudTilesetSink: () => import_adapters12.createPointCloudTilesetSink,
41
+ createSelectedMeshConversionSource: () => import_adapters19.createSelectedMeshConversionSource,
36
42
  createSingleMeshI3SSink: () => import_adapters10.createSingleMeshI3SSink,
37
43
  createSingleMeshTilesetArchive: () => import_adapters8.createSingleMeshTilesetArchive,
38
44
  createSingleMeshTilesetSink: () => import_adapters6.createSingleMeshTilesetSink,
@@ -45,8 +51,13 @@ __export(browser_exports, {
45
51
  encodePointCloudSourceTile: () => import_adapters2.encodePointCloudSourceTile,
46
52
  encodePointCloudTile: () => import_adapters.encodePointCloudTile,
47
53
  encodePointCloudTileWithMetadata: () => import_adapters.encodePointCloudTileWithMetadata,
54
+ encodePotreeArchive: () => import_adapters16.encodePotreeArchive,
48
55
  encodeTileConversionArchiveInBatches: () => import_adapters7.encodeTileConversionArchiveInBatches,
56
+ extractMeshVertices: () => import_adapters16.extractMeshVertices,
49
57
  inspectTileset: () => import_core.inspectTileset,
58
+ measureMeshBytes: () => import_adapters19.measureMeshBytes,
59
+ openPointCloudFile: () => import_adapters16.openPointCloudFile,
60
+ selectBrowserTilesetContent: () => import_core9.selectBrowserTilesetContent,
50
61
  transformPointCloudSourceTile: () => import_adapters13.transformPointCloudSourceTile,
51
62
  traversePointCloudSource: () => import_core6.traversePointCloudSource,
52
63
  validateTileset: () => import_core.validateTileset
@@ -74,3 +85,10 @@ var import_adapters12 = require("@loaders.gl/tile-converter/v5/adapters");
74
85
  var import_adapters13 = require("@loaders.gl/tile-converter/v5/adapters");
75
86
  var import_core8 = require("@loaders.gl/tile-converter/v5/core");
76
87
  var import_adapters14 = require("@loaders.gl/tile-converter/v5/adapters");
88
+ var import_adapters15 = require("@loaders.gl/tile-converter/v5/adapters");
89
+ var import_adapters16 = require("@loaders.gl/tile-converter/v5/adapters");
90
+ var import_adapters17 = require("@loaders.gl/tile-converter/v5/adapters");
91
+ var import_adapters18 = require("@loaders.gl/tile-converter/v5/adapters");
92
+ var import_core9 = require("@loaders.gl/tile-converter/v5/core");
93
+ var import_adapters19 = require("@loaders.gl/tile-converter/v5/adapters");
94
+ var import_adapters20 = require("@loaders.gl/tile-converter/v5/adapters");
@@ -1,7 +1,7 @@
1
1
  export { convertTileset, inspectTileset, TileConversionError, validateTileset } from '@loaders.gl/tile-converter/v5/core';
2
2
  export { createTilesetConversionSource } from '@loaders.gl/tile-converter/v5/core';
3
3
  export type { TilesetConversionSourceOptions } from '@loaders.gl/tile-converter/v5/core';
4
- export type { ConvertTilesetOptions, TileConversionCodec, TileConversionDiagnostic, TileConversionProgress, TileConversionReport, TileConversionSink, TileConversionSource, TileValidationReport, ValidateTilesetOptions } from '@loaders.gl/tile-converter/v5/core';
4
+ export type { ConvertTilesetOptions, TileConversionCodec, TileConversionDiagnostic, TileConversionProgress, TileConversionReport, TileConversionTimings, TileConversionSink, TileConversionSource, TileValidationReport, ValidateTilesetOptions } from '@loaders.gl/tile-converter/v5/core';
5
5
  export { createBoundedMemoryTileConversionSink } from '@loaders.gl/tile-converter/v5/core';
6
6
  export { createBrowserTileConversionSource } from '@loaders.gl/tile-converter/v5/core';
7
7
  export type { BoundedMemoryTileConversionSink, BoundedMemoryTileConversionSinkOptions, BrowserTileConversionFile, BrowserTileConversionResource } from '@loaders.gl/tile-converter/v5/core';
@@ -42,3 +42,17 @@ export { createI3SConversionSpatialContext } from '@loaders.gl/tile-converter/v5
42
42
  export type { I3SConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
43
43
  export { createI3SMeshTilesetConversionSource } from '@loaders.gl/tile-converter/v5/adapters';
44
44
  export type { I3SMeshTilesetSourceOptions, I3SMeshSourceFeatureOptions } from '@loaders.gl/tile-converter/v5/adapters';
45
+ export { convertPointCloudToTileset } from '@loaders.gl/tile-converter/v5/adapters';
46
+ export type { ConvertPointCloudToTilesetOptions, ConvertedPointCloudTileset } from '@loaders.gl/tile-converter/v5/adapters';
47
+ export { encodePotreeArchive, openPointCloudFile, extractMeshVertices } from '@loaders.gl/tile-converter/v5/adapters';
48
+ export type { EncodePotreeArchiveOptions, OpenPointCloudFileOptions, OpenedPointCloudFile, ExtractMeshVerticesOptions } from '@loaders.gl/tile-converter/v5/adapters';
49
+ export { createMeshSourceFeatureOptions } from '@loaders.gl/tile-converter/v5/adapters';
50
+ export type { MeshSourceSchemaOptions } from '@loaders.gl/tile-converter/v5/adapters';
51
+ export { convertPointCloudToPotree } from '@loaders.gl/tile-converter/v5/adapters';
52
+ export type { ConvertPointCloudToPotreeOptions, ConvertedPointCloudPotree } from '@loaders.gl/tile-converter/v5/adapters';
53
+ export { selectBrowserTilesetContent } from '@loaders.gl/tile-converter/v5/core';
54
+ export type { BrowserTilesetDocumentPlacement, BrowserTilesetContentSelection } from '@loaders.gl/tile-converter/v5/core';
55
+ export { createSelectedMeshConversionSource, measureMeshBytes, SELECTED_MESH_LIMITS } from '@loaders.gl/tile-converter/v5/adapters';
56
+ export type { SelectedMeshSourceOptions, SelectedMeshConversionSource } from '@loaders.gl/tile-converter/v5/adapters';
57
+ export { createMeshHierarchyTilesetSink } from '@loaders.gl/tile-converter/v5/adapters';
58
+ export type { MeshHierarchyTilesetSinkOptions } from '@loaders.gl/tile-converter/v5/adapters';
@@ -41,9 +41,27 @@ import { createPointCloudTilesetSink } from "@loaders.gl/tile-converter/v5/adapt
41
41
  import { transformPointCloudSourceTile } from "@loaders.gl/tile-converter/v5/adapters";
42
42
  import { createI3SConversionSpatialContext } from "@loaders.gl/tile-converter/v5/core";
43
43
  import { createI3SMeshTilesetConversionSource } from "@loaders.gl/tile-converter/v5/adapters";
44
+ import { convertPointCloudToTileset } from "@loaders.gl/tile-converter/v5/adapters";
45
+ import {
46
+ encodePotreeArchive,
47
+ openPointCloudFile,
48
+ extractMeshVertices
49
+ } from "@loaders.gl/tile-converter/v5/adapters";
50
+ import { createMeshSourceFeatureOptions } from "@loaders.gl/tile-converter/v5/adapters";
51
+ import { convertPointCloudToPotree } from "@loaders.gl/tile-converter/v5/adapters";
52
+ import { selectBrowserTilesetContent } from "@loaders.gl/tile-converter/v5/core";
53
+ import {
54
+ createSelectedMeshConversionSource,
55
+ measureMeshBytes,
56
+ SELECTED_MESH_LIMITS
57
+ } from "@loaders.gl/tile-converter/v5/adapters";
58
+ import { createMeshHierarchyTilesetSink } from "@loaders.gl/tile-converter/v5/adapters";
44
59
  export {
60
+ SELECTED_MESH_LIMITS,
45
61
  TileConversionError,
46
62
  convertPointCloudSource,
63
+ convertPointCloudToPotree,
64
+ convertPointCloudToTileset,
47
65
  convertTileset,
48
66
  createBoundedMemoryTileConversionSink,
49
67
  createBrowserTileConversionSource,
@@ -53,8 +71,11 @@ export {
53
71
  createI3SMeshSink,
54
72
  createI3SMeshTilesetConversionSource,
55
73
  createMeshConversionCodec,
74
+ createMeshHierarchyTilesetSink,
75
+ createMeshSourceFeatureOptions,
56
76
  createMeshTilesetConversionSource,
57
77
  createPointCloudTilesetSink,
78
+ createSelectedMeshConversionSource,
58
79
  createSingleMeshI3SSink,
59
80
  createSingleMeshTilesetArchive,
60
81
  createSingleMeshTilesetSink,
@@ -67,8 +88,13 @@ export {
67
88
  encodePointCloudSourceTile,
68
89
  encodePointCloudTile,
69
90
  encodePointCloudTileWithMetadata,
91
+ encodePotreeArchive,
70
92
  encodeTileConversionArchiveInBatches,
93
+ extractMeshVertices,
71
94
  inspectTileset,
95
+ measureMeshBytes,
96
+ openPointCloudFile,
97
+ selectBrowserTilesetContent,
72
98
  transformPointCloudSourceTile,
73
99
  traversePointCloudSource,
74
100
  validateTileset
@@ -31,8 +31,31 @@ export interface TileConversionProgress {
31
31
  /** Number of output bytes written so far. */
32
32
  readonly outputBytes: number;
33
33
  }
34
+ /** Elapsed milliseconds for awaited adapter work; stages exclude downstream backpressure. */
35
+ export interface TileConversionTimings {
36
+ /** Elapsed inspect adapter time in milliseconds. */
37
+ readonly inspectMilliseconds: number;
38
+ /** Elapsed read adapter time in milliseconds. */
39
+ readonly readMilliseconds: number;
40
+ /** Elapsed convert adapter time in milliseconds. */
41
+ readonly convertMilliseconds: number;
42
+ /** Elapsed validate adapter time in milliseconds. */
43
+ readonly validateMilliseconds: number;
44
+ /** Elapsed write adapter time in milliseconds. */
45
+ readonly writeMilliseconds: number;
46
+ /** Elapsed finalize adapter time in milliseconds. */
47
+ readonly finalizeMilliseconds: number;
48
+ /** Elapsed end-to-end conversion time in milliseconds. */
49
+ readonly totalMilliseconds: number;
50
+ /** Node transport preparation, including inspection and selection, when available. */
51
+ readonly setupMilliseconds?: number;
52
+ /** Node archive serialization and destination publication, when available. */
53
+ readonly outputMilliseconds?: number;
54
+ }
34
55
  /** Summary returned after a tileset conversion completes. */
35
56
  export interface TileConversionReport {
57
+ /** Optional stage timings, attached after successful destination finalization. */
58
+ readonly timings?: TileConversionTimings;
36
59
  /** Completed conversion state. Failed conversions reject with their cause. */
37
60
  readonly state: 'completed';
38
61
  /** Number of input resources consumed. */
@@ -73,6 +96,8 @@ export interface TileConversionCodec<TInspection, TInput, TOutput> {
73
96
  }
74
97
  /** Options for the portable `convertTileset` operation. */
75
98
  export interface ConvertTilesetOptions<TInspection, TInput, TOutput> {
99
+ /** Measure awaited adapter work and total elapsed time; disabled by default. */
100
+ readonly profile?: boolean;
76
101
  /** Injected input resolver and resource reader. */
77
102
  readonly source: TileConversionSource<TInspection, TInput>;
78
103
  /** Injected output codec. */
@@ -87,6 +112,14 @@ export interface ConvertTilesetOptions<TInspection, TInput, TOutput> {
87
112
  readonly maxInputResourceBytes?: number;
88
113
  /** Reject any output resource larger than this configured byte limit. */
89
114
  readonly maxOutputResourceBytes?: number;
115
+ /** Maximum measured input bytes across this run; does not bound source allocations. */
116
+ readonly maxInputBytes?: number;
117
+ /** Maximum measured output bytes across this run, including checkpointed resources. */
118
+ readonly maxOutputBytes?: number;
119
+ /** Maximum input resources consumed by this run, including zero-byte resources. */
120
+ readonly maxInputResources?: number;
121
+ /** Maximum outputs processed by this run, including zero-byte and checkpointed resources. */
122
+ readonly maxOutputResources?: number;
90
123
  /** Cancel inspection, conversion, validation, or writes. */
91
124
  readonly signal?: AbortSignal;
92
125
  /** Receive progress updates after each resource transition. */
@@ -116,6 +149,7 @@ export declare function inspectTileset<TInspection, TInput>(source: TileConversi
116
149
  * This does not limit source decoding allocations or content retained by a source.
117
150
  * Writes are awaited one resource at a time, keeping queued output bytes bounded by the
118
151
  * largest emitted resource and the configured `maxOutputResourceBytes` limit.
152
+ * Cumulative byte/count limits bound measured work in this run, not total allocation memory.
119
153
  */
120
154
  export declare function convertTileset<TInspection, TInput, TOutput>(options: ConvertTilesetOptions<TInspection, TInput, TOutput>): Promise<TileConversionReport>;
121
155
  /** Validates a tileset through an injected profile-specific validator. */
@@ -0,0 +1 @@
1
+ export {};