@lingbi/studio 0.4.0 → 0.6.0

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 (79) hide show
  1. package/Application.d.ts +97 -21
  2. package/DownloadSaveSink.d.ts +21 -0
  3. package/EditedArchiveResourceContext.d.ts +32 -0
  4. package/ImportPerformanceMode.d.ts +5 -0
  5. package/ModelDownloadController.d.ts +21 -0
  6. package/ModelExportContext.d.ts +20 -0
  7. package/ModelExportContextFactory.d.ts +21 -0
  8. package/ModelInventory.d.ts +19 -0
  9. package/ModelInventoryController.d.ts +29 -0
  10. package/StudioToolbarState.d.ts +25 -0
  11. package/StudioWorkspace.d.ts +36 -8
  12. package/THIRD_PARTY_LICENSES.md +24 -0
  13. package/archive/ArchiveImportCentralDirectoryValidator.d.ts +21 -0
  14. package/archive/ArchiveImportChunkAcknowledgement.d.ts +12 -0
  15. package/archive/ArchiveImportCrc32.d.ts +8 -0
  16. package/archive/ArchiveImportError.d.ts +9 -0
  17. package/archive/ArchiveImportFileResult.d.ts +7 -0
  18. package/archive/ArchiveImportJobRequest.d.ts +4 -0
  19. package/archive/ArchiveImportJobValidator.d.ts +8 -0
  20. package/archive/ArchiveImportModelFormat.d.ts +1 -0
  21. package/archive/ArchiveImportPathValidator.d.ts +22 -0
  22. package/archive/ArchiveImportResult.d.ts +6 -0
  23. package/archive/ArchiveImportResultAccumulator.d.ts +17 -0
  24. package/archive/ArchiveImportRole.d.ts +1 -0
  25. package/archive/ArchiveImportRoleResult.d.ts +6 -0
  26. package/archive/ArchiveImportSignatureValidator.d.ts +7 -0
  27. package/archive/ArchiveImportWorkerClient.d.ts +23 -0
  28. package/archive/ArchiveImportWorkerClientTask.d.ts +17 -0
  29. package/archive/ArchiveImportWorkerEndpoint.d.ts +13 -0
  30. package/archive/ArchiveImportWorkerEntry.d.ts +1 -0
  31. package/archive/ArchiveImportWorkerFactory.d.ts +4 -0
  32. package/archive/ArchiveImportWorkerMessage.d.ts +48 -0
  33. package/archive/ArchiveImportWorkerMessageParser.d.ts +16 -0
  34. package/archive/ArchiveImportWorkerPort.d.ts +5 -0
  35. package/archive/ArchiveImportWorkerRuntime.d.ts +47 -0
  36. package/archive/ArchiveImportWorkerTask.d.ts +38 -0
  37. package/archive/BrowserArchiveImportWorkerEndpoint.d.ts +15 -0
  38. package/archive/BrowserArchiveImportWorkerFactory.d.ts +5 -0
  39. package/archive/BrowserArchiveImportWorkerPort.d.ts +7 -0
  40. package/assets/ArchiveImportWorkerEntry-Dh4RZo22.js +1548 -0
  41. package/assets/ManifoldWorkerEntry-BulSBVFW.js +3028 -0
  42. package/assets/ModelExportWorkerEntry-DwhcdDU3.js +3457 -0
  43. package/export/BrowserExportWorkerPort.d.ts +7 -0
  44. package/export/BrowserModelExportWorkerEndpoint.d.ts +15 -0
  45. package/export/BrowserModelExportWorkerFactory.d.ts +6 -0
  46. package/export/ByteChunkWriter.d.ts +11 -0
  47. package/export/ExportChunkAcknowledgement.d.ts +13 -0
  48. package/export/ExportJobRequest.d.ts +6 -0
  49. package/export/ExportJobValidator.d.ts +17 -0
  50. package/export/ExportModelFormat.d.ts +1 -0
  51. package/export/ExportModelRole.d.ts +1 -0
  52. package/export/ExportResourceFile.d.ts +6 -0
  53. package/export/ExportRoleRequest.d.ts +25 -0
  54. package/export/ExportWorkerMessage.d.ts +41 -0
  55. package/export/ExportWorkerMessageParser.d.ts +29 -0
  56. package/export/ExportWorkerPort.d.ts +6 -0
  57. package/export/ExportWorkerTask.d.ts +15 -0
  58. package/export/GeneratedMtlWriter.d.ts +10 -0
  59. package/export/GeneratedObjModelBaker.d.ts +12 -0
  60. package/export/GeneratedTextChunkWriter.d.ts +10 -0
  61. package/export/MatrixTransformer.d.ts +21 -0
  62. package/export/ModelExportError.d.ts +14 -0
  63. package/export/ModelExportWorkerClient.d.ts +24 -0
  64. package/export/ModelExportWorkerClientListener.d.ts +5 -0
  65. package/export/ModelExportWorkerClientTask.d.ts +14 -0
  66. package/export/ModelExportWorkerEndpoint.d.ts +14 -0
  67. package/export/ModelExportWorkerEntry.d.ts +1 -0
  68. package/export/ModelExportWorkerFactory.d.ts +4 -0
  69. package/export/ModelExportWorkerRuntime.d.ts +47 -0
  70. package/export/ObjModelBaker.d.ts +27 -0
  71. package/export/PlyHeaderParser.d.ts +64 -0
  72. package/export/PlyModelBaker.d.ts +52 -0
  73. package/index.d.ts +2 -4
  74. package/index.js +12856 -6907
  75. package/package.json +1 -1
  76. package/ObjImportSource.d.ts +0 -7
  77. package/ObjResourceListSource.d.ts +0 -5
  78. package/ObjResourceSceneSource.d.ts +0 -14
  79. package/ObjSceneSource.d.ts +0 -14
