@selvajs/compute 2.5.0 → 3.0.0-beta.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 (50) hide show
  1. package/dist/chunk-2KAHGLXE.js +4 -0
  2. package/dist/chunk-2KAHGLXE.js.map +1 -0
  3. package/dist/chunk-2QHLW6ZL.cjs +4 -0
  4. package/dist/{chunk-XA4OMT6Z.cjs.map → chunk-2QHLW6ZL.cjs.map} +1 -1
  5. package/dist/chunk-BF7OQEQG.cjs +2 -0
  6. package/dist/{chunk-2EO6UUZF.cjs.map → chunk-BF7OQEQG.cjs.map} +1 -1
  7. package/dist/chunk-HKU2XHQQ.js +55 -0
  8. package/dist/chunk-HKU2XHQQ.js.map +1 -0
  9. package/dist/chunk-SA67IFJH.cjs +55 -0
  10. package/dist/chunk-SA67IFJH.cjs.map +1 -0
  11. package/dist/chunk-WHB32TTR.js +2 -0
  12. package/dist/chunk-WHB32TTR.js.map +1 -0
  13. package/dist/core.cjs +1 -1
  14. package/dist/core.cjs.map +1 -1
  15. package/dist/core.d.cts +2 -25
  16. package/dist/core.d.ts +2 -25
  17. package/dist/core.js +1 -1
  18. package/dist/grasshopper.cjs +1 -1
  19. package/dist/grasshopper.cjs.map +1 -1
  20. package/dist/grasshopper.d.cts +30 -143
  21. package/dist/grasshopper.d.ts +30 -143
  22. package/dist/grasshopper.js +1 -1
  23. package/dist/{handle-files-UcwvknQ3.d.ts → handle-files-Bu2qmaPj.d.cts} +11 -1
  24. package/dist/{handle-files-UcwvknQ3.d.cts → handle-files-Bu2qmaPj.d.ts} +11 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +3 -3
  28. package/dist/index.d.ts +3 -3
  29. package/dist/index.js +1 -1
  30. package/dist/visualization-N3OJSZOY.js +2 -0
  31. package/dist/visualization-UOIWXLDL.cjs +2 -0
  32. package/dist/{visualization-ZFXCE5NW.cjs.map → visualization-UOIWXLDL.cjs.map} +1 -1
  33. package/dist/visualization.cjs +1 -1
  34. package/dist/visualization.d.cts +25 -10
  35. package/dist/visualization.d.ts +25 -10
  36. package/dist/visualization.js +1 -1
  37. package/package.json +1 -3
  38. package/dist/chunk-2EO6UUZF.cjs +0 -2
  39. package/dist/chunk-GY2WLD42.js +0 -4
  40. package/dist/chunk-GY2WLD42.js.map +0 -1
  41. package/dist/chunk-UFFSB36M.js +0 -2
  42. package/dist/chunk-UFFSB36M.js.map +0 -1
  43. package/dist/chunk-UH3HH7PS.js +0 -55
  44. package/dist/chunk-UH3HH7PS.js.map +0 -1
  45. package/dist/chunk-XA4OMT6Z.cjs +0 -4
  46. package/dist/chunk-XXA7NEQF.cjs +0 -55
  47. package/dist/chunk-XXA7NEQF.cjs.map +0 -1
  48. package/dist/visualization-RICQHNLJ.js +0 -2
  49. package/dist/visualization-ZFXCE5NW.cjs +0 -2
  50. /package/dist/{visualization-RICQHNLJ.js.map → visualization-N3OJSZOY.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- import { R as RhinoComputeError, C as ComputeServerStats, F as FileBaseInfo } from './handle-files-UcwvknQ3.cjs';
2
- export { b as FileData, P as ProcessedFile, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-UcwvknQ3.cjs';
1
+ import { R as RhinoComputeError, C as ComputeServerStats, F as FileBaseInfo } from './handle-files-Bu2qmaPj.cjs';
2
+ export { b as FileData, P as ProcessedFile, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-Bu2qmaPj.cjs';
3
3
  import { R as RetryPolicy, C as ComputeConfig } from './types-ChF690kY.cjs';
4
4
  export { a as RhinoModelUnit } from './types-ChF690kY.cjs';
5
5
  import { f as GrasshopperComputeResponse, a as DataTree, e as GrasshopperComputeConfig, g as GrasshopperParsedIO, h as GrasshopperParsedIORaw, M as MeshExtractionOptions, k as InputParamSchema, j as InputParam, b as DataTreeDefault, c as DataTreePath } from './types-D-HQ-gWI.cjs';
@@ -61,6 +61,15 @@ type SolveResult = {
61
61
  response: GrasshopperComputeResponse;
62
62
  durationMs: number;
63
63
  fromCache: boolean;
64
+ /**
65
+ * Definition-cache telemetry for a real compute call (not a Selva-cache
66
+ * `fromCache` hit). `false` → the server reused its cached definition via
67
+ * the pointer (no upload); `true` → the pointer was cold/stale so the full
68
+ * definition was re-uploaded. `undefined` when the server-definition-cache
69
+ * fast path didn't run (reuse disabled, or a non-reusable definition such
70
+ * as a remote URL).
71
+ */
72
+ definitionReuploaded?: boolean;
64
73
  } | {
65
74
  status: 'error';
66
75
  error: RhinoComputeError;
@@ -347,20 +356,15 @@ interface GetValuesResult<T = ParsedContext> {
347
356
  declare class GrasshopperResponseProcessor {
348
357
  private readonly response;
349
358
  private readonly debug;
350
- /**
351
- * Store the compute response for reuse.
352
- */
353
359
  constructor(response: GrasshopperComputeResponse, debug?: boolean);
354
360
  /**
355
361
  * Extract all values in the response.
356
362
  *
357
363
  * @typeParam T - Expected structure of the return value. Defaults to a simple key/value map. (later cast as needed)
358
- * @param byId - If true, keys are parameter IDs; if false, keys are parameter names.
364
+ * @param byId - Key by parameter ID instead of name. Requires the VektorNode rhino.compute branch.
359
365
  * @param options - Controls parsing behavior such as Rhino geometry decoding.
360
366
  * @returns Parsed Grasshopper output values.
361
367
  *
362
- * **Note:** Using `byId` only works with the custom VektorNode rhino.compute branch.
363
- *
364
368
  * @example
365
369
  * ```ts
366
370
  * const processor = new GrasshopperResponseProcessor(response);
@@ -380,13 +384,13 @@ declare class GrasshopperResponseProcessor {
380
384
  * @param options - Parsing configuration (e.g. disable parsing or enable Rhino).
381
385
  * @returns Single parsed value, array of values, or undefined if the parameter is absent.
382
386
  *
387
+ * `byId` requires the VektorNode rhino.compute branch.
388
+ *
383
389
  * @example
384
390
  * ```ts
385
391
  * const schema = processor.getValue({ byName: 'Schema' });
386
392
  * const output = processor.getValue({ byId: 'a4be1c1e-23f9-4c27-b942-7f3bb2c45c6f' });
387
393
  * ```
388
- *
389
- * **Note:** `byId` only works with the custom VektorNode rhino.compute branch.
390
394
  */
391
395
  getValue(selector: {
392
396
  byName: string;
@@ -394,57 +398,26 @@ declare class GrasshopperResponseProcessor {
394
398
  byId: string;
395
399
  }, options?: GetValuesOptions): any;
396
400
  /**
397
- * @deprecated Use `getValue({ byName })` instead.
398
- */
399
- getValueByParamName(paramName: string, options?: GetValuesOptions): any;
400
- /**
401
- * @deprecated Use `getValue({ byId })` instead.
402
- */
403
- getValueByParamId(paramId: string, options?: GetValuesOptions): any;
404
- /**
405
- * Convert all geometry results into Three.js mesh objects.
406
- *
407
- * This uses internal helpers to decode Rhino geometry into Three.js
408
- * primitives such as meshes and lines, making them ready for rendering.
401
+ * Decode all geometry results into Three.js meshes/lines ready for rendering.
402
+ * The processor's `debug` flag is merged with `options` (explicit options win).
409
403
  *
410
- * All processing options (scaling, positioning, compression, etc.) can be customized.
411
- * The processor's debug flag is merged with options - explicit options take precedence.
404
+ * Requires the **Selva Display** Grasshopper component and the VektorNode
405
+ * rhino.compute branch. Three.js is loaded dynamically, so install it as a
406
+ * peer dependency before calling this.
412
407
  *
413
- * **Note:** This only works when using the **Selva Display** component in Grasshopper, and requires the custom branch of rhino.compute from VektorNode. This method dynamically imports three.js visualization modules. Ensure three.js is installed as a peer dependency if you use this feature.
414
- *
415
- * @param options - Configuration for mesh extraction and parsing. Overrides processor's debug flag if provided.
416
- * @returns Promise resolving to an array of Three.js mesh objects.
417
- * @throws {RhinoComputeError} If three.js visualization module cannot be loaded.
408
+ * @throws {RhinoComputeError} If the three.js visualization module can't load.
418
409
  *
419
410
  * @example
420
411
  * ```ts
421
412
  * const meshes = await processor.extractMeshesFromResponse();
422
413
  * scene.add(...meshes);
423
414
  * ```
424
- *
425
- * @example
426
- * ```ts
427
- * const meshes = await processor.extractMeshesFromResponse({
428
- * debug: true,
429
- * allowScaling: true,
430
- * allowAutoPosition: false,
431
- * parsing: {
432
- * mergeByMaterial: false,
433
- * applyTransforms: true,
434
- * debug: true,
435
- * },
436
- * });
437
- * ```
438
415
  */
439
416
  extractMeshesFromResponse(options?: MeshExtractionOptions): Promise<THREE.Object3D<THREE.Object3DEventMap>[]>;
440
417
  /**
441
- * Extract internal file data structures from the response.
442
- * This includes Grasshopper-generated textures, JSON exports,
443
- * CAD formats, or any file structure packaged in the response.
444
- *
445
- * **Note:** This only works when using the **Block to File** and **Geometry To File** components from the Selva plugin in Grasshopper, and requires the custom branch of rhino.compute from VektorNode.
446
- *
447
- * @returns Raw file data entries.
418
+ * Raw file entries packaged in the response (textures, JSON, CAD exports, …).
419
+ * Produced by the Selva **Block to File** / **Geometry To File** components on
420
+ * the VektorNode rhino.compute branch.
448
421
  */
449
422
  private getFileData;
450
423
  /**
@@ -470,19 +443,6 @@ declare class GrasshopperResponseProcessor {
470
443
  getAndDownloadFiles(folderName: string, additionalFiles?: FileBaseInfo[] | FileBaseInfo | null): Promise<void>;
471
444
  }
472
445
 
473
- /**
474
- * Hash definition and data tree into a stable cache key.
475
- *
476
- * The definition is the *identity* of what we solve, so a binary definition is
477
- * hashed over its full content (`fnv1aBytes`) — a length-only or sampled key
478
- * would let two different `.gh` files collide and serve one's cached solve for
479
- * the other. `.gh` files are small enough that a single linear pass is
480
- * negligible. (Note this differs from `stableStringify`'s sampled handling of a
481
- * `Uint8Array` found *inside* the dataTree, where sampling is a deliberate
482
- * per-solve perf tradeoff.)
483
- */
484
- declare function hashSolveInput(definition: string | Uint8Array, dataTree: unknown): string;
485
-
486
446
  /**
487
447
  * Runs a Rhino Compute job using the provided tree prototypes and Grasshopper definition.
488
448
  *
@@ -551,88 +511,15 @@ declare function fetchDefinitionIO(definition: string | Uint8Array, config: Comp
551
511
  declare function fetchParsedDefinitionIO(definition: string | Uint8Array, config: ComputeConfig): Promise<GrasshopperParsedIO>;
552
512
 
553
513
  /**
554
- * Processes a raw input parameter schema and converts it into a typed InputParam object.
555
- *
556
- * @internal This is an internal processor. Use `fetchParsedDefinitionIO()` to get processed inputs instead.
557
- *
558
- * This function handles the transformation of raw input parameter data from Grasshopper into
559
- * a structured, type-safe format. It performs validation, type-specific processing, and error
560
- * handling for various parameter types including numeric, boolean, text, geometry, point, and line inputs.
561
- *
562
- * @param rawInput - The raw input parameter schema to process
563
- * @returns A fully processed and typed InputParam object with appropriate type-specific properties
564
- *
565
- * @throws {RhinoComputeError} When an unknown paramType is encountered
566
- * @throws {Error} Re-throws any non-RhinoComputeError exceptions
567
- *
568
- * @remarks
569
- * The function performs the following operations:
570
- * - Extracts base properties common to all input types
571
- * - Preprocesses the raw input data
572
- * - Applies type-specific validation and transformation
573
- * - Handles errors gracefully by creating safe default values for validation errors
574
- *
575
- * Supported parameter types:
576
- * - `Number` and `Integer`: Numeric inputs with optional min/max constraints
577
- * - `Boolean`: Boolean flag inputs
578
- * - `Text`: String inputs
579
- * - `Geometry`: Generic geometry objects
580
- * - `Point`: 3D point objects
581
- * - `Line`: Line objects
582
- *
583
- * @example
584
- * ```typescript
585
- * const rawInput = {
586
- * name: 'Length',
587
- * paramType: 'Number',
588
- * minimum: 0,
589
- * maximum: 100,
590
- * default: 50
591
- * };
592
- * const processedInput = processInput(rawInput);
593
- * ```
514
+ * Parse one raw Grasshopper input schema into a typed {@link InputParam}.
515
+ * Validation failures are swallowed and replaced with a safe default; use
516
+ * {@link processInputWithError} to receive them.
594
517
  */
595
518
  declare function processInput(rawInput: InputParamSchema): InputParam;
596
519
  /**
597
- * Processes raw Grasshopper input schemas into strongly-typed TypeScript interfaces.
598
- *
599
- * @internal This is an internal batch processor. Use `fetchParsedDefinitionIO()` to get processed inputs instead.
600
- *
601
- * Transforms each raw input parameter by:
602
- * - Normalizing default values (flattening data trees, parsing primitives)
603
- * - Applying type-specific parsing (Number, Text, Boolean, Geometry, etc.)
604
- * - Validating constraints (min/max, required fields)
605
- * - Converting to discriminated union types for type safety
606
- *
607
- * @param rawInputs - Array of raw input schemas from Rhino Compute API
608
- * @returns Array of processed, strongly-typed input parameters
609
- *
610
- * @remarks
611
- * - Empty data trees are converted to `undefined`
612
- * - Single values are extracted from arrays when appropriate
613
- * - Tree structures are preserved for list/tree access parameters
614
- * - Invalid inputs fall back to safe defaults with console warnings
615
- *
616
- * @example
617
- * ```typescript
618
- * const rawInputs = [
619
- * { paramType: 'Number', name: 'radius', minimum: 0, default: 10 },
620
- * { paramType: 'Text', name: 'label', default: 'Hello' }
621
- * ];
622
- *
623
- * const processed = processInputs(rawInputs);
624
- * // Result: [
625
- * // { paramType: 'Number', name: 'radius', minimum: 0, default: 10, ... },
626
- * // { paramType: 'Text', name: 'label', default: 'Hello', ... }
627
- * // ]
628
- *
629
- * // Now type-safe:
630
- * if (processed[0].paramType === 'Number') {
631
- * console.log(processed[0].minimum); // TypeScript knows this exists
632
- * }
633
- * ```
634
- *
635
- * @see {@link processInput} for individual input processing logic
520
+ * Parse an array of raw input schemas into typed {@link InputParam}s, each via
521
+ * {@link processInput}. Use {@link processInputsWithErrors} to also collect the
522
+ * inputs that failed validation.
636
523
  */
637
524
  declare function processInputs(rawInputs: InputParamSchema[]): InputParam[];
638
525
 
@@ -906,4 +793,4 @@ declare class TreeBuilder {
906
793
  private static clampValue;
907
794
  }
908
795
 
909
- export { type CacheOptions, ComputeConfig, DataTree, DataTreeDefault, DataTreePath, type DataTreeValue, FileBaseInfo, type GetValuesOptions, type GetValuesResult, GrasshopperClient, GrasshopperComputeConfig, GrasshopperComputeResponse, GrasshopperParsedIO, GrasshopperParsedIORaw, GrasshopperResponseProcessor, InputParam, InputParamSchema, type ParsedContext, RetryPolicy, RhinoComputeError, type SchedulerMode, type SolveContext, type SolveExecutor, type SolveOptions, type SolveResult, SolveScheduler, type SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, hashSolveInput, processInput, processInputs, solveGrasshopperDefinition };
796
+ export { type CacheOptions, ComputeConfig, DataTree, DataTreeDefault, DataTreePath, type DataTreeValue, FileBaseInfo, type GetValuesOptions, type GetValuesResult, GrasshopperClient, GrasshopperComputeConfig, GrasshopperComputeResponse, GrasshopperParsedIO, GrasshopperParsedIORaw, GrasshopperResponseProcessor, InputParam, InputParamSchema, type ParsedContext, RetryPolicy, RhinoComputeError, type SchedulerMode, type SolveContext, type SolveOptions, type SolveResult, SolveScheduler, type SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, processInput, processInputs, solveGrasshopperDefinition };
@@ -1,5 +1,5 @@
1
- import { R as RhinoComputeError, C as ComputeServerStats, F as FileBaseInfo } from './handle-files-UcwvknQ3.js';
2
- export { b as FileData, P as ProcessedFile, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-UcwvknQ3.js';
1
+ import { R as RhinoComputeError, C as ComputeServerStats, F as FileBaseInfo } from './handle-files-Bu2qmaPj.js';
2
+ export { b as FileData, P as ProcessedFile, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-Bu2qmaPj.js';
3
3
  import { R as RetryPolicy, C as ComputeConfig } from './types-ChF690kY.js';
4
4
  export { a as RhinoModelUnit } from './types-ChF690kY.js';
5
5
  import { f as GrasshopperComputeResponse, a as DataTree, e as GrasshopperComputeConfig, g as GrasshopperParsedIO, h as GrasshopperParsedIORaw, M as MeshExtractionOptions, k as InputParamSchema, j as InputParam, b as DataTreeDefault, c as DataTreePath } from './types-DxT3hSkx.js';
@@ -61,6 +61,15 @@ type SolveResult = {
61
61
  response: GrasshopperComputeResponse;
62
62
  durationMs: number;
63
63
  fromCache: boolean;
64
+ /**
65
+ * Definition-cache telemetry for a real compute call (not a Selva-cache
66
+ * `fromCache` hit). `false` → the server reused its cached definition via
67
+ * the pointer (no upload); `true` → the pointer was cold/stale so the full
68
+ * definition was re-uploaded. `undefined` when the server-definition-cache
69
+ * fast path didn't run (reuse disabled, or a non-reusable definition such
70
+ * as a remote URL).
71
+ */
72
+ definitionReuploaded?: boolean;
64
73
  } | {
65
74
  status: 'error';
66
75
  error: RhinoComputeError;
@@ -347,20 +356,15 @@ interface GetValuesResult<T = ParsedContext> {
347
356
  declare class GrasshopperResponseProcessor {
348
357
  private readonly response;
349
358
  private readonly debug;
350
- /**
351
- * Store the compute response for reuse.
352
- */
353
359
  constructor(response: GrasshopperComputeResponse, debug?: boolean);
354
360
  /**
355
361
  * Extract all values in the response.
356
362
  *
357
363
  * @typeParam T - Expected structure of the return value. Defaults to a simple key/value map. (later cast as needed)
358
- * @param byId - If true, keys are parameter IDs; if false, keys are parameter names.
364
+ * @param byId - Key by parameter ID instead of name. Requires the VektorNode rhino.compute branch.
359
365
  * @param options - Controls parsing behavior such as Rhino geometry decoding.
360
366
  * @returns Parsed Grasshopper output values.
361
367
  *
362
- * **Note:** Using `byId` only works with the custom VektorNode rhino.compute branch.
363
- *
364
368
  * @example
365
369
  * ```ts
366
370
  * const processor = new GrasshopperResponseProcessor(response);
@@ -380,13 +384,13 @@ declare class GrasshopperResponseProcessor {
380
384
  * @param options - Parsing configuration (e.g. disable parsing or enable Rhino).
381
385
  * @returns Single parsed value, array of values, or undefined if the parameter is absent.
382
386
  *
387
+ * `byId` requires the VektorNode rhino.compute branch.
388
+ *
383
389
  * @example
384
390
  * ```ts
385
391
  * const schema = processor.getValue({ byName: 'Schema' });
386
392
  * const output = processor.getValue({ byId: 'a4be1c1e-23f9-4c27-b942-7f3bb2c45c6f' });
387
393
  * ```
388
- *
389
- * **Note:** `byId` only works with the custom VektorNode rhino.compute branch.
390
394
  */
391
395
  getValue(selector: {
392
396
  byName: string;
@@ -394,57 +398,26 @@ declare class GrasshopperResponseProcessor {
394
398
  byId: string;
395
399
  }, options?: GetValuesOptions): any;
396
400
  /**
397
- * @deprecated Use `getValue({ byName })` instead.
398
- */
399
- getValueByParamName(paramName: string, options?: GetValuesOptions): any;
400
- /**
401
- * @deprecated Use `getValue({ byId })` instead.
402
- */
403
- getValueByParamId(paramId: string, options?: GetValuesOptions): any;
404
- /**
405
- * Convert all geometry results into Three.js mesh objects.
406
- *
407
- * This uses internal helpers to decode Rhino geometry into Three.js
408
- * primitives such as meshes and lines, making them ready for rendering.
401
+ * Decode all geometry results into Three.js meshes/lines ready for rendering.
402
+ * The processor's `debug` flag is merged with `options` (explicit options win).
409
403
  *
410
- * All processing options (scaling, positioning, compression, etc.) can be customized.
411
- * The processor's debug flag is merged with options - explicit options take precedence.
404
+ * Requires the **Selva Display** Grasshopper component and the VektorNode
405
+ * rhino.compute branch. Three.js is loaded dynamically, so install it as a
406
+ * peer dependency before calling this.
412
407
  *
413
- * **Note:** This only works when using the **Selva Display** component in Grasshopper, and requires the custom branch of rhino.compute from VektorNode. This method dynamically imports three.js visualization modules. Ensure three.js is installed as a peer dependency if you use this feature.
414
- *
415
- * @param options - Configuration for mesh extraction and parsing. Overrides processor's debug flag if provided.
416
- * @returns Promise resolving to an array of Three.js mesh objects.
417
- * @throws {RhinoComputeError} If three.js visualization module cannot be loaded.
408
+ * @throws {RhinoComputeError} If the three.js visualization module can't load.
418
409
  *
419
410
  * @example
420
411
  * ```ts
421
412
  * const meshes = await processor.extractMeshesFromResponse();
422
413
  * scene.add(...meshes);
423
414
  * ```
424
- *
425
- * @example
426
- * ```ts
427
- * const meshes = await processor.extractMeshesFromResponse({
428
- * debug: true,
429
- * allowScaling: true,
430
- * allowAutoPosition: false,
431
- * parsing: {
432
- * mergeByMaterial: false,
433
- * applyTransforms: true,
434
- * debug: true,
435
- * },
436
- * });
437
- * ```
438
415
  */
439
416
  extractMeshesFromResponse(options?: MeshExtractionOptions): Promise<THREE.Object3D<THREE.Object3DEventMap>[]>;
440
417
  /**
441
- * Extract internal file data structures from the response.
442
- * This includes Grasshopper-generated textures, JSON exports,
443
- * CAD formats, or any file structure packaged in the response.
444
- *
445
- * **Note:** This only works when using the **Block to File** and **Geometry To File** components from the Selva plugin in Grasshopper, and requires the custom branch of rhino.compute from VektorNode.
446
- *
447
- * @returns Raw file data entries.
418
+ * Raw file entries packaged in the response (textures, JSON, CAD exports, …).
419
+ * Produced by the Selva **Block to File** / **Geometry To File** components on
420
+ * the VektorNode rhino.compute branch.
448
421
  */
449
422
  private getFileData;
450
423
  /**
@@ -470,19 +443,6 @@ declare class GrasshopperResponseProcessor {
470
443
  getAndDownloadFiles(folderName: string, additionalFiles?: FileBaseInfo[] | FileBaseInfo | null): Promise<void>;
471
444
  }
472
445
 
473
- /**
474
- * Hash definition and data tree into a stable cache key.
475
- *
476
- * The definition is the *identity* of what we solve, so a binary definition is
477
- * hashed over its full content (`fnv1aBytes`) — a length-only or sampled key
478
- * would let two different `.gh` files collide and serve one's cached solve for
479
- * the other. `.gh` files are small enough that a single linear pass is
480
- * negligible. (Note this differs from `stableStringify`'s sampled handling of a
481
- * `Uint8Array` found *inside* the dataTree, where sampling is a deliberate
482
- * per-solve perf tradeoff.)
483
- */
484
- declare function hashSolveInput(definition: string | Uint8Array, dataTree: unknown): string;
485
-
486
446
  /**
487
447
  * Runs a Rhino Compute job using the provided tree prototypes and Grasshopper definition.
488
448
  *
@@ -551,88 +511,15 @@ declare function fetchDefinitionIO(definition: string | Uint8Array, config: Comp
551
511
  declare function fetchParsedDefinitionIO(definition: string | Uint8Array, config: ComputeConfig): Promise<GrasshopperParsedIO>;
552
512
 
553
513
  /**
554
- * Processes a raw input parameter schema and converts it into a typed InputParam object.
555
- *
556
- * @internal This is an internal processor. Use `fetchParsedDefinitionIO()` to get processed inputs instead.
557
- *
558
- * This function handles the transformation of raw input parameter data from Grasshopper into
559
- * a structured, type-safe format. It performs validation, type-specific processing, and error
560
- * handling for various parameter types including numeric, boolean, text, geometry, point, and line inputs.
561
- *
562
- * @param rawInput - The raw input parameter schema to process
563
- * @returns A fully processed and typed InputParam object with appropriate type-specific properties
564
- *
565
- * @throws {RhinoComputeError} When an unknown paramType is encountered
566
- * @throws {Error} Re-throws any non-RhinoComputeError exceptions
567
- *
568
- * @remarks
569
- * The function performs the following operations:
570
- * - Extracts base properties common to all input types
571
- * - Preprocesses the raw input data
572
- * - Applies type-specific validation and transformation
573
- * - Handles errors gracefully by creating safe default values for validation errors
574
- *
575
- * Supported parameter types:
576
- * - `Number` and `Integer`: Numeric inputs with optional min/max constraints
577
- * - `Boolean`: Boolean flag inputs
578
- * - `Text`: String inputs
579
- * - `Geometry`: Generic geometry objects
580
- * - `Point`: 3D point objects
581
- * - `Line`: Line objects
582
- *
583
- * @example
584
- * ```typescript
585
- * const rawInput = {
586
- * name: 'Length',
587
- * paramType: 'Number',
588
- * minimum: 0,
589
- * maximum: 100,
590
- * default: 50
591
- * };
592
- * const processedInput = processInput(rawInput);
593
- * ```
514
+ * Parse one raw Grasshopper input schema into a typed {@link InputParam}.
515
+ * Validation failures are swallowed and replaced with a safe default; use
516
+ * {@link processInputWithError} to receive them.
594
517
  */
595
518
  declare function processInput(rawInput: InputParamSchema): InputParam;
596
519
  /**
597
- * Processes raw Grasshopper input schemas into strongly-typed TypeScript interfaces.
598
- *
599
- * @internal This is an internal batch processor. Use `fetchParsedDefinitionIO()` to get processed inputs instead.
600
- *
601
- * Transforms each raw input parameter by:
602
- * - Normalizing default values (flattening data trees, parsing primitives)
603
- * - Applying type-specific parsing (Number, Text, Boolean, Geometry, etc.)
604
- * - Validating constraints (min/max, required fields)
605
- * - Converting to discriminated union types for type safety
606
- *
607
- * @param rawInputs - Array of raw input schemas from Rhino Compute API
608
- * @returns Array of processed, strongly-typed input parameters
609
- *
610
- * @remarks
611
- * - Empty data trees are converted to `undefined`
612
- * - Single values are extracted from arrays when appropriate
613
- * - Tree structures are preserved for list/tree access parameters
614
- * - Invalid inputs fall back to safe defaults with console warnings
615
- *
616
- * @example
617
- * ```typescript
618
- * const rawInputs = [
619
- * { paramType: 'Number', name: 'radius', minimum: 0, default: 10 },
620
- * { paramType: 'Text', name: 'label', default: 'Hello' }
621
- * ];
622
- *
623
- * const processed = processInputs(rawInputs);
624
- * // Result: [
625
- * // { paramType: 'Number', name: 'radius', minimum: 0, default: 10, ... },
626
- * // { paramType: 'Text', name: 'label', default: 'Hello', ... }
627
- * // ]
628
- *
629
- * // Now type-safe:
630
- * if (processed[0].paramType === 'Number') {
631
- * console.log(processed[0].minimum); // TypeScript knows this exists
632
- * }
633
- * ```
634
- *
635
- * @see {@link processInput} for individual input processing logic
520
+ * Parse an array of raw input schemas into typed {@link InputParam}s, each via
521
+ * {@link processInput}. Use {@link processInputsWithErrors} to also collect the
522
+ * inputs that failed validation.
636
523
  */
637
524
  declare function processInputs(rawInputs: InputParamSchema[]): InputParam[];
638
525
 
@@ -906,4 +793,4 @@ declare class TreeBuilder {
906
793
  private static clampValue;
907
794
  }
908
795
 
909
- export { type CacheOptions, ComputeConfig, DataTree, DataTreeDefault, DataTreePath, type DataTreeValue, FileBaseInfo, type GetValuesOptions, type GetValuesResult, GrasshopperClient, GrasshopperComputeConfig, GrasshopperComputeResponse, GrasshopperParsedIO, GrasshopperParsedIORaw, GrasshopperResponseProcessor, InputParam, InputParamSchema, type ParsedContext, RetryPolicy, RhinoComputeError, type SchedulerMode, type SolveContext, type SolveExecutor, type SolveOptions, type SolveResult, SolveScheduler, type SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, hashSolveInput, processInput, processInputs, solveGrasshopperDefinition };
796
+ export { type CacheOptions, ComputeConfig, DataTree, DataTreeDefault, DataTreePath, type DataTreeValue, FileBaseInfo, type GetValuesOptions, type GetValuesResult, GrasshopperClient, GrasshopperComputeConfig, GrasshopperComputeResponse, GrasshopperParsedIO, GrasshopperParsedIORaw, GrasshopperResponseProcessor, InputParam, InputParamSchema, type ParsedContext, RetryPolicy, RhinoComputeError, type SchedulerMode, type SolveContext, type SolveOptions, type SolveResult, SolveScheduler, type SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, processInput, processInputs, solveGrasshopperDefinition };
@@ -1,2 +1,2 @@
1
- import{a as d,b as e,c as f,d as g,e as h,f as i,g as j,h as k,i as l,j as m}from"./chunk-UFFSB36M.js";import{d as a,q as b,r as c}from"./chunk-GY2WLD42.js";export{g as GrasshopperClient,h as GrasshopperResponseProcessor,a as RhinoComputeError,f as SolveScheduler,m as TreeBuilder,c as downloadFileData,b as extractFilesFromComputeResponse,k as fetchDefinitionIO,l as fetchParsedDefinitionIO,e as hashSolveInput,i as processInput,j as processInputs,d as solveGrasshopperDefinition};
1
+ import{a as d,b as e,c as f,d as g,e as h,f as i,g as j,h as k,i as l}from"./chunk-WHB32TTR.js";import{d as a,o as b,p as c}from"./chunk-2KAHGLXE.js";export{f as GrasshopperClient,g as GrasshopperResponseProcessor,a as RhinoComputeError,e as SolveScheduler,l as TreeBuilder,c as downloadFileData,b as extractFilesFromComputeResponse,j as fetchDefinitionIO,k as fetchParsedDefinitionIO,h as processInput,i as processInputs,d as solveGrasshopperDefinition};
2
2
  //# sourceMappingURL=grasshopper.js.map
@@ -29,11 +29,20 @@ declare class ComputeServerStats {
29
29
  * @param serverUrl - Base URL of the Rhino Compute server with http:// or https:// scheme (e.g., 'http://localhost:6500')
30
30
  * @param apiKey - Optional API key for authentication
31
31
  */
32
+ /** Timeout (ms) for the fast read/monitoring endpoints. */
33
+ private static readonly DEFAULT_TIMEOUT_MS;
34
+ /** Timeout (ms) for child-lifecycle POSTs — a cold Windows child can take ~30s to spawn. */
35
+ private static readonly LIFECYCLE_TIMEOUT_MS;
32
36
  constructor(serverUrl: string, apiKey?: string);
33
37
  /**
34
38
  * Build request headers with optional API key.
35
39
  */
36
40
  private buildHeaders;
41
+ /**
42
+ * `fetch` wrapper that aborts after `timeoutMs` so a hung connection can't stall
43
+ * a probe (or the `monitor()` loop) forever. Pass `0` to disable the timeout.
44
+ */
45
+ private fetchWithTimeout;
37
46
  /**
38
47
  * Check if the server is online.
39
48
  *
@@ -256,7 +265,8 @@ declare class ComputeServerStats {
256
265
  /**
257
266
  * POST a control endpoint that replies with a JSON object and return it,
258
267
  * degrading to `null` on any non-2xx, non-JSON, or network failure. Shared by
259
- * the child-lifecycle methods so their failure semantics stay identical.
268
+ * the child-lifecycle methods so their failure semantics stay identical. Uses
269
+ * the longer lifecycle timeout since a spawn/recycle can take ~30s.
260
270
  */
261
271
  private postJson;
262
272
  /**
@@ -29,11 +29,20 @@ declare class ComputeServerStats {
29
29
  * @param serverUrl - Base URL of the Rhino Compute server with http:// or https:// scheme (e.g., 'http://localhost:6500')
30
30
  * @param apiKey - Optional API key for authentication
31
31
  */
32
+ /** Timeout (ms) for the fast read/monitoring endpoints. */
33
+ private static readonly DEFAULT_TIMEOUT_MS;
34
+ /** Timeout (ms) for child-lifecycle POSTs — a cold Windows child can take ~30s to spawn. */
35
+ private static readonly LIFECYCLE_TIMEOUT_MS;
32
36
  constructor(serverUrl: string, apiKey?: string);
33
37
  /**
34
38
  * Build request headers with optional API key.
35
39
  */
36
40
  private buildHeaders;
41
+ /**
42
+ * `fetch` wrapper that aborts after `timeoutMs` so a hung connection can't stall
43
+ * a probe (or the `monitor()` loop) forever. Pass `0` to disable the timeout.
44
+ */
45
+ private fetchWithTimeout;
37
46
  /**
38
47
  * Check if the server is online.
39
48
  *
@@ -256,7 +265,8 @@ declare class ComputeServerStats {
256
265
  /**
257
266
  * POST a control endpoint that replies with a JSON object and return it,
258
267
  * degrading to `null` on any non-2xx, non-JSON, or network failure. Shared by
259
- * the child-lifecycle methods so their failure semantics stay identical.
268
+ * the child-lifecycle methods so their failure semantics stay identical. Uses
269
+ * the longer lifecycle timeout since a spawn/recycle can take ~30s.
260
270
  */
261
271
  private postJson;
262
272
  /**
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk2EO6UUZFcjs = require('./chunk-2EO6UUZF.cjs');var _chunkXA4OMT6Zcjs = require('./chunk-XA4OMT6Z.cjs');exports.ComputeServerStats = _chunkXA4OMT6Zcjs.j; exports.ErrorCodes = _chunkXA4OMT6Zcjs.c; exports.GrasshopperClient = _chunk2EO6UUZFcjs.d; exports.GrasshopperResponseProcessor = _chunk2EO6UUZFcjs.e; exports.RhinoComputeError = _chunkXA4OMT6Zcjs.d; exports.SolveScheduler = _chunk2EO6UUZFcjs.c; exports.TreeBuilder = _chunk2EO6UUZFcjs.j; exports.camelcaseKeys = _chunkXA4OMT6Zcjs.l; exports.downloadFileData = _chunkXA4OMT6Zcjs.r; exports.enableDebugLogging = _chunkXA4OMT6Zcjs.g; exports.extractFilesFromComputeResponse = _chunkXA4OMT6Zcjs.q; exports.fetchDefinitionIO = _chunk2EO6UUZFcjs.h; exports.fetchParsedDefinitionIO = _chunk2EO6UUZFcjs.i; exports.fetchRhinoCompute = _chunkXA4OMT6Zcjs.h; exports.getLogger = _chunkXA4OMT6Zcjs.e; exports.hashSolveInput = _chunk2EO6UUZFcjs.b; exports.processInput = _chunk2EO6UUZFcjs.f; exports.processInputs = _chunk2EO6UUZFcjs.g; exports.setLogger = _chunkXA4OMT6Zcjs.f; exports.solveGrasshopperDefinition = _chunk2EO6UUZFcjs.a; exports.toCamelCase = _chunkXA4OMT6Zcjs.k;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkBF7OQEQGcjs = require('./chunk-BF7OQEQG.cjs');var _chunk2QHLW6ZLcjs = require('./chunk-2QHLW6ZL.cjs');exports.ComputeServerStats = _chunk2QHLW6ZLcjs.j; exports.ErrorCodes = _chunk2QHLW6ZLcjs.c; exports.GrasshopperClient = _chunkBF7OQEQGcjs.c; exports.GrasshopperResponseProcessor = _chunkBF7OQEQGcjs.d; exports.RhinoComputeError = _chunk2QHLW6ZLcjs.d; exports.SolveScheduler = _chunkBF7OQEQGcjs.b; exports.TreeBuilder = _chunkBF7OQEQGcjs.i; exports.downloadFileData = _chunk2QHLW6ZLcjs.p; exports.enableDebugLogging = _chunk2QHLW6ZLcjs.g; exports.extractFilesFromComputeResponse = _chunk2QHLW6ZLcjs.o; exports.fetchDefinitionIO = _chunkBF7OQEQGcjs.g; exports.fetchParsedDefinitionIO = _chunkBF7OQEQGcjs.h; exports.fetchRhinoCompute = _chunk2QHLW6ZLcjs.h; exports.getLogger = _chunk2QHLW6ZLcjs.e; exports.processInput = _chunkBF7OQEQGcjs.e; exports.processInputs = _chunkBF7OQEQGcjs.f; exports.setLogger = _chunk2QHLW6ZLcjs.f; exports.solveGrasshopperDefinition = _chunkBF7OQEQGcjs.a;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/selva-compute/selva-compute/dist/index.cjs"],"names":[],"mappings":"AAAA,iIAAuG,wDAAqG,u/BAA8d","file":"/home/runner/work/selva-compute/selva-compute/dist/index.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/selva-compute/selva-compute/dist/index.cjs"],"names":[],"mappings":"AAAA,iIAAgG,wDAAuF,i3BAAsa","file":"/home/runner/work/selva-compute/selva-compute/dist/index.cjs"}
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
- export { Logger, camelcaseKeys, enableDebugLogging, fetchRhinoCompute, getLogger, setLogger, toCamelCase } from './core.cjs';
2
- export { C as ComputeServerStats, E as ErrorCode, a as ErrorCodes, F as FileBaseInfo, b as FileData, P as ProcessedFile, R as RhinoComputeError, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-UcwvknQ3.cjs';
1
+ export { Logger, enableDebugLogging, fetchRhinoCompute, getLogger, setLogger } from './core.cjs';
2
+ export { C as ComputeServerStats, E as ErrorCode, a as ErrorCodes, F as FileBaseInfo, b as FileData, P as ProcessedFile, R as RhinoComputeError, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-Bu2qmaPj.cjs';
3
3
  export { C as ComputeConfig, R as RetryPolicy, a as RhinoModelUnit, S as ServerTiming } from './types-ChF690kY.cjs';
4
- export { CacheOptions, DataTreeValue, GetValuesOptions, GetValuesResult, GrasshopperClient, GrasshopperResponseProcessor, ParsedContext, SchedulerMode, SolveContext, SolveExecutor, SolveOptions, SolveResult, SolveScheduler, SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, hashSolveInput, processInput, processInputs, solveGrasshopperDefinition } from './grasshopper.cjs';
4
+ export { CacheOptions, DataTreeValue, GetValuesOptions, GetValuesResult, GrasshopperClient, GrasshopperResponseProcessor, ParsedContext, SchedulerMode, SolveContext, SolveOptions, SolveResult, SolveScheduler, SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, processInput, processInputs, solveGrasshopperDefinition } from './grasshopper.cjs';
5
5
  export { B as BooleanInputType, D as DataItem, a as DataTree, b as DataTreeDefault, c as DataTreePath, d as DefaultValue, F as FileInputType, G as GeometryInputType, e as GrasshopperComputeConfig, f as GrasshopperComputeResponse, g as GrasshopperParsedIO, h as GrasshopperParsedIORaw, i as GrasshopperRequestSchema, I as InnerTreeData, j as InputParam, k as InputParamSchema, N as NumericInputType, O as OutputParamSchema, l as OutputType, T as TextInputType, V as ValueListInputType } from './types-D-HQ-gWI.cjs';
6
6
  import 'three';
7
7
  import 'rhino3dm';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { Logger, camelcaseKeys, enableDebugLogging, fetchRhinoCompute, getLogger, setLogger, toCamelCase } from './core.js';
2
- export { C as ComputeServerStats, E as ErrorCode, a as ErrorCodes, F as FileBaseInfo, b as FileData, P as ProcessedFile, R as RhinoComputeError, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-UcwvknQ3.js';
1
+ export { Logger, enableDebugLogging, fetchRhinoCompute, getLogger, setLogger } from './core.js';
2
+ export { C as ComputeServerStats, E as ErrorCode, a as ErrorCodes, F as FileBaseInfo, b as FileData, P as ProcessedFile, R as RhinoComputeError, d as downloadFileData, e as extractFilesFromComputeResponse } from './handle-files-Bu2qmaPj.js';
3
3
  export { C as ComputeConfig, R as RetryPolicy, a as RhinoModelUnit, S as ServerTiming } from './types-ChF690kY.js';
4
- export { CacheOptions, DataTreeValue, GetValuesOptions, GetValuesResult, GrasshopperClient, GrasshopperResponseProcessor, ParsedContext, SchedulerMode, SolveContext, SolveExecutor, SolveOptions, SolveResult, SolveScheduler, SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, hashSolveInput, processInput, processInputs, solveGrasshopperDefinition } from './grasshopper.js';
4
+ export { CacheOptions, DataTreeValue, GetValuesOptions, GetValuesResult, GrasshopperClient, GrasshopperResponseProcessor, ParsedContext, SchedulerMode, SolveContext, SolveOptions, SolveResult, SolveScheduler, SolveSchedulerOptions, TreeBuilder, fetchDefinitionIO, fetchParsedDefinitionIO, processInput, processInputs, solveGrasshopperDefinition } from './grasshopper.js';
5
5
  export { B as BooleanInputType, D as DataItem, a as DataTree, b as DataTreeDefault, c as DataTreePath, d as DefaultValue, F as FileInputType, G as GeometryInputType, e as GrasshopperComputeConfig, f as GrasshopperComputeResponse, g as GrasshopperParsedIO, h as GrasshopperParsedIORaw, i as GrasshopperRequestSchema, I as InnerTreeData, j as InputParam, k as InputParamSchema, N as NumericInputType, O as OutputParamSchema, l as OutputType, T as TextInputType, V as ValueListInputType } from './types-DxT3hSkx.js';
6
6
  import 'three';
7
7
  import 'rhino3dm';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import{a as d,b as g,c as h,d as i,e as j,f as k,g as l,h as n,i as q,j as s}from"./chunk-UFFSB36M.js";import{c as o,d as r,e,f,g as m,h as p,j as t,k as x,l as a,q as b,r as c}from"./chunk-GY2WLD42.js";export{t as ComputeServerStats,o as ErrorCodes,i as GrasshopperClient,j as GrasshopperResponseProcessor,r as RhinoComputeError,h as SolveScheduler,s as TreeBuilder,a as camelcaseKeys,c as downloadFileData,m as enableDebugLogging,b as extractFilesFromComputeResponse,n as fetchDefinitionIO,q as fetchParsedDefinitionIO,p as fetchRhinoCompute,e as getLogger,g as hashSolveInput,k as processInput,l as processInputs,f as setLogger,d as solveGrasshopperDefinition,x as toCamelCase};
1
+ import{a as b,b as c,c as d,d as g,e as h,f as i,g as j,h as k,i as l}from"./chunk-WHB32TTR.js";import{c as o,d as r,e,f,g as m,h as p,j as t,o as x,p as a}from"./chunk-2KAHGLXE.js";export{t as ComputeServerStats,o as ErrorCodes,d as GrasshopperClient,g as GrasshopperResponseProcessor,r as RhinoComputeError,c as SolveScheduler,l as TreeBuilder,a as downloadFileData,m as enableDebugLogging,x as extractFilesFromComputeResponse,j as fetchDefinitionIO,k as fetchParsedDefinitionIO,p as fetchRhinoCompute,e as getLogger,h as processInput,i as processInputs,f as setLogger,b as solveGrasshopperDefinition};
2
2
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,2 @@
1
+ import{A as u,a as e,b as r,c as o,d as t,e as a,f as s,g as i,h as p,i as n,j as m,k as l,l as f,m as y,n as d,o as h,p as x,q as C,r as g,s as M,t as c,u as B,v as j,w as E,x as O,y as D,z as b}from"./chunk-HKU2XHQQ.js";import"./chunk-2KAHGLXE.js";export{M as BINARY_MESH_MAGIC,c as BINARY_MESH_VERSION,p as EDGE_USERDATA_KIND,B as FLAG_FLOAT32,C as Materials,b as SCALE_FACTORS,n as addEdges,o as applyOffset,t as computeCombinedBoundingBox,a as createCameraController,s as createGrid,y as createLabelLayer,h as createMeasureTool,f as createRenderPipeline,i as createViewGizmo,u as getThreeMeshesFromComputeResponse,x as initThree,m as isEdgeOverlay,j as parseBinaryMeshBatch,r as parseColor,g as parseDisplayItems,E as parseMeshBatch,D as parseMeshBatchBlob,O as parseMeshBatchObject,l as removeEdges,d as snapToVertex,e as updateScene};
2
+ //# sourceMappingURL=visualization-N3OJSZOY.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkSA67IFJHcjs = require('./chunk-SA67IFJH.cjs');require('./chunk-2QHLW6ZL.cjs');exports.BINARY_MESH_MAGIC = _chunkSA67IFJHcjs.s; exports.BINARY_MESH_VERSION = _chunkSA67IFJHcjs.t; exports.EDGE_USERDATA_KIND = _chunkSA67IFJHcjs.h; exports.FLAG_FLOAT32 = _chunkSA67IFJHcjs.u; exports.Materials = _chunkSA67IFJHcjs.q; exports.SCALE_FACTORS = _chunkSA67IFJHcjs.z; exports.addEdges = _chunkSA67IFJHcjs.i; exports.applyOffset = _chunkSA67IFJHcjs.c; exports.computeCombinedBoundingBox = _chunkSA67IFJHcjs.d; exports.createCameraController = _chunkSA67IFJHcjs.e; exports.createGrid = _chunkSA67IFJHcjs.f; exports.createLabelLayer = _chunkSA67IFJHcjs.m; exports.createMeasureTool = _chunkSA67IFJHcjs.o; exports.createRenderPipeline = _chunkSA67IFJHcjs.l; exports.createViewGizmo = _chunkSA67IFJHcjs.g; exports.getThreeMeshesFromComputeResponse = _chunkSA67IFJHcjs.A; exports.initThree = _chunkSA67IFJHcjs.p; exports.isEdgeOverlay = _chunkSA67IFJHcjs.j; exports.parseBinaryMeshBatch = _chunkSA67IFJHcjs.v; exports.parseColor = _chunkSA67IFJHcjs.b; exports.parseDisplayItems = _chunkSA67IFJHcjs.r; exports.parseMeshBatch = _chunkSA67IFJHcjs.w; exports.parseMeshBatchBlob = _chunkSA67IFJHcjs.y; exports.parseMeshBatchObject = _chunkSA67IFJHcjs.x; exports.removeEdges = _chunkSA67IFJHcjs.k; exports.snapToVertex = _chunkSA67IFJHcjs.n; exports.updateScene = _chunkSA67IFJHcjs.a;
2
+ //# sourceMappingURL=visualization-UOIWXLDL.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/selva-compute/selva-compute/dist/visualization-ZFXCE5NW.cjs"],"names":[],"mappings":"AAAA,iIAA8N,gCAA6B,owCAA+kB","file":"/home/runner/work/selva-compute/selva-compute/dist/visualization-ZFXCE5NW.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/selva-compute/selva-compute/dist/visualization-UOIWXLDL.cjs"],"names":[],"mappings":"AAAA,iIAA8N,gCAA6B,owCAA+kB","file":"/home/runner/work/selva-compute/selva-compute/dist/visualization-UOIWXLDL.cjs"}