@photivra/engine 0.5.1 → 1.0.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.
- package/AGENTS.md +674 -0
- package/CHANGELOG.md +218 -0
- package/CITATION.cff +1 -1
- package/CONTRIBUTING.md +76 -0
- package/DCO +33 -0
- package/NODE_SUPPORT.md +37 -0
- package/NOTICE +2 -0
- package/README.md +157 -56
- package/SECURITY.md +55 -0
- package/THIRD_PARTY.md +63 -0
- package/dist/camera/equivalent-focal-length.d.ts +9 -0
- package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
- package/dist/camera/equivalent-focal-length.js +9 -0
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +13 -0
- package/dist/camera/field-of-view.d.ts.map +1 -1
- package/dist/camera/field-of-view.js +13 -0
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/projected-object-size.d.ts +8 -0
- package/dist/camera/projected-object-size.d.ts.map +1 -1
- package/dist/camera/projected-object-size.js +8 -0
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +60 -0
- package/dist/capture/capture-export-metadata.d.ts.map +1 -0
- package/dist/capture/capture-export-metadata.js +62 -0
- package/dist/capture/capture-export-metadata.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +55 -0
- package/dist/capture/environment-raw-producer.d.ts.map +1 -0
- package/dist/capture/environment-raw-producer.js +88 -0
- package/dist/capture/environment-raw-producer.js.map +1 -0
- package/dist/capture/export-jpeg.d.ts +12 -0
- package/dist/capture/export-jpeg.d.ts.map +1 -0
- package/dist/capture/export-jpeg.js +126 -0
- package/dist/capture/export-jpeg.js.map +1 -0
- package/dist/capture/export-tiff.d.ts +45 -0
- package/dist/capture/export-tiff.d.ts.map +1 -0
- package/dist/capture/export-tiff.js +129 -0
- package/dist/capture/export-tiff.js.map +1 -0
- package/dist/capture/focus-control.d.ts +210 -0
- package/dist/capture/focus-control.d.ts.map +1 -0
- package/dist/capture/focus-control.js +664 -0
- package/dist/capture/focus-control.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +59 -0
- package/dist/capture/linear-encoding.d.ts.map +1 -0
- package/dist/capture/linear-encoding.js +98 -0
- package/dist/capture/linear-encoding.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +135 -0
- package/dist/capture/photographic-export.d.ts.map +1 -0
- package/dist/capture/photographic-export.js +273 -0
- package/dist/capture/photographic-export.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +12 -0
- package/dist/capture/raw-frame-limits.d.ts.map +1 -0
- package/dist/capture/raw-frame-limits.js +13 -0
- package/dist/capture/raw-frame-limits.js.map +1 -0
- package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
- package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
- package/dist/capture/raw-frame-reconstruction.js +146 -0
- package/dist/capture/raw-frame-reconstruction.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +120 -0
- package/dist/capture/release-sequence.d.ts.map +1 -0
- package/dist/capture/release-sequence.js +446 -0
- package/dist/capture/release-sequence.js.map +1 -0
- package/dist/capture/sensor-raw-frame.d.ts +34 -0
- package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
- package/dist/capture/sensor-raw-frame.js +106 -0
- package/dist/capture/sensor-raw-frame.js.map +1 -0
- package/dist/capture/sensor-raw-producer.d.ts +51 -0
- package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
- package/dist/capture/sensor-raw-producer.js +235 -0
- package/dist/capture/sensor-raw-producer.js.map +1 -0
- package/dist/capture/simulated-capture.d.ts +125 -0
- package/dist/capture/simulated-capture.d.ts.map +1 -0
- package/dist/capture/simulated-capture.js +248 -0
- package/dist/capture/simulated-capture.js.map +1 -0
- package/dist/color/capture-color.d.ts +73 -0
- package/dist/color/capture-color.d.ts.map +1 -0
- package/dist/color/capture-color.js +145 -0
- package/dist/color/capture-color.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +23 -0
- package/dist/color/sensor-color-development.d.ts.map +1 -0
- package/dist/color/sensor-color-development.js +56 -0
- package/dist/color/sensor-color-development.js.map +1 -0
- package/dist/color/white-balance.d.ts +175 -0
- package/dist/color/white-balance.d.ts.map +1 -0
- package/dist/color/white-balance.js +606 -0
- package/dist/color/white-balance.js.map +1 -0
- package/dist/composition/image-formation-plan.d.ts +481 -0
- package/dist/composition/image-formation-plan.d.ts.map +1 -0
- package/dist/composition/image-formation-plan.js +2499 -0
- package/dist/composition/image-formation-plan.js.map +1 -0
- package/dist/composition/plan-consumer.d.ts +53 -0
- package/dist/composition/plan-consumer.d.ts.map +1 -0
- package/dist/composition/plan-consumer.js +119 -0
- package/dist/composition/plan-consumer.js.map +1 -0
- package/dist/core/calculation-result.d.ts.map +1 -1
- package/dist/core/calculation-result.js +6 -0
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +18 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +44 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/configuration-error.d.ts +6 -0
- package/dist/core/configuration-error.d.ts.map +1 -1
- package/dist/core/configuration-error.js +6 -0
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +6 -0
- package/dist/core/evidence-provenance.d.ts.map +1 -1
- package/dist/core/evidence-provenance.js +7 -0
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +9 -3
- package/dist/core/image-formation.d.ts.map +1 -1
- package/dist/core/image-formation.js +29 -5
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +25 -0
- package/dist/core/owned-data.d.ts.map +1 -0
- package/dist/core/owned-data.js +34 -0
- package/dist/core/owned-data.js.map +1 -0
- package/dist/core/record-validation.d.ts +17 -0
- package/dist/core/record-validation.d.ts.map +1 -0
- package/dist/core/record-validation.js +44 -0
- package/dist/core/record-validation.js.map +1 -0
- package/dist/core/scientific-assurance.d.ts +101 -0
- package/dist/core/scientific-assurance.d.ts.map +1 -0
- package/dist/core/scientific-assurance.js +301 -0
- package/dist/core/scientific-assurance.js.map +1 -0
- package/dist/core/spectral-composition.d.ts +106 -0
- package/dist/core/spectral-composition.d.ts.map +1 -0
- package/dist/core/spectral-composition.js +334 -0
- package/dist/core/spectral-composition.js.map +1 -0
- package/dist/core/spectral.d.ts +34 -0
- package/dist/core/spectral.d.ts.map +1 -0
- package/dist/core/spectral.js +57 -0
- package/dist/core/spectral.js.map +1 -0
- package/dist/core/validation.d.ts +6 -0
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +6 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +14 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +15 -0
- package/dist/core/version.js.map +1 -0
- package/dist/equipment/exposure-capabilities.d.ts +125 -0
- package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
- package/dist/equipment/exposure-capabilities.js +391 -0
- package/dist/equipment/exposure-capabilities.js.map +1 -0
- package/dist/equipment/generic-tier-assets.d.ts +82 -0
- package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-assets.js +119 -0
- package/dist/equipment/generic-tier-assets.js.map +1 -0
- package/dist/equipment/generic-tier-presets.d.ts +57 -0
- package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-presets.js +122 -0
- package/dist/equipment/generic-tier-presets.js.map +1 -0
- package/dist/equipment/iso-capabilities.d.ts +143 -0
- package/dist/equipment/iso-capabilities.d.ts.map +1 -0
- package/dist/equipment/iso-capabilities.js +578 -0
- package/dist/equipment/iso-capabilities.js.map +1 -0
- package/dist/equipment/metering-capabilities.d.ts +58 -0
- package/dist/equipment/metering-capabilities.d.ts.map +1 -0
- package/dist/equipment/metering-capabilities.js +151 -0
- package/dist/equipment/metering-capabilities.js.map +1 -0
- package/dist/equipment/release-capabilities.d.ts +33 -0
- package/dist/equipment/release-capabilities.d.ts.map +1 -0
- package/dist/equipment/release-capabilities.js +176 -0
- package/dist/equipment/release-capabilities.js.map +1 -0
- package/dist/exposure/exposure-duration-control.d.ts +72 -0
- package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
- package/dist/exposure/exposure-duration-control.js +161 -0
- package/dist/exposure/exposure-duration-control.js.map +1 -0
- package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
- package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
- package/dist/exposure/exposure-mode-resolver.js +1905 -0
- package/dist/exposure/exposure-mode-resolver.js.map +1 -0
- package/dist/exposure/exposure.d.ts +8 -0
- package/dist/exposure/exposure.d.ts.map +1 -1
- package/dist/exposure/exposure.js +8 -0
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash.d.ts +179 -0
- package/dist/exposure/flash.d.ts.map +1 -0
- package/dist/exposure/flash.js +644 -0
- package/dist/exposure/flash.js.map +1 -0
- package/dist/exposure/metering-scene-radiance.d.ts +72 -0
- package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
- package/dist/exposure/metering-scene-radiance.js +222 -0
- package/dist/exposure/metering-scene-radiance.js.map +1 -0
- package/dist/exposure/metering-target.d.ts +67 -0
- package/dist/exposure/metering-target.d.ts.map +1 -0
- package/dist/exposure/metering-target.js +265 -0
- package/dist/exposure/metering-target.js.map +1 -0
- package/dist/exposure/metering-temporal.d.ts +76 -0
- package/dist/exposure/metering-temporal.d.ts.map +1 -0
- package/dist/exposure/metering-temporal.js +210 -0
- package/dist/exposure/metering-temporal.js.map +1 -0
- package/dist/exposure/metering.d.ts +124 -0
- package/dist/exposure/metering.d.ts.map +1 -0
- package/dist/exposure/metering.js +422 -0
- package/dist/exposure/metering.js.map +1 -0
- package/dist/exposure/program-line.d.ts +29 -0
- package/dist/exposure/program-line.d.ts.map +1 -0
- package/dist/exposure/program-line.js +126 -0
- package/dist/exposure/program-line.js.map +1 -0
- package/dist/index.d.ts +101 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +99 -7
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +76 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +111 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +113 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -0
- package/dist/motion/capture-rotation-inverse-mapping.js +184 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +104 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js +131 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -0
- package/dist/motion/capture-rotation-trajectory.d.ts +113 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -0
- package/dist/motion/capture-rotation-trajectory.js +168 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
- package/dist/motion/extended-object-projection.d.ts +175 -0
- package/dist/motion/extended-object-projection.d.ts.map +1 -0
- package/dist/motion/extended-object-projection.js +402 -0
- package/dist/motion/extended-object-projection.js.map +1 -0
- package/dist/motion/projected-motion.d.ts +11 -0
- package/dist/motion/projected-motion.d.ts.map +1 -1
- package/dist/motion/projected-motion.js +11 -0
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/optics/aperture.d.ts +9 -0
- package/dist/optics/aperture.d.ts.map +1 -1
- package/dist/optics/aperture.js +9 -0
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/circle-of-confusion.d.ts +8 -0
- package/dist/optics/circle-of-confusion.d.ts.map +1 -1
- package/dist/optics/circle-of-confusion.js +8 -0
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +128 -0
- package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
- package/dist/optics/complex-pupil-psf.js +462 -0
- package/dist/optics/complex-pupil-psf.js.map +1 -0
- package/dist/optics/depth-of-field.d.ts +18 -0
- package/dist/optics/depth-of-field.d.ts.map +1 -1
- package/dist/optics/depth-of-field.js +29 -4
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +8 -0
- package/dist/optics/diffraction.d.ts.map +1 -1
- package/dist/optics/diffraction.js +8 -0
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +13 -0
- package/dist/optics/focus-breathing.d.ts.map +1 -1
- package/dist/optics/focus-breathing.js +13 -0
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +47 -0
- package/dist/optics/focus-state.d.ts.map +1 -0
- package/dist/optics/focus-state.js +78 -0
- package/dist/optics/focus-state.js.map +1 -0
- package/dist/optics/front-of-lens-filter.d.ts +114 -0
- package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
- package/dist/optics/front-of-lens-filter.js +468 -0
- package/dist/optics/front-of-lens-filter.js.map +1 -0
- package/dist/optics/illumination-vignetting.d.ts +9 -0
- package/dist/optics/illumination-vignetting.d.ts.map +1 -1
- package/dist/optics/illumination-vignetting.js +9 -0
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.js +23 -4
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-profile.d.ts +217 -0
- package/dist/optics/lens-psf-profile.d.ts.map +1 -0
- package/dist/optics/lens-psf-profile.js +823 -0
- package/dist/optics/lens-psf-profile.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +67 -0
- package/dist/optics/polygon-diffraction.d.ts.map +1 -0
- package/dist/optics/polygon-diffraction.js +145 -0
- package/dist/optics/polygon-diffraction.js.map +1 -0
- package/dist/optics/profile-contract.d.ts +42 -0
- package/dist/optics/profile-contract.d.ts.map +1 -0
- package/dist/optics/profile-contract.js +92 -0
- package/dist/optics/profile-contract.js.map +1 -0
- package/dist/optics/psf-foundation.d.ts +16 -3
- package/dist/optics/psf-foundation.d.ts.map +1 -1
- package/dist/optics/psf-foundation.js +28 -15
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/radial-distortion.d.ts +22 -2
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +101 -23
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-irradiance.js +662 -0
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.js +82 -0
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
- package/dist/optics/sensor-environment-query.d.ts +60 -0
- package/dist/optics/sensor-environment-query.d.ts.map +1 -0
- package/dist/optics/sensor-environment-query.js +50 -0
- package/dist/optics/sensor-environment-query.js.map +1 -0
- package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
- package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
- package/dist/optics/sensor-psf-quadrature.js +101 -0
- package/dist/optics/sensor-psf-quadrature.js.map +1 -0
- package/dist/optics/sensor-psf-support.d.ts +20 -0
- package/dist/optics/sensor-psf-support.d.ts.map +1 -0
- package/dist/optics/sensor-psf-support.js +13 -0
- package/dist/optics/sensor-psf-support.js.map +1 -0
- package/dist/optics/stray-light.d.ts +91 -0
- package/dist/optics/stray-light.d.ts.map +1 -0
- package/dist/optics/stray-light.js +110 -0
- package/dist/optics/stray-light.js.map +1 -0
- package/dist/optics/thin-lens.d.ts +8 -0
- package/dist/optics/thin-lens.d.ts.map +1 -1
- package/dist/optics/thin-lens.js +8 -0
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/output/capture-corrected-sdr.d.ts +49 -0
- package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
- package/dist/output/capture-corrected-sdr.js +149 -0
- package/dist/output/capture-corrected-sdr.js.map +1 -0
- package/dist/output/capture-geometry.d.ts.map +1 -1
- package/dist/output/capture-geometry.js +32 -11
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +49 -0
- package/dist/output/capture-sdr.d.ts.map +1 -0
- package/dist/output/capture-sdr.js +90 -0
- package/dist/output/capture-sdr.js.map +1 -0
- package/dist/output/crop.d.ts +6 -0
- package/dist/output/crop.d.ts.map +1 -1
- package/dist/output/crop.js +6 -0
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +137 -0
- package/dist/output/geometric-transforms.d.ts.map +1 -0
- package/dist/output/geometric-transforms.js +225 -0
- package/dist/output/geometric-transforms.js.map +1 -0
- package/dist/output/lens-corrections.d.ts +121 -0
- package/dist/output/lens-corrections.d.ts.map +1 -0
- package/dist/output/lens-corrections.js +210 -0
- package/dist/output/lens-corrections.js.map +1 -0
- package/dist/output/sdr-rendering.d.ts +81 -0
- package/dist/output/sdr-rendering.d.ts.map +1 -0
- package/dist/output/sdr-rendering.js +106 -0
- package/dist/output/sdr-rendering.js.map +1 -0
- package/dist/output/subject-framing-crop.d.ts +8 -0
- package/dist/output/subject-framing-crop.d.ts.map +1 -1
- package/dist/output/subject-framing-crop.js +8 -0
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/schema/camera.d.ts +6 -0
- package/dist/schema/camera.d.ts.map +1 -1
- package/dist/schema/illumination-spectral.d.ts +51 -0
- package/dist/schema/illumination-spectral.d.ts.map +1 -0
- package/dist/schema/illumination-spectral.js +132 -0
- package/dist/schema/illumination-spectral.js.map +1 -0
- package/dist/schema/illumination-temporal.d.ts +156 -0
- package/dist/schema/illumination-temporal.d.ts.map +1 -0
- package/dist/schema/illumination-temporal.js +554 -0
- package/dist/schema/illumination-temporal.js.map +1 -0
- package/dist/schema/illumination.d.ts +138 -0
- package/dist/schema/illumination.d.ts.map +1 -0
- package/dist/schema/illumination.js +483 -0
- package/dist/schema/illumination.js.map +1 -0
- package/dist/schema/scene-radiance-temporal.d.ts +107 -0
- package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
- package/dist/schema/scene-radiance-temporal.js +259 -0
- package/dist/schema/scene-radiance-temporal.js.map +1 -0
- package/dist/schema/scene-radiance.d.ts +185 -0
- package/dist/schema/scene-radiance.d.ts.map +1 -0
- package/dist/schema/scene-radiance.js +535 -0
- package/dist/schema/scene-radiance.js.map +1 -0
- package/dist/schema/scene.d.ts +7 -0
- package/dist/schema/scene.d.ts.map +1 -1
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +7 -0
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +199 -0
- package/dist/sensor/accumulated-charge.d.ts.map +1 -0
- package/dist/sensor/accumulated-charge.js +450 -0
- package/dist/sensor/accumulated-charge.js.map +1 -0
- package/dist/sensor/architecture.d.ts +48 -13
- package/dist/sensor/architecture.d.ts.map +1 -1
- package/dist/sensor/architecture.js +58 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
- package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
- package/dist/sensor/camera-saturation-capacity.js +356 -0
- package/dist/sensor/camera-saturation-capacity.js.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts +212 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.js +437 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -0
- package/dist/sensor/capture-mode-timing.d.ts +63 -0
- package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
- package/dist/sensor/capture-mode-timing.js +270 -0
- package/dist/sensor/capture-mode-timing.js.map +1 -0
- package/dist/sensor/capture-mode.d.ts +157 -0
- package/dist/sensor/capture-mode.d.ts.map +1 -0
- package/dist/sensor/capture-mode.js +447 -0
- package/dist/sensor/capture-mode.js.map +1 -0
- package/dist/sensor/color-sampling.d.ts +133 -0
- package/dist/sensor/color-sampling.d.ts.map +1 -0
- package/dist/sensor/color-sampling.js +245 -0
- package/dist/sensor/color-sampling.js.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.js +382 -0
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
- package/dist/sensor/dark-current.d.ts +169 -0
- package/dist/sensor/dark-current.d.ts.map +1 -0
- package/dist/sensor/dark-current.js +427 -0
- package/dist/sensor/dark-current.js.map +1 -0
- package/dist/sensor/environment-photo-signal.d.ts +123 -0
- package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
- package/dist/sensor/environment-photo-signal.js +186 -0
- package/dist/sensor/environment-photo-signal.js.map +1 -0
- package/dist/sensor/eqe-electron-rate.d.ts +107 -0
- package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
- package/dist/sensor/eqe-electron-rate.js +561 -0
- package/dist/sensor/eqe-electron-rate.js.map +1 -0
- package/dist/sensor/eqe-local-exposure.d.ts +65 -0
- package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-local-exposure.js +84 -0
- package/dist/sensor/eqe-local-exposure.js.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.js +62 -0
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/exposure-window.d.ts +117 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -0
- package/dist/sensor/exposure-window.js +305 -0
- package/dist/sensor/exposure-window.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +148 -0
- package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
- package/dist/sensor/iso-signal-chain.js +411 -0
- package/dist/sensor/iso-signal-chain.js.map +1 -0
- package/dist/sensor/local-exposure-binding.d.ts +87 -0
- package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
- package/dist/sensor/local-exposure-binding.js +214 -0
- package/dist/sensor/local-exposure-binding.js.map +1 -0
- package/dist/sensor/optical-stack.d.ts +132 -0
- package/dist/sensor/optical-stack.d.ts.map +1 -0
- package/dist/sensor/optical-stack.js +303 -0
- package/dist/sensor/optical-stack.js.map +1 -0
- package/dist/sensor/photon-energy.d.ts +97 -0
- package/dist/sensor/photon-energy.d.ts.map +1 -0
- package/dist/sensor/photon-energy.js +390 -0
- package/dist/sensor/photon-energy.js.map +1 -0
- package/dist/sensor/physical-charge-capacity.d.ts +130 -0
- package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
- package/dist/sensor/physical-charge-capacity.js +345 -0
- package/dist/sensor/physical-charge-capacity.js.map +1 -0
- package/dist/sensor/pixel-pitch.d.ts +6 -0
- package/dist/sensor/pixel-pitch.d.ts.map +1 -1
- package/dist/sensor/pixel-pitch.js +6 -0
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +10 -0
- package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
- package/dist/sensor/radiometry-readiness.js +10 -0
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +314 -0
- package/dist/sensor/raw-readout.d.ts.map +1 -0
- package/dist/sensor/raw-readout.js +914 -0
- package/dist/sensor/raw-readout.js.map +1 -0
- package/dist/sensor/raw-reconstruction.d.ts +170 -0
- package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
- package/dist/sensor/raw-reconstruction.js +424 -0
- package/dist/sensor/raw-reconstruction.js.map +1 -0
- package/dist/sensor/readout-exposure-linkage.d.ts +123 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -0
- package/dist/sensor/readout-exposure-linkage.js +222 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -0
- package/dist/sensor/readout-timing.d.ts +137 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -0
- package/dist/sensor/readout-timing.js +243 -0
- package/dist/sensor/readout-timing.js.map +1 -0
- package/dist/sensor/response-application-compatibility.d.ts +136 -0
- package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
- package/dist/sensor/response-application-compatibility.js +408 -0
- package/dist/sensor/response-application-compatibility.js.map +1 -0
- package/dist/sensor/response-operating-range.d.ts +173 -0
- package/dist/sensor/response-operating-range.d.ts.map +1 -0
- package/dist/sensor/response-operating-range.js +672 -0
- package/dist/sensor/response-operating-range.js.map +1 -0
- package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
- package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
- package/dist/sensor/responsivity-photocurrent.js +644 -0
- package/dist/sensor/responsivity-photocurrent.js.map +1 -0
- package/dist/sensor/sampling-aperture.d.ts +154 -0
- package/dist/sensor/sampling-aperture.d.ts.map +1 -0
- package/dist/sensor/sampling-aperture.js +388 -0
- package/dist/sensor/sampling-aperture.js.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/sensor-geometry.d.ts +12 -0
- package/dist/sensor/sensor-geometry.d.ts.map +1 -1
- package/dist/sensor/sensor-geometry.js +12 -0
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +10 -0
- package/dist/sensor/signal-noise.d.ts.map +1 -1
- package/dist/sensor/signal-noise.js +10 -0
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +171 -0
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -0
- package/dist/sensor/spatial-sample-reduction.js +345 -0
- package/dist/sensor/spatial-sample-reduction.js.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts +179 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -0
- package/dist/sensor/spatial-sampling-quadrature.js +224 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.js +373 -0
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
- package/dist/sensor/spectral-coverage.d.ts +24 -0
- package/dist/sensor/spectral-coverage.d.ts.map +1 -0
- package/dist/sensor/spectral-coverage.js +86 -0
- package/dist/sensor/spectral-coverage.js.map +1 -0
- package/dist/sensor/spectral-quadrature.d.ts +169 -0
- package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
- package/dist/sensor/spectral-quadrature.js +542 -0
- package/dist/sensor/spectral-quadrature.js.map +1 -0
- package/dist/sensor/spectral-response.d.ts +192 -0
- package/dist/sensor/spectral-response.d.ts.map +1 -0
- package/dist/sensor/spectral-response.js +664 -0
- package/dist/sensor/spectral-response.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
- package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
- package/dist/sensor/temporal-eqe-sum.js +30 -0
- package/dist/sensor/temporal-eqe-sum.js.map +1 -0
- package/dist/sensor/temporal-photo-signal.d.ts +38 -0
- package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
- package/dist/sensor/temporal-photo-signal.js +110 -0
- package/dist/sensor/temporal-photo-signal.js.map +1 -0
- package/dist/sensor/temporal-sample-binding.d.ts +6 -0
- package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
- package/dist/sensor/temporal-sample-binding.js +32 -0
- package/dist/sensor/temporal-sample-binding.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts.map +1 -1
- package/dist/simulation/poc-simulation.js +34 -11
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +11 -0
- package/dist/stabilization/camera-shake.d.ts.map +1 -1
- package/dist/stabilization/camera-shake.js +11 -0
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +218 -0
- package/dist/stabilization/system.d.ts.map +1 -0
- package/dist/stabilization/system.js +695 -0
- package/dist/stabilization/system.js.map +1 -0
- package/docs/API_REFERENCE.md +2017 -0
- package/docs/API_STYLE.md +132 -0
- package/docs/ARCHITECTURE.md +150 -23
- package/docs/AUTOMATION_COORDINATION.md +190 -0
- package/docs/CAPTURE_COLOR.md +25 -0
- package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
- package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
- package/docs/CAPTURE_SDR.md +20 -0
- package/docs/DEVELOPERS.md +60 -0
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
- package/docs/EXPORT_ACCEPTANCE.md +133 -0
- package/docs/GENERIC_TIER_PRESETS.md +269 -0
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
- package/docs/IMAGE_FORMATION.md +105 -9
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +145 -1
- package/docs/NUMERICAL_CORRECTNESS.md +191 -0
- package/docs/PERFORMANCE_BASELINE.md +56 -0
- package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
- package/docs/PHYSICS_FOUNDATION.md +152 -5
- package/docs/POC_API.md +2 -0
- package/docs/POC_PROJECTION_REUSE.md +124 -0
- package/docs/PROCESSED_OUTPUT.md +157 -0
- package/docs/PRODUCTION_COMPOSITION.md +373 -0
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
- package/docs/PROVENANCE.md +4 -0
- package/docs/PSF_FOUNDATION.md +110 -88
- package/docs/RAW_FRAME_ENVELOPE.md +56 -0
- package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
- package/docs/RELEASE_1_0.md +65 -0
- package/docs/RELEASE_AUDIT.md +38 -0
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
- package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
- package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
- package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
- package/docs/SDR_RENDERING.md +33 -0
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
- package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
- package/docs/SENSOR_RAW_FRAME.md +20 -0
- package/docs/SENSOR_RAW_PRODUCER.md +77 -0
- package/docs/SIGNAL_CONFORMANCE.md +23 -0
- package/docs/SIMULATED_CAPTURE.md +65 -0
- package/docs/STABILIZATION.md +160 -17
- package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
- package/docs/TIER_ACCEPTANCE.md +129 -0
- package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
- package/docs/USAGE.md +5604 -331
- package/docs/V1_COMPOSITION_MAP.md +123 -0
- package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
- package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
- package/docs/api/camera-equivalent-focal-length.md +53 -0
- package/docs/api/camera-field-of-view.md +119 -0
- package/docs/api/camera-projected-object-size.md +54 -0
- package/docs/api/capture-capture-export-metadata.md +107 -0
- package/docs/api/capture-environment-raw-producer.md +56 -0
- package/docs/api/capture-focus-control.md +419 -0
- package/docs/api/capture-linear-encoding.md +99 -0
- package/docs/api/capture-photographic-export.md +172 -0
- package/docs/api/capture-raw-frame-reconstruction.md +87 -0
- package/docs/api/capture-release-sequence.md +252 -0
- package/docs/api/capture-sensor-raw-frame.md +66 -0
- package/docs/api/capture-sensor-raw-producer.md +98 -0
- package/docs/api/capture-simulated-capture.md +179 -0
- package/docs/api/color-capture-color.md +122 -0
- package/docs/api/color-white-balance.md +386 -0
- package/docs/api/composition-image-formation-plan.md +825 -0
- package/docs/api/composition-plan-consumer.md +98 -0
- package/docs/api/core-calculation-result.md +220 -0
- package/docs/api/core-configuration-error.md +19 -0
- package/docs/api/core-image-formation.md +204 -0
- package/docs/api/core-scientific-assurance.md +214 -0
- package/docs/api/core-spectral-composition.md +268 -0
- package/docs/api/core-spectral.md +78 -0
- package/docs/api/core-validation.md +34 -0
- package/docs/api/core-version.md +14 -0
- package/docs/api/equipment-exposure-capabilities.md +270 -0
- package/docs/api/equipment-generic-tier-assets.md +82 -0
- package/docs/api/equipment-generic-tier-presets.md +103 -0
- package/docs/api/equipment-iso-capabilities.md +295 -0
- package/docs/api/equipment-metering-capabilities.md +126 -0
- package/docs/api/equipment-release-capabilities.md +91 -0
- package/docs/api/exports.json +5656 -0
- package/docs/api/exposure-exposure-duration-control.md +115 -0
- package/docs/api/exposure-exposure-mode-resolver.md +966 -0
- package/docs/api/exposure-exposure.md +150 -0
- package/docs/api/exposure-flash.md +327 -0
- package/docs/api/exposure-metering-scene-radiance.md +154 -0
- package/docs/api/exposure-metering-target.md +134 -0
- package/docs/api/exposure-metering-temporal.md +77 -0
- package/docs/api/exposure-metering.md +172 -0
- package/docs/api/exposure-program-line.md +64 -0
- package/docs/api/motion-camera-rotation.md +215 -0
- package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
- package/docs/api/motion-capture-rotation-trajectory.md +132 -0
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
- package/docs/api/motion-extended-object-projection.md +312 -0
- package/docs/api/motion-projected-motion.md +60 -0
- package/docs/api/optics-aperture.md +69 -0
- package/docs/api/optics-circle-of-confusion.md +46 -0
- package/docs/api/optics-complex-pupil-psf.md +193 -0
- package/docs/api/optics-depth-of-field.md +92 -0
- package/docs/api/optics-diffraction.md +46 -0
- package/docs/api/optics-focus-breathing.md +119 -0
- package/docs/api/optics-focus-state.md +64 -0
- package/docs/api/optics-front-of-lens-filter.md +263 -0
- package/docs/api/optics-illumination-vignetting.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
- package/docs/api/optics-lens-psf-profile.md +380 -0
- package/docs/api/optics-polygon-diffraction.md +68 -0
- package/docs/api/optics-profile-contract.md +47 -0
- package/docs/api/optics-psf-foundation.md +181 -0
- package/docs/api/optics-radial-distortion.md +194 -0
- package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
- package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
- package/docs/api/optics-sensor-environment-query.md +58 -0
- package/docs/api/optics-sensor-psf-quadrature.md +81 -0
- package/docs/api/optics-stray-light.md +109 -0
- package/docs/api/optics-thin-lens.md +53 -0
- package/docs/api/output-capture-corrected-sdr.md +71 -0
- package/docs/api/output-capture-geometry.md +500 -0
- package/docs/api/output-capture-sdr.md +69 -0
- package/docs/api/output-crop.md +47 -0
- package/docs/api/output-geometric-transforms.md +199 -0
- package/docs/api/output-lens-corrections.md +162 -0
- package/docs/api/output-sdr-rendering.md +122 -0
- package/docs/api/output-subject-framing-crop.md +59 -0
- package/docs/api/schema-camera.md +84 -0
- package/docs/api/schema-illumination-spectral.md +77 -0
- package/docs/api/schema-illumination-temporal.md +289 -0
- package/docs/api/schema-illumination.md +246 -0
- package/docs/api/schema-scene-radiance-temporal.md +215 -0
- package/docs/api/schema-scene-radiance.md +415 -0
- package/docs/api/schema-scene.md +105 -0
- package/docs/api/schema-validation.md +25 -0
- package/docs/api/sensor-accumulated-charge.md +273 -0
- package/docs/api/sensor-architecture.md +155 -0
- package/docs/api/sensor-camera-saturation-capacity.md +215 -0
- package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
- package/docs/api/sensor-capture-mode-timing.md +123 -0
- package/docs/api/sensor-capture-mode.md +321 -0
- package/docs/api/sensor-color-sampling.md +228 -0
- package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
- package/docs/api/sensor-dark-current.md +227 -0
- package/docs/api/sensor-environment-photo-signal.md +77 -0
- package/docs/api/sensor-eqe-electron-rate.md +166 -0
- package/docs/api/sensor-eqe-local-exposure.md +68 -0
- package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
- package/docs/api/sensor-exposure-window.md +183 -0
- package/docs/api/sensor-iso-signal-chain.md +264 -0
- package/docs/api/sensor-local-exposure-binding.md +126 -0
- package/docs/api/sensor-optical-stack.md +211 -0
- package/docs/api/sensor-photon-energy.md +149 -0
- package/docs/api/sensor-physical-charge-capacity.md +196 -0
- package/docs/api/sensor-pixel-pitch.md +41 -0
- package/docs/api/sensor-radiometry-readiness.md +240 -0
- package/docs/api/sensor-raw-readout.md +499 -0
- package/docs/api/sensor-raw-reconstruction.md +260 -0
- package/docs/api/sensor-readout-exposure-linkage.md +172 -0
- package/docs/api/sensor-readout-timing.md +209 -0
- package/docs/api/sensor-response-application-compatibility.md +256 -0
- package/docs/api/sensor-response-operating-range.md +293 -0
- package/docs/api/sensor-responsivity-photocurrent.md +245 -0
- package/docs/api/sensor-sampling-aperture.md +221 -0
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
- package/docs/api/sensor-sensor-geometry.md +143 -0
- package/docs/api/sensor-signal-noise.md +75 -0
- package/docs/api/sensor-spatial-sample-reduction.md +186 -0
- package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
- package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
- package/docs/api/sensor-spectral-coverage.md +33 -0
- package/docs/api/sensor-spectral-quadrature.md +183 -0
- package/docs/api/sensor-spectral-response.md +291 -0
- package/docs/api/sensor-temporal-photo-signal.md +62 -0
- package/docs/api/simulation-poc-simulation.md +364 -0
- package/docs/api/stabilization-camera-shake.md +71 -0
- package/docs/api/stabilization-system.md +442 -0
- package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
- package/docs/examples/production-capture.mjs +34 -0
- package/docs/examples/production-request.json +4613 -0
- package/docs/examples/quick-start.mjs +12 -0
- package/docs/validation/documentation-fragments.json +212 -0
- package/docs/validation/release-audit-inventory.json +1306 -0
- package/docs/validation/tier-acceptance-report-v1.json +2538 -0
- package/package.json +18 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scientific-assurance.js","sourceRoot":"","sources":["../../src/core/scientific-assurance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { type SpectralWavelengthBasis, type SpectralWavelengthRangeNanometers } from "./spectral.js";
|
|
2
|
+
export type ResolvedSpectralWavelengthBasis = Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
3
|
+
export type SpectralCoverageParticipantRole = "illumination-source" | "scene-radiance" | "material-response" | "optical-transmission" | "sensor-response" | "other";
|
|
4
|
+
export interface SpectralCoverageParticipant {
|
|
5
|
+
participantId: string;
|
|
6
|
+
role: SpectralCoverageParticipantRole;
|
|
7
|
+
wavelengthBasis: ResolvedSpectralWavelengthBasis;
|
|
8
|
+
wavelengthRangeNanometers: SpectralWavelengthRangeNanometers;
|
|
9
|
+
/**
|
|
10
|
+
* Internal piecewise-continuous breakpoints. Range endpoints are carried
|
|
11
|
+
* separately and must not be duplicated here.
|
|
12
|
+
*/
|
|
13
|
+
breakpointsNanometers: readonly number[];
|
|
14
|
+
}
|
|
15
|
+
export interface ComposeSpectralCoverageInput {
|
|
16
|
+
participants: readonly SpectralCoverageParticipant[];
|
|
17
|
+
}
|
|
18
|
+
export interface SpectralCoverageComposition {
|
|
19
|
+
wavelengthBasis: ResolvedSpectralWavelengthBasis;
|
|
20
|
+
commonWavelengthRangeNanometers: SpectralWavelengthRangeNanometers;
|
|
21
|
+
/**
|
|
22
|
+
* Common-range endpoints plus every participant breakpoint that falls
|
|
23
|
+
* strictly inside the common overlap.
|
|
24
|
+
*/
|
|
25
|
+
segmentBoundariesNanometers: readonly number[];
|
|
26
|
+
participantIds: readonly string[];
|
|
27
|
+
participantRoles: readonly SpectralCoverageParticipantRole[];
|
|
28
|
+
continuousCoverageIntersectionEstablished: true;
|
|
29
|
+
breakpointUnionEstablished: true;
|
|
30
|
+
responseValuesApplied: false;
|
|
31
|
+
spectralDensityIntegrated: false;
|
|
32
|
+
discreteLinesIncluded: false;
|
|
33
|
+
airVacuumConversionPerformed: false;
|
|
34
|
+
}
|
|
35
|
+
export interface NormalizedDiscreteSpectralLine {
|
|
36
|
+
lineId: string;
|
|
37
|
+
wavelengthNanometers: number;
|
|
38
|
+
normalizedIntegratedWeight: number;
|
|
39
|
+
}
|
|
40
|
+
export interface NormalizedDiscreteSpectralLineDistribution {
|
|
41
|
+
wavelengthBasis: ResolvedSpectralWavelengthBasis;
|
|
42
|
+
lineModel: "delta-like-integrated";
|
|
43
|
+
normalization: "sum-normalized-integrated-weight-to-one";
|
|
44
|
+
lines: readonly NormalizedDiscreteSpectralLine[];
|
|
45
|
+
}
|
|
46
|
+
export type DiscreteSpectralLineQuantityUnit = "relative" | "W/sr" | "W/m^2" | "W/m^2/sr";
|
|
47
|
+
export interface DiscreteSpectralLineMeasureEntry {
|
|
48
|
+
lineId: string;
|
|
49
|
+
wavelengthNanometers: number;
|
|
50
|
+
integratedQuantity: number;
|
|
51
|
+
}
|
|
52
|
+
export interface DiscreteSpectralLineMeasure {
|
|
53
|
+
wavelengthBasis: ResolvedSpectralWavelengthBasis;
|
|
54
|
+
quantityUnit: DiscreteSpectralLineQuantityUnit;
|
|
55
|
+
lineModel: "delta-like-integrated";
|
|
56
|
+
lines: readonly DiscreteSpectralLineMeasureEntry[];
|
|
57
|
+
continuousSpectralDensityAssumed: false;
|
|
58
|
+
wavelengthMeasureMultiplicationRequired: false;
|
|
59
|
+
}
|
|
60
|
+
export interface IntegratedDiscreteSpectralLineMeasure {
|
|
61
|
+
wavelengthBasis: ResolvedSpectralWavelengthBasis;
|
|
62
|
+
quantityUnit: DiscreteSpectralLineQuantityUnit;
|
|
63
|
+
integratedQuantity: number;
|
|
64
|
+
lineCount: number;
|
|
65
|
+
continuousQuadratureApplied: false;
|
|
66
|
+
wavelengthMeasureMultiplicationApplied: false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Parses one continuous spectral-coverage participant.
|
|
70
|
+
*
|
|
71
|
+
* This contract describes support and interpolation breakpoints only. It does
|
|
72
|
+
* not carry spectral values, transmission, response, radiance, or uncertainty.
|
|
73
|
+
*/
|
|
74
|
+
export declare function parseSpectralCoverageParticipant(value: unknown, path?: string): SpectralCoverageParticipant;
|
|
75
|
+
/**
|
|
76
|
+
* Intersects continuous spectral support and unions all interpolation
|
|
77
|
+
* breakpoints inside the common range.
|
|
78
|
+
*
|
|
79
|
+
* Air/vacuum conversion is never implicit. Discrete lines are deliberately
|
|
80
|
+
* excluded because delta-like line measures require a different integration
|
|
81
|
+
* path from continuous per-nanometre densities.
|
|
82
|
+
*/
|
|
83
|
+
export declare function composeSpectralCoverage(input: ComposeSpectralCoverageInput): SpectralCoverageComposition;
|
|
84
|
+
/**
|
|
85
|
+
* Parses a normalized set of delta-like discrete spectral lines.
|
|
86
|
+
*
|
|
87
|
+
* Each weight is an integrated line fraction, not a per-nanometre spectral
|
|
88
|
+
* density sample. The weights must sum to one.
|
|
89
|
+
*/
|
|
90
|
+
export declare function parseNormalizedDiscreteSpectralLineDistribution(value: unknown, path?: string): NormalizedDiscreteSpectralLineDistribution;
|
|
91
|
+
export interface DistributeIntegratedQuantityAcrossDiscreteLinesInput {
|
|
92
|
+
distribution: NormalizedDiscreteSpectralLineDistribution;
|
|
93
|
+
totalIntegratedQuantity: number;
|
|
94
|
+
quantityUnit: DiscreteSpectralLineQuantityUnit;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Distributes one wavelength-integrated quantity across normalized discrete
|
|
98
|
+
* line fractions without inventing a continuous line width.
|
|
99
|
+
*/
|
|
100
|
+
export declare function distributeIntegratedQuantityAcrossDiscreteSpectralLines(input: DistributeIntegratedQuantityAcrossDiscreteLinesInput): DiscreteSpectralLineMeasure;
|
|
101
|
+
/**
|
|
102
|
+
* Integrates a discrete line measure by summing already wavelength-integrated
|
|
103
|
+
* line contributions. No d-lambda factor is applied.
|
|
104
|
+
*/
|
|
105
|
+
export declare function integrateDiscreteSpectralLineMeasure(measure: DiscreteSpectralLineMeasure): IntegratedDiscreteSpectralLineMeasure;
|
|
106
|
+
//# sourceMappingURL=spectral-composition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral-composition.d.ts","sourceRoot":"","sources":["../../src/core/spectral-composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Parses one continuous spectral-coverage participant. This contract describes support and
|
|
5
|
+
* interpolation breakpoints only. It does not carry spectral values, transmission, response, radiance,
|
|
6
|
+
* or uncertainty.
|
|
7
|
+
* Intersects continuous spectral support and unions all interpolation breakpoints inside the common
|
|
8
|
+
* range. Air/vacuum conversion is never implicit. Discrete lines are deliberately excluded because
|
|
9
|
+
* delta-like line measures require a different integration path from continuous per-nanometre
|
|
10
|
+
* densities.
|
|
11
|
+
* @see docs/SCENE_RADIANCE_AND_ILLUMINATION.md for equations, coordinate/unit conventions, blockers
|
|
12
|
+
* and support limits.
|
|
13
|
+
*/
|
|
14
|
+
import { InvalidConfigurationError } from "./configuration-error.js";
|
|
15
|
+
import { parseSpectralWavelengthBasis, parseSpectralWavelengthRangeNanometers } from "./spectral.js";
|
|
16
|
+
function requireRecord(value, path) {
|
|
17
|
+
if (typeof value !== "object" ||
|
|
18
|
+
value === null ||
|
|
19
|
+
Array.isArray(value)) {
|
|
20
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function requireNonEmptyString(value, path) {
|
|
25
|
+
if (typeof value !== "string" ||
|
|
26
|
+
value.trim().length === 0) {
|
|
27
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
28
|
+
}
|
|
29
|
+
return value.trim();
|
|
30
|
+
}
|
|
31
|
+
function requirePositiveFinite(value, path) {
|
|
32
|
+
if (typeof value !== "number" ||
|
|
33
|
+
!Number.isFinite(value) ||
|
|
34
|
+
value <= 0) {
|
|
35
|
+
throw new InvalidConfigurationError(path +
|
|
36
|
+
" must be finite and greater than zero.");
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
function requireNonNegativeFinite(value, path) {
|
|
41
|
+
if (typeof value !== "number" ||
|
|
42
|
+
!Number.isFinite(value) ||
|
|
43
|
+
value < 0) {
|
|
44
|
+
throw new InvalidConfigurationError(path +
|
|
45
|
+
" must be finite and greater than or equal to zero.");
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function parseResolvedBasis(value, path) {
|
|
50
|
+
const basis = parseSpectralWavelengthBasis(value, path);
|
|
51
|
+
if (basis === "unspecified") {
|
|
52
|
+
throw new InvalidConfigurationError(path +
|
|
53
|
+
" must be air or vacuum for spectral composition.");
|
|
54
|
+
}
|
|
55
|
+
return basis;
|
|
56
|
+
}
|
|
57
|
+
function parseRole(value, path) {
|
|
58
|
+
if (value !== "illumination-source" &&
|
|
59
|
+
value !== "scene-radiance" &&
|
|
60
|
+
value !== "material-response" &&
|
|
61
|
+
value !== "optical-transmission" &&
|
|
62
|
+
value !== "sensor-response" &&
|
|
63
|
+
value !== "other") {
|
|
64
|
+
throw new InvalidConfigurationError(path + " is invalid.");
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
function parseBreakpoints(value, range, path) {
|
|
69
|
+
if (!Array.isArray(value)) {
|
|
70
|
+
throw new InvalidConfigurationError(path + " must be an array.");
|
|
71
|
+
}
|
|
72
|
+
let previous = Number.NEGATIVE_INFINITY;
|
|
73
|
+
return value.map((entry, index) => {
|
|
74
|
+
const breakpoint = requirePositiveFinite(entry, path + "[" + index + "]");
|
|
75
|
+
if (breakpoint <= range.minimum ||
|
|
76
|
+
breakpoint >= range.maximum) {
|
|
77
|
+
throw new InvalidConfigurationError(path +
|
|
78
|
+
" values must lie strictly inside the participant wavelength range.");
|
|
79
|
+
}
|
|
80
|
+
if (breakpoint <= previous) {
|
|
81
|
+
throw new InvalidConfigurationError(path +
|
|
82
|
+
" must be strictly increasing with no duplicates.");
|
|
83
|
+
}
|
|
84
|
+
previous = breakpoint;
|
|
85
|
+
return breakpoint;
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Parses one continuous spectral-coverage participant.
|
|
90
|
+
*
|
|
91
|
+
* This contract describes support and interpolation breakpoints only. It does
|
|
92
|
+
* not carry spectral values, transmission, response, radiance, or uncertainty.
|
|
93
|
+
*/
|
|
94
|
+
export function parseSpectralCoverageParticipant(value, path = "spectralCoverageParticipant") {
|
|
95
|
+
const record = requireRecord(value, path);
|
|
96
|
+
const range = parseSpectralWavelengthRangeNanometers(record.wavelengthRangeNanometers, path +
|
|
97
|
+
".wavelengthRangeNanometers");
|
|
98
|
+
return {
|
|
99
|
+
participantId: requireNonEmptyString(record.participantId, path + ".participantId"),
|
|
100
|
+
role: parseRole(record.role, path + ".role"),
|
|
101
|
+
wavelengthBasis: parseResolvedBasis(record.wavelengthBasis, path + ".wavelengthBasis"),
|
|
102
|
+
wavelengthRangeNanometers: range,
|
|
103
|
+
breakpointsNanometers: parseBreakpoints(record.breakpointsNanometers, range, path +
|
|
104
|
+
".breakpointsNanometers")
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Intersects continuous spectral support and unions all interpolation
|
|
109
|
+
* breakpoints inside the common range.
|
|
110
|
+
*
|
|
111
|
+
* Air/vacuum conversion is never implicit. Discrete lines are deliberately
|
|
112
|
+
* excluded because delta-like line measures require a different integration
|
|
113
|
+
* path from continuous per-nanometre densities.
|
|
114
|
+
*/
|
|
115
|
+
export function composeSpectralCoverage(input) {
|
|
116
|
+
if (!Array.isArray(input.participants) ||
|
|
117
|
+
input.participants.length === 0) {
|
|
118
|
+
throw new InvalidConfigurationError("participants must be a non-empty array.");
|
|
119
|
+
}
|
|
120
|
+
const participants = input.participants.map((entry, index) => parseSpectralCoverageParticipant(entry, "participants[" +
|
|
121
|
+
index +
|
|
122
|
+
"]"));
|
|
123
|
+
const participantIds = participants.map((entry) => entry.participantId);
|
|
124
|
+
if (new Set(participantIds).size !==
|
|
125
|
+
participantIds.length) {
|
|
126
|
+
throw new InvalidConfigurationError("participants[].participantId must not contain duplicates.");
|
|
127
|
+
}
|
|
128
|
+
const wavelengthBasis = participants[0]
|
|
129
|
+
.wavelengthBasis;
|
|
130
|
+
if (participants.some((entry) => entry.wavelengthBasis !==
|
|
131
|
+
wavelengthBasis)) {
|
|
132
|
+
throw new InvalidConfigurationError("All spectral-coverage participants must use the same resolved wavelengthBasis; air/vacuum conversion is not implicit.");
|
|
133
|
+
}
|
|
134
|
+
const minimum = Math.max(...participants.map((entry) => entry
|
|
135
|
+
.wavelengthRangeNanometers
|
|
136
|
+
.minimum));
|
|
137
|
+
const maximum = Math.min(...participants.map((entry) => entry
|
|
138
|
+
.wavelengthRangeNanometers
|
|
139
|
+
.maximum));
|
|
140
|
+
if (!(minimum < maximum)) {
|
|
141
|
+
throw new InvalidConfigurationError("Spectral-coverage participants do not share a non-empty wavelength interval.");
|
|
142
|
+
}
|
|
143
|
+
const boundaries = new Set([
|
|
144
|
+
minimum,
|
|
145
|
+
maximum
|
|
146
|
+
]);
|
|
147
|
+
for (const participant of participants) {
|
|
148
|
+
for (const breakpoint of participant.breakpointsNanometers) {
|
|
149
|
+
if (breakpoint > minimum &&
|
|
150
|
+
breakpoint < maximum) {
|
|
151
|
+
boundaries.add(breakpoint);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
wavelengthBasis,
|
|
157
|
+
commonWavelengthRangeNanometers: {
|
|
158
|
+
minimum,
|
|
159
|
+
maximum
|
|
160
|
+
},
|
|
161
|
+
segmentBoundariesNanometers: [...boundaries].sort((a, b) => a - b),
|
|
162
|
+
participantIds,
|
|
163
|
+
participantRoles: participants.map((entry) => entry.role),
|
|
164
|
+
continuousCoverageIntersectionEstablished: true,
|
|
165
|
+
breakpointUnionEstablished: true,
|
|
166
|
+
responseValuesApplied: false,
|
|
167
|
+
spectralDensityIntegrated: false,
|
|
168
|
+
discreteLinesIncluded: false,
|
|
169
|
+
airVacuumConversionPerformed: false
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
const LINE_WEIGHT_TOLERANCE = 1e-9;
|
|
173
|
+
/**
|
|
174
|
+
* Parses a normalized set of delta-like discrete spectral lines.
|
|
175
|
+
*
|
|
176
|
+
* Each weight is an integrated line fraction, not a per-nanometre spectral
|
|
177
|
+
* density sample. The weights must sum to one.
|
|
178
|
+
*/
|
|
179
|
+
export function parseNormalizedDiscreteSpectralLineDistribution(value, path = "discreteSpectralLineDistribution") {
|
|
180
|
+
const record = requireRecord(value, path);
|
|
181
|
+
if (record.lineModel !==
|
|
182
|
+
"delta-like-integrated") {
|
|
183
|
+
throw new InvalidConfigurationError(path +
|
|
184
|
+
'.lineModel must be "delta-like-integrated".');
|
|
185
|
+
}
|
|
186
|
+
if (record.normalization !==
|
|
187
|
+
"sum-normalized-integrated-weight-to-one") {
|
|
188
|
+
throw new InvalidConfigurationError(path +
|
|
189
|
+
'.normalization must be "sum-normalized-integrated-weight-to-one".');
|
|
190
|
+
}
|
|
191
|
+
if (!Array.isArray(record.lines) ||
|
|
192
|
+
record.lines.length === 0) {
|
|
193
|
+
throw new InvalidConfigurationError(path +
|
|
194
|
+
".lines must be a non-empty array.");
|
|
195
|
+
}
|
|
196
|
+
const wavelengthBasis = parseResolvedBasis(record.wavelengthBasis, path + ".wavelengthBasis");
|
|
197
|
+
let previousWavelength = Number.NEGATIVE_INFINITY;
|
|
198
|
+
const lineIds = [];
|
|
199
|
+
let weightSum = 0;
|
|
200
|
+
const lines = record.lines.map((entry, index) => {
|
|
201
|
+
const linePath = path + ".lines[" +
|
|
202
|
+
index +
|
|
203
|
+
"]";
|
|
204
|
+
const line = requireRecord(entry, linePath);
|
|
205
|
+
const lineId = requireNonEmptyString(line.lineId, linePath + ".lineId");
|
|
206
|
+
const wavelengthNanometers = requirePositiveFinite(line.wavelengthNanometers, linePath +
|
|
207
|
+
".wavelengthNanometers");
|
|
208
|
+
if (wavelengthNanometers <=
|
|
209
|
+
previousWavelength) {
|
|
210
|
+
throw new InvalidConfigurationError(path +
|
|
211
|
+
".lines wavelengths must be strictly increasing with no duplicates.");
|
|
212
|
+
}
|
|
213
|
+
previousWavelength =
|
|
214
|
+
wavelengthNanometers;
|
|
215
|
+
const normalizedIntegratedWeight = requirePositiveFinite(line.normalizedIntegratedWeight, linePath +
|
|
216
|
+
".normalizedIntegratedWeight");
|
|
217
|
+
lineIds.push(lineId);
|
|
218
|
+
weightSum +=
|
|
219
|
+
normalizedIntegratedWeight;
|
|
220
|
+
return {
|
|
221
|
+
lineId,
|
|
222
|
+
wavelengthNanometers,
|
|
223
|
+
normalizedIntegratedWeight
|
|
224
|
+
};
|
|
225
|
+
});
|
|
226
|
+
if (new Set(lineIds).size !==
|
|
227
|
+
lineIds.length) {
|
|
228
|
+
throw new InvalidConfigurationError(path +
|
|
229
|
+
".lines[].lineId must not contain duplicates.");
|
|
230
|
+
}
|
|
231
|
+
if (!Number.isFinite(weightSum) ||
|
|
232
|
+
Math.abs(weightSum - 1) >
|
|
233
|
+
LINE_WEIGHT_TOLERANCE) {
|
|
234
|
+
throw new InvalidConfigurationError(path +
|
|
235
|
+
".lines normalizedIntegratedWeight values must sum to 1.");
|
|
236
|
+
}
|
|
237
|
+
return {
|
|
238
|
+
wavelengthBasis,
|
|
239
|
+
lineModel: "delta-like-integrated",
|
|
240
|
+
normalization: "sum-normalized-integrated-weight-to-one",
|
|
241
|
+
lines
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
function parseQuantityUnit(value, path) {
|
|
245
|
+
if (value !== "relative" &&
|
|
246
|
+
value !== "W/sr" &&
|
|
247
|
+
value !== "W/m^2" &&
|
|
248
|
+
value !== "W/m^2/sr") {
|
|
249
|
+
throw new InvalidConfigurationError(path + " is invalid.");
|
|
250
|
+
}
|
|
251
|
+
return value;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Distributes one wavelength-integrated quantity across normalized discrete
|
|
255
|
+
* line fractions without inventing a continuous line width.
|
|
256
|
+
*/
|
|
257
|
+
export function distributeIntegratedQuantityAcrossDiscreteSpectralLines(input) {
|
|
258
|
+
const distribution = parseNormalizedDiscreteSpectralLineDistribution(input.distribution, "distribution");
|
|
259
|
+
const totalIntegratedQuantity = requireNonNegativeFinite(input.totalIntegratedQuantity, "totalIntegratedQuantity");
|
|
260
|
+
const quantityUnit = parseQuantityUnit(input.quantityUnit, "quantityUnit");
|
|
261
|
+
return {
|
|
262
|
+
wavelengthBasis: distribution.wavelengthBasis,
|
|
263
|
+
quantityUnit,
|
|
264
|
+
lineModel: "delta-like-integrated",
|
|
265
|
+
lines: distribution.lines.map((line) => ({
|
|
266
|
+
lineId: line.lineId,
|
|
267
|
+
wavelengthNanometers: line.wavelengthNanometers,
|
|
268
|
+
integratedQuantity: totalIntegratedQuantity *
|
|
269
|
+
line
|
|
270
|
+
.normalizedIntegratedWeight
|
|
271
|
+
})),
|
|
272
|
+
continuousSpectralDensityAssumed: false,
|
|
273
|
+
wavelengthMeasureMultiplicationRequired: false
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Integrates a discrete line measure by summing already wavelength-integrated
|
|
278
|
+
* line contributions. No d-lambda factor is applied.
|
|
279
|
+
*/
|
|
280
|
+
export function integrateDiscreteSpectralLineMeasure(measure) {
|
|
281
|
+
const record = requireRecord(measure, "measure");
|
|
282
|
+
const wavelengthBasis = parseResolvedBasis(record.wavelengthBasis, "measure.wavelengthBasis");
|
|
283
|
+
const quantityUnit = parseQuantityUnit(record.quantityUnit, "measure.quantityUnit");
|
|
284
|
+
if (record.lineModel !==
|
|
285
|
+
"delta-like-integrated") {
|
|
286
|
+
throw new InvalidConfigurationError('measure.lineModel must be "delta-like-integrated".');
|
|
287
|
+
}
|
|
288
|
+
if (record.continuousSpectralDensityAssumed !==
|
|
289
|
+
false ||
|
|
290
|
+
record.wavelengthMeasureMultiplicationRequired !==
|
|
291
|
+
false) {
|
|
292
|
+
throw new InvalidConfigurationError("Discrete spectral line measures must not claim continuous-density or d-lambda integration semantics.");
|
|
293
|
+
}
|
|
294
|
+
if (!Array.isArray(record.lines) ||
|
|
295
|
+
record.lines.length === 0) {
|
|
296
|
+
throw new InvalidConfigurationError("measure.lines must be a non-empty array.");
|
|
297
|
+
}
|
|
298
|
+
let previousWavelength = Number.NEGATIVE_INFINITY;
|
|
299
|
+
const lineIds = [];
|
|
300
|
+
let integratedQuantity = 0;
|
|
301
|
+
for (let index = 0; index < record.lines.length; index += 1) {
|
|
302
|
+
const linePath = "measure.lines[" + index + "]";
|
|
303
|
+
const line = requireRecord(record.lines[index], linePath);
|
|
304
|
+
const lineId = requireNonEmptyString(line.lineId, linePath + ".lineId");
|
|
305
|
+
const wavelengthNanometers = requirePositiveFinite(line.wavelengthNanometers, linePath +
|
|
306
|
+
".wavelengthNanometers");
|
|
307
|
+
if (wavelengthNanometers <=
|
|
308
|
+
previousWavelength) {
|
|
309
|
+
throw new InvalidConfigurationError("measure.lines wavelengths must be strictly increasing with no duplicates.");
|
|
310
|
+
}
|
|
311
|
+
previousWavelength =
|
|
312
|
+
wavelengthNanometers;
|
|
313
|
+
lineIds.push(lineId);
|
|
314
|
+
integratedQuantity +=
|
|
315
|
+
requireNonNegativeFinite(line.integratedQuantity, linePath +
|
|
316
|
+
".integratedQuantity");
|
|
317
|
+
if (!Number.isFinite(integratedQuantity)) {
|
|
318
|
+
throw new InvalidConfigurationError("Discrete spectral line integrated quantity must remain finite.");
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (new Set(lineIds).size !==
|
|
322
|
+
lineIds.length) {
|
|
323
|
+
throw new InvalidConfigurationError("measure.lines[].lineId must not contain duplicates.");
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
wavelengthBasis,
|
|
327
|
+
quantityUnit,
|
|
328
|
+
integratedQuantity,
|
|
329
|
+
lineCount: record.lines.length,
|
|
330
|
+
continuousQuadratureApplied: false,
|
|
331
|
+
wavelengthMeasureMultiplicationApplied: false
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
//# sourceMappingURL=spectral-composition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral-composition.js","sourceRoot":"","sources":["../../src/core/spectral-composition.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Explicit wavelength coordinate basis used by renderer-neutral spectral data.
|
|
3
|
+
*
|
|
4
|
+
* "unspecified" is permitted only where a downstream contract explicitly
|
|
5
|
+
* allows unresolved/approximate wavelength coordinates. Calibrated physical
|
|
6
|
+
* composition must resolve the basis before use.
|
|
7
|
+
*/
|
|
8
|
+
export type SpectralWavelengthBasis = "air" | "vacuum" | "unspecified";
|
|
9
|
+
/**
|
|
10
|
+
* One wavelength coordinate expressed in nanometres.
|
|
11
|
+
*/
|
|
12
|
+
export interface SpectralWavelengthSample {
|
|
13
|
+
wavelengthNanometers: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Closed wavelength interval expressed in nanometres.
|
|
17
|
+
*/
|
|
18
|
+
export interface SpectralWavelengthRangeNanometers {
|
|
19
|
+
minimum: number;
|
|
20
|
+
maximum: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parses a wavelength basis without inferring air/vacuum conversion.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseSpectralWavelengthBasis(value: unknown, path?: string): SpectralWavelengthBasis;
|
|
26
|
+
/**
|
|
27
|
+
* Parses one positive wavelength coordinate in nanometres.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseSpectralWavelengthSample(value: unknown, path?: string): SpectralWavelengthSample;
|
|
30
|
+
/**
|
|
31
|
+
* Parses a positive non-empty wavelength interval in nanometres.
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseSpectralWavelengthRangeNanometers(value: unknown, path?: string): SpectralWavelengthRangeNanometers;
|
|
34
|
+
//# sourceMappingURL=spectral.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral.d.ts","sourceRoot":"","sources":["../../src/core/spectral.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAC/B,KAAK,GACL,QAAQ,GACR,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAkCD;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,IAAI,SAAoB,GACvB,uBAAuB,CAWzB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,IAAI,SAAmB,GACtB,wBAAwB,CAS1B;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,OAAO,EACd,IAAI,SAA8B,GACjC,iCAAiC,CAkBnC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Parses a wavelength basis without inferring air/vacuum conversion.
|
|
5
|
+
* Parses one positive wavelength coordinate in nanometres.
|
|
6
|
+
* @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
|
|
7
|
+
*/
|
|
8
|
+
import { InvalidConfigurationError } from "./configuration-error.js";
|
|
9
|
+
function requireRecord(value, path) {
|
|
10
|
+
if (typeof value !== "object" ||
|
|
11
|
+
value === null ||
|
|
12
|
+
Array.isArray(value)) {
|
|
13
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
function requirePositiveFinite(value, path) {
|
|
18
|
+
if (typeof value !== "number" ||
|
|
19
|
+
!Number.isFinite(value) ||
|
|
20
|
+
value <= 0) {
|
|
21
|
+
throw new InvalidConfigurationError(path + " must be finite and greater than zero.");
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parses a wavelength basis without inferring air/vacuum conversion.
|
|
27
|
+
*/
|
|
28
|
+
export function parseSpectralWavelengthBasis(value, path = "wavelengthBasis") {
|
|
29
|
+
if (value !== "air" &&
|
|
30
|
+
value !== "vacuum" &&
|
|
31
|
+
value !== "unspecified") {
|
|
32
|
+
throw new InvalidConfigurationError(path + " is invalid.");
|
|
33
|
+
}
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parses one positive wavelength coordinate in nanometres.
|
|
38
|
+
*/
|
|
39
|
+
export function parseSpectralWavelengthSample(value, path = "spectralSample") {
|
|
40
|
+
const record = requireRecord(value, path);
|
|
41
|
+
return {
|
|
42
|
+
wavelengthNanometers: requirePositiveFinite(record.wavelengthNanometers, path + ".wavelengthNanometers")
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Parses a positive non-empty wavelength interval in nanometres.
|
|
47
|
+
*/
|
|
48
|
+
export function parseSpectralWavelengthRangeNanometers(value, path = "wavelengthRangeNanometers") {
|
|
49
|
+
const record = requireRecord(value, path);
|
|
50
|
+
const minimum = requirePositiveFinite(record.minimum, path + ".minimum");
|
|
51
|
+
const maximum = requirePositiveFinite(record.maximum, path + ".maximum");
|
|
52
|
+
if (!(minimum < maximum)) {
|
|
53
|
+
throw new InvalidConfigurationError(path + ".minimum must be less than maximum.");
|
|
54
|
+
}
|
|
55
|
+
return { minimum, maximum };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=spectral.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spectral.js","sourceRoot":"","sources":["../../src/core/spectral.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AA+BrE,SAAS,aAAa,CACpB,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EACpB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,qBAAqB,CAC7B,CAAC;IACJ,CAAC;IACD,OAAO,KAAsB,CAAC;AAChC,CAAC;AAED,SAAS,qBAAqB,CAC5B,KAAc,EACd,IAAY;IAEZ,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,IAAI,CAAC,EACV,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,wCAAwC,CAChD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAAc,EACd,IAAI,GAAG,iBAAiB;IAExB,IACE,KAAK,KAAK,KAAK;QACf,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,aAAa,EACvB,CAAC;QACD,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,cAAc,CACtB,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,IAAI,GAAG,gBAAgB;IAEvB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,OAAO;QACL,oBAAoB,EAClB,qBAAqB,CACnB,MAAM,CAAC,oBAAoB,EAC3B,IAAI,GAAG,uBAAuB,CAC/B;KACJ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sCAAsC,CACpD,KAAc,EACd,IAAI,GAAG,2BAA2B;IAElC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,OAAO,EACd,IAAI,GAAG,UAAU,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,qBAAqB,CACnC,MAAM,CAAC,OAAO,EACd,IAAI,GAAG,UAAU,CAClB,CAAC;IAEF,IAAI,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,yBAAyB,CACjC,IAAI,GAAG,qCAAqC,CAC7C,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Requires a finite number greater than zero.
|
|
4
|
+
* Requires a positive safe integer.
|
|
5
|
+
* @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
|
|
6
|
+
*/
|
|
1
7
|
/**
|
|
2
8
|
* Error thrown when a public scientific calculation receives invalid input.
|
|
3
9
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAAU;IACzD,QAAQ,CAAC,IAAI,8BAA8B;gBAE/B,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,UAAU;IAC1D,QAAQ,CAAC,IAAI,+BAA+B;gBAEhC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMxE"}
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,UAAU;IACzD,QAAQ,CAAC,IAAI,8BAA8B;gBAE/B,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,UAAU;IAC1D,QAAQ,CAAC,IAAI,+BAA+B;gBAEhC,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMvE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAMxE"}
|
package/dist/core/validation.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Requires a finite number greater than zero.
|
|
5
|
+
* Requires a positive safe integer.
|
|
6
|
+
* @see docs/API_STYLE.md for equations, coordinate/unit conventions, blockers and support limits.
|
|
7
|
+
*/
|
|
2
8
|
/**
|
|
3
9
|
* Error thrown when a public scientific calculation receives invalid input.
|
|
4
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,UAAU;IAChD,IAAI,GAAG,0BAA0B,CAAC;IAE3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,4BAA6B,SAAQ,UAAU;IACjD,IAAI,GAAG,2BAA2B,CAAC;IAE5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,KAAa;IAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,6CAA6C,CACrD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,KAAa;IAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,mCAAmC,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,UAAU;IAChD,IAAI,GAAG,0BAA0B,CAAC;IAE3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,4BAA6B,SAAQ,UAAU;IACjD,IAAI,GAAG,2BAA2B,CAAC;IAE5C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,KAAa;IAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,6CAA6C,CACrD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,KAAa;IAChE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,2BAA2B,CACnC,GAAG,IAAI,mCAAmC,CAC3C,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The root contract identity is embedded in capture/plan data. Package 1.0.0 deliberately retains
|
|
3
|
+
* 0.116.0 so documentation/release metadata changes do not alter serialized scientific identity.
|
|
4
|
+
* Distribution SemVer and independent model/schema versions remain separate.
|
|
5
|
+
* @see docs/RELEASE_1_0.md and the corresponding domain guide.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Version of the public root-engine API contract.
|
|
9
|
+
*
|
|
10
|
+
* This is distinct from the npm package version and all subsystem/schema
|
|
11
|
+
* contract versions.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ENGINE_API_VERSION: "0.116.0";
|
|
14
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAG,SAAkB,CAAC"}
|