@@ -0,0 +1,7 @@
1
+ import type { ExportWorkerOutboundMessage } from './ExportWorkerMessage';
2
+ import type { ExportWorkerPort } from './ExportWorkerPort';
3
+ /** Dedicated Worker global adapter kept separate from the pure runtime protocol. */
4
+ export declare class BrowserExportWorkerPort implements ExportWorkerPort {
5
+ addEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
6
+ postMessage(message: ExportWorkerOutboundMessage, transfer?: readonly Transferable[]): void;
7
+ }
@@ -0,0 +1,15 @@
1
+ import type { ExportWorkerInboundMessage } from './ExportWorkerMessage';
2
+ import type { ModelExportWorkerEndpoint, ModelExportWorkerEndpointErrorListener, ModelExportWorkerEndpointMessageListener } from './ModelExportWorkerEndpoint';
3
+ /** Native browser Worker adapter with the Vite-recognized module Worker constructor. */
4
+ export declare class BrowserModelExportWorkerEndpoint implements ModelExportWorkerEndpoint {
5
+ private errorListener;
6
+ private messageListener;
7
+ private readonly worker;
8
+ constructor();
9
+ postMessage(message: ExportWorkerInboundMessage): void;
10
+ setErrorListener(listener: ModelExportWorkerEndpointErrorListener): void;
11
+ setMessageListener(listener: ModelExportWorkerEndpointMessageListener): void;
12
+ terminate(): void;
13
+ private handleError;
14
+ private handleMessage;
15
+ }
@@ -0,0 +1,6 @@
1
+ import type { ModelExportWorkerEndpoint } from './ModelExportWorkerEndpoint';
2
+ import type { ModelExportWorkerFactory } from './ModelExportWorkerFactory';
3
+ /** Default factory retained behind an interface for Worker protocol tests. */
4
+ export declare class BrowserModelExportWorkerFactory implements ModelExportWorkerFactory {
5
+ create(): ModelExportWorkerEndpoint;
6
+ }
@@ -0,0 +1,11 @@
1
+ /** Builds one bounded output chunk while preserving source byte slices verbatim where possible. */
2
+ export declare class ByteChunkWriter {
3
+ private buffer;
4
+ private length;
5
+ constructor(initialCapacity: number);
6
+ append(bytes: Uint8Array): void;
7
+ appendRange(bytes: Uint8Array, start: number, end: number): void;
8
+ hasData(): boolean;
9
+ toBytes(): Uint8Array;
10
+ private ensureCapacity;
11
+ }
@@ -0,0 +1,13 @@
1
+ /** One explicit main-thread acknowledgement gate for a ZIP output chunk. */
2
+ export declare class ExportChunkAcknowledgement {
3
+ readonly chunkId: number;
4
+ readonly promise: Promise<void>;
5
+ readonly taskId: number;
6
+ private rejectPromise;
7
+ private resolvePromise;
8
+ private settled;
9
+ constructor(taskId: number, chunkId: number);
10
+ acknowledge(): void;
11
+ cancel(): void;
12
+ private initializePromise;
13
+ }
@@ -0,0 +1,6 @@
1
+ import type { ExportRoleRequest } from './ExportRoleRequest';
2
+ /** A complete ZIP job with one visible role or stone followed by base. */
3
+ export interface ExportJobRequest {
4
+ readonly roles: readonly ExportRoleRequest[];
5
+ readonly taskId: number;
6
+ }
@@ -0,0 +1,17 @@
1
+ import type { ExportJobRequest } from './ExportJobRequest';
2
+ /** Validates the private Studio-to-Worker contract before either side starts I/O. */
3
+ export declare class ExportJobValidator {
4
+ validate(job: ExportJobRequest): void;
5
+ private assertTaskId;
6
+ private assertRoles;
7
+ private assertRole;
8
+ private assertGeneratedRole;
9
+ private assertGeneratedSnapshot;
10
+ private hasFiniteValues;
11
+ private assertMatrix;
12
+ private assertFiles;
13
+ private assertFile;
14
+ private hasExpectedModelExtension;
15
+ private isModelFormat;
16
+ private isSafeFileName;
17
+ }
@@ -0,0 +1 @@
1
+ export type ExportModelFormat = 'obj' | 'ply';
@@ -0,0 +1 @@
1
+ export type ExportModelRole = 'stone' | 'base';
@@ -0,0 +1,6 @@
1
+ /** A single source file retained as one ZIP entry for its model role. */
2
+ export interface ExportResourceFile {
3
+ readonly fileName: string;
4
+ readonly isModel: boolean;
5
+ readonly url: string;
6
+ }
@@ -0,0 +1,25 @@
1
+ import type { GeneratedBooleanBaseExportSnapshot } from '@lingbi/renderer';
2
+ import type { ExportModelFormat } from './ExportModelFormat';
3
+ import type { ExportModelRole } from './ExportModelRole';
4
+ import type { ExportResourceFile } from './ExportResourceFile';
5
+ /** Source data and the already-final renderer world matrix for one role. */
6
+ export interface OriginalExportRoleRequest {
7
+ readonly kind?: 'original';
8
+ readonly files: readonly ExportResourceFile[];
9
+ readonly format: ExportModelFormat;
10
+ readonly matrix: readonly number[];
11
+ readonly role: ExportModelRole;
12
+ }
13
+ /** A Boolean-generated base mesh that replaces the original base model file. */
14
+ export interface GeneratedObjExportRoleRequest {
15
+ readonly files: readonly ExportResourceFile[];
16
+ readonly format: 'obj';
17
+ readonly generated: GeneratedBooleanBaseExportSnapshot;
18
+ readonly kind: 'generated-obj';
19
+ readonly materialFileName: string;
20
+ readonly matrix: readonly number[];
21
+ readonly modelFileName: string;
22
+ readonly role: 'base';
23
+ readonly sourceFormat: ExportModelFormat;
24
+ }
25
+ export type ExportRoleRequest = OriginalExportRoleRequest | GeneratedObjExportRoleRequest;
@@ -0,0 +1,41 @@
1
+ import type { ExportJobRequest } from './ExportJobRequest';
2
+ export interface ExportWorkerAcknowledgeChunkMessage {
3
+ readonly chunkId: number;
4
+ readonly taskId: number;
5
+ readonly type: 'acknowledge-chunk';
6
+ }
7
+ export interface ExportWorkerCancelMessage {
8
+ readonly taskId: number;
9
+ readonly type: 'cancel';
10
+ }
11
+ export interface ExportWorkerStartMessage {
12
+ readonly job: ExportJobRequest;
13
+ readonly type: 'start';
14
+ }
15
+ export type ExportWorkerInboundMessage = ExportWorkerAcknowledgeChunkMessage | ExportWorkerCancelMessage | ExportWorkerStartMessage;
16
+ export interface ExportWorkerCancelledMessage {
17
+ readonly taskId: number;
18
+ readonly type: 'cancelled';
19
+ }
20
+ export interface ExportWorkerCompleteMessage {
21
+ readonly taskId: number;
22
+ readonly type: 'complete';
23
+ }
24
+ export interface ExportWorkerErrorMessage {
25
+ readonly message: string;
26
+ readonly taskId: number;
27
+ readonly type: 'error';
28
+ }
29
+ export interface ExportWorkerProgressMessage {
30
+ readonly completedFileCount: number;
31
+ readonly taskId: number;
32
+ readonly totalFileCount: number;
33
+ readonly type: 'progress';
34
+ }
35
+ export interface ExportWorkerZipChunkMessage {
36
+ readonly chunk: ArrayBuffer;
37
+ readonly chunkId: number;
38
+ readonly taskId: number;
39
+ readonly type: 'zip-chunk';
40
+ }
41
+ export type ExportWorkerOutboundMessage = ExportWorkerCancelledMessage | ExportWorkerCompleteMessage | ExportWorkerErrorMessage | ExportWorkerProgressMessage | ExportWorkerZipChunkMessage;
@@ -0,0 +1,29 @@
1
+ import type { ExportWorkerInboundMessage, ExportWorkerOutboundMessage } from './ExportWorkerMessage';
2
+ /** Narrows structured-clone data at the worker boundary without using untyped values internally. */
3
+ export declare class ExportWorkerMessageParser {
4
+ parseInbound(value: unknown): ExportWorkerInboundMessage | undefined;
5
+ parseOutbound(value: unknown): ExportWorkerOutboundMessage | undefined;
6
+ private getRecord;
7
+ private isPositiveSafeInteger;
8
+ private parseAcknowledgement;
9
+ private parseCancellation;
10
+ private parseProgress;
11
+ private parseStart;
12
+ private parseZipChunk;
13
+ private isModelFormat;
14
+ private isModelRole;
15
+ private isRecord;
16
+ private isUnknownArray;
17
+ private parseFile;
18
+ private parseFiles;
19
+ private parseJob;
20
+ private parseMatrix;
21
+ private parseRole;
22
+ private parseGeneratedRole;
23
+ private parseGeneratedSnapshot;
24
+ private parseGeneratedGroups;
25
+ private parseGeneratedMaterials;
26
+ private parseColor;
27
+ private parseRoles;
28
+ private isNonNegativeSafeInteger;
29
+ }
@@ -0,0 +1,6 @@
1
+ import type { ExportWorkerOutboundMessage } from './ExportWorkerMessage';
2
+ /** The minimal Worker-global port used by the runtime and replaceable by tests. */
3
+ export interface ExportWorkerPort {
4
+ addEventListener(type: 'message', listener: (event: MessageEvent<unknown>) => void): void;
5
+ postMessage(message: ExportWorkerOutboundMessage, transfer?: readonly Transferable[]): void;
6
+ }
@@ -0,0 +1,15 @@
1
+ import type { Zip } from 'fflate';
2
+ import type { ExportChunkAcknowledgement } from './ExportChunkAcknowledgement';
3
+ import type { ExportJobRequest } from './ExportJobRequest';
4
+ /** Runtime-local state for one Worker job, deliberately isolated from later task ids. */
5
+ export declare class ExportWorkerTask {
6
+ readonly abortController: AbortController;
7
+ awaitingAcknowledgement: ExportChunkAcknowledgement | undefined;
8
+ cancelled: boolean;
9
+ nextChunkId: number;
10
+ readonly queuedZipChunks: ArrayBuffer[];
11
+ readonly request: ExportJobRequest;
12
+ zip: Zip | undefined;
13
+ constructor(request: ExportJobRequest);
14
+ cancel(): void;
15
+ }
@@ -0,0 +1,10 @@
1
+ import type { GeneratedBooleanBaseExportSnapshot } from '@lingbi/renderer';
2
+ /** Rebuilds one MTL from used source definitions plus the Boolean cut material. */
3
+ export declare class GeneratedMtlWriter {
4
+ createChunks(snapshot: GeneratedBooleanBaseExportSnapshot, sourceTexts: readonly string[]): readonly Uint8Array[];
5
+ private collectDefinitions;
6
+ private addDefinition;
7
+ private writeMaterial;
8
+ private writeMinimalMaterial;
9
+ private formatNumber;
10
+ }
@@ -0,0 +1,12 @@
1
+ import type { GeneratedBooleanBaseExportSnapshot } from '@lingbi/renderer';
2
+ /** Serializes a renderer Boolean snapshot into a transformed OBJ stream. */
3
+ export declare class GeneratedObjModelBaker {
4
+ createChunks(snapshot: GeneratedBooleanBaseExportSnapshot, matrix: readonly number[], materialFileName: string): readonly Uint8Array[];
5
+ private writeFaces;
6
+ private writeNormals;
7
+ private writePositions;
8
+ private writeUvs;
9
+ private getValue;
10
+ private formatIndex;
11
+ private formatNumber;
12
+ }
@@ -0,0 +1,10 @@
1
+ /** Collects generated text into bounded transferable chunks. */
2
+ export declare class GeneratedTextChunkWriter {
3
+ private chunks;
4
+ private current;
5
+ private currentLength;
6
+ private readonly encoder;
7
+ appendLine(value: string): void;
8
+ toChunks(): readonly Uint8Array[];
9
+ private append;
10
+ }
@@ -0,0 +1,21 @@
1
+ /** Applies an affine renderer Matrix4 and its normal inverse-transpose without Three.js. */
2
+ export declare class MatrixTransformer {
3
+ private readonly inverseTranspose00;
4
+ private readonly inverseTranspose01;
5
+ private readonly inverseTranspose02;
6
+ private readonly inverseTranspose10;
7
+ private readonly inverseTranspose11;
8
+ private readonly inverseTranspose12;
9
+ private readonly inverseTranspose20;
10
+ private readonly inverseTranspose21;
11
+ private readonly inverseTranspose22;
12
+ private readonly matrix;
13
+ constructor(matrix: readonly number[]);
14
+ transformNormal(x: number, y: number, z: number): readonly [number, number, number];
15
+ transformPosition(x: number, y: number, z: number): readonly [number, number, number];
16
+ private assertAffineMatrix;
17
+ private assertFiniteResult;
18
+ private assertFiniteVector;
19
+ private createInverseTranspose;
20
+ private getMatrixValue;
21
+ }
@@ -0,0 +1,14 @@
1
+ export declare enum ModelExportErrorCode {
2
+ Cancelled = "cancelled",
3
+ InvalidJob = "invalid-job",
4
+ InvalidModel = "invalid-model",
5
+ InvalidSource = "invalid-source",
6
+ Protocol = "protocol",
7
+ UnsupportedModel = "unsupported-model",
8
+ WriteFailed = "write-failed"
9
+ }
10
+ /** A concise, intentional failure which can be shown by Studio without guessing. */
11
+ export declare class ModelExportError extends Error {
12
+ readonly code: ModelExportErrorCode;
13
+ constructor(code: ModelExportErrorCode, message: string);
14
+ }
@@ -0,0 +1,24 @@
1
+ import type { ExportJobRequest } from './ExportJobRequest';
2
+ import type { ModelExportWorkerClientListener } from './ModelExportWorkerClientListener';
3
+ import type { ModelExportWorkerEndpointErrorListener, ModelExportWorkerEndpointMessageListener } from './ModelExportWorkerEndpoint';
4
+ import type { ModelExportWorkerFactory } from './ModelExportWorkerFactory';
5
+ /** Main-thread side of the private Worker protocol, including ZIP write backpressure. */
6
+ export declare class ModelExportWorkerClient implements ModelExportWorkerEndpointErrorListener, ModelExportWorkerEndpointMessageListener {
7
+ private activeTask;
8
+ private disposed;
9
+ private readonly jobValidator;
10
+ private lastStartedTaskId;
11
+ private readonly listener;
12
+ private readonly messageParser;
13
+ private readonly workerFactory;
14
+ constructor(listener: ModelExportWorkerClientListener, workerFactory?: ModelExportWorkerFactory);
15
+ cancel(taskId: number): void;
16
+ dispose(): void;
17
+ handleWorkerEndpointError(message: string): void;
18
+ handleWorkerEndpointMessage(message: unknown): void;
19
+ start(job: ExportJobRequest): Promise<void>;
20
+ private rejectTask;
21
+ private resolveTask;
22
+ private toError;
23
+ private writeAndAcknowledge;
24
+ }
@@ -0,0 +1,5 @@
1
+ export interface ModelExportWorkerClientListener {
2
+ reportExportProgress?(taskId: number, completedFileCount: number, totalFileCount: number): void;
3
+ reportExportError?(taskId: number, message: string): void;
4
+ writeZipChunk(taskId: number, chunk: Uint8Array): Promise<void>;
5
+ }
@@ -0,0 +1,14 @@
1
+ import type { ModelExportWorkerEndpoint } from './ModelExportWorkerEndpoint';
2
+ /** Completion state for one client task; the promise has no hidden callbacks. */
3
+ export declare class ModelExportWorkerClientTask {
4
+ readonly completion: Promise<void>;
5
+ readonly endpoint: ModelExportWorkerEndpoint;
6
+ readonly taskId: number;
7
+ private rejectCompletion;
8
+ private resolveCompletion;
9
+ private settled;
10
+ constructor(taskId: number, endpoint: ModelExportWorkerEndpoint);
11
+ reject(reason: unknown): void;
12
+ resolve(): void;
13
+ private initializeCompletion;
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { ExportWorkerInboundMessage } from './ExportWorkerMessage';
2
+ export interface ModelExportWorkerEndpointErrorListener {
3
+ handleWorkerEndpointError(message: string): void;
4
+ }
5
+ export interface ModelExportWorkerEndpointMessageListener {
6
+ handleWorkerEndpointMessage(message: unknown): void;
7
+ }
8
+ /** Small browser Worker adapter so client tests can substitute a deterministic endpoint. */
9
+ export interface ModelExportWorkerEndpoint {
10
+ postMessage(message: ExportWorkerInboundMessage): void;
11
+ setErrorListener(listener: ModelExportWorkerEndpointErrorListener): void;
12
+ setMessageListener(listener: ModelExportWorkerEndpointMessageListener): void;
13
+ terminate(): void;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { ModelExportWorkerEndpoint } from './ModelExportWorkerEndpoint';
2
+ export interface ModelExportWorkerFactory {
3
+ create(): ModelExportWorkerEndpoint;
4
+ }
@@ -0,0 +1,47 @@
1
+ import type { ExportWorkerPort } from './ExportWorkerPort';
2
+ /** Fetches, transforms and streams an ordered ZIP wholly inside a dedicated Worker. */
3
+ export declare class ModelExportWorkerRuntime {
4
+ private activeTask;
5
+ private readonly jobValidator;
6
+ private latestStartedTaskId;
7
+ private readonly messageParser;
8
+ private readonly port;
9
+ private readonly generatedMtlWriter;
10
+ private readonly generatedObjModelBaker;
11
+ constructor(port: ExportWorkerPort);
12
+ attach(): void;
13
+ private acknowledgeChunk;
14
+ private cancelTask;
15
+ private copyZipChunk;
16
+ private createBaker;
17
+ private createZip;
18
+ private drainZipChunks;
19
+ private exportFile;
20
+ private exportGeneratedRole;
21
+ private fetchSourceMaterialTexts;
22
+ private writeGeneratedEntry;
23
+ private createZipEntry;
24
+ private finishCurrentTask;
25
+ private getErrorMessage;
26
+ private getFileCount;
27
+ private getPotentialTaskId;
28
+ private getRoleMatrix;
29
+ private handleCancellation;
30
+ private handleChunkAcknowledgement;
31
+ private handleMessage;
32
+ private handleInboundMessage;
33
+ private handleStart;
34
+ private handleZipData;
35
+ private isCurrentTask;
36
+ private matchesRoleDirectory;
37
+ private isMtlFile;
38
+ private postCancelled;
39
+ private postComplete;
40
+ private postError;
41
+ private postProgress;
42
+ private runTask;
43
+ private streamResponseIntoEntry;
44
+ private pushEntryChunk;
45
+ private throwIfCancelled;
46
+ private isCancelledError;
47
+ }
@@ -0,0 +1,27 @@
1
+ /** Incrementally rewrites OBJ positions and normals while retaining non-model source bytes. */
2
+ export declare class ObjModelBaker {
3
+ private static readonly MAX_LINE_BYTES;
4
+ private readonly encoder;
5
+ private readonly transformer;
6
+ private pending;
7
+ constructor(matrix: readonly number[]);
8
+ push(chunk: Uint8Array, final: boolean): Uint8Array;
9
+ private appendProcessedLine;
10
+ private appendNormalLine;
11
+ private appendVertexLine;
12
+ private assertFiniteColorValues;
13
+ private assertLineLength;
14
+ private collectFields;
15
+ private combinePending;
16
+ private decodeLine;
17
+ private findLineCommand;
18
+ private findLineEnd;
19
+ private hasSupportedVertexFieldCount;
20
+ private isAsciiWhitespace;
21
+ private isNumericLiteral;
22
+ private isWhitespace;
23
+ private parseFiniteNumber;
24
+ private replaceFieldValues;
25
+ private skipWhitespace;
26
+ private formatNumber;
27
+ }
@@ -0,0 +1,64 @@
1
+ export type PlyFormat = 'ascii' | 'binary_big_endian' | 'binary_little_endian';
2
+ export type PlyScalarType = 'char' | 'double' | 'float' | 'float32' | 'float64' | 'int' | 'int16' | 'int32' | 'int8' | 'short' | 'uchar' | 'uint' | 'uint16' | 'uint32' | 'uint8' | 'ushort';
3
+ export interface PlyScalarDefinition {
4
+ readonly byteLength: number;
5
+ readonly floatingPoint: boolean;
6
+ readonly integer: boolean;
7
+ }
8
+ export interface PlyScalarProperty {
9
+ readonly kind: 'scalar';
10
+ readonly name: string;
11
+ readonly type: PlyScalarType;
12
+ }
13
+ export interface PlyListProperty {
14
+ readonly countType: PlyScalarType;
15
+ readonly itemType: PlyScalarType;
16
+ readonly kind: 'list';
17
+ readonly name: string;
18
+ }
19
+ export type PlyProperty = PlyListProperty | PlyScalarProperty;
20
+ export interface PlyElement {
21
+ readonly count: number;
22
+ readonly name: string;
23
+ readonly properties: readonly PlyProperty[];
24
+ }
25
+ export interface PlyVertexField {
26
+ readonly asciiIndex: number;
27
+ readonly byteOffset: number;
28
+ readonly name: string;
29
+ readonly type: PlyScalarType;
30
+ }
31
+ export interface PlyVertexLayout {
32
+ readonly normal?: readonly [PlyVertexField, PlyVertexField, PlyVertexField];
33
+ readonly position: readonly [PlyVertexField, PlyVertexField, PlyVertexField];
34
+ readonly recordByteLength: number;
35
+ }
36
+ export interface PlySchema {
37
+ readonly elements: readonly PlyElement[];
38
+ readonly format: PlyFormat;
39
+ readonly vertexElementIndex: number;
40
+ readonly vertexLayout: PlyVertexLayout;
41
+ }
42
+ /** Parses only the declarative PLY header needed to safely locate vertex records. */
43
+ export declare class PlyHeaderParser {
44
+ getScalarDefinition(type: PlyScalarType): PlyScalarDefinition;
45
+ parse(headerBytes: Uint8Array): PlySchema;
46
+ private addProperty;
47
+ private assertMagic;
48
+ private createVertexLayout;
49
+ private createNormalFields;
50
+ private createVertexFields;
51
+ private decodeHeader;
52
+ private findSingleField;
53
+ private findVertexElementIndex;
54
+ private getRecordByteLength;
55
+ private isListProperty;
56
+ private parseElement;
57
+ private parseCount;
58
+ private parseFormat;
59
+ private parseScalarType;
60
+ private isScalarType;
61
+ private requireFloatingPointField;
62
+ private requirePart;
63
+ private assertFloatingPointField;
64
+ }
@@ -0,0 +1,52 @@
1
+ /** Incrementally rewrites ordinary ASCII and binary PLY vertex data without parsing full files. */
2
+ export declare class PlyModelBaker {
3
+ private static readonly MAX_BINARY_RECORD_BYTES;
4
+ private static readonly MAX_HEADER_BYTES;
5
+ private static readonly MAX_LINE_BYTES;
6
+ private completed;
7
+ private elementIndex;
8
+ private readonly encoder;
9
+ private readonly headerParser;
10
+ private pending;
11
+ private remainingElementRecords;
12
+ private schema;
13
+ private readonly transformer;
14
+ constructor(matrix: readonly number[]);
15
+ push(chunk: Uint8Array, final: boolean): Uint8Array;
16
+ private appendAsciiRecord;
17
+ private appendBinaryRecords;
18
+ private appendProcessedAsciiLines;
19
+ private assertCompleteSource;
20
+ private assertPendingByteLength;
21
+ private combinePending;
22
+ private consumeRecord;
23
+ private createAsciiFields;
24
+ private createReplacement;
25
+ private decodeAsciiLine;
26
+ private findHeaderEnd;
27
+ private findLineEnd;
28
+ private getBinaryRecordByteLength;
29
+ private getCurrentElement;
30
+ private getSchema;
31
+ private getSchemaOrUndefined;
32
+ private initializeElements;
33
+ private isEndHeaderLine;
34
+ private isNumericLiteral;
35
+ private isWhitespace;
36
+ private parseAsciiFloat;
37
+ private pushBody;
38
+ private pushHeaderAndInitialBody;
39
+ private readScalar;
40
+ private replaceAsciiValues;
41
+ private compareReplacements;
42
+ private formatNumber;
43
+ private skipWhitespace;
44
+ private transformAsciiVertex;
45
+ private createVertexReplacements;
46
+ private getCurrentElementPropertyCount;
47
+ private requireAsciiField;
48
+ private transformBinaryVertex;
49
+ private readRequiredFloat;
50
+ private writeRequiredFloat;
51
+ private advanceElement;
52
+ }
package/index.d.ts CHANGED
@@ -1,12 +1,10 @@
1
1
  export { Application } from './Application';
2
+ export { ImportPerformanceMode } from './ImportPerformanceMode';
3
+ export type { ModelInventoryConfirmationHandler, ModelInventoryConfirmationRequest, ModelInventoryFiles, ModelInventoryHandler, ModelInventoryRequest, } from './ModelInventory';
2
4
  export type { ModelResourceListSource } from './ModelResourceListSource';
3
5
  export type { ModelResourceSceneSource } from './ModelResourceSceneSource';
4
6
  export { ModelUpAxis } from './ModelUpAxis';
5
7
  export type { ObjImportResult } from './ObjImportResult';
6
8
  export type { ObjImportWarning } from './ObjImportResult';
7
9
  export { ObjImportFailureCode, ObjImportWarningCode } from './ObjImportResult';
8
- export type { ObjImportSource } from './ObjImportSource';
9
- export type { ObjResourceListSource } from './ObjResourceListSource';
10
- export type { ObjResourceSceneSource } from './ObjResourceSceneSource';
11
- export type { ObjSceneSource } from './ObjSceneSource';
12
10
  export { StoneBasePoseMode } from './StoneBasePoseMode';