@loaders.gl/tile-converter 5.0.0-alpha.6 → 5.0.0-alpha.8

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 (96) hide show
  1. package/README.md +155 -0
  2. package/dist/converter.min.cjs +194 -194
  3. package/dist/i3s-server/bin/i3s-server.min.cjs +84 -84
  4. package/dist/index.cjs +35865 -0
  5. package/dist/index.js +35837 -0
  6. package/dist/v5/browser-sink.d.ts +37 -0
  7. package/dist/v5/browser-source.d.ts +38 -0
  8. package/dist/v5/browser-tileset-source.d.ts +70 -0
  9. package/dist/v5/browser.cjs +1962 -0
  10. package/dist/v5/browser.d.ts +18 -0
  11. package/dist/v5/browser.js +1927 -0
  12. package/dist/v5/conversion-api.d.ts +122 -0
  13. package/dist/v5/feature-arrow.d.ts +36 -0
  14. package/dist/v5/index.cjs +3975 -0
  15. package/dist/v5/index.d.ts +18 -0
  16. package/dist/v5/index.js +3928 -0
  17. package/dist/v5/point-cloud-conversion.d.ts +31 -0
  18. package/dist/v5/point-cloud-source-encoder.d.ts +49 -0
  19. package/dist/v5/point-cloud-source.d.ts +25 -0
  20. package/dist/v5/point-cloud.d.ts +24 -0
  21. package/dist/v5/resource-manifest.d.ts +58 -0
  22. package/dist/v5/spatial-conversion.d.ts +59 -0
  23. package/dist/v5/tileset-source.d.ts +21 -0
  24. package/package.json +41 -26
  25. package/src/common/README.md +5 -0
  26. package/src/index.ts +1 -2
  27. package/src/{3d-tiles-converter → v4/3d-tiles-converter}/3d-tiles-converter.ts +13 -2
  28. package/src/v4/3d-tiles-converter/helpers/validate-i3s-spatial-reference.ts +124 -0
  29. package/src/{deps-installer → v4/deps-installer}/deps-installer.ts +10 -7
  30. package/src/v4/i3s-converter/helpers/encode-string-attribute.ts +23 -0
  31. package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-converter.ts +15 -42
  32. package/src/{i3s-converter → v4/i3s-converter}/helpers/gltf-attributes.ts +5 -4
  33. package/src/{i3s-converter → v4/i3s-converter}/helpers/load-3d-tiles.ts +5 -9
  34. package/src/{i3s-converter → v4/i3s-converter}/i3s-converter.ts +6 -7
  35. package/src/{i3s-server → v4/i3s-server}/README.md +2 -2
  36. package/src/{i3s-server → v4/i3s-server}/routes/slpk-router.ts +1 -0
  37. package/src/v4/index.ts +2 -0
  38. package/src/v5/browser-sink.ts +129 -0
  39. package/src/v5/browser-source.ts +155 -0
  40. package/src/v5/browser-tileset-source.ts +328 -0
  41. package/src/v5/browser.ts +54 -0
  42. package/src/v5/conversion-api.ts +287 -0
  43. package/src/v5/feature-arrow.ts +427 -0
  44. package/src/v5/index.ts +47 -0
  45. package/src/v5/point-cloud-conversion.ts +80 -0
  46. package/src/v5/point-cloud-source-encoder.ts +102 -0
  47. package/src/v5/point-cloud-source.ts +84 -0
  48. package/src/v5/point-cloud.ts +271 -0
  49. package/src/v5/resource-manifest.ts +213 -0
  50. package/src/v5/spatial-conversion.ts +305 -0
  51. package/src/v5/tileset-source.ts +54 -0
  52. /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/3d-tiles-content-converter.ts +0 -0
  53. /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/i3s-obb-to-3d-tiles-obb.ts +0 -0
  54. /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/load-i3s.ts +0 -0
  55. /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/helpers/texture-atlas.ts +0 -0
  56. /package/src/{3d-tiles-converter → v4/3d-tiles-converter}/json-templates/tileset.ts +0 -0
  57. /package/src/{constants.ts → v4/constants.ts} +0 -0
  58. /package/src/{converter-cli.ts → v4/converter-cli.ts} +0 -0
  59. /package/src/{i3s-converter → v4/i3s-converter}/helpers/attribute-metadata-info.ts +0 -0
  60. /package/src/{i3s-converter → v4/i3s-converter}/helpers/batch-ids-extensions.ts +0 -0
  61. /package/src/{i3s-converter → v4/i3s-converter}/helpers/coordinate-converter.ts +0 -0
  62. /package/src/{i3s-converter → v4/i3s-converter}/helpers/create-scene-server-path.ts +0 -0
  63. /package/src/{i3s-converter → v4/i3s-converter}/helpers/feature-attributes.ts +0 -0
  64. /package/src/{i3s-converter → v4/i3s-converter}/helpers/geometry-attributes.ts +0 -0
  65. /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-debug.ts +0 -0
  66. /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-index-document.ts +0 -0
  67. /package/src/{i3s-converter → v4/i3s-converter}/helpers/node-pages.ts +0 -0
  68. /package/src/{i3s-converter → v4/i3s-converter}/helpers/preprocess-3d-tiles.ts +0 -0
  69. /package/src/{i3s-converter → v4/i3s-converter}/helpers/progress.ts +0 -0
  70. /package/src/{i3s-converter → v4/i3s-converter}/helpers/tileset-traversal.ts +0 -0
  71. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/geometry-definitions.ts +0 -0
  72. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/layers.ts +0 -0
  73. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/metadata.ts +0 -0
  74. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/node.ts +0 -0
  75. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/scene-server.ts +0 -0
  76. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/shared-resources.ts +0 -0
  77. /package/src/{i3s-converter → v4/i3s-converter}/json-templates/store.ts +0 -0
  78. /package/src/{i3s-converter → v4/i3s-converter}/types.ts +0 -0
  79. /package/src/{i3s-server → v4/i3s-server}/app.ts +0 -0
  80. /package/src/{i3s-server → v4/i3s-server}/bin/www.ts +0 -0
  81. /package/src/{i3s-server → v4/i3s-server}/certs/cert.pem +0 -0
  82. /package/src/{i3s-server → v4/i3s-server}/certs/key.pem +0 -0
  83. /package/src/{i3s-server → v4/i3s-server}/controllers/slpk-controller.ts +0 -0
  84. /package/src/{i3s-server → v4/i3s-server}/utils/create-scene-server.ts +0 -0
  85. /package/src/{i3s-server → v4/i3s-server}/utils/server-utils.ts +0 -0
  86. /package/src/{lib → v4/lib}/json-schemas/conversion-dump-json-schema.ts +0 -0
  87. /package/src/{lib → v4/lib}/utils/cli-utils.ts +0 -0
  88. /package/src/{lib → v4/lib}/utils/compress-util.ts +0 -0
  89. /package/src/{lib → v4/lib}/utils/conversion-dump.ts +0 -0
  90. /package/src/{lib → v4/lib}/utils/file-utils.ts +0 -0
  91. /package/src/{lib → v4/lib}/utils/geometry-utils.ts +0 -0
  92. /package/src/{lib → v4/lib}/utils/lod-conversion-utils.ts +0 -0
  93. /package/src/{lib → v4/lib}/utils/queue.ts +0 -0
  94. /package/src/{lib → v4/lib}/utils/statistic-utils.ts +0 -0
  95. /package/src/{lib → v4/lib}/utils/write-queue.ts +0 -0
  96. /package/src/{pgm-loader.ts → v4/pgm-loader.ts} +0 -0
