@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.
Files changed (750) hide show
  1. package/AGENTS.md +674 -0
  2. package/CHANGELOG.md +191 -0
  3. package/CITATION.cff +1 -1
  4. package/CONTRIBUTING.md +76 -0
  5. package/DCO +33 -0
  6. package/NODE_SUPPORT.md +37 -0
  7. package/NOTICE +2 -0
  8. package/README.md +139 -72
  9. package/SECURITY.md +55 -0
  10. package/THIRD_PARTY.md +63 -0
  11. package/dist/camera/equivalent-focal-length.d.ts +9 -0
  12. package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
  13. package/dist/camera/equivalent-focal-length.js +9 -0
  14. package/dist/camera/equivalent-focal-length.js.map +1 -1
  15. package/dist/camera/field-of-view.d.ts +13 -0
  16. package/dist/camera/field-of-view.d.ts.map +1 -1
  17. package/dist/camera/field-of-view.js +13 -0
  18. package/dist/camera/field-of-view.js.map +1 -1
  19. package/dist/camera/projected-object-size.d.ts +8 -0
  20. package/dist/camera/projected-object-size.d.ts.map +1 -1
  21. package/dist/camera/projected-object-size.js +8 -0
  22. package/dist/camera/projected-object-size.js.map +1 -1
  23. package/dist/capture/capture-export-metadata.d.ts +60 -0
  24. package/dist/capture/capture-export-metadata.d.ts.map +1 -0
  25. package/dist/capture/capture-export-metadata.js +62 -0
  26. package/dist/capture/capture-export-metadata.js.map +1 -0
  27. package/dist/capture/environment-raw-producer.d.ts +55 -0
  28. package/dist/capture/environment-raw-producer.d.ts.map +1 -0
  29. package/dist/capture/environment-raw-producer.js +88 -0
  30. package/dist/capture/environment-raw-producer.js.map +1 -0
  31. package/dist/capture/export-jpeg.d.ts +12 -0
  32. package/dist/capture/export-jpeg.d.ts.map +1 -0
  33. package/dist/capture/export-jpeg.js +126 -0
  34. package/dist/capture/export-jpeg.js.map +1 -0
  35. package/dist/capture/export-tiff.d.ts +45 -0
  36. package/dist/capture/export-tiff.d.ts.map +1 -0
  37. package/dist/capture/export-tiff.js +129 -0
  38. package/dist/capture/export-tiff.js.map +1 -0
  39. package/dist/capture/focus-control.d.ts +210 -0
  40. package/dist/capture/focus-control.d.ts.map +1 -0
  41. package/dist/capture/focus-control.js +664 -0
  42. package/dist/capture/focus-control.js.map +1 -0
  43. package/dist/capture/linear-encoding.d.ts +59 -0
  44. package/dist/capture/linear-encoding.d.ts.map +1 -0
  45. package/dist/capture/linear-encoding.js +98 -0
  46. package/dist/capture/linear-encoding.js.map +1 -0
  47. package/dist/capture/photographic-export.d.ts +135 -0
  48. package/dist/capture/photographic-export.d.ts.map +1 -0
  49. package/dist/capture/photographic-export.js +273 -0
  50. package/dist/capture/photographic-export.js.map +1 -0
  51. package/dist/capture/raw-frame-limits.d.ts +12 -0
  52. package/dist/capture/raw-frame-limits.d.ts.map +1 -0
  53. package/dist/capture/raw-frame-limits.js +13 -0
  54. package/dist/capture/raw-frame-limits.js.map +1 -0
  55. package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
  56. package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
  57. package/dist/capture/raw-frame-reconstruction.js +146 -0
  58. package/dist/capture/raw-frame-reconstruction.js.map +1 -0
  59. package/dist/capture/release-sequence.d.ts +120 -0
  60. package/dist/capture/release-sequence.d.ts.map +1 -0
  61. package/dist/capture/release-sequence.js +446 -0
  62. package/dist/capture/release-sequence.js.map +1 -0
  63. package/dist/capture/sensor-raw-frame.d.ts +34 -0
  64. package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
  65. package/dist/capture/sensor-raw-frame.js +106 -0
  66. package/dist/capture/sensor-raw-frame.js.map +1 -0
  67. package/dist/capture/sensor-raw-producer.d.ts +51 -0
  68. package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
  69. package/dist/capture/sensor-raw-producer.js +235 -0
  70. package/dist/capture/sensor-raw-producer.js.map +1 -0
  71. package/dist/capture/simulated-capture.d.ts +125 -0
  72. package/dist/capture/simulated-capture.d.ts.map +1 -0
  73. package/dist/capture/simulated-capture.js +248 -0
  74. package/dist/capture/simulated-capture.js.map +1 -0
  75. package/dist/color/capture-color.d.ts +73 -0
  76. package/dist/color/capture-color.d.ts.map +1 -0
  77. package/dist/color/capture-color.js +145 -0
  78. package/dist/color/capture-color.js.map +1 -0
  79. package/dist/color/sensor-color-development.d.ts +23 -0
  80. package/dist/color/sensor-color-development.d.ts.map +1 -0
  81. package/dist/color/sensor-color-development.js +56 -0
  82. package/dist/color/sensor-color-development.js.map +1 -0
  83. package/dist/color/white-balance.d.ts +175 -0
  84. package/dist/color/white-balance.d.ts.map +1 -0
  85. package/dist/color/white-balance.js +606 -0
  86. package/dist/color/white-balance.js.map +1 -0
  87. package/dist/composition/image-formation-plan.d.ts +481 -0
  88. package/dist/composition/image-formation-plan.d.ts.map +1 -0
  89. package/dist/composition/image-formation-plan.js +2499 -0
  90. package/dist/composition/image-formation-plan.js.map +1 -0
  91. package/dist/composition/plan-consumer.d.ts +53 -0
  92. package/dist/composition/plan-consumer.d.ts.map +1 -0
  93. package/dist/composition/plan-consumer.js +119 -0
  94. package/dist/composition/plan-consumer.js.map +1 -0
  95. package/dist/core/calculation-result.d.ts.map +1 -1
  96. package/dist/core/calculation-result.js +6 -0
  97. package/dist/core/calculation-result.js.map +1 -1
  98. package/dist/core/canonical-json.d.ts +18 -0
  99. package/dist/core/canonical-json.d.ts.map +1 -0
  100. package/dist/core/canonical-json.js +44 -0
  101. package/dist/core/canonical-json.js.map +1 -0
  102. package/dist/core/configuration-error.d.ts +6 -0
  103. package/dist/core/configuration-error.d.ts.map +1 -1
  104. package/dist/core/configuration-error.js +6 -0
  105. package/dist/core/configuration-error.js.map +1 -1
  106. package/dist/core/evidence-provenance.d.ts +6 -0
  107. package/dist/core/evidence-provenance.d.ts.map +1 -1
  108. package/dist/core/evidence-provenance.js +7 -0
  109. package/dist/core/evidence-provenance.js.map +1 -1
  110. package/dist/core/image-formation.d.ts +9 -3
  111. package/dist/core/image-formation.d.ts.map +1 -1
  112. package/dist/core/image-formation.js +29 -5
  113. package/dist/core/image-formation.js.map +1 -1
  114. package/dist/core/owned-data.d.ts +25 -0
  115. package/dist/core/owned-data.d.ts.map +1 -0
  116. package/dist/core/owned-data.js +34 -0
  117. package/dist/core/owned-data.js.map +1 -0
  118. package/dist/core/record-validation.d.ts +17 -0
  119. package/dist/core/record-validation.d.ts.map +1 -0
  120. package/dist/core/record-validation.js +44 -0
  121. package/dist/core/record-validation.js.map +1 -0
  122. package/dist/core/scientific-assurance.d.ts +101 -0
  123. package/dist/core/scientific-assurance.d.ts.map +1 -0
  124. package/dist/core/scientific-assurance.js +301 -0
  125. package/dist/core/scientific-assurance.js.map +1 -0
  126. package/dist/core/spectral-composition.d.ts +106 -0
  127. package/dist/core/spectral-composition.d.ts.map +1 -0
  128. package/dist/core/spectral-composition.js +334 -0
  129. package/dist/core/spectral-composition.js.map +1 -0
  130. package/dist/core/spectral.d.ts +34 -0
  131. package/dist/core/spectral.d.ts.map +1 -0
  132. package/dist/core/spectral.js +57 -0
  133. package/dist/core/spectral.js.map +1 -0
  134. package/dist/core/validation.d.ts +6 -0
  135. package/dist/core/validation.d.ts.map +1 -1
  136. package/dist/core/validation.js +6 -0
  137. package/dist/core/validation.js.map +1 -1
  138. package/dist/core/version.d.ts +9 -0
  139. package/dist/core/version.d.ts.map +1 -0
  140. package/dist/core/version.js +10 -0
  141. package/dist/core/version.js.map +1 -0
  142. package/dist/equipment/exposure-capabilities.d.ts +125 -0
  143. package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
  144. package/dist/equipment/exposure-capabilities.js +391 -0
  145. package/dist/equipment/exposure-capabilities.js.map +1 -0
  146. package/dist/equipment/generic-tier-assets.d.ts +82 -0
  147. package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
  148. package/dist/equipment/generic-tier-assets.js +119 -0
  149. package/dist/equipment/generic-tier-assets.js.map +1 -0
  150. package/dist/equipment/generic-tier-presets.d.ts +57 -0
  151. package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
  152. package/dist/equipment/generic-tier-presets.js +122 -0
  153. package/dist/equipment/generic-tier-presets.js.map +1 -0
  154. package/dist/equipment/iso-capabilities.d.ts +143 -0
  155. package/dist/equipment/iso-capabilities.d.ts.map +1 -0
  156. package/dist/equipment/iso-capabilities.js +578 -0
  157. package/dist/equipment/iso-capabilities.js.map +1 -0
  158. package/dist/equipment/metering-capabilities.d.ts +58 -0
  159. package/dist/equipment/metering-capabilities.d.ts.map +1 -0
  160. package/dist/equipment/metering-capabilities.js +151 -0
  161. package/dist/equipment/metering-capabilities.js.map +1 -0
  162. package/dist/equipment/release-capabilities.d.ts +33 -0
  163. package/dist/equipment/release-capabilities.d.ts.map +1 -0
  164. package/dist/equipment/release-capabilities.js +176 -0
  165. package/dist/equipment/release-capabilities.js.map +1 -0
  166. package/dist/exposure/exposure-duration-control.d.ts +72 -0
  167. package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
  168. package/dist/exposure/exposure-duration-control.js +161 -0
  169. package/dist/exposure/exposure-duration-control.js.map +1 -0
  170. package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
  171. package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
  172. package/dist/exposure/exposure-mode-resolver.js +1905 -0
  173. package/dist/exposure/exposure-mode-resolver.js.map +1 -0
  174. package/dist/exposure/exposure.d.ts +8 -0
  175. package/dist/exposure/exposure.d.ts.map +1 -1
  176. package/dist/exposure/exposure.js +8 -0
  177. package/dist/exposure/exposure.js.map +1 -1
  178. package/dist/exposure/flash.d.ts +179 -0
  179. package/dist/exposure/flash.d.ts.map +1 -0
  180. package/dist/exposure/flash.js +644 -0
  181. package/dist/exposure/flash.js.map +1 -0
  182. package/dist/exposure/metering-scene-radiance.d.ts +72 -0
  183. package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
  184. package/dist/exposure/metering-scene-radiance.js +222 -0
  185. package/dist/exposure/metering-scene-radiance.js.map +1 -0
  186. package/dist/exposure/metering-target.d.ts +67 -0
  187. package/dist/exposure/metering-target.d.ts.map +1 -0
  188. package/dist/exposure/metering-target.js +265 -0
  189. package/dist/exposure/metering-target.js.map +1 -0
  190. package/dist/exposure/metering-temporal.d.ts +76 -0
  191. package/dist/exposure/metering-temporal.d.ts.map +1 -0
  192. package/dist/exposure/metering-temporal.js +210 -0
  193. package/dist/exposure/metering-temporal.js.map +1 -0
  194. package/dist/exposure/metering.d.ts +124 -0
  195. package/dist/exposure/metering.d.ts.map +1 -0
  196. package/dist/exposure/metering.js +422 -0
  197. package/dist/exposure/metering.js.map +1 -0
  198. package/dist/exposure/program-line.d.ts +29 -0
  199. package/dist/exposure/program-line.d.ts.map +1 -0
  200. package/dist/exposure/program-line.js +126 -0
  201. package/dist/exposure/program-line.js.map +1 -0
  202. package/dist/index.d.ts +87 -6
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +85 -6
  205. package/dist/index.js.map +1 -1
  206. package/dist/motion/camera-rotation.d.ts +16 -0
  207. package/dist/motion/camera-rotation.d.ts.map +1 -1
  208. package/dist/motion/camera-rotation.js +16 -0
  209. package/dist/motion/camera-rotation.js.map +1 -1
  210. package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
  211. package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
  212. package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
  213. package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
  214. package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
  215. package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
  216. package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
  217. package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
  218. package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
  219. package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
  220. package/dist/motion/capture-rotation-trajectory.js +15 -0
  221. package/dist/motion/capture-rotation-trajectory.js.map +1 -1
  222. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
  223. package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
  224. package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
  225. package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
  226. package/dist/motion/extended-object-projection.d.ts +175 -0
  227. package/dist/motion/extended-object-projection.d.ts.map +1 -0
  228. package/dist/motion/extended-object-projection.js +402 -0
  229. package/dist/motion/extended-object-projection.js.map +1 -0
  230. package/dist/motion/projected-motion.d.ts +11 -0
  231. package/dist/motion/projected-motion.d.ts.map +1 -1
  232. package/dist/motion/projected-motion.js +11 -0
  233. package/dist/motion/projected-motion.js.map +1 -1
  234. package/dist/optics/aperture.d.ts +9 -0
  235. package/dist/optics/aperture.d.ts.map +1 -1
  236. package/dist/optics/aperture.js +9 -0
  237. package/dist/optics/aperture.js.map +1 -1
  238. package/dist/optics/circle-of-confusion.d.ts +8 -0
  239. package/dist/optics/circle-of-confusion.d.ts.map +1 -1
  240. package/dist/optics/circle-of-confusion.js +8 -0
  241. package/dist/optics/circle-of-confusion.js.map +1 -1
  242. package/dist/optics/complex-pupil-psf.d.ts +128 -0
  243. package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
  244. package/dist/optics/complex-pupil-psf.js +462 -0
  245. package/dist/optics/complex-pupil-psf.js.map +1 -0
  246. package/dist/optics/depth-of-field.d.ts +18 -0
  247. package/dist/optics/depth-of-field.d.ts.map +1 -1
  248. package/dist/optics/depth-of-field.js +29 -4
  249. package/dist/optics/depth-of-field.js.map +1 -1
  250. package/dist/optics/diffraction.d.ts +8 -0
  251. package/dist/optics/diffraction.d.ts.map +1 -1
  252. package/dist/optics/diffraction.js +8 -0
  253. package/dist/optics/diffraction.js.map +1 -1
  254. package/dist/optics/focus-breathing.d.ts +13 -0
  255. package/dist/optics/focus-breathing.d.ts.map +1 -1
  256. package/dist/optics/focus-breathing.js +13 -0
  257. package/dist/optics/focus-breathing.js.map +1 -1
  258. package/dist/optics/focus-state.d.ts +47 -0
  259. package/dist/optics/focus-state.d.ts.map +1 -0
  260. package/dist/optics/focus-state.js +78 -0
  261. package/dist/optics/focus-state.js.map +1 -0
  262. package/dist/optics/front-of-lens-filter.d.ts +114 -0
  263. package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
  264. package/dist/optics/front-of-lens-filter.js +468 -0
  265. package/dist/optics/front-of-lens-filter.js.map +1 -0
  266. package/dist/optics/illumination-vignetting.d.ts +9 -0
  267. package/dist/optics/illumination-vignetting.d.ts.map +1 -1
  268. package/dist/optics/illumination-vignetting.js +9 -0
  269. package/dist/optics/illumination-vignetting.js.map +1 -1
  270. package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
  271. package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
  272. package/dist/optics/lateral-chromatic-aberration.js +11 -0
  273. package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
  274. package/dist/optics/lens-psf-profile.d.ts +217 -0
  275. package/dist/optics/lens-psf-profile.d.ts.map +1 -0
  276. package/dist/optics/lens-psf-profile.js +823 -0
  277. package/dist/optics/lens-psf-profile.js.map +1 -0
  278. package/dist/optics/polygon-diffraction.d.ts +67 -0
  279. package/dist/optics/polygon-diffraction.d.ts.map +1 -0
  280. package/dist/optics/polygon-diffraction.js +145 -0
  281. package/dist/optics/polygon-diffraction.js.map +1 -0
  282. package/dist/optics/profile-contract.d.ts +42 -0
  283. package/dist/optics/profile-contract.d.ts.map +1 -0
  284. package/dist/optics/profile-contract.js +92 -0
  285. package/dist/optics/profile-contract.js.map +1 -0
  286. package/dist/optics/psf-foundation.d.ts +16 -3
  287. package/dist/optics/psf-foundation.d.ts.map +1 -1
  288. package/dist/optics/psf-foundation.js +28 -15
  289. package/dist/optics/psf-foundation.js.map +1 -1
  290. package/dist/optics/radial-distortion.d.ts +18 -0
  291. package/dist/optics/radial-distortion.d.ts.map +1 -1
  292. package/dist/optics/radial-distortion.js +18 -0
  293. package/dist/optics/radial-distortion.js.map +1 -1
  294. package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
  295. package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
  296. package/dist/optics/scene-to-sensor-irradiance.js +662 -0
  297. package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
  298. package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
  299. package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
  300. package/dist/optics/scene-to-sensor-quadrature.js +82 -0
  301. package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
  302. package/dist/optics/sensor-environment-query.d.ts +60 -0
  303. package/dist/optics/sensor-environment-query.d.ts.map +1 -0
  304. package/dist/optics/sensor-environment-query.js +50 -0
  305. package/dist/optics/sensor-environment-query.js.map +1 -0
  306. package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
  307. package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
  308. package/dist/optics/sensor-psf-quadrature.js +101 -0
  309. package/dist/optics/sensor-psf-quadrature.js.map +1 -0
  310. package/dist/optics/sensor-psf-support.d.ts +20 -0
  311. package/dist/optics/sensor-psf-support.d.ts.map +1 -0
  312. package/dist/optics/sensor-psf-support.js +13 -0
  313. package/dist/optics/sensor-psf-support.js.map +1 -0
  314. package/dist/optics/stray-light.d.ts +91 -0
  315. package/dist/optics/stray-light.d.ts.map +1 -0
  316. package/dist/optics/stray-light.js +110 -0
  317. package/dist/optics/stray-light.js.map +1 -0
  318. package/dist/optics/thin-lens.d.ts +8 -0
  319. package/dist/optics/thin-lens.d.ts.map +1 -1
  320. package/dist/optics/thin-lens.js +8 -0
  321. package/dist/optics/thin-lens.js.map +1 -1
  322. package/dist/output/capture-corrected-sdr.d.ts +49 -0
  323. package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
  324. package/dist/output/capture-corrected-sdr.js +149 -0
  325. package/dist/output/capture-corrected-sdr.js.map +1 -0
  326. package/dist/output/capture-geometry.d.ts.map +1 -1
  327. package/dist/output/capture-geometry.js +8 -0
  328. package/dist/output/capture-geometry.js.map +1 -1
  329. package/dist/output/capture-sdr.d.ts +49 -0
  330. package/dist/output/capture-sdr.d.ts.map +1 -0
  331. package/dist/output/capture-sdr.js +90 -0
  332. package/dist/output/capture-sdr.js.map +1 -0
  333. package/dist/output/crop.d.ts +6 -0
  334. package/dist/output/crop.d.ts.map +1 -1
  335. package/dist/output/crop.js +6 -0
  336. package/dist/output/crop.js.map +1 -1
  337. package/dist/output/geometric-transforms.d.ts +137 -0
  338. package/dist/output/geometric-transforms.d.ts.map +1 -0
  339. package/dist/output/geometric-transforms.js +225 -0
  340. package/dist/output/geometric-transforms.js.map +1 -0
  341. package/dist/output/lens-corrections.d.ts +121 -0
  342. package/dist/output/lens-corrections.d.ts.map +1 -0
  343. package/dist/output/lens-corrections.js +210 -0
  344. package/dist/output/lens-corrections.js.map +1 -0
  345. package/dist/output/sdr-rendering.d.ts +81 -0
  346. package/dist/output/sdr-rendering.d.ts.map +1 -0
  347. package/dist/output/sdr-rendering.js +106 -0
  348. package/dist/output/sdr-rendering.js.map +1 -0
  349. package/dist/output/subject-framing-crop.d.ts +8 -0
  350. package/dist/output/subject-framing-crop.d.ts.map +1 -1
  351. package/dist/output/subject-framing-crop.js +8 -0
  352. package/dist/output/subject-framing-crop.js.map +1 -1
  353. package/dist/schema/camera.d.ts +6 -0
  354. package/dist/schema/camera.d.ts.map +1 -1
  355. package/dist/schema/illumination-spectral.d.ts +51 -0
  356. package/dist/schema/illumination-spectral.d.ts.map +1 -0
  357. package/dist/schema/illumination-spectral.js +132 -0
  358. package/dist/schema/illumination-spectral.js.map +1 -0
  359. package/dist/schema/illumination-temporal.d.ts +156 -0
  360. package/dist/schema/illumination-temporal.d.ts.map +1 -0
  361. package/dist/schema/illumination-temporal.js +554 -0
  362. package/dist/schema/illumination-temporal.js.map +1 -0
  363. package/dist/schema/illumination.d.ts +138 -0
  364. package/dist/schema/illumination.d.ts.map +1 -0
  365. package/dist/schema/illumination.js +483 -0
  366. package/dist/schema/illumination.js.map +1 -0
  367. package/dist/schema/scene-radiance-temporal.d.ts +107 -0
  368. package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
  369. package/dist/schema/scene-radiance-temporal.js +259 -0
  370. package/dist/schema/scene-radiance-temporal.js.map +1 -0
  371. package/dist/schema/scene-radiance.d.ts +185 -0
  372. package/dist/schema/scene-radiance.d.ts.map +1 -0
  373. package/dist/schema/scene-radiance.js +535 -0
  374. package/dist/schema/scene-radiance.js.map +1 -0
  375. package/dist/schema/scene.d.ts +7 -0
  376. package/dist/schema/scene.d.ts.map +1 -1
  377. package/dist/schema/validation.d.ts.map +1 -1
  378. package/dist/schema/validation.js +7 -0
  379. package/dist/schema/validation.js.map +1 -1
  380. package/dist/sensor/accumulated-charge.d.ts +199 -0
  381. package/dist/sensor/accumulated-charge.d.ts.map +1 -0
  382. package/dist/sensor/accumulated-charge.js +450 -0
  383. package/dist/sensor/accumulated-charge.js.map +1 -0
  384. package/dist/sensor/architecture.d.ts +48 -13
  385. package/dist/sensor/architecture.d.ts.map +1 -1
  386. package/dist/sensor/architecture.js +58 -16
  387. package/dist/sensor/architecture.js.map +1 -1
  388. package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
  389. package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
  390. package/dist/sensor/camera-saturation-capacity.js +356 -0
  391. package/dist/sensor/camera-saturation-capacity.js.map +1 -0
  392. package/dist/sensor/capture-color-sampling-binding.d.ts +1 -0
  393. package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
  394. package/dist/sensor/capture-color-sampling-binding.js +14 -0
  395. package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
  396. package/dist/sensor/capture-mode-timing.d.ts +63 -0
  397. package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
  398. package/dist/sensor/capture-mode-timing.js +270 -0
  399. package/dist/sensor/capture-mode-timing.js.map +1 -0
  400. package/dist/sensor/capture-mode.d.ts.map +1 -1
  401. package/dist/sensor/capture-mode.js +13 -0
  402. package/dist/sensor/capture-mode.js.map +1 -1
  403. package/dist/sensor/color-sampling.d.ts.map +1 -1
  404. package/dist/sensor/color-sampling.js +19 -0
  405. package/dist/sensor/color-sampling.js.map +1 -1
  406. package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
  407. package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
  408. package/dist/sensor/constant-rate-temporal-integration.js +382 -0
  409. package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
  410. package/dist/sensor/dark-current.d.ts +169 -0
  411. package/dist/sensor/dark-current.d.ts.map +1 -0
  412. package/dist/sensor/dark-current.js +427 -0
  413. package/dist/sensor/dark-current.js.map +1 -0
  414. package/dist/sensor/environment-photo-signal.d.ts +123 -0
  415. package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
  416. package/dist/sensor/environment-photo-signal.js +186 -0
  417. package/dist/sensor/environment-photo-signal.js.map +1 -0
  418. package/dist/sensor/eqe-electron-rate.d.ts +107 -0
  419. package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
  420. package/dist/sensor/eqe-electron-rate.js +561 -0
  421. package/dist/sensor/eqe-electron-rate.js.map +1 -0
  422. package/dist/sensor/eqe-local-exposure.d.ts +65 -0
  423. package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
  424. package/dist/sensor/eqe-local-exposure.js +84 -0
  425. package/dist/sensor/eqe-local-exposure.js.map +1 -0
  426. package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
  427. package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
  428. package/dist/sensor/eqe-temporal-exposure.js +62 -0
  429. package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
  430. package/dist/sensor/exposure-window.d.ts +14 -0
  431. package/dist/sensor/exposure-window.d.ts.map +1 -1
  432. package/dist/sensor/exposure-window.js +14 -0
  433. package/dist/sensor/exposure-window.js.map +1 -1
  434. package/dist/sensor/iso-signal-chain.d.ts +148 -0
  435. package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
  436. package/dist/sensor/iso-signal-chain.js +411 -0
  437. package/dist/sensor/iso-signal-chain.js.map +1 -0
  438. package/dist/sensor/local-exposure-binding.d.ts +87 -0
  439. package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
  440. package/dist/sensor/local-exposure-binding.js +214 -0
  441. package/dist/sensor/local-exposure-binding.js.map +1 -0
  442. package/dist/sensor/optical-stack.d.ts.map +1 -1
  443. package/dist/sensor/optical-stack.js +17 -0
  444. package/dist/sensor/optical-stack.js.map +1 -1
  445. package/dist/sensor/photon-energy.d.ts +97 -0
  446. package/dist/sensor/photon-energy.d.ts.map +1 -0
  447. package/dist/sensor/photon-energy.js +390 -0
  448. package/dist/sensor/photon-energy.js.map +1 -0
  449. package/dist/sensor/physical-charge-capacity.d.ts +130 -0
  450. package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
  451. package/dist/sensor/physical-charge-capacity.js +345 -0
  452. package/dist/sensor/physical-charge-capacity.js.map +1 -0
  453. package/dist/sensor/pixel-pitch.d.ts +6 -0
  454. package/dist/sensor/pixel-pitch.d.ts.map +1 -1
  455. package/dist/sensor/pixel-pitch.js +6 -0
  456. package/dist/sensor/pixel-pitch.js.map +1 -1
  457. package/dist/sensor/radiometry-readiness.d.ts +10 -0
  458. package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
  459. package/dist/sensor/radiometry-readiness.js +10 -0
  460. package/dist/sensor/radiometry-readiness.js.map +1 -1
  461. package/dist/sensor/raw-readout.d.ts +314 -0
  462. package/dist/sensor/raw-readout.d.ts.map +1 -0
  463. package/dist/sensor/raw-readout.js +914 -0
  464. package/dist/sensor/raw-readout.js.map +1 -0
  465. package/dist/sensor/raw-reconstruction.d.ts +170 -0
  466. package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
  467. package/dist/sensor/raw-reconstruction.js +424 -0
  468. package/dist/sensor/raw-reconstruction.js.map +1 -0
  469. package/dist/sensor/readout-exposure-linkage.d.ts +12 -0
  470. package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
  471. package/dist/sensor/readout-exposure-linkage.js +12 -0
  472. package/dist/sensor/readout-exposure-linkage.js.map +1 -1
  473. package/dist/sensor/readout-timing.d.ts +13 -0
  474. package/dist/sensor/readout-timing.d.ts.map +1 -1
  475. package/dist/sensor/readout-timing.js +13 -0
  476. package/dist/sensor/readout-timing.js.map +1 -1
  477. package/dist/sensor/response-application-compatibility.d.ts +136 -0
  478. package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
  479. package/dist/sensor/response-application-compatibility.js +408 -0
  480. package/dist/sensor/response-application-compatibility.js.map +1 -0
  481. package/dist/sensor/response-operating-range.d.ts +173 -0
  482. package/dist/sensor/response-operating-range.d.ts.map +1 -0
  483. package/dist/sensor/response-operating-range.js +672 -0
  484. package/dist/sensor/response-operating-range.js.map +1 -0
  485. package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
  486. package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
  487. package/dist/sensor/responsivity-photocurrent.js +644 -0
  488. package/dist/sensor/responsivity-photocurrent.js.map +1 -0
  489. package/dist/sensor/sampling-aperture.d.ts.map +1 -1
  490. package/dist/sensor/sampling-aperture.js +14 -0
  491. package/dist/sensor/sampling-aperture.js.map +1 -1
  492. package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
  493. package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
  494. package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
  495. package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
  496. package/dist/sensor/sensor-geometry.d.ts +12 -0
  497. package/dist/sensor/sensor-geometry.d.ts.map +1 -1
  498. package/dist/sensor/sensor-geometry.js +12 -0
  499. package/dist/sensor/sensor-geometry.js.map +1 -1
  500. package/dist/sensor/signal-noise.d.ts +10 -0
  501. package/dist/sensor/signal-noise.d.ts.map +1 -1
  502. package/dist/sensor/signal-noise.js +10 -0
  503. package/dist/sensor/signal-noise.js.map +1 -1
  504. package/dist/sensor/spatial-sample-reduction.d.ts +44 -1
  505. package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
  506. package/dist/sensor/spatial-sample-reduction.js +51 -5
  507. package/dist/sensor/spatial-sample-reduction.js.map +1 -1
  508. package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
  509. package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
  510. package/dist/sensor/spatial-sampling-quadrature.js +27 -0
  511. package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
  512. package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
  513. package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
  514. package/dist/sensor/spatio-spectral-reduction.js +373 -0
  515. package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
  516. package/dist/sensor/spectral-coverage.d.ts +24 -0
  517. package/dist/sensor/spectral-coverage.d.ts.map +1 -0
  518. package/dist/sensor/spectral-coverage.js +86 -0
  519. package/dist/sensor/spectral-coverage.js.map +1 -0
  520. package/dist/sensor/spectral-quadrature.d.ts +169 -0
  521. package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
  522. package/dist/sensor/spectral-quadrature.js +542 -0
  523. package/dist/sensor/spectral-quadrature.js.map +1 -0
  524. package/dist/sensor/spectral-response.d.ts +192 -0
  525. package/dist/sensor/spectral-response.d.ts.map +1 -0
  526. package/dist/sensor/spectral-response.js +664 -0
  527. package/dist/sensor/spectral-response.js.map +1 -0
  528. package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
  529. package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
  530. package/dist/sensor/temporal-eqe-sum.js +30 -0
  531. package/dist/sensor/temporal-eqe-sum.js.map +1 -0
  532. package/dist/sensor/temporal-photo-signal.d.ts +38 -0
  533. package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
  534. package/dist/sensor/temporal-photo-signal.js +110 -0
  535. package/dist/sensor/temporal-photo-signal.js.map +1 -0
  536. package/dist/sensor/temporal-sample-binding.d.ts +6 -0
  537. package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
  538. package/dist/sensor/temporal-sample-binding.js +32 -0
  539. package/dist/sensor/temporal-sample-binding.js.map +1 -0
  540. package/dist/simulation/poc-simulation.d.ts.map +1 -1
  541. package/dist/simulation/poc-simulation.js +34 -11
  542. package/dist/simulation/poc-simulation.js.map +1 -1
  543. package/dist/stabilization/camera-shake.d.ts +11 -0
  544. package/dist/stabilization/camera-shake.d.ts.map +1 -1
  545. package/dist/stabilization/camera-shake.js +11 -0
  546. package/dist/stabilization/camera-shake.js.map +1 -1
  547. package/dist/stabilization/system.d.ts +218 -0
  548. package/dist/stabilization/system.d.ts.map +1 -0
  549. package/dist/stabilization/system.js +695 -0
  550. package/dist/stabilization/system.js.map +1 -0
  551. package/docs/API_REFERENCE.md +2017 -0
  552. package/docs/API_STYLE.md +139 -3
  553. package/docs/ARCHITECTURE.md +134 -24
  554. package/docs/AUTOMATION_COORDINATION.md +2 -0
  555. package/docs/CAPTURE_COLOR.md +25 -0
  556. package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
  557. package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
  558. package/docs/CAPTURE_SDR.md +20 -0
  559. package/docs/DEVELOPERS.md +60 -0
  560. package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
  561. package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
  562. package/docs/EXPORT_ACCEPTANCE.md +133 -0
  563. package/docs/GENERIC_TIER_PRESETS.md +269 -0
  564. package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
  565. package/docs/IMAGE_FORMATION.md +80 -10
  566. package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
  567. package/docs/MOTION_AND_SIGNAL.md +5 -3
  568. package/docs/NUMERICAL_CORRECTNESS.md +191 -0
  569. package/docs/PERFORMANCE_BASELINE.md +56 -0
  570. package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
  571. package/docs/PHYSICS_FOUNDATION.md +152 -5
  572. package/docs/POC_API.md +2 -0
  573. package/docs/POC_PROJECTION_REUSE.md +124 -0
  574. package/docs/PROCESSED_OUTPUT.md +157 -0
  575. package/docs/PRODUCTION_COMPOSITION.md +373 -0
  576. package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
  577. package/docs/PROVENANCE.md +4 -0
  578. package/docs/PSF_FOUNDATION.md +110 -88
  579. package/docs/RAW_FRAME_ENVELOPE.md +56 -0
  580. package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
  581. package/docs/RELEASE_1_0.md +66 -0
  582. package/docs/RELEASE_1_0_1.md +61 -0
  583. package/docs/RELEASE_AUDIT.md +39 -0
  584. package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
  585. package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
  586. package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
  587. package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
  588. package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
  589. package/docs/SDR_RENDERING.md +33 -0
  590. package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
  591. package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
  592. package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
  593. package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
  594. package/docs/SENSOR_RAW_FRAME.md +20 -0
  595. package/docs/SENSOR_RAW_PRODUCER.md +77 -0
  596. package/docs/SIGNAL_CONFORMANCE.md +23 -0
  597. package/docs/SIMULATED_CAPTURE.md +65 -0
  598. package/docs/STABILIZATION.md +160 -17
  599. package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
  600. package/docs/TIER_ACCEPTANCE.md +129 -0
  601. package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
  602. package/docs/USAGE.md +5050 -1047
  603. package/docs/V1_COMPOSITION_MAP.md +123 -0
  604. package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
  605. package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
  606. package/docs/api/camera-equivalent-focal-length.md +53 -0
  607. package/docs/api/camera-field-of-view.md +119 -0
  608. package/docs/api/camera-projected-object-size.md +54 -0
  609. package/docs/api/capture-capture-export-metadata.md +107 -0
  610. package/docs/api/capture-environment-raw-producer.md +56 -0
  611. package/docs/api/capture-focus-control.md +419 -0
  612. package/docs/api/capture-linear-encoding.md +99 -0
  613. package/docs/api/capture-photographic-export.md +172 -0
  614. package/docs/api/capture-raw-frame-reconstruction.md +87 -0
  615. package/docs/api/capture-release-sequence.md +252 -0
  616. package/docs/api/capture-sensor-raw-frame.md +66 -0
  617. package/docs/api/capture-sensor-raw-producer.md +98 -0
  618. package/docs/api/capture-simulated-capture.md +179 -0
  619. package/docs/api/color-capture-color.md +122 -0
  620. package/docs/api/color-white-balance.md +386 -0
  621. package/docs/api/composition-image-formation-plan.md +825 -0
  622. package/docs/api/composition-plan-consumer.md +98 -0
  623. package/docs/api/core-calculation-result.md +220 -0
  624. package/docs/api/core-configuration-error.md +19 -0
  625. package/docs/api/core-image-formation.md +204 -0
  626. package/docs/api/core-scientific-assurance.md +214 -0
  627. package/docs/api/core-spectral-composition.md +268 -0
  628. package/docs/api/core-spectral.md +78 -0
  629. package/docs/api/core-validation.md +34 -0
  630. package/docs/api/core-version.md +14 -0
  631. package/docs/api/equipment-exposure-capabilities.md +270 -0
  632. package/docs/api/equipment-generic-tier-assets.md +82 -0
  633. package/docs/api/equipment-generic-tier-presets.md +103 -0
  634. package/docs/api/equipment-iso-capabilities.md +295 -0
  635. package/docs/api/equipment-metering-capabilities.md +126 -0
  636. package/docs/api/equipment-release-capabilities.md +91 -0
  637. package/docs/api/exports.json +5656 -0
  638. package/docs/api/exposure-exposure-duration-control.md +115 -0
  639. package/docs/api/exposure-exposure-mode-resolver.md +966 -0
  640. package/docs/api/exposure-exposure.md +150 -0
  641. package/docs/api/exposure-flash.md +327 -0
  642. package/docs/api/exposure-metering-scene-radiance.md +154 -0
  643. package/docs/api/exposure-metering-target.md +134 -0
  644. package/docs/api/exposure-metering-temporal.md +77 -0
  645. package/docs/api/exposure-metering.md +172 -0
  646. package/docs/api/exposure-program-line.md +64 -0
  647. package/docs/api/motion-camera-rotation.md +215 -0
  648. package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
  649. package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
  650. package/docs/api/motion-capture-rotation-trajectory.md +132 -0
  651. package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
  652. package/docs/api/motion-extended-object-projection.md +312 -0
  653. package/docs/api/motion-projected-motion.md +60 -0
  654. package/docs/api/optics-aperture.md +69 -0
  655. package/docs/api/optics-circle-of-confusion.md +46 -0
  656. package/docs/api/optics-complex-pupil-psf.md +193 -0
  657. package/docs/api/optics-depth-of-field.md +92 -0
  658. package/docs/api/optics-diffraction.md +46 -0
  659. package/docs/api/optics-focus-breathing.md +119 -0
  660. package/docs/api/optics-focus-state.md +64 -0
  661. package/docs/api/optics-front-of-lens-filter.md +263 -0
  662. package/docs/api/optics-illumination-vignetting.md +95 -0
  663. package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
  664. package/docs/api/optics-lens-psf-profile.md +380 -0
  665. package/docs/api/optics-polygon-diffraction.md +68 -0
  666. package/docs/api/optics-profile-contract.md +47 -0
  667. package/docs/api/optics-psf-foundation.md +181 -0
  668. package/docs/api/optics-radial-distortion.md +194 -0
  669. package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
  670. package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
  671. package/docs/api/optics-sensor-environment-query.md +58 -0
  672. package/docs/api/optics-sensor-psf-quadrature.md +81 -0
  673. package/docs/api/optics-stray-light.md +109 -0
  674. package/docs/api/optics-thin-lens.md +53 -0
  675. package/docs/api/output-capture-corrected-sdr.md +71 -0
  676. package/docs/api/output-capture-geometry.md +500 -0
  677. package/docs/api/output-capture-sdr.md +69 -0
  678. package/docs/api/output-crop.md +47 -0
  679. package/docs/api/output-geometric-transforms.md +199 -0
  680. package/docs/api/output-lens-corrections.md +162 -0
  681. package/docs/api/output-sdr-rendering.md +122 -0
  682. package/docs/api/output-subject-framing-crop.md +59 -0
  683. package/docs/api/schema-camera.md +84 -0
  684. package/docs/api/schema-illumination-spectral.md +77 -0
  685. package/docs/api/schema-illumination-temporal.md +289 -0
  686. package/docs/api/schema-illumination.md +246 -0
  687. package/docs/api/schema-scene-radiance-temporal.md +215 -0
  688. package/docs/api/schema-scene-radiance.md +415 -0
  689. package/docs/api/schema-scene.md +105 -0
  690. package/docs/api/schema-validation.md +25 -0
  691. package/docs/api/sensor-accumulated-charge.md +273 -0
  692. package/docs/api/sensor-architecture.md +155 -0
  693. package/docs/api/sensor-camera-saturation-capacity.md +215 -0
  694. package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
  695. package/docs/api/sensor-capture-mode-timing.md +123 -0
  696. package/docs/api/sensor-capture-mode.md +321 -0
  697. package/docs/api/sensor-color-sampling.md +228 -0
  698. package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
  699. package/docs/api/sensor-dark-current.md +227 -0
  700. package/docs/api/sensor-environment-photo-signal.md +77 -0
  701. package/docs/api/sensor-eqe-electron-rate.md +166 -0
  702. package/docs/api/sensor-eqe-local-exposure.md +68 -0
  703. package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
  704. package/docs/api/sensor-exposure-window.md +183 -0
  705. package/docs/api/sensor-iso-signal-chain.md +264 -0
  706. package/docs/api/sensor-local-exposure-binding.md +126 -0
  707. package/docs/api/sensor-optical-stack.md +211 -0
  708. package/docs/api/sensor-photon-energy.md +149 -0
  709. package/docs/api/sensor-physical-charge-capacity.md +196 -0
  710. package/docs/api/sensor-pixel-pitch.md +41 -0
  711. package/docs/api/sensor-radiometry-readiness.md +240 -0
  712. package/docs/api/sensor-raw-readout.md +499 -0
  713. package/docs/api/sensor-raw-reconstruction.md +260 -0
  714. package/docs/api/sensor-readout-exposure-linkage.md +172 -0
  715. package/docs/api/sensor-readout-timing.md +209 -0
  716. package/docs/api/sensor-response-application-compatibility.md +256 -0
  717. package/docs/api/sensor-response-operating-range.md +293 -0
  718. package/docs/api/sensor-responsivity-photocurrent.md +245 -0
  719. package/docs/api/sensor-sampling-aperture.md +221 -0
  720. package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
  721. package/docs/api/sensor-sensor-geometry.md +143 -0
  722. package/docs/api/sensor-signal-noise.md +75 -0
  723. package/docs/api/sensor-spatial-sample-reduction.md +186 -0
  724. package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
  725. package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
  726. package/docs/api/sensor-spectral-coverage.md +33 -0
  727. package/docs/api/sensor-spectral-quadrature.md +183 -0
  728. package/docs/api/sensor-spectral-response.md +291 -0
  729. package/docs/api/sensor-temporal-photo-signal.md +62 -0
  730. package/docs/api/simulation-poc-simulation.md +364 -0
  731. package/docs/api/stabilization-camera-shake.md +71 -0
  732. package/docs/api/stabilization-system.md +442 -0
  733. package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
  734. package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
  735. package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
  736. package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
  737. package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
  738. package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
  739. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
  740. package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
  741. package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
  742. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
  743. package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
  744. package/docs/examples/production-capture.mjs +34 -0
  745. package/docs/examples/production-request.json +4613 -0
  746. package/docs/examples/quick-start.mjs +12 -0
  747. package/docs/validation/documentation-fragments.json +212 -0
  748. package/docs/validation/release-audit-inventory.json +1306 -0
  749. package/docs/validation/tier-acceptance-report-v1.json +2538 -0
  750. package/package.json +15 -3
@@ -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"}
@@ -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,9 @@
1
+ /**
2
+ * Version of the public root-engine release, aligned with the npm package since 1.0.1.
3
+ * New captures and plans record this creator identity; archived records retain theirs.
4
+ * POC, schema and model contracts keep their independent versions.
5
+ * Release checks enforce equality with package.json and the packed distribution.
6
+ * @see docs/RELEASE_1_0_1.md
7
+ */
8
+ export declare const ENGINE_API_VERSION: "1.0.1";
9
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAG,OAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * Version of the public root-engine release, aligned with the npm package since 1.0.1.
4
+ * New captures and plans record this creator identity; archived records retain theirs.
5
+ * POC, schema and model contracts keep their independent versions.
6
+ * Release checks enforce equality with package.json and the packed distribution.
7
+ * @see docs/RELEASE_1_0_1.md
8
+ */
9
+ export const ENGINE_API_VERSION = "1.0.1";
10
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/core/version.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAgB,CAAC"}