@loaders.gl/tile-converter 4.5.3 → 5.0.0-alpha.10
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/LICENSE +14 -3
- package/README.md +464 -0
- package/dist/converter.min.cjs +199 -260
- package/dist/i3s-server/bin/i3s-server.min.cjs +106 -341
- package/dist/index.cjs +38482 -0
- package/dist/index.js +38453 -0
- package/dist/v5/adapters.cjs +1992 -0
- package/dist/v5/adapters.d.ts +22 -0
- package/dist/v5/adapters.js +1972 -0
- package/dist/v5/browser-sink.d.ts +37 -0
- package/dist/v5/browser-source.d.ts +38 -0
- package/dist/v5/browser-tileset-source.d.ts +70 -0
- package/dist/v5/browser.cjs +64 -0
- package/dist/v5/browser.d.ts +34 -0
- package/dist/v5/browser.js +57 -0
- package/dist/v5/conversion-api.d.ts +122 -0
- package/dist/v5/conversion-archive.d.ts +32 -0
- package/dist/v5/core.cjs +863 -0
- package/dist/v5/core.d.ts +16 -0
- package/dist/v5/core.js +845 -0
- package/dist/v5/feature-arrow.d.ts +36 -0
- package/dist/v5/i3s-mesh-conversion.d.ts +26 -0
- package/dist/v5/index.cjs +63 -0
- package/dist/v5/index.d.ts +32 -0
- package/dist/v5/index.js +59 -0
- package/dist/v5/mesh-conversion.d.ts +62 -0
- package/dist/v5/mesh-draco.d.ts +8 -0
- package/dist/v5/mesh-source-features.d.ts +21 -0
- package/dist/v5/mesh-source-texture.d.ts +4 -0
- package/dist/v5/mesh-source.d.ts +34 -0
- package/dist/v5/mesh-tileset-archive.d.ts +18 -0
- package/dist/v5/mesh-tileset-sink.d.ts +51 -0
- package/dist/v5/mesh.d.ts +81 -0
- package/dist/v5/point-cloud-conversion.d.ts +31 -0
- package/dist/v5/point-cloud-source-encoder.d.ts +49 -0
- package/dist/v5/point-cloud-source.d.ts +25 -0
- package/dist/v5/point-cloud.d.ts +24 -0
- package/dist/v5/resource-manifest.d.ts +58 -0
- package/dist/v5/spatial-conversion.d.ts +59 -0
- package/dist/v5/tileset-source.d.ts +21 -0
- package/package.json +53 -27
- package/src/common/README.md +5 -0
- package/src/index.ts +1 -2
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/3d-tiles-converter.ts +14 -3
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/3d-tiles-content-converter.ts +2 -2
- package/src/v4/3d-tiles-converter/helpers/validate-i3s-spatial-reference.ts +124 -0
- package/src/{3d-tiles-converter → v4/3d-tiles-converter}/json-templates/tileset.ts +4 -4
- package/src/{converter-cli.ts → v4/converter-cli.ts} +4 -4
- package/src/{deps-installer → v4/deps-installer}/deps-installer.ts +10 -7
- package/src/{i3s-converter → v4/i3s-converter}/helpers/attribute-metadata-info.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/helpers/batch-ids-extensions.ts +1 -1
- package/src/v4/i3s-converter/helpers/encode-string-attribute.ts +23 -0
- package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-attributes.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-converter.ts +34 -59
- package/src/{i3s-converter → v4/i3s-converter}/helpers/gltf-attributes.ts +7 -6
- package/src/{i3s-converter → v4/i3s-converter}/helpers/load-3d-tiles.ts +5 -9
- package/src/{i3s-converter → v4/i3s-converter}/helpers/node-debug.ts +5 -6
- package/src/{i3s-converter → v4/i3s-converter}/i3s-converter.ts +16 -19
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/geometry-definitions.ts +4 -4
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/layers.ts +6 -6
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/node.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/scene-server.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/shared-resources.ts +1 -1
- package/src/{i3s-converter → v4/i3s-converter}/json-templates/store.ts +1 -1
- package/src/{i3s-server → v4/i3s-server}/README.md +2 -2
- package/src/{i3s-server → v4/i3s-server}/controllers/slpk-controller.ts +1 -1
- package/src/{i3s-server → v4/i3s-server}/routes/slpk-router.ts +2 -1
- package/src/v4/index.ts +2 -0
- package/src/{lib → v4/lib}/utils/compress-util.ts +8 -7
- package/src/{lib → v4/lib}/utils/conversion-dump.ts +4 -4
- package/src/{lib → v4/lib}/utils/file-utils.ts +2 -2
- package/src/{lib → v4/lib}/utils/lod-conversion-utils.ts +2 -4
- package/src/v5/adapters.ts +56 -0
- package/src/v5/browser-sink.ts +130 -0
- package/src/v5/browser-source.ts +155 -0
- package/src/v5/browser-tileset-source.ts +328 -0
- package/src/v5/browser.ts +105 -0
- package/src/v5/conversion-api.ts +287 -0
- package/src/v5/conversion-archive.ts +85 -0
- package/src/v5/core.ts +61 -0
- package/src/v5/feature-arrow.ts +429 -0
- package/src/v5/i3s-mesh-conversion.ts +152 -0
- package/src/v5/index.ts +99 -0
- package/src/v5/mesh-conversion.ts +200 -0
- package/src/v5/mesh-draco.ts +138 -0
- package/src/v5/mesh-source-features.ts +232 -0
- package/src/v5/mesh-source-texture.ts +122 -0
- package/src/v5/mesh-source.ts +360 -0
- package/src/v5/mesh-tileset-archive.ts +50 -0
- package/src/v5/mesh-tileset-sink.ts +324 -0
- package/src/v5/mesh.ts +517 -0
- package/src/v5/point-cloud-conversion.ts +80 -0
- package/src/v5/point-cloud-source-encoder.ts +105 -0
- package/src/v5/point-cloud-source.ts +84 -0
- package/src/v5/point-cloud.ts +271 -0
- package/src/v5/resource-manifest.ts +213 -0
- package/src/v5/spatial-conversion.ts +305 -0
- package/src/v5/tileset-source.ts +54 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.ts +0 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/load-i3s.ts +0 -0
- /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/texture-atlas.ts +0 -0
- /package/src/{constants.ts → v4/constants.ts} +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/coordinate-converter.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/create-scene-server-path.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/feature-attributes.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-index-document.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-pages.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/preprocess-3d-tiles.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/progress.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/helpers/tileset-traversal.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/json-templates/metadata.ts +0 -0
- /package/src/{i3s-converter → v4/i3s-converter}/types.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/app.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/bin/www.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/certs/cert.pem +0 -0
- /package/src/{i3s-server → v4/i3s-server}/certs/key.pem +0 -0
- /package/src/{i3s-server → v4/i3s-server}/utils/create-scene-server.ts +0 -0
- /package/src/{i3s-server → v4/i3s-server}/utils/server-utils.ts +0 -0
- /package/src/{lib → v4/lib}/json-schemas/conversion-dump-json-schema.ts +0 -0
- /package/src/{lib → v4/lib}/utils/cli-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/geometry-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/queue.ts +0 -0
- /package/src/{lib → v4/lib}/utils/statistic-utils.ts +0 -0
- /package/src/{lib → v4/lib}/utils/write-queue.ts +0 -0
- /package/src/{pgm-loader.ts → v4/pgm-loader.ts} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { TileConversionSink } from './conversion-api.js';
|
|
2
|
+
/** One named browser output resource. */
|
|
3
|
+
export interface BrowserTileConversionResource {
|
|
4
|
+
/** Stable relative output path supplied by the target profile. */
|
|
5
|
+
readonly resourceId: string;
|
|
6
|
+
/** Parts combined into a Blob after the total output budget is checked. */
|
|
7
|
+
readonly parts: readonly BlobPart[];
|
|
8
|
+
/** MIME type recorded on the resulting Blob. */
|
|
9
|
+
readonly contentType?: string;
|
|
10
|
+
}
|
|
11
|
+
/** A named output resource retained by the bounded browser sink. */
|
|
12
|
+
export interface BrowserTileConversionFile {
|
|
13
|
+
/** Stable relative output path supplied by the target profile. */
|
|
14
|
+
readonly resourceId: string;
|
|
15
|
+
/** Browser-native data for download or application-provided packaging. */
|
|
16
|
+
readonly blob: Blob;
|
|
17
|
+
}
|
|
18
|
+
/** Memory limit for a browser conversion sink. */
|
|
19
|
+
export interface BoundedMemoryTileConversionSinkOptions {
|
|
20
|
+
/** Maximum combined Blob size retained by this sink, captured at creation, in bytes. */
|
|
21
|
+
readonly maxTotalBytes: number;
|
|
22
|
+
}
|
|
23
|
+
/** Browser sink with read access to its bounded output resources. */
|
|
24
|
+
export interface BoundedMemoryTileConversionSink extends TileConversionSink<BrowserTileConversionResource> {
|
|
25
|
+
/** Returns the retained files in stable resource-ID order. */
|
|
26
|
+
getFiles(): readonly BrowserTileConversionFile[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates a browser-only sink that retains output as Blobs under a total byte limit.
|
|
30
|
+
*
|
|
31
|
+
* The sink does not download or archive files. Applications can use `getFiles()` after
|
|
32
|
+
* `convertTileset` completes and package or download the returned Blobs as needed.
|
|
33
|
+
*
|
|
34
|
+
* @param options - Maximum in-memory output size.
|
|
35
|
+
* @returns A sink that stores browser-native Blobs and clears them on abort.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createBoundedMemoryTileConversionSink(options: BoundedMemoryTileConversionSinkOptions): BoundedMemoryTileConversionSink;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TileConversionSource } from './conversion-api.js';
|
|
2
|
+
/** Metadata available before a browser resource is read. */
|
|
3
|
+
export interface BrowserTileConversionInspection {
|
|
4
|
+
/** Stable resource path assigned to the input tile. */
|
|
5
|
+
readonly resourceId: string;
|
|
6
|
+
/** Optional MIME type supplied by the caller or source Blob. */
|
|
7
|
+
readonly contentType?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Raw bytes read from one browser tile resource. */
|
|
10
|
+
export interface BrowserTileConversionInputResource {
|
|
11
|
+
/** Stable resource path assigned to the input tile. */
|
|
12
|
+
readonly resourceId: string;
|
|
13
|
+
/** Complete resource bytes for a profile-specific codec. */
|
|
14
|
+
readonly data: Uint8Array;
|
|
15
|
+
/** Optional MIME type supplied by the caller, Blob, or URL response. */
|
|
16
|
+
readonly contentType?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Browser input and size limit for a single-resource conversion. */
|
|
19
|
+
export interface BrowserTileConversionSourceOptions {
|
|
20
|
+
/** Input URL or already available browser Blob. */
|
|
21
|
+
readonly input: string | Blob;
|
|
22
|
+
/** Stable path to associate with the input resource. */
|
|
23
|
+
readonly resourceId: string;
|
|
24
|
+
/** Maximum number of input bytes held in memory. */
|
|
25
|
+
readonly maxInputBytes: number;
|
|
26
|
+
/** Optional MIME type override. */
|
|
27
|
+
readonly contentType?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a browser source for one mesh resource provided as a URL or Blob.
|
|
31
|
+
*
|
|
32
|
+
* URL responses are read incrementally and canceled if they exceed `maxInputBytes`.
|
|
33
|
+
* Tileset JSON traversal and format decoding remain profile-specific source and codec work.
|
|
34
|
+
*
|
|
35
|
+
* @param options - Input, stable resource ID, and maximum input size.
|
|
36
|
+
* @returns A source that yields one complete resource to a v5 codec.
|
|
37
|
+
*/
|
|
38
|
+
export declare function createBrowserTileConversionSource(options: BrowserTileConversionSourceOptions): TileConversionSource<BrowserTileConversionInspection, BrowserTileConversionInputResource>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { TileConversionSource } from './conversion-api.js';
|
|
2
|
+
type TilesetContent = {
|
|
3
|
+
uri?: string;
|
|
4
|
+
url?: string;
|
|
5
|
+
};
|
|
6
|
+
type TilesetTile = {
|
|
7
|
+
content?: TilesetContent;
|
|
8
|
+
contents?: TilesetContent[];
|
|
9
|
+
children?: TilesetTile[];
|
|
10
|
+
transform?: number[];
|
|
11
|
+
implicitTiling?: unknown;
|
|
12
|
+
extensions?: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
type TilesetDocument = {
|
|
15
|
+
asset?: {
|
|
16
|
+
version?: string;
|
|
17
|
+
};
|
|
18
|
+
root?: TilesetTile;
|
|
19
|
+
};
|
|
20
|
+
/** Input options for bounded traversal of one explicit 3D Tiles tileset. */
|
|
21
|
+
export interface BrowserTilesetConversionSourceOptions {
|
|
22
|
+
/** URL of the root tileset JSON document. */
|
|
23
|
+
readonly input: string;
|
|
24
|
+
/** Maximum bytes retained across the tileset JSON and all content resources. */
|
|
25
|
+
readonly maxInputBytes: number;
|
|
26
|
+
/** Maximum number of content resources to visit. */
|
|
27
|
+
readonly maxInputResources: number;
|
|
28
|
+
/** Fetch implementation, defaulting to the browser global. */
|
|
29
|
+
readonly fetcher?: typeof fetch;
|
|
30
|
+
}
|
|
31
|
+
/** Inspection result for an explicit 3D Tiles source. */
|
|
32
|
+
export interface BrowserTilesetConversionInspection {
|
|
33
|
+
/** Absolute URL of the root tileset document. */
|
|
34
|
+
readonly rootUrl: string;
|
|
35
|
+
/** Parsed root document used for deterministic content traversal. */
|
|
36
|
+
readonly tileset: TilesetDocument;
|
|
37
|
+
/** Ordered content descriptors. */
|
|
38
|
+
readonly resources: readonly BrowserTilesetResourceDescriptor[];
|
|
39
|
+
/** Root document bytes charged against the input limit. */
|
|
40
|
+
readonly tilesetBytes: number;
|
|
41
|
+
}
|
|
42
|
+
/** Placement metadata for one ordered content resource. */
|
|
43
|
+
export interface BrowserTilesetResourceDescriptor {
|
|
44
|
+
/** Unique, stable path for this content placement. */
|
|
45
|
+
readonly resourceId: string;
|
|
46
|
+
/** Original URI declared by the tileset. */
|
|
47
|
+
readonly uri: string;
|
|
48
|
+
/** Tile child indexes from the tileset root. */
|
|
49
|
+
readonly tilePath: readonly number[];
|
|
50
|
+
/** Combined root-to-tile transform in column-major order. */
|
|
51
|
+
readonly transform: readonly number[];
|
|
52
|
+
}
|
|
53
|
+
/** One raw content resource from a browser-readable explicit tileset. */
|
|
54
|
+
export interface BrowserTilesetConversionInputResource extends BrowserTilesetResourceDescriptor {
|
|
55
|
+
/** Complete content bytes for an injected profile-specific codec. */
|
|
56
|
+
readonly data: Uint8Array;
|
|
57
|
+
/** Optional content type reported by the response. */
|
|
58
|
+
readonly contentType?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Creates a bounded browser source for explicit 3D Tiles 1.0 and 1.1 tilesets.
|
|
62
|
+
*
|
|
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.
|
|
65
|
+
*
|
|
66
|
+
* @param options - Tileset URL and aggregate byte and resource limits.
|
|
67
|
+
* @returns A source yielding ordered raw tile resources with placement transforms.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createBrowserTilesetConversionSource(options: BrowserTilesetConversionSourceOptions): TileConversionSource<BrowserTilesetConversionInspection, BrowserTilesetConversionInputResource>;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/v5/browser.ts
|
|
21
|
+
var browser_exports = {};
|
|
22
|
+
__export(browser_exports, {
|
|
23
|
+
TileConversionError: () => import_core.TileConversionError,
|
|
24
|
+
convertPointCloudSource: () => import_adapters3.convertPointCloudSource,
|
|
25
|
+
convertTileset: () => import_core.convertTileset,
|
|
26
|
+
createBoundedMemoryTileConversionSink: () => import_core3.createBoundedMemoryTileConversionSink,
|
|
27
|
+
createBrowserTileConversionSource: () => import_core4.createBrowserTileConversionSource,
|
|
28
|
+
createBrowserTilesetConversionSource: () => import_core5.createBrowserTilesetConversionSource,
|
|
29
|
+
createI3SMeshConversionCodec: () => import_adapters10.createI3SMeshConversionCodec,
|
|
30
|
+
createMeshConversionCodec: () => import_adapters5.createMeshConversionCodec,
|
|
31
|
+
createMeshTilesetConversionSource: () => import_adapters9.createMeshTilesetConversionSource,
|
|
32
|
+
createSingleMeshI3SSink: () => import_adapters10.createSingleMeshI3SSink,
|
|
33
|
+
createSingleMeshTilesetArchive: () => import_adapters8.createSingleMeshTilesetArchive,
|
|
34
|
+
createSingleMeshTilesetSink: () => import_adapters6.createSingleMeshTilesetSink,
|
|
35
|
+
createTileConversionArchive: () => import_adapters7.createTileConversionArchive,
|
|
36
|
+
createTiles3DConversionSpatialContext: () => import_core7.createTiles3DConversionSpatialContext,
|
|
37
|
+
createTilesetConversionSource: () => import_core2.createTilesetConversionSource,
|
|
38
|
+
encodeMeshTile: () => import_adapters4.encodeMeshTile,
|
|
39
|
+
encodePointCloudSource: () => import_adapters2.encodePointCloudSource,
|
|
40
|
+
encodePointCloudSourceTile: () => import_adapters2.encodePointCloudSourceTile,
|
|
41
|
+
encodePointCloudTile: () => import_adapters.encodePointCloudTile,
|
|
42
|
+
encodeTileConversionArchiveInBatches: () => import_adapters7.encodeTileConversionArchiveInBatches,
|
|
43
|
+
inspectTileset: () => import_core.inspectTileset,
|
|
44
|
+
traversePointCloudSource: () => import_core6.traversePointCloudSource,
|
|
45
|
+
validateTileset: () => import_core.validateTileset
|
|
46
|
+
});
|
|
47
|
+
module.exports = __toCommonJS(browser_exports);
|
|
48
|
+
var import_core = require("@loaders.gl/tile-converter/v5/core");
|
|
49
|
+
var import_core2 = require("@loaders.gl/tile-converter/v5/core");
|
|
50
|
+
var import_core3 = require("@loaders.gl/tile-converter/v5/core");
|
|
51
|
+
var import_core4 = require("@loaders.gl/tile-converter/v5/core");
|
|
52
|
+
var import_core5 = require("@loaders.gl/tile-converter/v5/core");
|
|
53
|
+
var import_adapters = require("@loaders.gl/tile-converter/v5/adapters");
|
|
54
|
+
var import_core6 = require("@loaders.gl/tile-converter/v5/core");
|
|
55
|
+
var import_adapters2 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
56
|
+
var import_adapters3 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
57
|
+
var import_adapters4 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
58
|
+
var import_adapters5 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
59
|
+
var import_core7 = require("@loaders.gl/tile-converter/v5/core");
|
|
60
|
+
var import_adapters6 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
61
|
+
var import_adapters7 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
62
|
+
var import_adapters8 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
63
|
+
var import_adapters9 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
64
|
+
var import_adapters10 = require("@loaders.gl/tile-converter/v5/adapters");
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export { convertTileset, inspectTileset, TileConversionError, validateTileset } from '@loaders.gl/tile-converter/v5/core';
|
|
2
|
+
export { createTilesetConversionSource } from '@loaders.gl/tile-converter/v5/core';
|
|
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';
|
|
5
|
+
export { createBoundedMemoryTileConversionSink } from '@loaders.gl/tile-converter/v5/core';
|
|
6
|
+
export { createBrowserTileConversionSource } from '@loaders.gl/tile-converter/v5/core';
|
|
7
|
+
export type { BoundedMemoryTileConversionSink, BoundedMemoryTileConversionSinkOptions, BrowserTileConversionFile, BrowserTileConversionResource } from '@loaders.gl/tile-converter/v5/core';
|
|
8
|
+
export type { BrowserTileConversionInspection, BrowserTileConversionInputResource, BrowserTileConversionSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
9
|
+
export { createBrowserTilesetConversionSource } from '@loaders.gl/tile-converter/v5/core';
|
|
10
|
+
export { encodePointCloudTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
11
|
+
export type { EncodePointCloudTileOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
12
|
+
export { traversePointCloudSource } from '@loaders.gl/tile-converter/v5/core';
|
|
13
|
+
export type { PointCloudSourceTile, TraversePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/core';
|
|
14
|
+
export { encodePointCloudSource, encodePointCloudSourceTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
15
|
+
export type { EncodedPointCloudSourceTile, EncodePointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
16
|
+
export { convertPointCloudSource } from '@loaders.gl/tile-converter/v5/adapters';
|
|
17
|
+
export type { ConvertPointCloudSourceOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
18
|
+
export type { BrowserTilesetConversionInputResource, BrowserTilesetConversionInspection, BrowserTilesetConversionSourceOptions, BrowserTilesetResourceDescriptor } from '@loaders.gl/tile-converter/v5/core';
|
|
19
|
+
export { encodeMeshTile } from '@loaders.gl/tile-converter/v5/adapters';
|
|
20
|
+
export type { MeshTileMaterial, MeshTileOptions, MeshTileTexture, MeshTileSampler, MeshTileTextureTransform } from '@loaders.gl/tile-converter/v5/adapters';
|
|
21
|
+
export { createMeshConversionCodec } from '@loaders.gl/tile-converter/v5/adapters';
|
|
22
|
+
export type { MeshConversionInput, EncodedMeshConversionResource, MeshConversionCodecOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
23
|
+
export { createTiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
24
|
+
export type { Tiles3DConversionSpatialContext } from '@loaders.gl/tile-converter/v5/core';
|
|
25
|
+
export { createSingleMeshTilesetSink } from '@loaders.gl/tile-converter/v5/adapters';
|
|
26
|
+
export type { SingleMeshTilesetSink, SingleMeshTilesetSinkOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
27
|
+
export { createTileConversionArchive, encodeTileConversionArchiveInBatches } from '@loaders.gl/tile-converter/v5/adapters';
|
|
28
|
+
export type { TileConversionArchiveOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
29
|
+
export { createSingleMeshTilesetArchive } from '@loaders.gl/tile-converter/v5/adapters';
|
|
30
|
+
export type { SingleMeshTilesetArchiveOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
31
|
+
export { createMeshTilesetConversionSource } from '@loaders.gl/tile-converter/v5/adapters';
|
|
32
|
+
export type { MeshSourceResource, MeshTilesetSourceOptions, MeshSourceFeatureOptions } from '@loaders.gl/tile-converter/v5/adapters';
|
|
33
|
+
export { createI3SMeshConversionCodec, createSingleMeshI3SSink } from '@loaders.gl/tile-converter/v5/adapters';
|
|
34
|
+
export type { I3SMeshConversionResource, I3SMeshConversionCodecOptions, SingleMeshI3SSink } from '@loaders.gl/tile-converter/v5/adapters';
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/v5/browser.ts
|
|
2
|
+
import {
|
|
3
|
+
convertTileset,
|
|
4
|
+
inspectTileset,
|
|
5
|
+
TileConversionError,
|
|
6
|
+
validateTileset
|
|
7
|
+
} from "@loaders.gl/tile-converter/v5/core";
|
|
8
|
+
import { createTilesetConversionSource } from "@loaders.gl/tile-converter/v5/core";
|
|
9
|
+
import { createBoundedMemoryTileConversionSink } from "@loaders.gl/tile-converter/v5/core";
|
|
10
|
+
import { createBrowserTileConversionSource } from "@loaders.gl/tile-converter/v5/core";
|
|
11
|
+
import { createBrowserTilesetConversionSource } from "@loaders.gl/tile-converter/v5/core";
|
|
12
|
+
import { encodePointCloudTile } from "@loaders.gl/tile-converter/v5/adapters";
|
|
13
|
+
import { traversePointCloudSource } from "@loaders.gl/tile-converter/v5/core";
|
|
14
|
+
import {
|
|
15
|
+
encodePointCloudSource,
|
|
16
|
+
encodePointCloudSourceTile
|
|
17
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
18
|
+
import { convertPointCloudSource } from "@loaders.gl/tile-converter/v5/adapters";
|
|
19
|
+
import { encodeMeshTile } from "@loaders.gl/tile-converter/v5/adapters";
|
|
20
|
+
import { createMeshConversionCodec } from "@loaders.gl/tile-converter/v5/adapters";
|
|
21
|
+
import { createTiles3DConversionSpatialContext } from "@loaders.gl/tile-converter/v5/core";
|
|
22
|
+
import { createSingleMeshTilesetSink } from "@loaders.gl/tile-converter/v5/adapters";
|
|
23
|
+
import {
|
|
24
|
+
createTileConversionArchive,
|
|
25
|
+
encodeTileConversionArchiveInBatches
|
|
26
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
27
|
+
import { createSingleMeshTilesetArchive } from "@loaders.gl/tile-converter/v5/adapters";
|
|
28
|
+
import { createMeshTilesetConversionSource } from "@loaders.gl/tile-converter/v5/adapters";
|
|
29
|
+
import {
|
|
30
|
+
createI3SMeshConversionCodec,
|
|
31
|
+
createSingleMeshI3SSink
|
|
32
|
+
} from "@loaders.gl/tile-converter/v5/adapters";
|
|
33
|
+
export {
|
|
34
|
+
TileConversionError,
|
|
35
|
+
convertPointCloudSource,
|
|
36
|
+
convertTileset,
|
|
37
|
+
createBoundedMemoryTileConversionSink,
|
|
38
|
+
createBrowserTileConversionSource,
|
|
39
|
+
createBrowserTilesetConversionSource,
|
|
40
|
+
createI3SMeshConversionCodec,
|
|
41
|
+
createMeshConversionCodec,
|
|
42
|
+
createMeshTilesetConversionSource,
|
|
43
|
+
createSingleMeshI3SSink,
|
|
44
|
+
createSingleMeshTilesetArchive,
|
|
45
|
+
createSingleMeshTilesetSink,
|
|
46
|
+
createTileConversionArchive,
|
|
47
|
+
createTiles3DConversionSpatialContext,
|
|
48
|
+
createTilesetConversionSource,
|
|
49
|
+
encodeMeshTile,
|
|
50
|
+
encodePointCloudSource,
|
|
51
|
+
encodePointCloudSourceTile,
|
|
52
|
+
encodePointCloudTile,
|
|
53
|
+
encodeTileConversionArchiveInBatches,
|
|
54
|
+
inspectTileset,
|
|
55
|
+
traversePointCloudSource,
|
|
56
|
+
validateTileset
|
|
57
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/** A diagnostic produced while inspecting, converting, or validating tiles. */
|
|
2
|
+
export interface TileConversionDiagnostic {
|
|
3
|
+
/** Stable machine-readable diagnostic code. */
|
|
4
|
+
readonly code: string;
|
|
5
|
+
/** Human-readable explanation of the diagnostic. */
|
|
6
|
+
readonly message: string;
|
|
7
|
+
/** Severity used by callers to decide whether the result is acceptable. */
|
|
8
|
+
readonly severity: 'info' | 'warning' | 'error';
|
|
9
|
+
/** Optional resource that produced the diagnostic. */
|
|
10
|
+
readonly resourceId?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Typed failure raised when a conversion policy or validation gate rejects a resource. */
|
|
13
|
+
export declare class TileConversionError extends Error {
|
|
14
|
+
/** Stable machine-readable failure code. */
|
|
15
|
+
readonly code: string;
|
|
16
|
+
/** Diagnostics associated with this failure. */
|
|
17
|
+
readonly diagnostics: readonly TileConversionDiagnostic[];
|
|
18
|
+
/** Creates a typed conversion failure. */
|
|
19
|
+
constructor(code: string, message: string, diagnostics?: readonly TileConversionDiagnostic[]);
|
|
20
|
+
}
|
|
21
|
+
/** Progress reported by the portable conversion core. */
|
|
22
|
+
export interface TileConversionProgress {
|
|
23
|
+
/** Current conversion phase. */
|
|
24
|
+
readonly phase: 'inspect' | 'convert' | 'validate' | 'finalize';
|
|
25
|
+
/** Number of input resources consumed so far. */
|
|
26
|
+
readonly inputResources: number;
|
|
27
|
+
/** Number of output resources written so far. */
|
|
28
|
+
readonly outputResources: number;
|
|
29
|
+
/** Number of input bytes consumed so far. */
|
|
30
|
+
readonly inputBytes: number;
|
|
31
|
+
/** Number of output bytes written so far. */
|
|
32
|
+
readonly outputBytes: number;
|
|
33
|
+
}
|
|
34
|
+
/** Summary returned after a tileset conversion completes. */
|
|
35
|
+
export interface TileConversionReport {
|
|
36
|
+
/** Completed conversion state. Failed conversions reject with their cause. */
|
|
37
|
+
readonly state: 'completed';
|
|
38
|
+
/** Number of input resources consumed. */
|
|
39
|
+
readonly inputResources: number;
|
|
40
|
+
/** Number of output resources written. */
|
|
41
|
+
readonly outputResources: number;
|
|
42
|
+
/** Number of input bytes consumed. */
|
|
43
|
+
readonly inputBytes: number;
|
|
44
|
+
/** Number of output bytes written. */
|
|
45
|
+
readonly outputBytes: number;
|
|
46
|
+
/** Largest output resource written. */
|
|
47
|
+
readonly largestOutputResourceBytes: number;
|
|
48
|
+
/** Diagnostics reported during conversion and validation. */
|
|
49
|
+
readonly diagnostics: readonly TileConversionDiagnostic[];
|
|
50
|
+
}
|
|
51
|
+
/** Portable source adapter that resolves and reads a tileset. */
|
|
52
|
+
export interface TileConversionSource<TInspection, TInput> {
|
|
53
|
+
/** Inspect the source and return its profile-specific metadata. */
|
|
54
|
+
inspect(signal?: AbortSignal): Promise<TInspection>;
|
|
55
|
+
/** Stream input resources in deterministic traversal order. */
|
|
56
|
+
read(inspection: TInspection, signal?: AbortSignal): AsyncIterable<TInput>;
|
|
57
|
+
}
|
|
58
|
+
/** Output adapter whose awaited writes apply backpressure to conversion. */
|
|
59
|
+
export interface TileConversionSink<TOutput> {
|
|
60
|
+
/** Write one completed output resource and resolve when it can be released. */
|
|
61
|
+
write(resource: TOutput, signal?: AbortSignal): Promise<void>;
|
|
62
|
+
/** Finalize the destination after every resource has been written. */
|
|
63
|
+
finalize(report: TileConversionReport): Promise<void>;
|
|
64
|
+
/** Abort and clean up a partial destination after a failure. */
|
|
65
|
+
abort(reason: unknown): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
/** Codec adapter used to convert one input resource into streamed outputs. */
|
|
68
|
+
export interface TileConversionCodec<TInspection, TInput, TOutput> {
|
|
69
|
+
/** Convert one input resource into zero or more output resources. */
|
|
70
|
+
convert(resource: TInput, inspection: TInspection, signal?: AbortSignal): AsyncIterable<TOutput> | Promise<AsyncIterable<TOutput>>;
|
|
71
|
+
/** Optionally validate each output resource before it is written. */
|
|
72
|
+
validateOutput?(resource: TOutput, signal?: AbortSignal): Promise<readonly TileConversionDiagnostic[]>;
|
|
73
|
+
}
|
|
74
|
+
/** Options for the portable `convertTileset` operation. */
|
|
75
|
+
export interface ConvertTilesetOptions<TInspection, TInput, TOutput> {
|
|
76
|
+
/** Injected input resolver and resource reader. */
|
|
77
|
+
readonly source: TileConversionSource<TInspection, TInput>;
|
|
78
|
+
/** Injected output codec. */
|
|
79
|
+
readonly codec: TileConversionCodec<TInspection, TInput, TOutput>;
|
|
80
|
+
/** Injected destination writer. */
|
|
81
|
+
readonly sink: TileConversionSink<TOutput>;
|
|
82
|
+
/** Return the decoded input byte size as a nonnegative safe integer. */
|
|
83
|
+
readonly measureInputBytes: (resource: TInput) => number;
|
|
84
|
+
/** Return the byte size of an output resource. */
|
|
85
|
+
readonly measureOutputBytes: (resource: TOutput) => number;
|
|
86
|
+
/** Reject a decoded input resource above this byte limit before encoding. Defaults to no limit. */
|
|
87
|
+
readonly maxInputResourceBytes?: number;
|
|
88
|
+
/** Reject any output resource larger than this configured byte limit. */
|
|
89
|
+
readonly maxOutputResourceBytes?: number;
|
|
90
|
+
/** Cancel inspection, conversion, validation, or writes. */
|
|
91
|
+
readonly signal?: AbortSignal;
|
|
92
|
+
/** Receive progress updates after each resource transition. */
|
|
93
|
+
readonly onProgress?: (progress: TileConversionProgress) => void;
|
|
94
|
+
}
|
|
95
|
+
/** Options for a standalone tileset validation pass. */
|
|
96
|
+
export interface ValidateTilesetOptions<TTileset> {
|
|
97
|
+
/** Tileset or conversion result to validate. */
|
|
98
|
+
readonly tileset: TTileset;
|
|
99
|
+
/** Injected profile-specific validator. */
|
|
100
|
+
readonly validate: (tileset: TTileset, signal?: AbortSignal) => Promise<readonly TileConversionDiagnostic[]>;
|
|
101
|
+
/** Cancel validation. */
|
|
102
|
+
readonly signal?: AbortSignal;
|
|
103
|
+
}
|
|
104
|
+
/** Result of validating a tileset. */
|
|
105
|
+
export interface TileValidationReport {
|
|
106
|
+
/** False when at least one error diagnostic was reported. */
|
|
107
|
+
readonly valid: boolean;
|
|
108
|
+
/** Diagnostics returned by the injected validator. */
|
|
109
|
+
readonly diagnostics: readonly TileConversionDiagnostic[];
|
|
110
|
+
}
|
|
111
|
+
/** Inspects a tileset with an injected, platform-specific source adapter. */
|
|
112
|
+
export declare function inspectTileset<TInspection, TInput>(source: TileConversionSource<TInspection, TInput>, signal?: AbortSignal): Promise<TInspection>;
|
|
113
|
+
/**
|
|
114
|
+
* Converts a stream of tileset resources through injected source, codec, and sink adapters.
|
|
115
|
+
* Decoded inputs are measured and checked against `maxInputResourceBytes` before encoding.
|
|
116
|
+
* This does not limit source decoding allocations or content retained by a source.
|
|
117
|
+
* Writes are awaited one resource at a time, keeping queued output bytes bounded by the
|
|
118
|
+
* largest emitted resource and the configured `maxOutputResourceBytes` limit.
|
|
119
|
+
*/
|
|
120
|
+
export declare function convertTileset<TInspection, TInput, TOutput>(options: ConvertTilesetOptions<TInspection, TInput, TOutput>): Promise<TileConversionReport>;
|
|
121
|
+
/** Validates a tileset through an injected profile-specific validator. */
|
|
122
|
+
export declare function validateTileset<TTileset>(options: ValidateTilesetOptions<TTileset>): Promise<TileValidationReport>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BrowserTileConversionFile } from '@loaders.gl/tile-converter/v5/core';
|
|
2
|
+
/** Output profile and required budget for packaging finalized conversion resources. */
|
|
3
|
+
export interface TileConversionArchiveOptions {
|
|
4
|
+
/** Archive format; resources must already use the selected format's layout and encoding. */
|
|
5
|
+
readonly format: '3tz' | 'slpk';
|
|
6
|
+
/** Maximum final archive bytes, including headers/index; not peak serialization memory. */
|
|
7
|
+
readonly maxArchiveBytes: number;
|
|
8
|
+
/** Cooperative packaging cancellation; active block reads and header encodes finish first. */
|
|
9
|
+
readonly signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Packages finalized, already-authored resources as a bounded 3TZ or SLPK Blob.
|
|
13
|
+
* 3TZ requires tileset.json; SLPK requires 3dSceneLayer.json.gz and precompressed I3S resources.
|
|
14
|
+
* Selecting an archive format does not convert geometry, metadata, or coordinate systems.
|
|
15
|
+
* Applications own input qualification, object URLs, and downloads. Inputs must remain unchanged.
|
|
16
|
+
* @param files - Unmodified files from a successfully finalized browser sink.
|
|
17
|
+
* @param options - Archive format and complete output-size budget.
|
|
18
|
+
* @returns Archive Blob to save using the selected .3tz or .slpk extension.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createTileConversionArchive(files: readonly BrowserTileConversionFile[], options: TileConversionArchiveOptions): Promise<Blob>;
|
|
21
|
+
/**
|
|
22
|
+
* Streams finalized resources as a bounded 3TZ or SLPK archive without a complete output buffer.
|
|
23
|
+
* Checks declarations and the full budget on first pull, before output. Await each chunk write
|
|
24
|
+
* for backpressure; callers finalize storage only after successful completion and discard partial
|
|
25
|
+
* output on failure, cancellation, or early exit. Resource inputs remain caller-owned and immutable.
|
|
26
|
+
* Uses payload blocks of at most 64 KiB and retains index/directory metadata and caller inputs.
|
|
27
|
+
* Each resource is read once for its checksum, then again for output; this is not a total heap guarantee.
|
|
28
|
+
* @param files - Files from a successfully finalized browser conversion sink.
|
|
29
|
+
* @param options - Format, complete archive-size budget, and optional cancellation signal.
|
|
30
|
+
* @returns Uint8Array views to write to application-owned storage, respecting their byte ranges.
|
|
31
|
+
*/
|
|
32
|
+
export declare function encodeTileConversionArchiveInBatches(files: readonly BrowserTileConversionFile[], options: TileConversionArchiveOptions): AsyncIterable<Uint8Array<ArrayBuffer>>;
|