@@ -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,36 @@
1
+ import type { ArrowTableBatch, Schema } from '@loaders.gl/schema';
2
+ /** Feature attributes and source identifier ready for Arrow normalization. */
3
+ export interface TileFeatureAttributes {
4
+ /** Stable feature identifier decoded from the source's feature-ID descriptor. */
5
+ readonly featureId: string | number | bigint;
6
+ /** Property values interpreted from the source metadata class. */
7
+ readonly properties: Readonly<Record<string, unknown>>;
8
+ /** Original class or property-table name, kept distinct between output batches. */
9
+ readonly metadataClass: string;
10
+ /** Optional original encoded metadata bytes, preserved without interpretation. */
11
+ readonly rawMetadata?: Uint8Array;
12
+ }
13
+ /** Explicit Arrow mapping and bounded output size for feature attribute batches. */
14
+ export interface FeatureArrowBatchOptions {
15
+ /** Declared output columns and types, including the feature-ID column. */
16
+ readonly schema: Schema;
17
+ /** Schema field receiving stable feature identifiers. Defaults to `feature_id`. */
18
+ readonly featureIdField?: string;
19
+ /** Optional binary field receiving source metadata bytes. */
20
+ readonly rawMetadataField?: string;
21
+ /** Maximum number of features in one emitted Arrow record batch. Defaults to 65,536. */
22
+ readonly batchSize?: number;
23
+ }
24
+ /**
25
+ * Converts decoded feature attributes to bounded Arrow batches using a caller-declared schema.
26
+ *
27
+ * Values retain their source primitive types; nested lists, structs, dictionary enums, and 64-bit
28
+ * identifiers use the corresponding schema field type. Missing schema fields and incompatible
29
+ * identifiers fail explicitly. Unknown properties are rejected so a class mapping cannot silently
30
+ * discard data. Separate metadata classes should be passed separately with their own schema.
31
+ *
32
+ * @param features - Features decoded from one source metadata class.
33
+ * @param options - Explicit Arrow schema and batch configuration.
34
+ * @returns Arrow table batches whose schema metadata records the source metadata class.
35
+ */
36
+ export declare function convertFeatureAttributesToArrowBatches(features: readonly TileFeatureAttributes[], options: FeatureArrowBatchOptions): ArrowTableBatch[];