@photivra/engine 0.6.0 → 1.0.1
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 +191 -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 +139 -72
- 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 +9 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +10 -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 +87 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -6
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +16 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +16 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
- package/dist/motion/capture-rotation-trajectory.js +15 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- 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 +11 -0
- 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 +18 -0
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +18 -0
- 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 +8 -0
- 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 +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.js +14 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- 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.map +1 -1
- package/dist/sensor/capture-mode.js +13 -0
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts.map +1 -1
- package/dist/sensor/color-sampling.js +19 -0
- package/dist/sensor/color-sampling.js.map +1 -1
- 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 +14 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -1
- package/dist/sensor/exposure-window.js +14 -0
- package/dist/sensor/exposure-window.js.map +1 -1
- 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.map +1 -1
- package/dist/sensor/optical-stack.js +17 -0
- package/dist/sensor/optical-stack.js.map +1 -1
- 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 +12 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
- package/dist/sensor/readout-exposure-linkage.js +12 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +13 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -1
- package/dist/sensor/readout-timing.js +13 -0
- package/dist/sensor/readout-timing.js.map +1 -1
- 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.map +1 -1
- package/dist/sensor/sampling-aperture.js +14 -0
- package/dist/sensor/sampling-aperture.js.map +1 -1
- 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 +44 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
- package/dist/sensor/spatial-sample-reduction.js +51 -5
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.js +27 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- 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 +139 -3
- package/docs/ARCHITECTURE.md +134 -24
- package/docs/AUTOMATION_COORDINATION.md +2 -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 +80 -10
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +5 -3
- 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 +66 -0
- package/docs/RELEASE_1_0_1.md +61 -0
- package/docs/RELEASE_AUDIT.md +39 -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 +5050 -1047
- 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 +15 -3
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
5
|
+
* missing required fields and incompatible scientific data fail at this boundary. Response application
|
|
6
|
+
* checks exact profile/channel, source plane, incident-area basis, spatial uniformity and reference
|
|
7
|
+
* conditions. Structural compatibility alone does not authorize signal conversion; per-bin
|
|
8
|
+
* operating-range validity and the typed EQE/A-W path are separate gates.
|
|
9
|
+
* Assess whether exact source-plane, area, profile/channel and reference-condition bindings permit the
|
|
10
|
+
* selected response application path. Response application checks exact profile/channel, source plane,
|
|
11
|
+
* incident-area basis, spatial uniformity and reference conditions. Structural compatibility alone
|
|
12
|
+
* does not authorize signal conversion; per-bin operating-range validity and the typed EQE/A-W path
|
|
13
|
+
* are separate gates.
|
|
14
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
|
+
* limits.
|
|
16
|
+
*/
|
|
17
|
+
import { calculatedResult } from "../core/calculation-result.js";
|
|
18
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
19
|
+
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
20
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
21
|
+
const AREA_TOLERANCE = 1e-10;
|
|
22
|
+
function requireRecord(value, path) {
|
|
23
|
+
if (typeof value !== "object" ||
|
|
24
|
+
value === null ||
|
|
25
|
+
Array.isArray(value)) {
|
|
26
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function requireNonEmptyString(value, path) {
|
|
31
|
+
if (typeof value !== "string" ||
|
|
32
|
+
value.trim().length === 0) {
|
|
33
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function requirePositiveFinite(value, path) {
|
|
38
|
+
if (typeof value !== "number" ||
|
|
39
|
+
!Number.isFinite(value) ||
|
|
40
|
+
value <= 0) {
|
|
41
|
+
throw new InvalidConfigurationError(path +
|
|
42
|
+
" must be finite and greater than zero.");
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
function parseIncidentAreaBasis(value, path) {
|
|
47
|
+
const record = requireRecord(value, path);
|
|
48
|
+
const areaSquareMicrometers = requirePositiveFinite(record.areaSquareMicrometers, path + ".areaSquareMicrometers");
|
|
49
|
+
if (record.kind !==
|
|
50
|
+
"geometric-sensitive-aperture" &&
|
|
51
|
+
record.kind !== "full-site-cell" &&
|
|
52
|
+
record.kind !==
|
|
53
|
+
"effective-collection-area") {
|
|
54
|
+
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
kind: record.kind,
|
|
58
|
+
areaSquareMicrometers
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function parseSpatialResponseModel(value, path) {
|
|
62
|
+
const record = requireRecord(value, path);
|
|
63
|
+
if (record.kind === "not-established") {
|
|
64
|
+
return {
|
|
65
|
+
kind: "not-established",
|
|
66
|
+
limitation: requireNonEmptyString(record.limitation, path + ".limitation")
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
if (record.kind !==
|
|
70
|
+
"uniform-over-geometric-sensitive-aperture") {
|
|
71
|
+
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
72
|
+
}
|
|
73
|
+
if (record.scientificStatus !==
|
|
74
|
+
"calibrated" &&
|
|
75
|
+
record.scientificStatus !==
|
|
76
|
+
"approximation") {
|
|
77
|
+
throw new InvalidConfigurationError(path +
|
|
78
|
+
".scientificStatus is invalid.");
|
|
79
|
+
}
|
|
80
|
+
const limitation = record.limitation === undefined
|
|
81
|
+
? undefined
|
|
82
|
+
: requireNonEmptyString(record.limitation, path + ".limitation");
|
|
83
|
+
if (record.scientificStatus ===
|
|
84
|
+
"approximation" &&
|
|
85
|
+
limitation === undefined) {
|
|
86
|
+
throw new InvalidConfigurationError(path +
|
|
87
|
+
".limitation is required for an approximation.");
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
kind: "uniform-over-geometric-sensitive-aperture",
|
|
91
|
+
scientificStatus: record.scientificStatus,
|
|
92
|
+
evidence: parseEvidenceList(record.evidence, path + ".evidence"),
|
|
93
|
+
...(limitation === undefined
|
|
94
|
+
? {}
|
|
95
|
+
: { limitation })
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function parseReferenceConditionPolicy(value, path) {
|
|
99
|
+
const record = requireRecord(value, path);
|
|
100
|
+
if (record.kind ===
|
|
101
|
+
"exact-match-required") {
|
|
102
|
+
return {
|
|
103
|
+
kind: "exact-match-required"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (record.kind === "assume-compatible") {
|
|
107
|
+
return {
|
|
108
|
+
kind: "assume-compatible",
|
|
109
|
+
limitation: requireNonEmptyString(record.limitation, path + ".limitation"),
|
|
110
|
+
evidence: parseEvidenceList(record.evidence, path + ".evidence")
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
117
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
118
|
+
*
|
|
119
|
+
* Response application checks exact profile/channel, source plane, incident-area basis, spatial
|
|
120
|
+
* uniformity and reference conditions. Structural compatibility alone does not authorize signal
|
|
121
|
+
* conversion; per-bin operating-range validity and the typed EQE/A-W path are separate gates.
|
|
122
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
123
|
+
* @returns SensorResponseApplicationProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
124
|
+
*
|
|
125
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
126
|
+
*/
|
|
127
|
+
export function parseSensorResponseApplicationProfile(value) {
|
|
128
|
+
const record = requireRecord(value, "sensorResponseApplication");
|
|
129
|
+
if (record.schemaVersion !== "0.1.0") {
|
|
130
|
+
throw new InvalidConfigurationError('sensorResponseApplication.schemaVersion must be "0.1.0".');
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
schemaVersion: "0.1.0",
|
|
134
|
+
profileId: requireNonEmptyString(record.profileId, "sensorResponseApplication.profileId"),
|
|
135
|
+
spectralResponseProfileId: requireNonEmptyString(record.spectralResponseProfileId, "sensorResponseApplication.spectralResponseProfileId"),
|
|
136
|
+
colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorResponseApplication.colorSamplingProfileId"),
|
|
137
|
+
channelId: requireNonEmptyString(record.channelId, "sensorResponseApplication.channelId"),
|
|
138
|
+
samplingApertureProfileId: requireNonEmptyString(record.samplingApertureProfileId, "sensorResponseApplication.samplingApertureProfileId"),
|
|
139
|
+
opticalStackProfileId: requireNonEmptyString(record.opticalStackProfileId, "sensorResponseApplication.opticalStackProfileId"),
|
|
140
|
+
evidence: parseEvidenceList(record.evidence, "sensorResponseApplication.evidence"),
|
|
141
|
+
incidentAreaBasis: parseIncidentAreaBasis(record.incidentAreaBasis, "sensorResponseApplication.incidentAreaBasis"),
|
|
142
|
+
spatialResponseModel: parseSpatialResponseModel(record.spatialResponseModel, "sensorResponseApplication.spatialResponseModel"),
|
|
143
|
+
referenceConditionPolicy: parseReferenceConditionPolicy(record.referenceConditionPolicy, "sensorResponseApplication.referenceConditionPolicy")
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function parseSourcePlane(value) {
|
|
147
|
+
const record = requireRecord(value, "sourcePlane");
|
|
148
|
+
if (record.value !==
|
|
149
|
+
"sensor-package-incident" &&
|
|
150
|
+
record.value !== "site-incident") {
|
|
151
|
+
throw new InvalidScientificInputError("sourcePlane.value is invalid.");
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
value: record.value,
|
|
155
|
+
evidence: parseEvidenceList(record.evidence, "sourcePlane.evidence")
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function requiredSourcePlane(scope) {
|
|
159
|
+
return scope ===
|
|
160
|
+
"sensor-package-incident-effective-channel-response"
|
|
161
|
+
? "sensor-package-incident"
|
|
162
|
+
: "site-incident";
|
|
163
|
+
}
|
|
164
|
+
function approximatelyEqual(actual, expected) {
|
|
165
|
+
const scale = Math.max(1, Math.abs(actual), Math.abs(expected));
|
|
166
|
+
return (Math.abs(actual - expected) <=
|
|
167
|
+
AREA_TOLERANCE * scale);
|
|
168
|
+
}
|
|
169
|
+
function conditionsMatch(reference, operating) {
|
|
170
|
+
if (reference.temperatureC !==
|
|
171
|
+
undefined &&
|
|
172
|
+
operating.temperatureC !==
|
|
173
|
+
reference.temperatureC) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
if (reference
|
|
177
|
+
.incidenceAngleDegreesFromNormal !==
|
|
178
|
+
undefined &&
|
|
179
|
+
operating
|
|
180
|
+
.incidenceAngleDegreesFromNormal !==
|
|
181
|
+
reference
|
|
182
|
+
.incidenceAngleDegreesFromNormal) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
if (reference.polarization !==
|
|
186
|
+
undefined &&
|
|
187
|
+
operating.polarization !==
|
|
188
|
+
reference.polarization) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
function validateReductionBoundary(reduction) {
|
|
194
|
+
if (reduction.outputMeaning !==
|
|
195
|
+
"pre-response-spatio-spectral-radiometric-reduction" ||
|
|
196
|
+
reduction
|
|
197
|
+
.spectralResponseApplicationPerformed !==
|
|
198
|
+
false ||
|
|
199
|
+
reduction.quantumEfficiencyApplied !==
|
|
200
|
+
false ||
|
|
201
|
+
reduction.spectralResponsivityApplied !==
|
|
202
|
+
false ||
|
|
203
|
+
reduction.temporalIntegrationApplied !==
|
|
204
|
+
false) {
|
|
205
|
+
throw new InvalidScientificInputError("reduction must remain a pre-response, pre-temporal spatio-spectral result.");
|
|
206
|
+
}
|
|
207
|
+
if (typeof reduction
|
|
208
|
+
.geometricApertureAreaSquareMicrometers !==
|
|
209
|
+
"number" ||
|
|
210
|
+
!Number.isFinite(reduction
|
|
211
|
+
.geometricApertureAreaSquareMicrometers) ||
|
|
212
|
+
reduction
|
|
213
|
+
.geometricApertureAreaSquareMicrometers <=
|
|
214
|
+
0) {
|
|
215
|
+
throw new InvalidScientificInputError("reduction.geometricApertureAreaSquareMicrometers is required and must be positive.");
|
|
216
|
+
}
|
|
217
|
+
return reduction
|
|
218
|
+
.geometricApertureAreaSquareMicrometers;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Assess whether exact source-plane, area, profile/channel and reference-condition bindings permit the
|
|
222
|
+
* selected response application path.
|
|
223
|
+
*
|
|
224
|
+
* Response application checks exact profile/channel, source plane, incident-area basis, spatial
|
|
225
|
+
* uniformity and reference conditions. Structural compatibility alone does not authorize signal
|
|
226
|
+
* conversion; per-bin operating-range validity and the typed EQE/A-W path are separate gates.
|
|
227
|
+
* @param input - AssessSensorResponseApplicationCompatibilityInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
228
|
+
* @returns CalculationResult<SensorResponseApplicationCompatibilityAssessment>. Read structured blockers before consuming an authorization.
|
|
229
|
+
*
|
|
230
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
231
|
+
*/
|
|
232
|
+
export function assessSensorResponseApplicationCompatibility(input) {
|
|
233
|
+
const geometricArea = validateReductionBoundary(input.reduction);
|
|
234
|
+
const profile = parseSensorResponseApplicationProfile(input.applicationProfile);
|
|
235
|
+
const sourcePlane = parseSourcePlane(input.sourcePlane);
|
|
236
|
+
const blockers = [];
|
|
237
|
+
if (profile.spectralResponseProfileId !==
|
|
238
|
+
input.reduction.responseProfileId) {
|
|
239
|
+
blockers.push("spectral-response-profile-id-mismatch");
|
|
240
|
+
}
|
|
241
|
+
if (profile.colorSamplingProfileId !==
|
|
242
|
+
input.reduction
|
|
243
|
+
.colorSamplingProfileId) {
|
|
244
|
+
blockers.push("color-sampling-profile-id-mismatch");
|
|
245
|
+
}
|
|
246
|
+
if (profile.channelId !==
|
|
247
|
+
input.reduction.channelId) {
|
|
248
|
+
blockers.push("channel-id-mismatch");
|
|
249
|
+
}
|
|
250
|
+
const samplingApertureProfileId = input.reduction
|
|
251
|
+
.samplingApertureProfileId;
|
|
252
|
+
if (samplingApertureProfileId ===
|
|
253
|
+
undefined) {
|
|
254
|
+
blockers.push("sampling-aperture-profile-id-missing");
|
|
255
|
+
}
|
|
256
|
+
else if (samplingApertureProfileId !==
|
|
257
|
+
profile.samplingApertureProfileId) {
|
|
258
|
+
blockers.push("sampling-aperture-profile-id-mismatch");
|
|
259
|
+
}
|
|
260
|
+
const opticalStackProfileId = input.reduction
|
|
261
|
+
.opticalStackProfileId;
|
|
262
|
+
if (opticalStackProfileId === undefined) {
|
|
263
|
+
blockers.push("optical-stack-profile-id-missing");
|
|
264
|
+
}
|
|
265
|
+
else if (opticalStackProfileId !==
|
|
266
|
+
profile.opticalStackProfileId) {
|
|
267
|
+
blockers.push("optical-stack-profile-id-mismatch");
|
|
268
|
+
}
|
|
269
|
+
const requiredPlane = requiredSourcePlane(input.reduction.responseScope);
|
|
270
|
+
const sourcePlaneMatched = sourcePlane.value === requiredPlane;
|
|
271
|
+
if (!sourcePlaneMatched) {
|
|
272
|
+
blockers.push("source-plane-mismatch");
|
|
273
|
+
}
|
|
274
|
+
if (!input.reduction
|
|
275
|
+
.wavelengthBasisResolved) {
|
|
276
|
+
blockers.push("wavelength-basis-unresolved");
|
|
277
|
+
}
|
|
278
|
+
if (profile.incidentAreaBasis.kind !==
|
|
279
|
+
"geometric-sensitive-aperture") {
|
|
280
|
+
blockers.push("incident-area-basis-not-currently-integrated");
|
|
281
|
+
}
|
|
282
|
+
else if (!approximatelyEqual(profile.incidentAreaBasis
|
|
283
|
+
.areaSquareMicrometers, geometricArea)) {
|
|
284
|
+
blockers.push("incident-area-mismatch");
|
|
285
|
+
}
|
|
286
|
+
if (profile.spatialResponseModel.kind ===
|
|
287
|
+
"not-established") {
|
|
288
|
+
blockers.push("spatial-response-uniformity-not-established");
|
|
289
|
+
}
|
|
290
|
+
if (profile.referenceConditionPolicy.kind ===
|
|
291
|
+
"exact-match-required") {
|
|
292
|
+
const referenceConditions = input.reduction
|
|
293
|
+
.responseReferenceConditions;
|
|
294
|
+
if (referenceConditions === undefined) {
|
|
295
|
+
blockers.push("response-reference-conditions-not-declared");
|
|
296
|
+
}
|
|
297
|
+
else if (input.operatingConditions ===
|
|
298
|
+
undefined) {
|
|
299
|
+
blockers.push("operating-conditions-not-declared");
|
|
300
|
+
}
|
|
301
|
+
else if (!conditionsMatch(referenceConditions, input.operatingConditions)) {
|
|
302
|
+
blockers.push("operating-conditions-mismatch");
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
const structurallyCompatible = blockers.length === 0;
|
|
306
|
+
const approximation = input.reduction
|
|
307
|
+
.responseScientificStatus ===
|
|
308
|
+
"approximation" ||
|
|
309
|
+
(profile.spatialResponseModel.kind ===
|
|
310
|
+
"uniform-over-geometric-sensitive-aperture" &&
|
|
311
|
+
profile.spatialResponseModel
|
|
312
|
+
.scientificStatus ===
|
|
313
|
+
"approximation") ||
|
|
314
|
+
profile.referenceConditionPolicy.kind ===
|
|
315
|
+
"assume-compatible";
|
|
316
|
+
const compatibilityStatus = structurallyCompatible
|
|
317
|
+
? approximation
|
|
318
|
+
? "compatible-approximation"
|
|
319
|
+
: "compatible"
|
|
320
|
+
: "blocked";
|
|
321
|
+
const spatialEvidence = profile.spatialResponseModel.kind ===
|
|
322
|
+
"uniform-over-geometric-sensitive-aperture"
|
|
323
|
+
? profile.spatialResponseModel.evidence
|
|
324
|
+
: [];
|
|
325
|
+
const referenceConditionEvidence = profile.referenceConditionPolicy.kind ===
|
|
326
|
+
"assume-compatible"
|
|
327
|
+
? profile.referenceConditionPolicy
|
|
328
|
+
.evidence
|
|
329
|
+
: [];
|
|
330
|
+
return calculatedResult({
|
|
331
|
+
applicationProfileId: profile.profileId,
|
|
332
|
+
spectralResponseProfileId: input.reduction
|
|
333
|
+
.responseProfileId,
|
|
334
|
+
colorSamplingProfileId: input.reduction
|
|
335
|
+
.colorSamplingProfileId,
|
|
336
|
+
channelId: input.reduction.channelId,
|
|
337
|
+
responseScope: input.reduction.responseScope,
|
|
338
|
+
requiredSourcePlane: requiredPlane,
|
|
339
|
+
suppliedSourcePlane: sourcePlane.value,
|
|
340
|
+
sourcePlaneMatched,
|
|
341
|
+
responseIncidentAreaBasis: profile.incidentAreaBasis,
|
|
342
|
+
currentlyIntegratedAreaBasis: "geometric-sensitive-aperture",
|
|
343
|
+
geometricApertureAreaSquareMicrometers: geometricArea,
|
|
344
|
+
...(input.reduction
|
|
345
|
+
.nominalSiteCellAreaSquareMicrometers ===
|
|
346
|
+
undefined
|
|
347
|
+
? {}
|
|
348
|
+
: {
|
|
349
|
+
nominalSiteCellAreaSquareMicrometers: input.reduction
|
|
350
|
+
.nominalSiteCellAreaSquareMicrometers
|
|
351
|
+
}),
|
|
352
|
+
spatialResponseModel: profile.spatialResponseModel,
|
|
353
|
+
referenceConditionPolicy: profile.referenceConditionPolicy,
|
|
354
|
+
...(input.reduction
|
|
355
|
+
.responseReferenceConditions ===
|
|
356
|
+
undefined
|
|
357
|
+
? {}
|
|
358
|
+
: {
|
|
359
|
+
responseReferenceConditions: input.reduction
|
|
360
|
+
.responseReferenceConditions
|
|
361
|
+
}),
|
|
362
|
+
...(input.operatingConditions ===
|
|
363
|
+
undefined
|
|
364
|
+
? {}
|
|
365
|
+
: {
|
|
366
|
+
operatingConditions: input.operatingConditions
|
|
367
|
+
}),
|
|
368
|
+
structuralCompatibilityEstablished: structurallyCompatible,
|
|
369
|
+
compatibilityStatus,
|
|
370
|
+
blockers,
|
|
371
|
+
requiredSignalPath: input.reduction
|
|
372
|
+
.sourceResponseKind ===
|
|
373
|
+
"effective-spectral-responsivity"
|
|
374
|
+
? "radiant-power-to-current"
|
|
375
|
+
: "photon-rate-to-electrons",
|
|
376
|
+
quantifiedResponseUncertaintyAvailable: input.reduction
|
|
377
|
+
.responseUncertainty.kind ===
|
|
378
|
+
"relative",
|
|
379
|
+
responseApplicationPerformed: false,
|
|
380
|
+
signalConversionAuthorized: false,
|
|
381
|
+
temporalIntegrationAuthorized: false,
|
|
382
|
+
photonConversionPerformed: false,
|
|
383
|
+
electronConversionPerformed: false,
|
|
384
|
+
currentConversionPerformed: false,
|
|
385
|
+
operatingRangeCompatibilityAssessed: false,
|
|
386
|
+
spatiallyVaryingResponseSupported: false,
|
|
387
|
+
componentEvidence: {
|
|
388
|
+
applicationProfile: profile.evidence,
|
|
389
|
+
sourcePlane: sourcePlane.evidence,
|
|
390
|
+
spatialResponse: spatialEvidence,
|
|
391
|
+
referenceConditionAssumption: referenceConditionEvidence,
|
|
392
|
+
response: input.reduction
|
|
393
|
+
.componentEvidence.spectral
|
|
394
|
+
}
|
|
395
|
+
}, "sensor-response-application-compatibility", "1.0.0", [
|
|
396
|
+
"This result is a structural compatibility gate only; it never authorizes or performs sensor-response signal conversion.",
|
|
397
|
+
"Response reference plane is derived from responseScope. Package-incident and site-incident inputs are not interchangeable.",
|
|
398
|
+
"The current spatio-spectral reducer integrates the geometric sensitive aperture only. Full-site-cell and effective-collection-area response normalizations remain blocked until matching radiometric integrations exist.",
|
|
399
|
+
"A scalar wavelength-only response may be applied after spatial reduction only when uniform/separable response over the integrated geometric aperture is explicitly established or declared as an approximation.",
|
|
400
|
+
"Exact reference-condition matching is required when that policy is selected because temperature, incidence-angle and polarization dependence are not modeled.",
|
|
401
|
+
"An unresolved wavelength basis is incompatible with physical response application.",
|
|
402
|
+
"Typical total-pixel QE definitions can include fill factor and microlens effects; they must not be applied to geometric-sensitive-aperture flux unless the response normalization explicitly matches that area basis.",
|
|
403
|
+
"Response linearity/dynamic-range validity is not assessed by this gate and remains required before a future conversion can claim calibrated applicability.",
|
|
404
|
+
"EQE/filter×EQE responses require a future photon-rate→electron path; A/W responsivity requires a separate radiant-power→current path.",
|
|
405
|
+
"Temporal integration, photons/electrons/current, noise, saturation, ADC/RAW conversion and reconstruction remain downstream."
|
|
406
|
+
]);
|
|
407
|
+
}
|
|
408
|
+
//# sourceMappingURL=response-application-compatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-application-compatibility.js","sourceRoot":"","sources":["../../src/sensor/response-application-compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
4
|
+
* missing required fields and incompatible scientific data fail at this boundary. Operating-range
|
|
5
|
+
* assessment preserves incident power versus irradiance, wavelength support, reference conditions and
|
|
6
|
+
* declared nonlinearity criterion. Per-bin conversion requires spectral-bin applicability and spatial
|
|
7
|
+
* linear superposition. Valid mean input must not conceal an invalid bright local sub-aperture.
|
|
8
|
+
* Assess every declared spectral-bin input against operating applicability and superposition before
|
|
9
|
+
* authorizing instantaneous response conversion. Operating-range assessment preserves incident power
|
|
10
|
+
* versus irradiance, wavelength support, reference conditions and declared nonlinearity criterion.
|
|
11
|
+
* Per-bin conversion requires spectral-bin applicability and spatial linear superposition. Valid mean
|
|
12
|
+
* input must not conceal an invalid bright local sub-aperture.
|
|
13
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
|
+
* limits.
|
|
15
|
+
*/
|
|
16
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
17
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
18
|
+
import type { SensorResponseApplicationCompatibilityAssessment, SensorResponseReferenceConditionPolicy, SensorResponseSignalPath } from "./response-application-compatibility.js";
|
|
19
|
+
import type { SensorSpectralReferenceConditions, SensorSpectralResponseScientificStatus, SensorSpectralResponseUncertainty, SpectralWavelengthBasis } from "./spectral-response.js";
|
|
20
|
+
import type { SensorSpatioSpectralIrradianceReduction } from "./spatio-spectral-reduction.js";
|
|
21
|
+
export type SensorResponseOperatingInputRange = {
|
|
22
|
+
kind: "wavelength-integrated-geometric-aperture-radiant-power";
|
|
23
|
+
unit: "W";
|
|
24
|
+
minimumInclusive: number;
|
|
25
|
+
maximumInclusive: number;
|
|
26
|
+
} | {
|
|
27
|
+
kind: "wavelength-integrated-spatial-average-irradiance";
|
|
28
|
+
unit: "W/m^2";
|
|
29
|
+
minimumInclusive: number;
|
|
30
|
+
maximumInclusive: number;
|
|
31
|
+
};
|
|
32
|
+
export interface SensorResponseOperatingWavelengthApplicability {
|
|
33
|
+
wavelengthBasis: Exclude<SpectralWavelengthBasis, "unspecified">;
|
|
34
|
+
minimumNanometers: number;
|
|
35
|
+
maximumNanometers: number;
|
|
36
|
+
containment: "requested-range-must-be-contained";
|
|
37
|
+
}
|
|
38
|
+
export interface SensorResponseLinearityCriterion {
|
|
39
|
+
maximumAbsoluteRelativeDeviation: number;
|
|
40
|
+
}
|
|
41
|
+
export type SensorResponseOperatingSpectralInputModel = {
|
|
42
|
+
kind: "broadband-integrated-only";
|
|
43
|
+
} | {
|
|
44
|
+
kind: "per-spectral-bin";
|
|
45
|
+
maximumBinWidthNanometers: number;
|
|
46
|
+
scientificStatus: SensorSpectralResponseScientificStatus;
|
|
47
|
+
evidence: readonly EvidenceProvenance[];
|
|
48
|
+
limitation?: string;
|
|
49
|
+
};
|
|
50
|
+
export type SensorResponseOperatingSpatialLinearityModel = {
|
|
51
|
+
kind: "linear-superposition-over-geometric-aperture";
|
|
52
|
+
scientificStatus: SensorSpectralResponseScientificStatus;
|
|
53
|
+
evidence: readonly EvidenceProvenance[];
|
|
54
|
+
limitation?: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "not-established";
|
|
57
|
+
limitation: string;
|
|
58
|
+
};
|
|
59
|
+
export interface SensorResponseOperatingRangeProfile {
|
|
60
|
+
schemaVersion: "0.1.0";
|
|
61
|
+
profileId: string;
|
|
62
|
+
responseApplicationProfileId: string;
|
|
63
|
+
spectralResponseProfileId: string;
|
|
64
|
+
colorSamplingProfileId: string;
|
|
65
|
+
channelId: string;
|
|
66
|
+
scientificStatus: SensorSpectralResponseScientificStatus;
|
|
67
|
+
uncertainty: SensorSpectralResponseUncertainty;
|
|
68
|
+
evidence: readonly EvidenceProvenance[];
|
|
69
|
+
inputRange: SensorResponseOperatingInputRange;
|
|
70
|
+
wavelengthApplicability: SensorResponseOperatingWavelengthApplicability;
|
|
71
|
+
linearityCriterion: SensorResponseLinearityCriterion;
|
|
72
|
+
/**
|
|
73
|
+
* Optional for backward compatibility. Omission parses as not-established
|
|
74
|
+
* and blocks new response-rate authorization.
|
|
75
|
+
*/
|
|
76
|
+
spatialLinearityModel?: SensorResponseOperatingSpatialLinearityModel;
|
|
77
|
+
/**
|
|
78
|
+
* Optional for backward compatibility. Omission means the calibration only
|
|
79
|
+
* establishes a broadband-integrated operating range and cannot authorize
|
|
80
|
+
* wavelength-by-wavelength response conversion.
|
|
81
|
+
*/
|
|
82
|
+
spectralInputModel?: SensorResponseOperatingSpectralInputModel;
|
|
83
|
+
referenceConditions?: SensorSpectralReferenceConditions;
|
|
84
|
+
referenceConditionPolicy: SensorResponseReferenceConditionPolicy;
|
|
85
|
+
}
|
|
86
|
+
export interface AssessSensorResponseOperatingRangeInput {
|
|
87
|
+
reduction: SensorSpatioSpectralIrradianceReduction;
|
|
88
|
+
compatibility: SensorResponseApplicationCompatibilityAssessment;
|
|
89
|
+
operatingRangeProfile: SensorResponseOperatingRangeProfile;
|
|
90
|
+
}
|
|
91
|
+
export type SensorResponseOperatingRangeBlocker = "structural-compatibility-not-established" | "response-application-profile-id-mismatch" | "spectral-response-profile-id-mismatch" | "color-sampling-profile-id-mismatch" | "channel-id-mismatch" | "wavelength-basis-unresolved" | "wavelength-basis-mismatch" | "wavelength-range-outside-linearity-applicability" | "input-below-linearity-range" | "input-above-linearity-range" | "spectral-bin-width-outside-linearity-applicability" | "spectral-bin-input-below-linearity-range" | "spectral-bin-input-above-linearity-range" | "spatial-linearity-superposition-not-established" | "operating-conditions-not-declared" | "linearity-operating-conditions-mismatch";
|
|
92
|
+
export interface SensorResponseOperatingRangeAssessment {
|
|
93
|
+
operatingRangeProfileId: string;
|
|
94
|
+
responseApplicationProfileId: string;
|
|
95
|
+
spectralResponseProfileId: string;
|
|
96
|
+
colorSamplingProfileId: string;
|
|
97
|
+
channelId: string;
|
|
98
|
+
requiredSignalPath: SensorResponseSignalPath;
|
|
99
|
+
inputRange: SensorResponseOperatingInputRange;
|
|
100
|
+
evaluatedInput: {
|
|
101
|
+
kind: SensorResponseOperatingInputRange["kind"];
|
|
102
|
+
unit: SensorResponseOperatingInputRange["unit"];
|
|
103
|
+
value: number;
|
|
104
|
+
};
|
|
105
|
+
wavelengthApplicability: SensorResponseOperatingWavelengthApplicability;
|
|
106
|
+
evaluatedWavelengthRangeNanometers: {
|
|
107
|
+
minimum: number;
|
|
108
|
+
maximum: number;
|
|
109
|
+
};
|
|
110
|
+
linearityCriterion: SensorResponseLinearityCriterion;
|
|
111
|
+
spectralInputModel: SensorResponseOperatingSpectralInputModel;
|
|
112
|
+
evaluatedSpectralNodeInputs?: readonly {
|
|
113
|
+
spectralSampleIndex: number;
|
|
114
|
+
wavelengthNanometers: number;
|
|
115
|
+
wavelengthMeasureNanometers: number;
|
|
116
|
+
kind: SensorResponseOperatingInputRange["kind"];
|
|
117
|
+
unit: SensorResponseOperatingInputRange["unit"];
|
|
118
|
+
value: number;
|
|
119
|
+
}[];
|
|
120
|
+
spectralNodeRangeCompatibilityAssessed: boolean;
|
|
121
|
+
spatialLinearityModel: SensorResponseOperatingSpatialLinearityModel;
|
|
122
|
+
referenceConditionPolicy: SensorResponseReferenceConditionPolicy;
|
|
123
|
+
referenceConditions?: SensorSpectralReferenceConditions;
|
|
124
|
+
operatingConditions?: SensorSpectralReferenceConditions;
|
|
125
|
+
operatingRangeCompatibilityAssessed: true;
|
|
126
|
+
instantaneousResponseRangeCompatible: boolean;
|
|
127
|
+
status: "broadband-range-compatible" | "broadband-range-compatible-approximation" | "rate-conversion-authorized" | "rate-conversion-authorized-approximation" | "blocked";
|
|
128
|
+
blockers: readonly SensorResponseOperatingRangeBlocker[];
|
|
129
|
+
responseRateConversionAuthorized: boolean;
|
|
130
|
+
responseApplicationPerformed: false;
|
|
131
|
+
temporalIntegrationAuthorized: false;
|
|
132
|
+
exposureDomainLinearityAssessed: false;
|
|
133
|
+
accumulatedChargeLinearityAssessed: false;
|
|
134
|
+
saturationAssessed: false;
|
|
135
|
+
photonConversionPerformed: false;
|
|
136
|
+
electronConversionPerformed: false;
|
|
137
|
+
currentConversionPerformed: false;
|
|
138
|
+
componentEvidence: {
|
|
139
|
+
operatingRange: readonly EvidenceProvenance[];
|
|
140
|
+
referenceConditionAssumption: readonly EvidenceProvenance[];
|
|
141
|
+
spatialLinearity: readonly EvidenceProvenance[];
|
|
142
|
+
structuralCompatibility: SensorResponseApplicationCompatibilityAssessment["componentEvidence"];
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
147
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
148
|
+
*
|
|
149
|
+
* Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
|
|
150
|
+
* conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
|
|
151
|
+
* applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
|
|
152
|
+
* local sub-aperture.
|
|
153
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
154
|
+
* @returns SensorResponseOperatingRangeProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
155
|
+
*
|
|
156
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
157
|
+
*/
|
|
158
|
+
export declare function parseSensorResponseOperatingRangeProfile(value: unknown): SensorResponseOperatingRangeProfile;
|
|
159
|
+
/**
|
|
160
|
+
* Assess every declared spectral-bin input against operating applicability and superposition before
|
|
161
|
+
* authorizing instantaneous response conversion.
|
|
162
|
+
*
|
|
163
|
+
* Operating-range assessment preserves incident power versus irradiance, wavelength support, reference
|
|
164
|
+
* conditions and declared nonlinearity criterion. Per-bin conversion requires spectral-bin
|
|
165
|
+
* applicability and spatial linear superposition. Valid mean input must not conceal an invalid bright
|
|
166
|
+
* local sub-aperture.
|
|
167
|
+
* @param input - AssessSensorResponseOperatingRangeInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
168
|
+
* @returns CalculationResult<SensorResponseOperatingRangeAssessment>. Read structured blockers before consuming an authorization.
|
|
169
|
+
*
|
|
170
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
171
|
+
*/
|
|
172
|
+
export declare function assessSensorResponseOperatingRange(input: AssessSensorResponseOperatingRangeInput): CalculationResult<SensorResponseOperatingRangeAssessment>;
|
|
173
|
+
//# sourceMappingURL=response-operating-range.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-operating-range.d.ts","sourceRoot":"","sources":["../../src/sensor/response-operating-range.ts"],"names":[],"mappings":"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"}
|