@infrared-city/infrared-sdk 0.0.0-stage → 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 (866) hide show
  1. package/LICENSE +201 -0
  2. package/MIGRATION.md +394 -0
  3. package/NOTICE +5 -0
  4. package/README.md +1804 -2
  5. package/UPGRADING.md +1244 -0
  6. package/dist/analysis-service.d.ts +20 -0
  7. package/dist/analysis-service.d.ts.map +1 -0
  8. package/dist/analysis-service.js +29 -0
  9. package/dist/analysis-service.js.map +1 -0
  10. package/dist/analysis-types.d.ts +39 -0
  11. package/dist/analysis-types.d.ts.map +1 -0
  12. package/dist/analysis-types.js +35 -0
  13. package/dist/analysis-types.js.map +1 -0
  14. package/dist/area/area-grid.d.ts +61 -0
  15. package/dist/area/area-grid.d.ts.map +1 -0
  16. package/dist/area/area-grid.js +62 -0
  17. package/dist/area/area-grid.js.map +1 -0
  18. package/dist/area/composition.d.ts +60 -0
  19. package/dist/area/composition.d.ts.map +1 -0
  20. package/dist/area/composition.js +144 -0
  21. package/dist/area/composition.js.map +1 -0
  22. package/dist/area/config-hash.d.ts +50 -0
  23. package/dist/area/config-hash.d.ts.map +1 -0
  24. package/dist/area/config-hash.js +96 -0
  25. package/dist/area/config-hash.js.map +1 -0
  26. package/dist/area/constants.d.ts +19 -0
  27. package/dist/area/constants.d.ts.map +1 -0
  28. package/dist/area/constants.js +23 -0
  29. package/dist/area/constants.js.map +1 -0
  30. package/dist/area/cooperative.d.ts +75 -0
  31. package/dist/area/cooperative.d.ts.map +1 -0
  32. package/dist/area/cooperative.js +136 -0
  33. package/dist/area/cooperative.js.map +1 -0
  34. package/dist/area/count-contract.d.ts +35 -0
  35. package/dist/area/count-contract.d.ts.map +1 -0
  36. package/dist/area/count-contract.js +84 -0
  37. package/dist/area/count-contract.js.map +1 -0
  38. package/dist/area/facade-captures.d.ts +35 -0
  39. package/dist/area/facade-captures.d.ts.map +1 -0
  40. package/dist/area/facade-captures.js +68 -0
  41. package/dist/area/facade-captures.js.map +1 -0
  42. package/dist/area/facade-layout-attach.d.ts +45 -0
  43. package/dist/area/facade-layout-attach.d.ts.map +1 -0
  44. package/dist/area/facade-layout-attach.js +121 -0
  45. package/dist/area/facade-layout-attach.js.map +1 -0
  46. package/dist/area/facade-layout-free.d.ts +41 -0
  47. package/dist/area/facade-layout-free.d.ts.map +1 -0
  48. package/dist/area/facade-layout-free.js +44 -0
  49. package/dist/area/facade-layout-free.js.map +1 -0
  50. package/dist/area/facade-layout-raw.d.ts +45 -0
  51. package/dist/area/facade-layout-raw.d.ts.map +1 -0
  52. package/dist/area/facade-layout-raw.js +97 -0
  53. package/dist/area/facade-layout-raw.js.map +1 -0
  54. package/dist/area/facade-layout-request.d.ts +7 -0
  55. package/dist/area/facade-layout-request.d.ts.map +1 -0
  56. package/dist/area/facade-layout-request.js +57 -0
  57. package/dist/area/facade-layout-request.js.map +1 -0
  58. package/dist/area/facade-layout-schedule.d.ts +41 -0
  59. package/dist/area/facade-layout-schedule.d.ts.map +1 -0
  60. package/dist/area/facade-layout-schedule.js +107 -0
  61. package/dist/area/facade-layout-schedule.js.map +1 -0
  62. package/dist/area/facade-layout.d.ts +245 -0
  63. package/dist/area/facade-layout.d.ts.map +1 -0
  64. package/dist/area/facade-layout.js +211 -0
  65. package/dist/area/facade-layout.js.map +1 -0
  66. package/dist/area/facade-ownership.d.ts +84 -0
  67. package/dist/area/facade-ownership.d.ts.map +1 -0
  68. package/dist/area/facade-ownership.js +108 -0
  69. package/dist/area/facade-ownership.js.map +1 -0
  70. package/dist/area/field-registry.d.ts +54 -0
  71. package/dist/area/field-registry.d.ts.map +1 -0
  72. package/dist/area/field-registry.js +74 -0
  73. package/dist/area/field-registry.js.map +1 -0
  74. package/dist/area/incomplete-error.d.ts +28 -0
  75. package/dist/area/incomplete-error.d.ts.map +1 -0
  76. package/dist/area/incomplete-error.js +59 -0
  77. package/dist/area/incomplete-error.js.map +1 -0
  78. package/dist/area/index.d.ts +33 -0
  79. package/dist/area/index.d.ts.map +1 -0
  80. package/dist/area/index.js +29 -0
  81. package/dist/area/index.js.map +1 -0
  82. package/dist/area/merge-common.d.ts +12 -0
  83. package/dist/area/merge-common.d.ts.map +1 -0
  84. package/dist/area/merge-common.js +29 -0
  85. package/dist/area/merge-common.js.map +1 -0
  86. package/dist/area/merge-surface-decode.d.ts +30 -0
  87. package/dist/area/merge-surface-decode.d.ts.map +1 -0
  88. package/dist/area/merge-surface-decode.js +55 -0
  89. package/dist/area/merge-surface-decode.js.map +1 -0
  90. package/dist/area/merge-surface.d.ts +35 -0
  91. package/dist/area/merge-surface.d.ts.map +1 -0
  92. package/dist/area/merge-surface.js +205 -0
  93. package/dist/area/merge-surface.js.map +1 -0
  94. package/dist/area/merge.d.ts +63 -0
  95. package/dist/area/merge.d.ts.map +1 -0
  96. package/dist/area/merge.js +175 -0
  97. package/dist/area/merge.js.map +1 -0
  98. package/dist/area/payload-aliases.d.ts +56 -0
  99. package/dist/area/payload-aliases.d.ts.map +1 -0
  100. package/dist/area/payload-aliases.js +99 -0
  101. package/dist/area/payload-aliases.js.map +1 -0
  102. package/dist/area/payload-types.d.ts +3 -0
  103. package/dist/area/payload-types.d.ts.map +1 -0
  104. package/dist/area/payload-types.js +2 -0
  105. package/dist/area/payload-types.js.map +1 -0
  106. package/dist/area/payload.d.ts +16 -0
  107. package/dist/area/payload.d.ts.map +1 -0
  108. package/dist/area/payload.js +381 -0
  109. package/dist/area/payload.js.map +1 -0
  110. package/dist/area/plan-entries.d.ts +41 -0
  111. package/dist/area/plan-entries.d.ts.map +1 -0
  112. package/dist/area/plan-entries.js +152 -0
  113. package/dist/area/plan-entries.js.map +1 -0
  114. package/dist/area/plan-layers.d.ts +49 -0
  115. package/dist/area/plan-layers.d.ts.map +1 -0
  116. package/dist/area/plan-layers.js +124 -0
  117. package/dist/area/plan-layers.js.map +1 -0
  118. package/dist/area/plan-types.d.ts +70 -0
  119. package/dist/area/plan-types.d.ts.map +1 -0
  120. package/dist/area/plan-types.js +11 -0
  121. package/dist/area/plan-types.js.map +1 -0
  122. package/dist/area/planning.d.ts +41 -0
  123. package/dist/area/planning.d.ts.map +1 -0
  124. package/dist/area/planning.js +346 -0
  125. package/dist/area/planning.js.map +1 -0
  126. package/dist/area/poll-schedule.d.ts +15 -0
  127. package/dist/area/poll-schedule.d.ts.map +1 -0
  128. package/dist/area/poll-schedule.js +20 -0
  129. package/dist/area/poll-schedule.js.map +1 -0
  130. package/dist/area/poll.d.ts +56 -0
  131. package/dist/area/poll.d.ts.map +1 -0
  132. package/dist/area/poll.js +219 -0
  133. package/dist/area/poll.js.map +1 -0
  134. package/dist/area/prepared-site.d.ts +139 -0
  135. package/dist/area/prepared-site.d.ts.map +1 -0
  136. package/dist/area/prepared-site.js +289 -0
  137. package/dist/area/prepared-site.js.map +1 -0
  138. package/dist/area/preview.d.ts +45 -0
  139. package/dist/area/preview.d.ts.map +1 -0
  140. package/dist/area/preview.js +70 -0
  141. package/dist/area/preview.js.map +1 -0
  142. package/dist/area/reanchor.d.ts +63 -0
  143. package/dist/area/reanchor.d.ts.map +1 -0
  144. package/dist/area/reanchor.js +130 -0
  145. package/dist/area/reanchor.js.map +1 -0
  146. package/dist/area/registry-pick.d.ts +28 -0
  147. package/dist/area/registry-pick.d.ts.map +1 -0
  148. package/dist/area/registry-pick.js +98 -0
  149. package/dist/area/registry-pick.js.map +1 -0
  150. package/dist/area/retry-context.d.ts +21 -0
  151. package/dist/area/retry-context.d.ts.map +1 -0
  152. package/dist/area/retry-context.js +61 -0
  153. package/dist/area/retry-context.js.map +1 -0
  154. package/dist/area/retry-plan.d.ts +70 -0
  155. package/dist/area/retry-plan.d.ts.map +1 -0
  156. package/dist/area/retry-plan.js +33 -0
  157. package/dist/area/retry-plan.js.map +1 -0
  158. package/dist/area/run-and-wait-retry.d.ts +22 -0
  159. package/dist/area/run-and-wait-retry.d.ts.map +1 -0
  160. package/dist/area/run-and-wait-retry.js +58 -0
  161. package/dist/area/run-and-wait-retry.js.map +1 -0
  162. package/dist/area/run-options.d.ts +185 -0
  163. package/dist/area/run-options.d.ts.map +1 -0
  164. package/dist/area/run-options.js +2 -0
  165. package/dist/area/run-options.js.map +1 -0
  166. package/dist/area/schedule-retry-fields.d.ts +29 -0
  167. package/dist/area/schedule-retry-fields.d.ts.map +1 -0
  168. package/dist/area/schedule-retry-fields.js +49 -0
  169. package/dist/area/schedule-retry-fields.js.map +1 -0
  170. package/dist/area/schedule-types.d.ts +328 -0
  171. package/dist/area/schedule-types.d.ts.map +1 -0
  172. package/dist/area/schedule-types.js +13 -0
  173. package/dist/area/schedule-types.js.map +1 -0
  174. package/dist/area/schedule.d.ts +15 -0
  175. package/dist/area/schedule.d.ts.map +1 -0
  176. package/dist/area/schedule.js +393 -0
  177. package/dist/area/schedule.js.map +1 -0
  178. package/dist/area/sensor-cap.d.ts +16 -0
  179. package/dist/area/sensor-cap.d.ts.map +1 -0
  180. package/dist/area/sensor-cap.js +34 -0
  181. package/dist/area/sensor-cap.js.map +1 -0
  182. package/dist/area/site-assign.d.ts +198 -0
  183. package/dist/area/site-assign.d.ts.map +1 -0
  184. package/dist/area/site-assign.js +196 -0
  185. package/dist/area/site-assign.js.map +1 -0
  186. package/dist/area/site-facade-scene-frames.d.ts +23 -0
  187. package/dist/area/site-facade-scene-frames.d.ts.map +1 -0
  188. package/dist/area/site-facade-scene-frames.js +42 -0
  189. package/dist/area/site-facade-scene-frames.js.map +1 -0
  190. package/dist/area/site-facade-scene.d.ts +56 -0
  191. package/dist/area/site-facade-scene.d.ts.map +1 -0
  192. package/dist/area/site-facade-scene.js +23 -0
  193. package/dist/area/site-facade-scene.js.map +1 -0
  194. package/dist/area/site-facade.d.ts +78 -0
  195. package/dist/area/site-facade.d.ts.map +1 -0
  196. package/dist/area/site-facade.js +325 -0
  197. package/dist/area/site-facade.js.map +1 -0
  198. package/dist/area/site-identity-guard.d.ts +13 -0
  199. package/dist/area/site-identity-guard.d.ts.map +1 -0
  200. package/dist/area/site-identity-guard.js +48 -0
  201. package/dist/area/site-identity-guard.js.map +1 -0
  202. package/dist/area/site-kernel.d.ts +39 -0
  203. package/dist/area/site-kernel.d.ts.map +1 -0
  204. package/dist/area/site-kernel.js +53 -0
  205. package/dist/area/site-kernel.js.map +1 -0
  206. package/dist/area/site-pack.d.ts +35 -0
  207. package/dist/area/site-pack.d.ts.map +1 -0
  208. package/dist/area/site-pack.js +68 -0
  209. package/dist/area/site-pack.js.map +1 -0
  210. package/dist/area/site-terrain.d.ts +38 -0
  211. package/dist/area/site-terrain.d.ts.map +1 -0
  212. package/dist/area/site-terrain.js +60 -0
  213. package/dist/area/site-terrain.js.map +1 -0
  214. package/dist/area/submission.d.ts +99 -0
  215. package/dist/area/submission.d.ts.map +1 -0
  216. package/dist/area/submission.js +275 -0
  217. package/dist/area/submission.js.map +1 -0
  218. package/dist/area/submit-pool.d.ts +48 -0
  219. package/dist/area/submit-pool.d.ts.map +1 -0
  220. package/dist/area/submit-pool.js +218 -0
  221. package/dist/area/submit-pool.js.map +1 -0
  222. package/dist/area/thermal-controls.d.ts +95 -0
  223. package/dist/area/thermal-controls.d.ts.map +1 -0
  224. package/dist/area/thermal-controls.js +209 -0
  225. package/dist/area/thermal-controls.js.map +1 -0
  226. package/dist/area/tile-frames.d.ts +21 -0
  227. package/dist/area/tile-frames.d.ts.map +1 -0
  228. package/dist/area/tile-frames.js +21 -0
  229. package/dist/area/tile-frames.js.map +1 -0
  230. package/dist/area/tiling.d.ts +50 -0
  231. package/dist/area/tiling.d.ts.map +1 -0
  232. package/dist/area/tiling.js +109 -0
  233. package/dist/area/tiling.js.map +1 -0
  234. package/dist/area/types.d.ts +153 -0
  235. package/dist/area/types.d.ts.map +1 -0
  236. package/dist/area/types.js +2 -0
  237. package/dist/area/types.js.map +1 -0
  238. package/dist/area/unknown-request-keys.d.ts +35 -0
  239. package/dist/area/unknown-request-keys.d.ts.map +1 -0
  240. package/dist/area/unknown-request-keys.js +58 -0
  241. package/dist/area/unknown-request-keys.js.map +1 -0
  242. package/dist/area/wait-schedule.d.ts +20 -0
  243. package/dist/area/wait-schedule.d.ts.map +1 -0
  244. package/dist/area/wait-schedule.js +52 -0
  245. package/dist/area/wait-schedule.js.map +1 -0
  246. package/dist/area/weather-guard.d.ts +69 -0
  247. package/dist/area/weather-guard.d.ts.map +1 -0
  248. package/dist/area/weather-guard.js +303 -0
  249. package/dist/area/weather-guard.js.map +1 -0
  250. package/dist/billing.d.ts +106 -0
  251. package/dist/billing.d.ts.map +1 -0
  252. package/dist/billing.js +114 -0
  253. package/dist/billing.js.map +1 -0
  254. package/dist/buildings.d.ts +141 -0
  255. package/dist/buildings.d.ts.map +1 -0
  256. package/dist/buildings.js +156 -0
  257. package/dist/buildings.js.map +1 -0
  258. package/dist/client-setup.d.ts +8 -0
  259. package/dist/client-setup.d.ts.map +1 -0
  260. package/dist/client-setup.js +38 -0
  261. package/dist/client-setup.js.map +1 -0
  262. package/dist/client-types.d.ts +176 -0
  263. package/dist/client-types.d.ts.map +1 -0
  264. package/dist/client-types.js +20 -0
  265. package/dist/client-types.js.map +1 -0
  266. package/dist/client.d.ts +186 -0
  267. package/dist/client.d.ts.map +1 -0
  268. package/dist/client.js +314 -0
  269. package/dist/client.js.map +1 -0
  270. package/dist/compat.d.ts +17 -0
  271. package/dist/compat.d.ts.map +1 -0
  272. package/dist/compat.js +17 -0
  273. package/dist/compat.js.map +1 -0
  274. package/dist/geodata/allowed-hosts.d.ts +53 -0
  275. package/dist/geodata/allowed-hosts.d.ts.map +1 -0
  276. package/dist/geodata/allowed-hosts.js +77 -0
  277. package/dist/geodata/allowed-hosts.js.map +1 -0
  278. package/dist/geodata/buildings-area.d.ts +60 -0
  279. package/dist/geodata/buildings-area.d.ts.map +1 -0
  280. package/dist/geodata/buildings-area.js +228 -0
  281. package/dist/geodata/buildings-area.js.map +1 -0
  282. package/dist/geodata/buildings-extrude.d.ts +33 -0
  283. package/dist/geodata/buildings-extrude.d.ts.map +1 -0
  284. package/dist/geodata/buildings-extrude.js +85 -0
  285. package/dist/geodata/buildings-extrude.js.map +1 -0
  286. package/dist/geodata/buildings.d.ts +99 -0
  287. package/dist/geodata/buildings.d.ts.map +1 -0
  288. package/dist/geodata/buildings.js +119 -0
  289. package/dist/geodata/buildings.js.map +1 -0
  290. package/dist/geodata/errors.d.ts +197 -0
  291. package/dist/geodata/errors.d.ts.map +1 -0
  292. package/dist/geodata/errors.js +217 -0
  293. package/dist/geodata/errors.js.map +1 -0
  294. package/dist/geodata/fgb-kernel.d.ts +88 -0
  295. package/dist/geodata/fgb-kernel.d.ts.map +1 -0
  296. package/dist/geodata/fgb-kernel.js +226 -0
  297. package/dist/geodata/fgb-kernel.js.map +1 -0
  298. package/dist/geodata/fgb.d.ts +66 -0
  299. package/dist/geodata/fgb.d.ts.map +1 -0
  300. package/dist/geodata/fgb.js +62 -0
  301. package/dist/geodata/fgb.js.map +1 -0
  302. package/dist/geodata/ground-area.d.ts +81 -0
  303. package/dist/geodata/ground-area.d.ts.map +1 -0
  304. package/dist/geodata/ground-area.js +110 -0
  305. package/dist/geodata/ground-area.js.map +1 -0
  306. package/dist/geodata/ground.d.ts +125 -0
  307. package/dist/geodata/ground.d.ts.map +1 -0
  308. package/dist/geodata/ground.js +121 -0
  309. package/dist/geodata/ground.js.map +1 -0
  310. package/dist/geodata/http.d.ts +183 -0
  311. package/dist/geodata/http.d.ts.map +1 -0
  312. package/dist/geodata/http.js +303 -0
  313. package/dist/geodata/http.js.map +1 -0
  314. package/dist/geodata/index.d.ts +52 -0
  315. package/dist/geodata/index.d.ts.map +1 -0
  316. package/dist/geodata/index.js +54 -0
  317. package/dist/geodata/index.js.map +1 -0
  318. package/dist/geodata/json-chain.d.ts +69 -0
  319. package/dist/geodata/json-chain.d.ts.map +1 -0
  320. package/dist/geodata/json-chain.js +170 -0
  321. package/dist/geodata/json-chain.js.map +1 -0
  322. package/dist/geodata/manifests.d.ts +116 -0
  323. package/dist/geodata/manifests.d.ts.map +1 -0
  324. package/dist/geodata/manifests.js +216 -0
  325. package/dist/geodata/manifests.js.map +1 -0
  326. package/dist/geodata/overture-area.d.ts +49 -0
  327. package/dist/geodata/overture-area.d.ts.map +1 -0
  328. package/dist/geodata/overture-area.js +47 -0
  329. package/dist/geodata/overture-area.js.map +1 -0
  330. package/dist/geodata/overture-budget.d.ts +62 -0
  331. package/dist/geodata/overture-budget.d.ts.map +1 -0
  332. package/dist/geodata/overture-budget.js +130 -0
  333. package/dist/geodata/overture-budget.js.map +1 -0
  334. package/dist/geodata/overture-cache.d.ts +34 -0
  335. package/dist/geodata/overture-cache.d.ts.map +1 -0
  336. package/dist/geodata/overture-cache.js +84 -0
  337. package/dist/geodata/overture-cache.js.map +1 -0
  338. package/dist/geodata/overture-keep.d.ts +31 -0
  339. package/dist/geodata/overture-keep.d.ts.map +1 -0
  340. package/dist/geodata/overture-keep.js +89 -0
  341. package/dist/geodata/overture-keep.js.map +1 -0
  342. package/dist/geodata/overture-parquet.d.ts +108 -0
  343. package/dist/geodata/overture-parquet.d.ts.map +1 -0
  344. package/dist/geodata/overture-parquet.js +107 -0
  345. package/dist/geodata/overture-parquet.js.map +1 -0
  346. package/dist/geodata/overture-rows.d.ts +141 -0
  347. package/dist/geodata/overture-rows.d.ts.map +1 -0
  348. package/dist/geodata/overture-rows.js +264 -0
  349. package/dist/geodata/overture-rows.js.map +1 -0
  350. package/dist/geodata/overture-span.d.ts +44 -0
  351. package/dist/geodata/overture-span.d.ts.map +1 -0
  352. package/dist/geodata/overture-span.js +39 -0
  353. package/dist/geodata/overture-span.js.map +1 -0
  354. package/dist/geodata/overture.d.ts +85 -0
  355. package/dist/geodata/overture.d.ts.map +1 -0
  356. package/dist/geodata/overture.js +109 -0
  357. package/dist/geodata/overture.js.map +1 -0
  358. package/dist/geodata/range-answer.d.ts +88 -0
  359. package/dist/geodata/range-answer.d.ts.map +1 -0
  360. package/dist/geodata/range-answer.js +202 -0
  361. package/dist/geodata/range-answer.js.map +1 -0
  362. package/dist/geodata/range-transport.d.ts +95 -0
  363. package/dist/geodata/range-transport.d.ts.map +1 -0
  364. package/dist/geodata/range-transport.js +134 -0
  365. package/dist/geodata/range-transport.js.map +1 -0
  366. package/dist/geodata/read-margin.d.ts +117 -0
  367. package/dist/geodata/read-margin.d.ts.map +1 -0
  368. package/dist/geodata/read-margin.js +234 -0
  369. package/dist/geodata/read-margin.js.map +1 -0
  370. package/dist/geodata/rect-union-metrics.d.ts +52 -0
  371. package/dist/geodata/rect-union-metrics.d.ts.map +1 -0
  372. package/dist/geodata/rect-union-metrics.js +81 -0
  373. package/dist/geodata/rect-union-metrics.js.map +1 -0
  374. package/dist/geodata/retry.d.ts +95 -0
  375. package/dist/geodata/retry.d.ts.map +1 -0
  376. package/dist/geodata/retry.js +191 -0
  377. package/dist/geodata/retry.js.map +1 -0
  378. package/dist/geodata/site-chunks.d.ts +157 -0
  379. package/dist/geodata/site-chunks.d.ts.map +1 -0
  380. package/dist/geodata/site-chunks.js +338 -0
  381. package/dist/geodata/site-chunks.js.map +1 -0
  382. package/dist/geodata/stall.d.ts +40 -0
  383. package/dist/geodata/stall.d.ts.map +1 -0
  384. package/dist/geodata/stall.js +90 -0
  385. package/dist/geodata/stall.js.map +1 -0
  386. package/dist/geodata/trees.d.ts +107 -0
  387. package/dist/geodata/trees.d.ts.map +1 -0
  388. package/dist/geodata/trees.js +160 -0
  389. package/dist/geodata/trees.js.map +1 -0
  390. package/dist/ground-materials-service.d.ts +101 -0
  391. package/dist/ground-materials-service.d.ts.map +1 -0
  392. package/dist/ground-materials-service.js +154 -0
  393. package/dist/ground-materials-service.js.map +1 -0
  394. package/dist/ground-materials.d.ts +86 -0
  395. package/dist/ground-materials.d.ts.map +1 -0
  396. package/dist/ground-materials.js +46 -0
  397. package/dist/ground-materials.js.map +1 -0
  398. package/dist/images.d.ts +182 -0
  399. package/dist/images.d.ts.map +1 -0
  400. package/dist/images.js +283 -0
  401. package/dist/images.js.map +1 -0
  402. package/dist/index.cjs +8 -0
  403. package/dist/index.d.ts +83 -0
  404. package/dist/index.d.ts.map +1 -0
  405. package/dist/index.js +70 -0
  406. package/dist/index.js.map +1 -0
  407. package/dist/internal/auth.d.ts +58 -0
  408. package/dist/internal/auth.d.ts.map +1 -0
  409. package/dist/internal/auth.js +46 -0
  410. package/dist/internal/auth.js.map +1 -0
  411. package/dist/internal/binary-admission.d.ts +2 -0
  412. package/dist/internal/binary-admission.d.ts.map +1 -0
  413. package/dist/internal/binary-admission.js +46 -0
  414. package/dist/internal/binary-admission.js.map +1 -0
  415. package/dist/internal/binary-artifact.d.ts +43 -0
  416. package/dist/internal/binary-artifact.d.ts.map +1 -0
  417. package/dist/internal/binary-artifact.js +20 -0
  418. package/dist/internal/binary-artifact.js.map +1 -0
  419. package/dist/internal/binary-result.d.ts +30 -0
  420. package/dist/internal/binary-result.d.ts.map +1 -0
  421. package/dist/internal/binary-result.js +210 -0
  422. package/dist/internal/binary-result.js.map +1 -0
  423. package/dist/internal/binary-retention.d.ts +23 -0
  424. package/dist/internal/binary-retention.d.ts.map +1 -0
  425. package/dist/internal/binary-retention.js +57 -0
  426. package/dist/internal/binary-retention.js.map +1 -0
  427. package/dist/internal/binary-submission.d.ts +74 -0
  428. package/dist/internal/binary-submission.d.ts.map +1 -0
  429. package/dist/internal/binary-submission.js +262 -0
  430. package/dist/internal/binary-submission.js.map +1 -0
  431. package/dist/internal/binary-submit-coordinator.d.ts +44 -0
  432. package/dist/internal/binary-submit-coordinator.d.ts.map +1 -0
  433. package/dist/internal/binary-submit-coordinator.js +213 -0
  434. package/dist/internal/binary-submit-coordinator.js.map +1 -0
  435. package/dist/internal/binary-url-cache.d.ts +24 -0
  436. package/dist/internal/binary-url-cache.d.ts.map +1 -0
  437. package/dist/internal/binary-url-cache.js +81 -0
  438. package/dist/internal/binary-url-cache.js.map +1 -0
  439. package/dist/internal/body-sender.d.ts +28 -0
  440. package/dist/internal/body-sender.d.ts.map +1 -0
  441. package/dist/internal/body-sender.js +93 -0
  442. package/dist/internal/body-sender.js.map +1 -0
  443. package/dist/internal/capability-cache.d.ts +34 -0
  444. package/dist/internal/capability-cache.d.ts.map +1 -0
  445. package/dist/internal/capability-cache.js +92 -0
  446. package/dist/internal/capability-cache.js.map +1 -0
  447. package/dist/internal/capped-body.d.ts +35 -0
  448. package/dist/internal/capped-body.d.ts.map +1 -0
  449. package/dist/internal/capped-body.js +130 -0
  450. package/dist/internal/capped-body.js.map +1 -0
  451. package/dist/internal/cell-has-value.d.ts +14 -0
  452. package/dist/internal/cell-has-value.d.ts.map +1 -0
  453. package/dist/internal/cell-has-value.js +23 -0
  454. package/dist/internal/cell-has-value.js.map +1 -0
  455. package/dist/internal/core-exports.d.ts +2 -0
  456. package/dist/internal/core-exports.d.ts.map +1 -0
  457. package/dist/internal/core-exports.js +240 -0
  458. package/dist/internal/core-exports.js.map +1 -0
  459. package/dist/internal/core.d.ts +36 -0
  460. package/dist/internal/core.d.ts.map +1 -0
  461. package/dist/internal/core.js +193 -0
  462. package/dist/internal/core.js.map +1 -0
  463. package/dist/internal/deadline.d.ts +45 -0
  464. package/dist/internal/deadline.d.ts.map +1 -0
  465. package/dist/internal/deadline.js +127 -0
  466. package/dist/internal/deadline.js.map +1 -0
  467. package/dist/internal/download-retry.d.ts +19 -0
  468. package/dist/internal/download-retry.d.ts.map +1 -0
  469. package/dist/internal/download-retry.js +45 -0
  470. package/dist/internal/download-retry.js.map +1 -0
  471. package/dist/internal/download.d.ts +23 -0
  472. package/dist/internal/download.d.ts.map +1 -0
  473. package/dist/internal/download.js +71 -0
  474. package/dist/internal/download.js.map +1 -0
  475. package/dist/internal/errors.d.ts +58 -0
  476. package/dist/internal/errors.d.ts.map +1 -0
  477. package/dist/internal/errors.js +81 -0
  478. package/dist/internal/errors.js.map +1 -0
  479. package/dist/internal/facade-artifact-guard.d.ts +30 -0
  480. package/dist/internal/facade-artifact-guard.d.ts.map +1 -0
  481. package/dist/internal/facade-artifact-guard.js +57 -0
  482. package/dist/internal/facade-artifact-guard.js.map +1 -0
  483. package/dist/internal/fetch.d.ts +10 -0
  484. package/dist/internal/fetch.d.ts.map +1 -0
  485. package/dist/internal/fetch.js +22 -0
  486. package/dist/internal/fetch.js.map +1 -0
  487. package/dist/internal/footprints.d.ts +24 -0
  488. package/dist/internal/footprints.d.ts.map +1 -0
  489. package/dist/internal/footprints.js +24 -0
  490. package/dist/internal/footprints.js.map +1 -0
  491. package/dist/internal/geometry-reuse/cache.d.ts +78 -0
  492. package/dist/internal/geometry-reuse/cache.d.ts.map +1 -0
  493. package/dist/internal/geometry-reuse/cache.js +332 -0
  494. package/dist/internal/geometry-reuse/cache.js.map +1 -0
  495. package/dist/internal/geometry-reuse/canonical.d.ts +34 -0
  496. package/dist/internal/geometry-reuse/canonical.d.ts.map +1 -0
  497. package/dist/internal/geometry-reuse/canonical.js +128 -0
  498. package/dist/internal/geometry-reuse/canonical.js.map +1 -0
  499. package/dist/internal/geometry-reuse/controller.d.ts +14 -0
  500. package/dist/internal/geometry-reuse/controller.d.ts.map +1 -0
  501. package/dist/internal/geometry-reuse/controller.js +288 -0
  502. package/dist/internal/geometry-reuse/controller.js.map +1 -0
  503. package/dist/internal/geometry-reuse/credentials.d.ts +6 -0
  504. package/dist/internal/geometry-reuse/credentials.d.ts.map +1 -0
  505. package/dist/internal/geometry-reuse/credentials.js +40 -0
  506. package/dist/internal/geometry-reuse/credentials.js.map +1 -0
  507. package/dist/internal/geometry-reuse/errors.d.ts +35 -0
  508. package/dist/internal/geometry-reuse/errors.d.ts.map +1 -0
  509. package/dist/internal/geometry-reuse/errors.js +44 -0
  510. package/dist/internal/geometry-reuse/errors.js.map +1 -0
  511. package/dist/internal/geometry-reuse/expiry.d.ts +3 -0
  512. package/dist/internal/geometry-reuse/expiry.d.ts.map +1 -0
  513. package/dist/internal/geometry-reuse/expiry.js +26 -0
  514. package/dist/internal/geometry-reuse/expiry.js.map +1 -0
  515. package/dist/internal/geometry-reuse/fingerprint.d.ts +26 -0
  516. package/dist/internal/geometry-reuse/fingerprint.d.ts.map +1 -0
  517. package/dist/internal/geometry-reuse/fingerprint.js +111 -0
  518. package/dist/internal/geometry-reuse/fingerprint.js.map +1 -0
  519. package/dist/internal/geometry-reuse/identity.d.ts +33 -0
  520. package/dist/internal/geometry-reuse/identity.d.ts.map +1 -0
  521. package/dist/internal/geometry-reuse/identity.js +201 -0
  522. package/dist/internal/geometry-reuse/identity.js.map +1 -0
  523. package/dist/internal/geometry-reuse/observer.d.ts +13 -0
  524. package/dist/internal/geometry-reuse/observer.d.ts.map +1 -0
  525. package/dist/internal/geometry-reuse/observer.js +28 -0
  526. package/dist/internal/geometry-reuse/observer.js.map +1 -0
  527. package/dist/internal/geometry-reuse/options.d.ts +26 -0
  528. package/dist/internal/geometry-reuse/options.d.ts.map +1 -0
  529. package/dist/internal/geometry-reuse/options.js +18 -0
  530. package/dist/internal/geometry-reuse/options.js.map +1 -0
  531. package/dist/internal/geometry-reuse/submit.d.ts +29 -0
  532. package/dist/internal/geometry-reuse/submit.d.ts.map +1 -0
  533. package/dist/internal/geometry-reuse/submit.js +87 -0
  534. package/dist/internal/geometry-reuse/submit.js.map +1 -0
  535. package/dist/internal/geometry-reuse/types.d.ts +47 -0
  536. package/dist/internal/geometry-reuse/types.d.ts.map +1 -0
  537. package/dist/internal/geometry-reuse/types.js +2 -0
  538. package/dist/internal/geometry-reuse/types.js.map +1 -0
  539. package/dist/internal/geometry-url-store.d.ts +59 -0
  540. package/dist/internal/geometry-url-store.d.ts.map +1 -0
  541. package/dist/internal/geometry-url-store.js +92 -0
  542. package/dist/internal/geometry-url-store.js.map +1 -0
  543. package/dist/internal/ground-merge.d.ts +66 -0
  544. package/dist/internal/ground-merge.d.ts.map +1 -0
  545. package/dist/internal/ground-merge.js +100 -0
  546. package/dist/internal/ground-merge.js.map +1 -0
  547. package/dist/internal/idempotent-dispatch.d.ts +26 -0
  548. package/dist/internal/idempotent-dispatch.d.ts.map +1 -0
  549. package/dist/internal/idempotent-dispatch.js +93 -0
  550. package/dist/internal/idempotent-dispatch.js.map +1 -0
  551. package/dist/internal/initialize.d.ts +18 -0
  552. package/dist/internal/initialize.d.ts.map +1 -0
  553. package/dist/internal/initialize.js +21 -0
  554. package/dist/internal/initialize.js.map +1 -0
  555. package/dist/internal/job-response.d.ts +22 -0
  556. package/dist/internal/job-response.d.ts.map +1 -0
  557. package/dist/internal/job-response.js +82 -0
  558. package/dist/internal/job-response.js.map +1 -0
  559. package/dist/internal/kernel-group.d.ts +46 -0
  560. package/dist/internal/kernel-group.d.ts.map +1 -0
  561. package/dist/internal/kernel-group.js +65 -0
  562. package/dist/internal/kernel-group.js.map +1 -0
  563. package/dist/internal/link.d.ts +3 -0
  564. package/dist/internal/link.d.ts.map +1 -0
  565. package/dist/internal/link.js +150 -0
  566. package/dist/internal/link.js.map +1 -0
  567. package/dist/internal/map-limit.d.ts +17 -0
  568. package/dist/internal/map-limit.d.ts.map +1 -0
  569. package/dist/internal/map-limit.js +30 -0
  570. package/dist/internal/map-limit.js.map +1 -0
  571. package/dist/internal/node-digest.d.ts +2 -0
  572. package/dist/internal/node-digest.d.ts.map +1 -0
  573. package/dist/internal/node-digest.js +11 -0
  574. package/dist/internal/node-digest.js.map +1 -0
  575. package/dist/internal/node-loader.d.ts +2 -0
  576. package/dist/internal/node-loader.d.ts.map +1 -0
  577. package/dist/internal/node-loader.js +8 -0
  578. package/dist/internal/node-loader.js.map +1 -0
  579. package/dist/internal/options.d.ts +32 -0
  580. package/dist/internal/options.d.ts.map +1 -0
  581. package/dist/internal/options.js +22 -0
  582. package/dist/internal/options.js.map +1 -0
  583. package/dist/internal/poll-engine.d.ts +57 -0
  584. package/dist/internal/poll-engine.d.ts.map +1 -0
  585. package/dist/internal/poll-engine.js +59 -0
  586. package/dist/internal/poll-engine.js.map +1 -0
  587. package/dist/internal/poll-notify.d.ts +7 -0
  588. package/dist/internal/poll-notify.d.ts.map +1 -0
  589. package/dist/internal/poll-notify.js +15 -0
  590. package/dist/internal/poll-notify.js.map +1 -0
  591. package/dist/internal/prepared-json.d.ts +10 -0
  592. package/dist/internal/prepared-json.d.ts.map +1 -0
  593. package/dist/internal/prepared-json.js +23 -0
  594. package/dist/internal/prepared-json.js.map +1 -0
  595. package/dist/internal/registry-document.d.ts +96 -0
  596. package/dist/internal/registry-document.d.ts.map +1 -0
  597. package/dist/internal/registry-document.js +196 -0
  598. package/dist/internal/registry-document.js.map +1 -0
  599. package/dist/internal/scene-alignment.d.ts +14 -0
  600. package/dist/internal/scene-alignment.d.ts.map +1 -0
  601. package/dist/internal/scene-alignment.js +23 -0
  602. package/dist/internal/scene-alignment.js.map +1 -0
  603. package/dist/internal/send-body.d.ts +26 -0
  604. package/dist/internal/send-body.d.ts.map +1 -0
  605. package/dist/internal/send-body.js +49 -0
  606. package/dist/internal/send-body.js.map +1 -0
  607. package/dist/internal/send-guard.d.ts +66 -0
  608. package/dist/internal/send-guard.d.ts.map +1 -0
  609. package/dist/internal/send-guard.js +95 -0
  610. package/dist/internal/send-guard.js.map +1 -0
  611. package/dist/internal/service.d.ts +40 -0
  612. package/dist/internal/service.d.ts.map +1 -0
  613. package/dist/internal/service.js +43 -0
  614. package/dist/internal/service.js.map +1 -0
  615. package/dist/internal/status-batch.d.ts +42 -0
  616. package/dist/internal/status-batch.d.ts.map +1 -0
  617. package/dist/internal/status-batch.js +174 -0
  618. package/dist/internal/status-batch.js.map +1 -0
  619. package/dist/internal/stream-sender.d.ts +14 -0
  620. package/dist/internal/stream-sender.d.ts.map +1 -0
  621. package/dist/internal/stream-sender.js +41 -0
  622. package/dist/internal/stream-sender.js.map +1 -0
  623. package/dist/internal/submission-stopped.d.ts +6 -0
  624. package/dist/internal/submission-stopped.d.ts.map +1 -0
  625. package/dist/internal/submission-stopped.js +8 -0
  626. package/dist/internal/submission-stopped.js.map +1 -0
  627. package/dist/internal/submission.d.ts +49 -0
  628. package/dist/internal/submission.d.ts.map +1 -0
  629. package/dist/internal/submission.js +207 -0
  630. package/dist/internal/submission.js.map +1 -0
  631. package/dist/internal/submit-body.d.ts +8 -0
  632. package/dist/internal/submit-body.d.ts.map +1 -0
  633. package/dist/internal/submit-body.js +69 -0
  634. package/dist/internal/submit-body.js.map +1 -0
  635. package/dist/internal/surfgrid-types.check.d.ts +6 -0
  636. package/dist/internal/surfgrid-types.check.d.ts.map +1 -0
  637. package/dist/internal/surfgrid-types.check.js +13 -0
  638. package/dist/internal/surfgrid-types.check.js.map +1 -0
  639. package/dist/internal/transport-choice.d.ts +14 -0
  640. package/dist/internal/transport-choice.d.ts.map +1 -0
  641. package/dist/internal/transport-choice.js +29 -0
  642. package/dist/internal/transport-choice.js.map +1 -0
  643. package/dist/internal/transport.d.ts +70 -0
  644. package/dist/internal/transport.d.ts.map +1 -0
  645. package/dist/internal/transport.js +246 -0
  646. package/dist/internal/transport.js.map +1 -0
  647. package/dist/internal/upload.d.ts +17 -0
  648. package/dist/internal/upload.d.ts.map +1 -0
  649. package/dist/internal/upload.js +66 -0
  650. package/dist/internal/upload.js.map +1 -0
  651. package/dist/internal/url-trim.d.ts +23 -0
  652. package/dist/internal/url-trim.d.ts.map +1 -0
  653. package/dist/internal/url-trim.js +29 -0
  654. package/dist/internal/url-trim.js.map +1 -0
  655. package/dist/internal/wait-job.d.ts +19 -0
  656. package/dist/internal/wait-job.d.ts.map +1 -0
  657. package/dist/internal/wait-job.js +61 -0
  658. package/dist/internal/wait-job.js.map +1 -0
  659. package/dist/internal/weather-static-cache.d.ts +44 -0
  660. package/dist/internal/weather-static-cache.d.ts.map +1 -0
  661. package/dist/internal/weather-static-cache.js +71 -0
  662. package/dist/internal/weather-static-cache.js.map +1 -0
  663. package/dist/internal/weather-static-decode.d.ts +48 -0
  664. package/dist/internal/weather-static-decode.d.ts.map +1 -0
  665. package/dist/internal/weather-static-decode.js +150 -0
  666. package/dist/internal/weather-static-decode.js.map +1 -0
  667. package/dist/internal/weather-window.d.ts +37 -0
  668. package/dist/internal/weather-window.d.ts.map +1 -0
  669. package/dist/internal/weather-window.js +64 -0
  670. package/dist/internal/weather-window.js.map +1 -0
  671. package/dist/internal/wire-json.d.ts +25 -0
  672. package/dist/internal/wire-json.d.ts.map +1 -0
  673. package/dist/internal/wire-json.js +123 -0
  674. package/dist/internal/wire-json.js.map +1 -0
  675. package/dist/internal/xhr-sender.d.ts +8 -0
  676. package/dist/internal/xhr-sender.d.ts.map +1 -0
  677. package/dist/internal/xhr-sender.js +82 -0
  678. package/dist/internal/xhr-sender.js.map +1 -0
  679. package/dist/job-errors.d.ts +54 -0
  680. package/dist/job-errors.d.ts.map +1 -0
  681. package/dist/job-errors.js +67 -0
  682. package/dist/job-errors.js.map +1 -0
  683. package/dist/job-model.d.ts +92 -0
  684. package/dist/job-model.d.ts.map +1 -0
  685. package/dist/job-model.js +28 -0
  686. package/dist/job-model.js.map +1 -0
  687. package/dist/job-options.d.ts +136 -0
  688. package/dist/job-options.d.ts.map +1 -0
  689. package/dist/job-options.js +2 -0
  690. package/dist/job-options.js.map +1 -0
  691. package/dist/jobs.d.ts +134 -0
  692. package/dist/jobs.d.ts.map +1 -0
  693. package/dist/jobs.js +336 -0
  694. package/dist/jobs.js.map +1 -0
  695. package/dist/legend.d.ts +116 -0
  696. package/dist/legend.d.ts.map +1 -0
  697. package/dist/legend.js +142 -0
  698. package/dist/legend.js.map +1 -0
  699. package/dist/logger.d.ts +29 -0
  700. package/dist/logger.d.ts.map +1 -0
  701. package/dist/logger.js +19 -0
  702. package/dist/logger.js.map +1 -0
  703. package/dist/mesh-clean.d.ts +64 -0
  704. package/dist/mesh-clean.d.ts.map +1 -0
  705. package/dist/mesh-clean.js +53 -0
  706. package/dist/mesh-clean.js.map +1 -0
  707. package/dist/mesh.d.ts +42 -0
  708. package/dist/mesh.d.ts.map +1 -0
  709. package/dist/mesh.js +35 -0
  710. package/dist/mesh.js.map +1 -0
  711. package/dist/node-billing.js +13 -0
  712. package/dist/node-geodata.js +104 -0
  713. package/dist/node-runtime.cjs +15702 -0
  714. package/dist/node-runtime.cjs.map +7 -0
  715. package/dist/node-runtime.d.ts +192 -0
  716. package/dist/node-runtime.d.ts.map +1 -0
  717. package/dist/node-runtime.js +35 -0
  718. package/dist/node-runtime.js.map +1 -0
  719. package/dist/node-tiling.js +41 -0
  720. package/dist/node-utilities.js +13 -0
  721. package/dist/node.d.ts +5 -0
  722. package/dist/node.d.ts.map +1 -0
  723. package/dist/node.js +155 -0
  724. package/dist/node.js.map +1 -0
  725. package/dist/parts/daylight-result.d.ts +149 -0
  726. package/dist/parts/daylight-result.d.ts.map +1 -0
  727. package/dist/parts/daylight-result.js +150 -0
  728. package/dist/parts/daylight-result.js.map +1 -0
  729. package/dist/parts/interior-binary.d.ts +76 -0
  730. package/dist/parts/interior-binary.d.ts.map +1 -0
  731. package/dist/parts/interior-binary.js +112 -0
  732. package/dist/parts/interior-binary.js.map +1 -0
  733. package/dist/parts/merge.d.ts +52 -0
  734. package/dist/parts/merge.d.ts.map +1 -0
  735. package/dist/parts/merge.js +147 -0
  736. package/dist/parts/merge.js.map +1 -0
  737. package/dist/parts/plan.d.ts +51 -0
  738. package/dist/parts/plan.d.ts.map +1 -0
  739. package/dist/parts/plan.js +131 -0
  740. package/dist/parts/plan.js.map +1 -0
  741. package/dist/parts/result-format.d.ts +42 -0
  742. package/dist/parts/result-format.d.ts.map +1 -0
  743. package/dist/parts/result-format.js +44 -0
  744. package/dist/parts/result-format.js.map +1 -0
  745. package/dist/parts/run.d.ts +141 -0
  746. package/dist/parts/run.d.ts.map +1 -0
  747. package/dist/parts/run.js +265 -0
  748. package/dist/parts/run.js.map +1 -0
  749. package/dist/parts/submit.d.ts +18 -0
  750. package/dist/parts/submit.d.ts.map +1 -0
  751. package/dist/parts/submit.js +86 -0
  752. package/dist/parts/submit.js.map +1 -0
  753. package/dist/parts/types.d.ts +194 -0
  754. package/dist/parts/types.d.ts.map +1 -0
  755. package/dist/parts/types.js +42 -0
  756. package/dist/parts/types.js.map +1 -0
  757. package/dist/pricing.d.ts +14 -0
  758. package/dist/pricing.d.ts.map +1 -0
  759. package/dist/pricing.js +26 -0
  760. package/dist/pricing.js.map +1 -0
  761. package/dist/request-validation.d.ts +18 -0
  762. package/dist/request-validation.d.ts.map +1 -0
  763. package/dist/request-validation.js +314 -0
  764. package/dist/request-validation.js.map +1 -0
  765. package/dist/results/archive.d.ts +37 -0
  766. package/dist/results/archive.d.ts.map +1 -0
  767. package/dist/results/archive.js +128 -0
  768. package/dist/results/archive.js.map +1 -0
  769. package/dist/results/index.d.ts +13 -0
  770. package/dist/results/index.d.ts.map +1 -0
  771. package/dist/results/index.js +7 -0
  772. package/dist/results/index.js.map +1 -0
  773. package/dist/results/retired.d.ts +3 -0
  774. package/dist/results/retired.d.ts.map +1 -0
  775. package/dist/results/retired.js +39 -0
  776. package/dist/results/retired.js.map +1 -0
  777. package/dist/results/router.d.ts +70 -0
  778. package/dist/results/router.d.ts.map +1 -0
  779. package/dist/results/router.js +108 -0
  780. package/dist/results/router.js.map +1 -0
  781. package/dist/results/surface-analysis.d.ts +66 -0
  782. package/dist/results/surface-analysis.d.ts.map +1 -0
  783. package/dist/results/surface-analysis.js +5 -0
  784. package/dist/results/surface-analysis.js.map +1 -0
  785. package/dist/results/surface-columns-bytes.d.ts +35 -0
  786. package/dist/results/surface-columns-bytes.d.ts.map +1 -0
  787. package/dist/results/surface-columns-bytes.js +40 -0
  788. package/dist/results/surface-columns-bytes.js.map +1 -0
  789. package/dist/results/surface-columns.d.ts +288 -0
  790. package/dist/results/surface-columns.d.ts.map +1 -0
  791. package/dist/results/surface-columns.js +168 -0
  792. package/dist/results/surface-columns.js.map +1 -0
  793. package/dist/results/surface-record.d.ts +71 -0
  794. package/dist/results/surface-record.d.ts.map +1 -0
  795. package/dist/results/surface-record.js +170 -0
  796. package/dist/results/surface-record.js.map +1 -0
  797. package/dist/results/surface-render.d.ts +68 -0
  798. package/dist/results/surface-render.d.ts.map +1 -0
  799. package/dist/results/surface-render.js +25 -0
  800. package/dist/results/surface-render.js.map +1 -0
  801. package/dist/results/surface.d.ts +14 -0
  802. package/dist/results/surface.d.ts.map +1 -0
  803. package/dist/results/surface.js +16 -0
  804. package/dist/results/surface.js.map +1 -0
  805. package/dist/serialization.d.ts +54 -0
  806. package/dist/serialization.d.ts.map +1 -0
  807. package/dist/serialization.js +134 -0
  808. package/dist/serialization.js.map +1 -0
  809. package/dist/to-grade.d.ts +38 -0
  810. package/dist/to-grade.d.ts.map +1 -0
  811. package/dist/to-grade.js +100 -0
  812. package/dist/to-grade.js.map +1 -0
  813. package/dist/utilities.d.ts +10 -0
  814. package/dist/utilities.d.ts.map +1 -0
  815. package/dist/utilities.js +9 -0
  816. package/dist/utilities.js.map +1 -0
  817. package/dist/vegetation-mesh.d.ts +73 -0
  818. package/dist/vegetation-mesh.d.ts.map +1 -0
  819. package/dist/vegetation-mesh.js +73 -0
  820. package/dist/vegetation-mesh.js.map +1 -0
  821. package/dist/vegetation.d.ts +109 -0
  822. package/dist/vegetation.d.ts.map +1 -0
  823. package/dist/vegetation.js +155 -0
  824. package/dist/vegetation.js.map +1 -0
  825. package/dist/version.d.ts +7 -0
  826. package/dist/version.d.ts.map +1 -0
  827. package/dist/version.js +7 -0
  828. package/dist/version.js.map +1 -0
  829. package/dist/weather-epw.d.ts +159 -0
  830. package/dist/weather-epw.d.ts.map +1 -0
  831. package/dist/weather-epw.js +251 -0
  832. package/dist/weather-epw.js.map +1 -0
  833. package/dist/weather-static.d.ts +81 -0
  834. package/dist/weather-static.d.ts.map +1 -0
  835. package/dist/weather-static.js +278 -0
  836. package/dist/weather-static.js.map +1 -0
  837. package/dist/weather.d.ts +166 -0
  838. package/dist/weather.d.ts.map +1 -0
  839. package/dist/weather.js +171 -0
  840. package/dist/weather.js.map +1 -0
  841. package/dist/worker/client.d.ts +193 -0
  842. package/dist/worker/client.d.ts.map +1 -0
  843. package/dist/worker/client.js +242 -0
  844. package/dist/worker/client.js.map +1 -0
  845. package/dist/worker/index.d.ts +11 -0
  846. package/dist/worker/index.d.ts.map +1 -0
  847. package/dist/worker/index.js +10 -0
  848. package/dist/worker/index.js.map +1 -0
  849. package/dist/worker/protocol.d.ts +129 -0
  850. package/dist/worker/protocol.d.ts.map +1 -0
  851. package/dist/worker/protocol.js +101 -0
  852. package/dist/worker/protocol.js.map +1 -0
  853. package/dist/worker/serve.d.ts +51 -0
  854. package/dist/worker/serve.d.ts.map +1 -0
  855. package/dist/worker/serve.js +115 -0
  856. package/dist/worker/serve.js.map +1 -0
  857. package/generated/infrared-core.d.ts +2454 -0
  858. package/generated/infrared-core.js +7151 -0
  859. package/generated/infrared-core_bg.wasm +0 -0
  860. package/generated/infrared-core_bg.wasm.d.ts +261 -0
  861. package/generated-threads/LICENSE +201 -0
  862. package/generated-threads/infrared-core.js +7280 -0
  863. package/generated-threads/infrared-core_bg.wasm +0 -0
  864. package/generated-threads/snippets/infrared-core-wasm-2ae142e530b240d1/inline0.js +8 -0
  865. package/generated-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js +124 -0
  866. package/package.json +114 -4
package/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2024-present Infrared City GmbH
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
package/MIGRATION.md ADDED
@@ -0,0 +1,394 @@
1
+ # Migration
2
+
3
+ > **Historical notes.** This file covers the 0.12.13 – 0.15 prereleases only. To upgrade to 1.0.0, read [UPGRADING.md](UPGRADING.md).
4
+
5
+ This file is the change history of the 0.12.13 and 0.13.0 prereleases. Each
6
+ section describes the state at its date; a later section or a later build can
7
+ change it (for example, the saved-schedule contract is now 7). To upgrade from
8
+ 0.12.12 to 0.13.0, read [`UPGRADING.md`](UPGRADING.md).
9
+
10
+ ## 0.12.13-next.4 — staging integration
11
+
12
+ This private prerelease includes the utility-removal and performance changes
13
+ below. Install `hyparquet` and `hyparquet-compressors` when you use Overture
14
+ acquisition. These are optional peer dependencies.
15
+
16
+ The package also fixes Node 18 hashing, initialization of the Node tiling
17
+ entry, and browser weather reads when CORS hides `Content-Encoding`. Response
18
+ byte limits remain active. Saved schedules use contract version 4; start a
19
+ fresh run for schedules made by an older contract.
20
+
21
+ This is a GitHub Packages prerelease with the `next` tag. The sections
22
+ below describe the removal contract; they do not announce a stable release.
23
+
24
+ ## Long or narrow sites: the compose follows the tiles (2026-09-09)
25
+
26
+ A site is READ as its bounding box, and until now each read chunk was COMPOSED
27
+ as a whole rectangle. For a compact site the surplus is a few per cent; for a
28
+ long, narrow or diagonal one it is most of the answer. The rectangle list the
29
+ kernel now gets is `chunk ∩ union(tile rectangles)`, split into axis-aligned
30
+ pieces, so the merged ground document carries no ground from the empty corners
31
+ of the box. The READ is unchanged and stays per chunk.
32
+
33
+ | Change | What to do |
34
+ |---|---|
35
+ | **An elongated site's merged ground document gets smaller** | Nothing — that is the point. A 10 km x 300 m diagonal corridor's document loses the ground in the empty corners of its bounding box, which no simulation tile ever read. A COMPACT site does not move at all: its chunks each decompose to ONE piece equal to the chunk, so both kernel argument documents are byte-for-byte the ones this SDK built before, and the 5 km2 Vienna box is pinned that way against the real kernel tiler. |
36
+ | **A second one-frame warning, on EXTENT** | Nothing, or split the site. Above 5 km on the site rectangle's longest side the SDK logs a warning naming the far-end error, in addition to the 20 km2 area rule: the flat-frame error grows with the SQUARE of the extent, so a 10 km x 300 m strip is 3 km2 — a seventh of the area rule — and still carries the error of a 10 km site (about 17 m at 48 deg N). Both warnings go through the caller's `Logger`, so `silentLogger` silences them and nothing reaches `console`. |
37
+ | a body's `mesh_id` renumbers again, on a multi-piece SITE | Nothing, as in D48: `mesh_id` is an index into one extrusion call's output and was never stable across SDK versions. The kernel numbers meshes per rectangle, and a site that decomposes to several pieces is several rectangles. (This host extrudes the whole SITE in one call, not per chunk — the per-chunk wording belongs to the Python host.) Building KEYS, vertex counts, `indices` and volumes do not change, and a footprint claimed by two pieces is kept by the FIRST piece in decomposition order. |
38
+ | **`SiteChunk` gained a required `pieces` field** | Nothing if you only READ what `siteChunks` returns. A hand-built `{ id, bbox }` literal no longer type-checks: add `pieces: [{ id, bbox }]`, which is what a single-piece chunk carries, or call `namePieces(id, [bbox])`. `SiteChunk` is exported from `/geodata`, so this is a compile break for a caller who constructs one. |
39
+ | The `/geodata` sub-export gained the decomposition vocabulary | Nothing. `decompose`, `slabToleranceDeg`, `SLAB_TOLERANCE_FACTOR`, `MAX_SLAB_TOLERANCE_DEG`, `namePieces`, `bboxAreaM2`, `unionAreaM2`, `farEndErrorM` and `SITE_EXTENT_WARNING_KM` are additions. They are on `/geodata`, this package's low-level acquisition surface, because `siteChunks` is and its answer now carries pieces. The Python host keeps the same code in `_internal`; that split is pre-existing and deliberate. |
40
+ | A chunk that meets a tile rectangle only along an EDGE is no longer read | Nothing. The old prune was the inclusive D47 predicate; a piece list is by AREA, and a zero-overlap chunk composed nothing but duplicate road buffers the merge deduped away. No chunk of a filled grid is affected. |
41
+ | **A SMALL non-rectangular site is composed as pieces too** | Nothing, and expect fewer ground features. Below 4 km2 both hosts used to compose the whole site rectangle whatever its shape; the piece rule now applies at every size, so an L-shaped, sparse or diagonal site under 4 km2 composes as `site-p0`, `site-p1`, … and its merged ground document loses the ground in the corners no simulation tile reads. A RECTANGULAR small site is still exactly ONE rectangle and is byte-identical to what this SDK built before. D57. |
42
+
43
+ `docs/DEVIATIONS.md` D57 records the rulings, the decomposition, the pinned
44
+ cross-host piece lists and the measurements.
45
+
46
+ ## Breaking: the read margin follows the analysis type (2026-09-09)
47
+
48
+ The three acquisition entry points take an optional `analysisType`, and the
49
+ READ rectangles follow it: `getTilingConfig(analysisType).contextSizeM / 2` for
50
+ buildings (256 m for the two wind analyses, 384 m for every other one) and
51
+ `ceil(sqrt(2) * that)` for ground materials and trees (363 m and 544 m). The
52
+ same analysis type decides the tile grid the rectangles are centred on. Before
53
+ this, all three sized every read on the WIND preset — `getArea` used a
54
+ hard-coded 363 and `getBuildingsInArea` used
55
+ `max(tile.size.x, tile.size.y) / 2`, which is 256 on BOTH presets — so for the
56
+ solar family (solar radiation, sky view factors, daylight, sun hours and both
57
+ thermal-comfort types) the outermost band of context buildings, trees and
58
+ ground was never read, and the run completed and billed with a shadow that is
59
+ not cast. `docs/DEVIATIONS.md` D54 records the rule and its measurements.
60
+
61
+ | Change | What to do |
62
+ |---|---|
63
+ | **A read with no `analysisType` now uses the WIDEST margin** | Nothing, unless you want the smaller read. The default is correct for every analysis and costs a wind caller extra reading; the reverse default drops context with no other symptom. A wind-only client passes `analysisType: "wind-speed"` and gets exactly the read it had before. The default also reads the SOLAR tile grid, so a 5 km2 site is 25 read rectangles rather than 81, and each is wider. |
64
+ | **`runArea` refuses a layer read too narrow for the run** | Acquire with the analysis you are going to run, or with no `analysisType` at all. All three services record `readMarginM` and `analysisType` on what they return, and `runArea` throws `ReadMarginError` — naming both margins and both analysis types — before a single job is submitted. Equal or wider passes, so one default acquisition serves every analysis. A bare map records nothing, makes no claim and is never refused. |
65
+ | `RunAreaOptions.vegetation` and `.groundMaterials` accept the acquired objects | Nothing. They now take `AreaVegetation` and `AreaGroundMaterials` as well as the maps inside them, which is what lets the recorded margin travel. The maps keep working. |
66
+ | `ReadMarginError` and the derivations are on the package root | Catch `ReadMarginError` by class rather than by `error.name`. `readMarginM`, `groundReadDistanceM`, `requiredMarginM`, `resolveReadAnalysisType` and `WIDEST_READ_ANALYSIS_TYPE` are exported from the root and from `/geodata`, so a caller can size their own read. The GATE is not exported: `checkReadMargin`, `LAYER_REQUIREMENT` and the `ReadMarginRecord` type are how `runArea` refuses, not calls a caller makes, so they stay inside the package — as the same four do on the Python host. |
67
+ | **A small area now cleans to the circle it was READ with** | Nothing, and one polygon now gives one ground scene on both SDKs. `cleaningExtent` floored the clean-crop radius at a hard-coded 363 m while the Python host floored it at the read distance — 544 m on the shipped default — so any area under about 0.6 km² cleaned to two different circles depending on which SDK the caller used. `cleaningExtent(polygon, fetchDistanceM)` now REQUIRES it and `GroundMaterialsService.getArea` passes its own. The function is internal — it is not exported from `/geodata` or the package root — so no caller outside this package is affected. |
68
+ | **`AreaBuildings`, `AreaGroundMaterials` and `AreaVegetation` gained two REQUIRED members** | If you construct one of these by hand — a test double, a rehydrated JSON — add `readMarginM` and `analysisType`. They are required rather than optional because the services always set them, and a value that may be absent is a value the refusal cannot rely on. The Python twins are optional because they are dataclasses a caller may build positionally; a layer that records nothing is never refused on either host. |
69
+
70
+ ## Packaging: the parquet stack becomes optional (2026-09-08)
71
+
72
+ | Changed | Before | Now |
73
+ |---|---|---|
74
+ | `hyparquet`, `hyparquet-compressors` | regular `dependencies`, installed with the package | OPTIONAL `peerDependencies`. npm does not install an optional peer, so `npm install @infrared-city/infrared-sdk` no longer brings them (8.8 MB → 8.0 MB of `node_modules`, measured from this branch's tarball against the tarball it replaces — this package is not published on npm yet, so there is no released install to compare with). Run `npm install hyparquet hyparquet-compressors` to read Overture Maps. |
75
+
76
+ **Nothing to change unless you read Overture.** Payloads, direct jobs, area
77
+ schedules, polling, merge, results, pricing, images, the static weather
78
+ catalog and every FlatGeobuf layer (trees, city overlays — read by the bundled
79
+ kernel) work on the base install exactly as before.
80
+
81
+ **If you do read Overture**, add the two packages. Until you do, a ground
82
+ materials or buildings read over Overture rejects with one
83
+ `GeodataDependencyError` naming the exact command
84
+ (`GeodataDependencyError.installCommand`); it never resolves to an empty
85
+ feature list and never falls back to another decoder. The root entry still
86
+ loads with neither package present. See `docs/DEVIATIONS.md` D55 and the
87
+ README install matrix.
88
+
89
+ ## Additive: the six global thermal controls (2026-09-08)
90
+
91
+ * **New optional fields on the thermal requests, nothing to change.** A
92
+ `thermal-comfort-index` or `thermal-comfort-statistics` request now carries
93
+ `physics`, `wallAlbedo`, `wallAbsorptivity`, `canopyTransmissivity`,
94
+ `groundAlbedo` and `groundDtMax` to the wire as `physics`, `wall-albedo`,
95
+ `wall-absorptivity`, `canopy-transmissivity`, `ground-albedo` and
96
+ `ground-dt-max` — the six GLOBAL controls those two models read off the top
97
+ level of the request body. Until now the camelCase conversion DROPPED all six
98
+ in silence (no error: an unknown key is not an error on that path), so a
99
+ caller who set one paid for a run at the model's defaults. All six are
100
+ optional; a request that sets none is byte-identical on the wire to before and
101
+ **its `configHash` is unchanged — every saved schedule still resumes, and
102
+ `SCHEDULE_CONTRACT_VERSION` is now 4** (weather run identity, below). Setting or changing one DOES change
103
+ `configHash`, so `retryFrom` refuses a resume across a control change rather
104
+ than merging two physical scenes into one grid. `physics` is a CLOSED set
105
+ (`"v1"`, `"detail"`, `"advanced"`, `"advanced-moist"`; absent =
106
+ `"advanced-moist"`) checked in the conversion — an unknown spelling now
107
+ throws a `TypeError` instead of reaching the server, because
108
+ `thermal-comfort-statistics` does NOT refuse an unknown tier: it runs the
109
+ advanced engine and bills for it. The other five are numbers.
110
+
111
+ * **One behaviour change to know about.** Passing any of the six to
112
+ `solar-radiation`, `direct-sun-hours` or `daylight-availability` now throws a
113
+ `TypeError` naming the field. Those models read none of them, and until now
114
+ the control was dropped in silence and the run billed at the model's defaults.
115
+ If you were passing one there, remove it. See `docs/DEVIATIONS.md` D53.
116
+
117
+ ## Breaking: an unknown ground-material name now throws before submission (2026-09-09)
118
+
119
+ * **What changed.** A `ground-materials` layer key that is not one of
120
+ `asphalt`, `concrete`, `soil`, `vegetation` or `water` now throws before a
121
+ job is submitted. Until now this SDK checked ground-material keys NOWHERE:
122
+ the kernel export existed and nothing called it. Those five are the only
123
+ names the simulation resolves to a physics row; every other name lands on the
124
+ model's UNKNOWN material row, so the job succeeded, billed, and returned a
125
+ thermal result computed from the wrong surface. The message names the
126
+ offending key and all five accepted names.
127
+
128
+ * **`building` is one of the names that now throws.** It is a land-cover class,
129
+ not a ground surface, and the models never knew it. The direct-acquisition
130
+ path has never emitted it, so acquired layers are unaffected — a legacy
131
+ Mapbox-keyed document is what breaks. Re-key it, or drop the layer: the model
132
+ fills ground it cannot classify with the default material anyway.
133
+ `cleanV3Local` throws on a `building` layer too — including as the
134
+ `defaultLayer` — rather than removing it: every host cleans before it
135
+ submits, so a cleaner that dropped the layer would swallow this refusal and
136
+ return a document one layer short.
137
+
138
+ * **A registry UUID key gets its own message.** The remedy is different: the
139
+ material name is in `features[].properties.material`, not in the key.
140
+
141
+ * **Case and whitespace no longer matter, and duplicates are refused.** The key
142
+ is trimmed and lower-cased before it is checked, exactly as the worker does.
143
+ Two keys that normalise to the same name are refused rather than one silently
144
+ overwriting the other.
145
+
146
+ * **Where the check runs.** `validatePreparedAnalysisRequest`, which every job
147
+ body passes through — single-tile and per-tile alike — plus `runArea`'s
148
+ planning step for the acquired `groundMaterials` option, which never reaches
149
+ the payload gate. Both ask the same kernel op, `validateGroundLayers`.
150
+
151
+ * **A core built before this SDK version will fail to initialize.**
152
+ `validateGroundLayers` is on the required-exports list, so a mismatched
153
+ kernel is one loud failure at `initializeCore` rather than a `TypeError` at
154
+ the call. See `docs/DEVIATIONS.md` D56.
155
+
156
+ ## Utility-removal contract — included in 0.12.13-next.4
157
+
158
+ This prerelease removes every SDK call to the utilities service. Service
159
+ shutdown is a separate operations decision. Trees, ground materials, buildings, tree meshes, grid images and
160
+ weather are all read from the public data hosts and computed in the bundled
161
+ kernel. No option selects a service path, because there is no service path.
162
+
163
+ Every removed option raises a `TypeError` (`InvalidOptionError`) whose message
164
+ names the replacement. That guard stays for one minor version and is then
165
+ dropped.
166
+
167
+ ### Removed public API
168
+
169
+ | Removed | Replacement |
170
+ |---|---|
171
+ | `acquisition` option — client (`new InfraredClient({ acquisition })`) and each of `getArea` / `getBuildingsInArea` | Nothing. The public-data path is the only path; delete the option. All four sites raise the `TypeError`. |
172
+ | `Acquisition` type, `resolveAcquisition()` | Nothing; both described the choice that is gone. |
173
+ | `cleaner: "remote"` | Leave `cleaner` unset. Clean-v3 runs in the bundled kernel, on data that never leaves the process. |
174
+ | `cleaner: "local"` | Leave `cleaner` unset; that is now the default. |
175
+ | `cleaner: <GroundMaterialCleaner>` | **Unchanged.** A caller's own cleaner object is still accepted; it is an extension seam, not a service selector. |
176
+ | `GroundMaterialsService.getRaw(lat, lon, distance, source)` | `getRaw(lat, lon, distance)`. Same name, same return; the `source` argument named a service query parameter and is gone. |
177
+ | `GroundMaterialsService.getRawDirect()` | `getRaw()`. |
178
+ | `GroundMaterialsService.clean(layers, …)` | Leave `cleaner` unset on `getArea`, or call `cleanV3Local` / `LocalCleaner` yourself. |
179
+ | `VegetationService.getGeoJson(lat, lon, distance, source)` | `getGeoJson(lat, lon, distance)`. Same name, same return; `source` is gone. |
180
+ | `VegetationService.getGeoJsonDirect()` | `getGeoJson()`. |
181
+ | `BuildingsService.getBuildings(request)` | `getBuildingsInArea(polygon)`. The single-tile `POST /buildings` route is deleted. |
182
+ | `BuildingsRequest`, `BuildingsResponse` types | Nothing; they were that route's wire shapes. |
183
+ | `BuildingsConfig.compress`, `.optimizations`, `.outputFormat` | Nothing. They shaped the deleted request; the extrusion is local and always returns dotbim meshes. |
184
+ | `AreaBuildings.buildingIds` | **Kept, always empty.** The deleted Lambda returned Mapbox ids only, and the public sources carry none. |
185
+ | `TimeFilters.filter` (the `hour-filter` body field) | Filter the returned records yourself; the kernel has no twin for it. |
186
+ | `selectFgbBackend()`, `libraryFgbAvailable()`, `setFgbLibraryModule()`, `FgbBackend` | Nothing. The kernel reader is the only FlatGeobuf backend. |
187
+ | `readFgbBytes(bytes, bbox, { backend })` | `readFgbBytes(bytes, bbox)`. |
188
+ | `./geodata` subpath: `hasKernelFunctions()`, `kernelFgbAvailable()` | Nothing. The kernel-probe pattern is gone; every kernel call is `requireCore().name(...)`, and a missing export is one loud failure at `initializeCore()`, not a per-call probe (`docs/DEVIATIONS.md` D42). |
189
+ | `roadsToIrFeatures(features)` | **Unchanged**, and now a thin wrapper over the kernel operation `roadsNormalize`. |
190
+
191
+ ### Behaviour changes
192
+
193
+ - **Weather is read from a public static catalog.** `WeatherService` keeps
194
+ `getWeatherFileFromLocation`, `getWeatherFileFromIdentifier` and
195
+ `filterWeatherData`, with the same return shapes. `radius` is in kilometres.
196
+ `getWeatherFileFromIdentifier` now returns the station document object
197
+ rather than `unknown`. Failures are a typed `WeatherServiceError` carrying
198
+ the status the deleted route would have answered.
199
+ - **Private and custom-EPW weather files are no longer looked up by id.**
200
+ They were ownership-gated per request and carry no public identity, so a
201
+ cacheable public object cannot enforce the check and they are not exported.
202
+ A lookup for one raises `WeatherServiceError` with status 404. Bring the EPW
203
+ file itself instead (BYO weather). No station is ever substituted for it.
204
+ - **The public weather catalog is available.** Catalog weather reads use
205
+ `https://geo.infrared.city/weather/latest.json`. Bring-your-own weather
206
+ does not use this catalog.
207
+ - **Bring your own weather file.** `parseEpw(text)` (also
208
+ `client.weather.parseEpw`) validates any `.epw` file in the bundled core and
209
+ returns a `WeatherDocument`. Pass it as `weather` in a `runArea` input, or to
210
+ `client.weather.filterWeatherData(document, filters)`. There is no
211
+ registration, no upload and no private weather database, and the file makes
212
+ no request of any kind. A file the core refuses raises `EpwParseError`; a
213
+ file that cannot serve the model for the window — a gap in a required column
214
+ inside it, or a window shorter than a year where the model needs one —
215
+ raises `WeatherModelInputsError`. Both happen before any request is
216
+ submitted.
217
+ - **A gap in a weather column is refused, not dropped.** `series` used to skip
218
+ a `null`, leaving that column one shorter than its siblings so every later
219
+ hour read the next hour's value. It now raises and names the row. The PWC
220
+ wind pair is unchanged: it drops the pair together, which keeps speed and
221
+ direction aligned.
222
+ - **A retry must prove it uses the same weather.** `runArea` records
223
+ `weatherIdentity` and `scheduleContractVersion` on the schedule; a
224
+ `retryFrom` built from different weather, or one written before those fields
225
+ existed, throws `WeatherIdentityError` before any request. `configHash` is
226
+ unchanged and nothing new is sent to the server.
227
+ - **The identity names the RUN, not the FILE (2026-09-09).** It is the
228
+ kernel's `ir.weather.run-identity/1` over the SUBMITTED columns, the payload
229
+ `latitude` and `longitude`, and the window (`docs/DEVIATIONS.md` D45 §5a).
230
+ Six things follow, and only one of them asks anything of you:
231
+ - **Catalog runs and hand-built-array runs are now RESUMABLE.** They used to
232
+ carry no identity and were written unresumable from the first run.
233
+ - `schedule.weatherIdentity` no longer equals `document.identity`, and is
234
+ not meant to: two digests, two questions, two version tags. Never compare
235
+ one with the other. `WeatherDocument.identity` still names the file and is
236
+ still provenance; it is no longer recorded on a schedule.
237
+ - A retry whose payload `latitude` or `longitude` moved is refused. Latitude
238
+ moves the sun, and nothing else a resume compares moved with it.
239
+ - A retry from a DIFFERENT file that agrees inside your window is now
240
+ admitted: the two runs submit the same arrays, so they are one weather.
241
+ The old refusal named a difference no model reads.
242
+ - A changed EPW header location, hour basis or `year` column no longer moves
243
+ the digest: none of them is submitted.
244
+ - **A schedule written by an earlier DEVELOPMENT build refuses to resume.**
245
+ `scheduleContractVersion` is 4; versions 2 and 3 recorded a FILE identity
246
+ under the same field, which can never equal a version-4 value, so the
247
+ resume is refused BY NAME with migration guidance rather than compared.
248
+ **Released SDKs never wrote them** — this field does not exist in any
249
+ published version — so this affects only a schedule saved from a local
250
+ build of this branch. There is no dual-accept path and no override flag.
251
+ `CONFIG_HASH_FOLD_CONTRACT_VERSION` stays 3, so the D51 refusal is
252
+ unchanged.
253
+ - **A parsed weather document is refused where it cannot be transformed.**
254
+ `runArea` / `prepareAnalysisPayload` throw when `weather` is passed with the
255
+ wire-shaped `analysis-type` input form, without `dateFilters`, or for an
256
+ analysis that reads no weather array. Those paths returned the input
257
+ untransformed, so the whole parsed EPW would have been serialised into the
258
+ request body and the schedule would have been stamped with an identity for
259
+ a run that never used the file.
260
+ - **`solarModel` is refused in an area input.** `solarModel` belongs to
261
+ `analysisType: "energy-balance"`, the one analysis whose worker reads it
262
+ (`docs/DEVIATIONS.md` D45 §6); the request carries no `solar-model` field,
263
+ so it could only validate a model the request cannot ask for. To check a
264
+ file against interior irradiance, call `document.modelInputs({
265
+ analysisType, timePeriod, solarModel })` directly.
266
+ - **A malformed time window is refused.** A month outside 1-12, an hour
267
+ outside 0-23 or a day outside its own month now raises. This package
268
+ validated none of that before.
269
+ - **A window that wraps the year is refused.** A window where the end month
270
+ is before the start month (for example `15 December → 15 January`) now
271
+ raises. No model runs a wrapping window: the scheduler answers HTTP 400 and
272
+ the Rust worker answers 422 for one. Split it into two forward requests. A
273
+ single-hour window (`start === end`) stays valid. See `docs/DEVIATIONS.md`
274
+ D45 §1. **Superseded 2026-10-05:** a year wrap is accepted. It is a date
275
+ span of the one typical year, in calendar order of the year.
276
+ - **Column-form `weatherData` in an area input is filtered by the kernel.** When
277
+ `weatherData` is a station document's column object (parallel `month`, `day`,
278
+ `hour` arrays), `prepareAreaPayload` now selects the window with the kernel's
279
+ `weatherFilterHours` — month AND day AND hour, EPW hours 1-24 matched on a
280
+ 0-23 basis — the same filter the deleted service ran, over the RESOLVED
281
+ window (`dateFilters.period` with the `dateFilters.filter` day/hour shorthand
282
+ folded in, which is also the `time-period` the model receives). Up to 0.12
283
+ this path kept every hour of the months in range and applied the `filter.hour`
284
+ band against the EPW 1-24 column, so the arrays and the declared window
285
+ disagreed. Row-form `weatherData` is unchanged. `initializeCore()` must have
286
+ run first; a missing core raises `CoreNotReadyError`, not a data error.
287
+ - **The Node ESM entry exports the whole surface.** `import { renderGridPng }
288
+ from "@infrared-city/infrared-sdk"` works under Node. The Node entry is a
289
+ name-by-name re-export of the CJS build and had fallen 19 names behind
290
+ (registry images, bring-your-own weather, `InvalidOptionError`, ...);
291
+ `tests/node-wrapper-parity.test.ts` now fails the test step on any gap.
292
+ - **`zenithLuminance`** is unchanged here and was always spelled correctly;
293
+ the Python SDK's misspelling is fixed to match (`docs/DEVIATIONS.md` D45).
294
+ - **`hyparquet` and `hyparquet-compressors` are optional peer dependencies.**
295
+ Install them for Overture reads. A missing reader raises an error with the
296
+ install command. `flatgeobuf` is no longer a dependency.
297
+ - **A core mismatch fails at `initializeCore()`.** The FlatGeobuf reader, the
298
+ normalisers, the extruder and five weather operations (two for the static
299
+ catalog, three for bring-your-own) are now on the required-export list, so
300
+ an older core is one loud failure instead of a path that quietly picks
301
+ older semantics.
302
+ - **`AreaBuildings.skippedFootprints` stays empty.** The kernel extruder drops
303
+ a footprint it cannot represent, and listing them would mean parsing every
304
+ footprint in the host. The field stays in the shape.
305
+ - **Range reads retry; whole-object reads do not.** A range read (FlatGeobuf
306
+ tiles, weather byte ranges) retries a `429`, a `5xx`, a stale `Range` answer
307
+ or a `200` in place of `206`, up to three times, under `If-Match`
308
+ (`docs/DEVIATIONS.md` D46). A whole-object read — the geodata registry, the
309
+ static weather catalog — does not retry in this SDK. The Python SDK's
310
+ static weather reader does retry a whole-object read. One retry path per
311
+ host is the H2 follow-up.
312
+ - **`AreaBuildings.origin` is now PRESENT** (`docs/DEVIATIONS.md` D48). The
313
+ area is read once and extruded ONCE, in one frame, instead of per tile in
314
+ each tile's own frame and then offset into the grid, so there is finally a
315
+ single frame to name: `[lon, lat]` of the polygon's south-west corner. The
316
+ bodies move by up to a decimetre over a 2 km site as a result — that is the
317
+ frame MIXING being removed, and `runArea` re-anchors each simulation tile's
318
+ bodies into the server's own frame for that tile with an exact affine, to
319
+ 3.7e-13 m of the shipped per-tile extrusion.
320
+ - **Ground materials: the merged layers no longer carry duplicate overlapping
321
+ polygons** (D48). Composition used to run once per simulation tile and the
322
+ tiles overlap by 50 %, so a feature spanning a tile edge reached the server
323
+ as up to four differently-clipped copies of the same ground. It is composed
324
+ once for the site now. The ground each material COVERS is identical —
325
+ measured at 0.000 % lost and 0.000 % gained on four cities — but the feature
326
+ COUNT and the summed polygon area fall, by 20-78 % depending on how many
327
+ tiles the site has. Code that summed `layers[material].features[].geometry`
328
+ areas was measuring the overlap, and will now report less.
329
+ - **`failedTiles` is always empty on both area services.** A site-level read
330
+ succeeds or fails as one, so a failure now RAISES instead of returning a
331
+ partial answer with some tiles listed. A partial set is a silently thinner
332
+ city, not a degraded one.
333
+
334
+ **Keep the catches you have, and add one.** The Overture leg is ONE read for
335
+ the whole site at every size, so `OvertureReadTooLargeError` and
336
+ `OvertureFileLimitError` still arrive UNWRAPPED, exactly as before. What is
337
+ new is `SiteReadError`, and it carries the per-chunk ROAD FlatGeobuf reads:
338
+ above 4 km2 the ground leg reads the roads once per ~2 x 2 km chunk, and a
339
+ chunk read that fails with `GeodataFetchError`, `GeodataRangeError` or
340
+ `HostNotAllowedError` now raises `SiteReadError` instead of that error alone.
341
+ Its `failedTiles` names the chunks that died as
342
+ `{tileId, row: -1, col: -1, error}`, the shape the Python host's
343
+ `TiledRunError.failed_tiles` uses, and its `cause` is the first of those
344
+ failures in chunk order. A buildings read, and a ground read of a site small
345
+ enough to be one rectangle, raise the typed cause unchanged.
346
+ `SiteReadError` is exported from the package root and from `/geodata`.
347
+ - **The city building overlay is chosen for the SITE when every
348
+ simulation-tile rectangle agrees on the source, and per rectangle when they
349
+ do not.** The rule itself is unchanged: a rectangle intersecting a registered
350
+ city outline that publishes a `buildings` layer takes that city's
351
+ FlatGeobuf.
352
+
353
+ A site whose rectangles DISAGREE — a polygon that straddles a registered
354
+ city's outline — is read per rectangle, each rectangle with its own source,
355
+ each extruded in its own frame and re-anchored into the site frame with the
356
+ exact affine; the first rectangle in grid order that carries a building key
357
+ keeps it. This is not an optimisation. The city FlatGeobuf covers the CITY,
358
+ so one read over the whole site rectangle would return the city and nothing
359
+ outside it, with `failedTiles: []` and no warning. Do not split a straddling
360
+ polygon into several `getBuildingsInArea` calls to work around this: the SDK
361
+ does it for you (`docs/DEVIATIONS.md` D48 TypeScript half).
362
+
363
+ - **A schedule saved by 0.12 cannot be resumed** (`docs/DEVIATIONS.md` D51).
364
+ `configHash` — the CLIENT's saved-schedule identity, never anything on the
365
+ wire — used to hash the whole terrain, context-geometry and vegetation
366
+ documents; it now hashes the kernel's group hash of each, which is what
367
+ removes the largest blocking loop of a run (millions of `toFixed(20)` and
368
+ `BigInt` calls on the submit thread). The same inputs therefore produce a
369
+ different `configHash`, so `runArea(..., { retryFrom })` with a schedule
370
+ written by 0.12 raises `ConfigHashPolicyError` naming the schedule contract
371
+ version and the reason, instead of a bare "configHash mismatch". **What to
372
+ do:** start a fresh run with the same inputs. The tiles that already
373
+ succeeded are untouched on the server, and a schedule this SDK writes
374
+ resumes normally. Schedules are client-side records, so nothing has to be
375
+ re-uploaded or re-authorised. The Python SDK is unaffected: its schedule
376
+ hash never walked a geometry document.
377
+
378
+ - **`maxWorkers` on the site path** (`docs/DEVIATIONS.md` D48). Both services
379
+ still accept it and no call breaks. On `GroundMaterialsService.getArea` it is
380
+ honoured as `min(maxWorkers, 2)`: the site is read in at most two chunks at a
381
+ time, and that ceiling is what bounds the bytes held in memory, so a larger
382
+ number does not raise it. On `BuildingsService.getBuildingsInArea` it now
383
+ changes NOTHING — that leg makes one Overture read and at most one overlay
384
+ read, so there is no fan-out to bound. The Python SDK chunks its buildings
385
+ read and does honour the option there.
386
+ - **Both area services accept `signal`.** `timeoutMs` bounds each request;
387
+ `signal` is what abandons the whole site read, which nothing else did.
388
+
389
+ ### Unchanged
390
+
391
+ `InfraredClient` construction, job submission, area schedules, results,
392
+ billing, uploads and the geometry-reuse paths are untouched. The
393
+ `@infrared-city/infrared-sdk/utilities` subpath still exists and still
394
+ exports `WeatherService`; only what is behind it changed.
package/NOTICE ADDED
@@ -0,0 +1,5 @@
1
+ infrared-core
2
+ Copyright 2024-present Infrared City GmbH
3
+
4
+ This product includes software developed at
5
+ Infrared City GmbH (https://infrared.city/).