@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.
- package/LICENSE +201 -0
- package/MIGRATION.md +394 -0
- package/NOTICE +5 -0
- package/README.md +1804 -2
- package/UPGRADING.md +1244 -0
- package/dist/analysis-service.d.ts +20 -0
- package/dist/analysis-service.d.ts.map +1 -0
- package/dist/analysis-service.js +29 -0
- package/dist/analysis-service.js.map +1 -0
- package/dist/analysis-types.d.ts +39 -0
- package/dist/analysis-types.d.ts.map +1 -0
- package/dist/analysis-types.js +35 -0
- package/dist/analysis-types.js.map +1 -0
- package/dist/area/area-grid.d.ts +61 -0
- package/dist/area/area-grid.d.ts.map +1 -0
- package/dist/area/area-grid.js +62 -0
- package/dist/area/area-grid.js.map +1 -0
- package/dist/area/composition.d.ts +60 -0
- package/dist/area/composition.d.ts.map +1 -0
- package/dist/area/composition.js +144 -0
- package/dist/area/composition.js.map +1 -0
- package/dist/area/config-hash.d.ts +50 -0
- package/dist/area/config-hash.d.ts.map +1 -0
- package/dist/area/config-hash.js +96 -0
- package/dist/area/config-hash.js.map +1 -0
- package/dist/area/constants.d.ts +19 -0
- package/dist/area/constants.d.ts.map +1 -0
- package/dist/area/constants.js +23 -0
- package/dist/area/constants.js.map +1 -0
- package/dist/area/cooperative.d.ts +75 -0
- package/dist/area/cooperative.d.ts.map +1 -0
- package/dist/area/cooperative.js +136 -0
- package/dist/area/cooperative.js.map +1 -0
- package/dist/area/count-contract.d.ts +35 -0
- package/dist/area/count-contract.d.ts.map +1 -0
- package/dist/area/count-contract.js +84 -0
- package/dist/area/count-contract.js.map +1 -0
- package/dist/area/facade-captures.d.ts +35 -0
- package/dist/area/facade-captures.d.ts.map +1 -0
- package/dist/area/facade-captures.js +68 -0
- package/dist/area/facade-captures.js.map +1 -0
- package/dist/area/facade-layout-attach.d.ts +45 -0
- package/dist/area/facade-layout-attach.d.ts.map +1 -0
- package/dist/area/facade-layout-attach.js +121 -0
- package/dist/area/facade-layout-attach.js.map +1 -0
- package/dist/area/facade-layout-free.d.ts +41 -0
- package/dist/area/facade-layout-free.d.ts.map +1 -0
- package/dist/area/facade-layout-free.js +44 -0
- package/dist/area/facade-layout-free.js.map +1 -0
- package/dist/area/facade-layout-raw.d.ts +45 -0
- package/dist/area/facade-layout-raw.d.ts.map +1 -0
- package/dist/area/facade-layout-raw.js +97 -0
- package/dist/area/facade-layout-raw.js.map +1 -0
- package/dist/area/facade-layout-request.d.ts +7 -0
- package/dist/area/facade-layout-request.d.ts.map +1 -0
- package/dist/area/facade-layout-request.js +57 -0
- package/dist/area/facade-layout-request.js.map +1 -0
- package/dist/area/facade-layout-schedule.d.ts +41 -0
- package/dist/area/facade-layout-schedule.d.ts.map +1 -0
- package/dist/area/facade-layout-schedule.js +107 -0
- package/dist/area/facade-layout-schedule.js.map +1 -0
- package/dist/area/facade-layout.d.ts +245 -0
- package/dist/area/facade-layout.d.ts.map +1 -0
- package/dist/area/facade-layout.js +211 -0
- package/dist/area/facade-layout.js.map +1 -0
- package/dist/area/facade-ownership.d.ts +84 -0
- package/dist/area/facade-ownership.d.ts.map +1 -0
- package/dist/area/facade-ownership.js +108 -0
- package/dist/area/facade-ownership.js.map +1 -0
- package/dist/area/field-registry.d.ts +54 -0
- package/dist/area/field-registry.d.ts.map +1 -0
- package/dist/area/field-registry.js +74 -0
- package/dist/area/field-registry.js.map +1 -0
- package/dist/area/incomplete-error.d.ts +28 -0
- package/dist/area/incomplete-error.d.ts.map +1 -0
- package/dist/area/incomplete-error.js +59 -0
- package/dist/area/incomplete-error.js.map +1 -0
- package/dist/area/index.d.ts +33 -0
- package/dist/area/index.d.ts.map +1 -0
- package/dist/area/index.js +29 -0
- package/dist/area/index.js.map +1 -0
- package/dist/area/merge-common.d.ts +12 -0
- package/dist/area/merge-common.d.ts.map +1 -0
- package/dist/area/merge-common.js +29 -0
- package/dist/area/merge-common.js.map +1 -0
- package/dist/area/merge-surface-decode.d.ts +30 -0
- package/dist/area/merge-surface-decode.d.ts.map +1 -0
- package/dist/area/merge-surface-decode.js +55 -0
- package/dist/area/merge-surface-decode.js.map +1 -0
- package/dist/area/merge-surface.d.ts +35 -0
- package/dist/area/merge-surface.d.ts.map +1 -0
- package/dist/area/merge-surface.js +205 -0
- package/dist/area/merge-surface.js.map +1 -0
- package/dist/area/merge.d.ts +63 -0
- package/dist/area/merge.d.ts.map +1 -0
- package/dist/area/merge.js +175 -0
- package/dist/area/merge.js.map +1 -0
- package/dist/area/payload-aliases.d.ts +56 -0
- package/dist/area/payload-aliases.d.ts.map +1 -0
- package/dist/area/payload-aliases.js +99 -0
- package/dist/area/payload-aliases.js.map +1 -0
- package/dist/area/payload-types.d.ts +3 -0
- package/dist/area/payload-types.d.ts.map +1 -0
- package/dist/area/payload-types.js +2 -0
- package/dist/area/payload-types.js.map +1 -0
- package/dist/area/payload.d.ts +16 -0
- package/dist/area/payload.d.ts.map +1 -0
- package/dist/area/payload.js +381 -0
- package/dist/area/payload.js.map +1 -0
- package/dist/area/plan-entries.d.ts +41 -0
- package/dist/area/plan-entries.d.ts.map +1 -0
- package/dist/area/plan-entries.js +152 -0
- package/dist/area/plan-entries.js.map +1 -0
- package/dist/area/plan-layers.d.ts +49 -0
- package/dist/area/plan-layers.d.ts.map +1 -0
- package/dist/area/plan-layers.js +124 -0
- package/dist/area/plan-layers.js.map +1 -0
- package/dist/area/plan-types.d.ts +70 -0
- package/dist/area/plan-types.d.ts.map +1 -0
- package/dist/area/plan-types.js +11 -0
- package/dist/area/plan-types.js.map +1 -0
- package/dist/area/planning.d.ts +41 -0
- package/dist/area/planning.d.ts.map +1 -0
- package/dist/area/planning.js +346 -0
- package/dist/area/planning.js.map +1 -0
- package/dist/area/poll-schedule.d.ts +15 -0
- package/dist/area/poll-schedule.d.ts.map +1 -0
- package/dist/area/poll-schedule.js +20 -0
- package/dist/area/poll-schedule.js.map +1 -0
- package/dist/area/poll.d.ts +56 -0
- package/dist/area/poll.d.ts.map +1 -0
- package/dist/area/poll.js +219 -0
- package/dist/area/poll.js.map +1 -0
- package/dist/area/prepared-site.d.ts +139 -0
- package/dist/area/prepared-site.d.ts.map +1 -0
- package/dist/area/prepared-site.js +289 -0
- package/dist/area/prepared-site.js.map +1 -0
- package/dist/area/preview.d.ts +45 -0
- package/dist/area/preview.d.ts.map +1 -0
- package/dist/area/preview.js +70 -0
- package/dist/area/preview.js.map +1 -0
- package/dist/area/reanchor.d.ts +63 -0
- package/dist/area/reanchor.d.ts.map +1 -0
- package/dist/area/reanchor.js +130 -0
- package/dist/area/reanchor.js.map +1 -0
- package/dist/area/registry-pick.d.ts +28 -0
- package/dist/area/registry-pick.d.ts.map +1 -0
- package/dist/area/registry-pick.js +98 -0
- package/dist/area/registry-pick.js.map +1 -0
- package/dist/area/retry-context.d.ts +21 -0
- package/dist/area/retry-context.d.ts.map +1 -0
- package/dist/area/retry-context.js +61 -0
- package/dist/area/retry-context.js.map +1 -0
- package/dist/area/retry-plan.d.ts +70 -0
- package/dist/area/retry-plan.d.ts.map +1 -0
- package/dist/area/retry-plan.js +33 -0
- package/dist/area/retry-plan.js.map +1 -0
- package/dist/area/run-and-wait-retry.d.ts +22 -0
- package/dist/area/run-and-wait-retry.d.ts.map +1 -0
- package/dist/area/run-and-wait-retry.js +58 -0
- package/dist/area/run-and-wait-retry.js.map +1 -0
- package/dist/area/run-options.d.ts +185 -0
- package/dist/area/run-options.d.ts.map +1 -0
- package/dist/area/run-options.js +2 -0
- package/dist/area/run-options.js.map +1 -0
- package/dist/area/schedule-retry-fields.d.ts +29 -0
- package/dist/area/schedule-retry-fields.d.ts.map +1 -0
- package/dist/area/schedule-retry-fields.js +49 -0
- package/dist/area/schedule-retry-fields.js.map +1 -0
- package/dist/area/schedule-types.d.ts +328 -0
- package/dist/area/schedule-types.d.ts.map +1 -0
- package/dist/area/schedule-types.js +13 -0
- package/dist/area/schedule-types.js.map +1 -0
- package/dist/area/schedule.d.ts +15 -0
- package/dist/area/schedule.d.ts.map +1 -0
- package/dist/area/schedule.js +393 -0
- package/dist/area/schedule.js.map +1 -0
- package/dist/area/sensor-cap.d.ts +16 -0
- package/dist/area/sensor-cap.d.ts.map +1 -0
- package/dist/area/sensor-cap.js +34 -0
- package/dist/area/sensor-cap.js.map +1 -0
- package/dist/area/site-assign.d.ts +198 -0
- package/dist/area/site-assign.d.ts.map +1 -0
- package/dist/area/site-assign.js +196 -0
- package/dist/area/site-assign.js.map +1 -0
- package/dist/area/site-facade-scene-frames.d.ts +23 -0
- package/dist/area/site-facade-scene-frames.d.ts.map +1 -0
- package/dist/area/site-facade-scene-frames.js +42 -0
- package/dist/area/site-facade-scene-frames.js.map +1 -0
- package/dist/area/site-facade-scene.d.ts +56 -0
- package/dist/area/site-facade-scene.d.ts.map +1 -0
- package/dist/area/site-facade-scene.js +23 -0
- package/dist/area/site-facade-scene.js.map +1 -0
- package/dist/area/site-facade.d.ts +78 -0
- package/dist/area/site-facade.d.ts.map +1 -0
- package/dist/area/site-facade.js +325 -0
- package/dist/area/site-facade.js.map +1 -0
- package/dist/area/site-identity-guard.d.ts +13 -0
- package/dist/area/site-identity-guard.d.ts.map +1 -0
- package/dist/area/site-identity-guard.js +48 -0
- package/dist/area/site-identity-guard.js.map +1 -0
- package/dist/area/site-kernel.d.ts +39 -0
- package/dist/area/site-kernel.d.ts.map +1 -0
- package/dist/area/site-kernel.js +53 -0
- package/dist/area/site-kernel.js.map +1 -0
- package/dist/area/site-pack.d.ts +35 -0
- package/dist/area/site-pack.d.ts.map +1 -0
- package/dist/area/site-pack.js +68 -0
- package/dist/area/site-pack.js.map +1 -0
- package/dist/area/site-terrain.d.ts +38 -0
- package/dist/area/site-terrain.d.ts.map +1 -0
- package/dist/area/site-terrain.js +60 -0
- package/dist/area/site-terrain.js.map +1 -0
- package/dist/area/submission.d.ts +99 -0
- package/dist/area/submission.d.ts.map +1 -0
- package/dist/area/submission.js +275 -0
- package/dist/area/submission.js.map +1 -0
- package/dist/area/submit-pool.d.ts +48 -0
- package/dist/area/submit-pool.d.ts.map +1 -0
- package/dist/area/submit-pool.js +218 -0
- package/dist/area/submit-pool.js.map +1 -0
- package/dist/area/thermal-controls.d.ts +95 -0
- package/dist/area/thermal-controls.d.ts.map +1 -0
- package/dist/area/thermal-controls.js +209 -0
- package/dist/area/thermal-controls.js.map +1 -0
- package/dist/area/tile-frames.d.ts +21 -0
- package/dist/area/tile-frames.d.ts.map +1 -0
- package/dist/area/tile-frames.js +21 -0
- package/dist/area/tile-frames.js.map +1 -0
- package/dist/area/tiling.d.ts +50 -0
- package/dist/area/tiling.d.ts.map +1 -0
- package/dist/area/tiling.js +109 -0
- package/dist/area/tiling.js.map +1 -0
- package/dist/area/types.d.ts +153 -0
- package/dist/area/types.d.ts.map +1 -0
- package/dist/area/types.js +2 -0
- package/dist/area/types.js.map +1 -0
- package/dist/area/unknown-request-keys.d.ts +35 -0
- package/dist/area/unknown-request-keys.d.ts.map +1 -0
- package/dist/area/unknown-request-keys.js +58 -0
- package/dist/area/unknown-request-keys.js.map +1 -0
- package/dist/area/wait-schedule.d.ts +20 -0
- package/dist/area/wait-schedule.d.ts.map +1 -0
- package/dist/area/wait-schedule.js +52 -0
- package/dist/area/wait-schedule.js.map +1 -0
- package/dist/area/weather-guard.d.ts +69 -0
- package/dist/area/weather-guard.d.ts.map +1 -0
- package/dist/area/weather-guard.js +303 -0
- package/dist/area/weather-guard.js.map +1 -0
- package/dist/billing.d.ts +106 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +114 -0
- package/dist/billing.js.map +1 -0
- package/dist/buildings.d.ts +141 -0
- package/dist/buildings.d.ts.map +1 -0
- package/dist/buildings.js +156 -0
- package/dist/buildings.js.map +1 -0
- package/dist/client-setup.d.ts +8 -0
- package/dist/client-setup.d.ts.map +1 -0
- package/dist/client-setup.js +38 -0
- package/dist/client-setup.js.map +1 -0
- package/dist/client-types.d.ts +176 -0
- package/dist/client-types.d.ts.map +1 -0
- package/dist/client-types.js +20 -0
- package/dist/client-types.js.map +1 -0
- package/dist/client.d.ts +186 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +314 -0
- package/dist/client.js.map +1 -0
- package/dist/compat.d.ts +17 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +17 -0
- package/dist/compat.js.map +1 -0
- package/dist/geodata/allowed-hosts.d.ts +53 -0
- package/dist/geodata/allowed-hosts.d.ts.map +1 -0
- package/dist/geodata/allowed-hosts.js +77 -0
- package/dist/geodata/allowed-hosts.js.map +1 -0
- package/dist/geodata/buildings-area.d.ts +60 -0
- package/dist/geodata/buildings-area.d.ts.map +1 -0
- package/dist/geodata/buildings-area.js +228 -0
- package/dist/geodata/buildings-area.js.map +1 -0
- package/dist/geodata/buildings-extrude.d.ts +33 -0
- package/dist/geodata/buildings-extrude.d.ts.map +1 -0
- package/dist/geodata/buildings-extrude.js +85 -0
- package/dist/geodata/buildings-extrude.js.map +1 -0
- package/dist/geodata/buildings.d.ts +99 -0
- package/dist/geodata/buildings.d.ts.map +1 -0
- package/dist/geodata/buildings.js +119 -0
- package/dist/geodata/buildings.js.map +1 -0
- package/dist/geodata/errors.d.ts +197 -0
- package/dist/geodata/errors.d.ts.map +1 -0
- package/dist/geodata/errors.js +217 -0
- package/dist/geodata/errors.js.map +1 -0
- package/dist/geodata/fgb-kernel.d.ts +88 -0
- package/dist/geodata/fgb-kernel.d.ts.map +1 -0
- package/dist/geodata/fgb-kernel.js +226 -0
- package/dist/geodata/fgb-kernel.js.map +1 -0
- package/dist/geodata/fgb.d.ts +66 -0
- package/dist/geodata/fgb.d.ts.map +1 -0
- package/dist/geodata/fgb.js +62 -0
- package/dist/geodata/fgb.js.map +1 -0
- package/dist/geodata/ground-area.d.ts +81 -0
- package/dist/geodata/ground-area.d.ts.map +1 -0
- package/dist/geodata/ground-area.js +110 -0
- package/dist/geodata/ground-area.js.map +1 -0
- package/dist/geodata/ground.d.ts +125 -0
- package/dist/geodata/ground.d.ts.map +1 -0
- package/dist/geodata/ground.js +121 -0
- package/dist/geodata/ground.js.map +1 -0
- package/dist/geodata/http.d.ts +183 -0
- package/dist/geodata/http.d.ts.map +1 -0
- package/dist/geodata/http.js +303 -0
- package/dist/geodata/http.js.map +1 -0
- package/dist/geodata/index.d.ts +52 -0
- package/dist/geodata/index.d.ts.map +1 -0
- package/dist/geodata/index.js +54 -0
- package/dist/geodata/index.js.map +1 -0
- package/dist/geodata/json-chain.d.ts +69 -0
- package/dist/geodata/json-chain.d.ts.map +1 -0
- package/dist/geodata/json-chain.js +170 -0
- package/dist/geodata/json-chain.js.map +1 -0
- package/dist/geodata/manifests.d.ts +116 -0
- package/dist/geodata/manifests.d.ts.map +1 -0
- package/dist/geodata/manifests.js +216 -0
- package/dist/geodata/manifests.js.map +1 -0
- package/dist/geodata/overture-area.d.ts +49 -0
- package/dist/geodata/overture-area.d.ts.map +1 -0
- package/dist/geodata/overture-area.js +47 -0
- package/dist/geodata/overture-area.js.map +1 -0
- package/dist/geodata/overture-budget.d.ts +62 -0
- package/dist/geodata/overture-budget.d.ts.map +1 -0
- package/dist/geodata/overture-budget.js +130 -0
- package/dist/geodata/overture-budget.js.map +1 -0
- package/dist/geodata/overture-cache.d.ts +34 -0
- package/dist/geodata/overture-cache.d.ts.map +1 -0
- package/dist/geodata/overture-cache.js +84 -0
- package/dist/geodata/overture-cache.js.map +1 -0
- package/dist/geodata/overture-keep.d.ts +31 -0
- package/dist/geodata/overture-keep.d.ts.map +1 -0
- package/dist/geodata/overture-keep.js +89 -0
- package/dist/geodata/overture-keep.js.map +1 -0
- package/dist/geodata/overture-parquet.d.ts +108 -0
- package/dist/geodata/overture-parquet.d.ts.map +1 -0
- package/dist/geodata/overture-parquet.js +107 -0
- package/dist/geodata/overture-parquet.js.map +1 -0
- package/dist/geodata/overture-rows.d.ts +141 -0
- package/dist/geodata/overture-rows.d.ts.map +1 -0
- package/dist/geodata/overture-rows.js +264 -0
- package/dist/geodata/overture-rows.js.map +1 -0
- package/dist/geodata/overture-span.d.ts +44 -0
- package/dist/geodata/overture-span.d.ts.map +1 -0
- package/dist/geodata/overture-span.js +39 -0
- package/dist/geodata/overture-span.js.map +1 -0
- package/dist/geodata/overture.d.ts +85 -0
- package/dist/geodata/overture.d.ts.map +1 -0
- package/dist/geodata/overture.js +109 -0
- package/dist/geodata/overture.js.map +1 -0
- package/dist/geodata/range-answer.d.ts +88 -0
- package/dist/geodata/range-answer.d.ts.map +1 -0
- package/dist/geodata/range-answer.js +202 -0
- package/dist/geodata/range-answer.js.map +1 -0
- package/dist/geodata/range-transport.d.ts +95 -0
- package/dist/geodata/range-transport.d.ts.map +1 -0
- package/dist/geodata/range-transport.js +134 -0
- package/dist/geodata/range-transport.js.map +1 -0
- package/dist/geodata/read-margin.d.ts +117 -0
- package/dist/geodata/read-margin.d.ts.map +1 -0
- package/dist/geodata/read-margin.js +234 -0
- package/dist/geodata/read-margin.js.map +1 -0
- package/dist/geodata/rect-union-metrics.d.ts +52 -0
- package/dist/geodata/rect-union-metrics.d.ts.map +1 -0
- package/dist/geodata/rect-union-metrics.js +81 -0
- package/dist/geodata/rect-union-metrics.js.map +1 -0
- package/dist/geodata/retry.d.ts +95 -0
- package/dist/geodata/retry.d.ts.map +1 -0
- package/dist/geodata/retry.js +191 -0
- package/dist/geodata/retry.js.map +1 -0
- package/dist/geodata/site-chunks.d.ts +157 -0
- package/dist/geodata/site-chunks.d.ts.map +1 -0
- package/dist/geodata/site-chunks.js +338 -0
- package/dist/geodata/site-chunks.js.map +1 -0
- package/dist/geodata/stall.d.ts +40 -0
- package/dist/geodata/stall.d.ts.map +1 -0
- package/dist/geodata/stall.js +90 -0
- package/dist/geodata/stall.js.map +1 -0
- package/dist/geodata/trees.d.ts +107 -0
- package/dist/geodata/trees.d.ts.map +1 -0
- package/dist/geodata/trees.js +160 -0
- package/dist/geodata/trees.js.map +1 -0
- package/dist/ground-materials-service.d.ts +101 -0
- package/dist/ground-materials-service.d.ts.map +1 -0
- package/dist/ground-materials-service.js +154 -0
- package/dist/ground-materials-service.js.map +1 -0
- package/dist/ground-materials.d.ts +86 -0
- package/dist/ground-materials.d.ts.map +1 -0
- package/dist/ground-materials.js +46 -0
- package/dist/ground-materials.js.map +1 -0
- package/dist/images.d.ts +182 -0
- package/dist/images.d.ts.map +1 -0
- package/dist/images.js +283 -0
- package/dist/images.js.map +1 -0
- package/dist/index.cjs +8 -0
- package/dist/index.d.ts +83 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/auth.d.ts +58 -0
- package/dist/internal/auth.d.ts.map +1 -0
- package/dist/internal/auth.js +46 -0
- package/dist/internal/auth.js.map +1 -0
- package/dist/internal/binary-admission.d.ts +2 -0
- package/dist/internal/binary-admission.d.ts.map +1 -0
- package/dist/internal/binary-admission.js +46 -0
- package/dist/internal/binary-admission.js.map +1 -0
- package/dist/internal/binary-artifact.d.ts +43 -0
- package/dist/internal/binary-artifact.d.ts.map +1 -0
- package/dist/internal/binary-artifact.js +20 -0
- package/dist/internal/binary-artifact.js.map +1 -0
- package/dist/internal/binary-result.d.ts +30 -0
- package/dist/internal/binary-result.d.ts.map +1 -0
- package/dist/internal/binary-result.js +210 -0
- package/dist/internal/binary-result.js.map +1 -0
- package/dist/internal/binary-retention.d.ts +23 -0
- package/dist/internal/binary-retention.d.ts.map +1 -0
- package/dist/internal/binary-retention.js +57 -0
- package/dist/internal/binary-retention.js.map +1 -0
- package/dist/internal/binary-submission.d.ts +74 -0
- package/dist/internal/binary-submission.d.ts.map +1 -0
- package/dist/internal/binary-submission.js +262 -0
- package/dist/internal/binary-submission.js.map +1 -0
- package/dist/internal/binary-submit-coordinator.d.ts +44 -0
- package/dist/internal/binary-submit-coordinator.d.ts.map +1 -0
- package/dist/internal/binary-submit-coordinator.js +213 -0
- package/dist/internal/binary-submit-coordinator.js.map +1 -0
- package/dist/internal/binary-url-cache.d.ts +24 -0
- package/dist/internal/binary-url-cache.d.ts.map +1 -0
- package/dist/internal/binary-url-cache.js +81 -0
- package/dist/internal/binary-url-cache.js.map +1 -0
- package/dist/internal/body-sender.d.ts +28 -0
- package/dist/internal/body-sender.d.ts.map +1 -0
- package/dist/internal/body-sender.js +93 -0
- package/dist/internal/body-sender.js.map +1 -0
- package/dist/internal/capability-cache.d.ts +34 -0
- package/dist/internal/capability-cache.d.ts.map +1 -0
- package/dist/internal/capability-cache.js +92 -0
- package/dist/internal/capability-cache.js.map +1 -0
- package/dist/internal/capped-body.d.ts +35 -0
- package/dist/internal/capped-body.d.ts.map +1 -0
- package/dist/internal/capped-body.js +130 -0
- package/dist/internal/capped-body.js.map +1 -0
- package/dist/internal/cell-has-value.d.ts +14 -0
- package/dist/internal/cell-has-value.d.ts.map +1 -0
- package/dist/internal/cell-has-value.js +23 -0
- package/dist/internal/cell-has-value.js.map +1 -0
- package/dist/internal/core-exports.d.ts +2 -0
- package/dist/internal/core-exports.d.ts.map +1 -0
- package/dist/internal/core-exports.js +240 -0
- package/dist/internal/core-exports.js.map +1 -0
- package/dist/internal/core.d.ts +36 -0
- package/dist/internal/core.d.ts.map +1 -0
- package/dist/internal/core.js +193 -0
- package/dist/internal/core.js.map +1 -0
- package/dist/internal/deadline.d.ts +45 -0
- package/dist/internal/deadline.d.ts.map +1 -0
- package/dist/internal/deadline.js +127 -0
- package/dist/internal/deadline.js.map +1 -0
- package/dist/internal/download-retry.d.ts +19 -0
- package/dist/internal/download-retry.d.ts.map +1 -0
- package/dist/internal/download-retry.js +45 -0
- package/dist/internal/download-retry.js.map +1 -0
- package/dist/internal/download.d.ts +23 -0
- package/dist/internal/download.d.ts.map +1 -0
- package/dist/internal/download.js +71 -0
- package/dist/internal/download.js.map +1 -0
- package/dist/internal/errors.d.ts +58 -0
- package/dist/internal/errors.d.ts.map +1 -0
- package/dist/internal/errors.js +81 -0
- package/dist/internal/errors.js.map +1 -0
- package/dist/internal/facade-artifact-guard.d.ts +30 -0
- package/dist/internal/facade-artifact-guard.d.ts.map +1 -0
- package/dist/internal/facade-artifact-guard.js +57 -0
- package/dist/internal/facade-artifact-guard.js.map +1 -0
- package/dist/internal/fetch.d.ts +10 -0
- package/dist/internal/fetch.d.ts.map +1 -0
- package/dist/internal/fetch.js +22 -0
- package/dist/internal/fetch.js.map +1 -0
- package/dist/internal/footprints.d.ts +24 -0
- package/dist/internal/footprints.d.ts.map +1 -0
- package/dist/internal/footprints.js +24 -0
- package/dist/internal/footprints.js.map +1 -0
- package/dist/internal/geometry-reuse/cache.d.ts +78 -0
- package/dist/internal/geometry-reuse/cache.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/cache.js +332 -0
- package/dist/internal/geometry-reuse/cache.js.map +1 -0
- package/dist/internal/geometry-reuse/canonical.d.ts +34 -0
- package/dist/internal/geometry-reuse/canonical.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/canonical.js +128 -0
- package/dist/internal/geometry-reuse/canonical.js.map +1 -0
- package/dist/internal/geometry-reuse/controller.d.ts +14 -0
- package/dist/internal/geometry-reuse/controller.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/controller.js +288 -0
- package/dist/internal/geometry-reuse/controller.js.map +1 -0
- package/dist/internal/geometry-reuse/credentials.d.ts +6 -0
- package/dist/internal/geometry-reuse/credentials.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/credentials.js +40 -0
- package/dist/internal/geometry-reuse/credentials.js.map +1 -0
- package/dist/internal/geometry-reuse/errors.d.ts +35 -0
- package/dist/internal/geometry-reuse/errors.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/errors.js +44 -0
- package/dist/internal/geometry-reuse/errors.js.map +1 -0
- package/dist/internal/geometry-reuse/expiry.d.ts +3 -0
- package/dist/internal/geometry-reuse/expiry.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/expiry.js +26 -0
- package/dist/internal/geometry-reuse/expiry.js.map +1 -0
- package/dist/internal/geometry-reuse/fingerprint.d.ts +26 -0
- package/dist/internal/geometry-reuse/fingerprint.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/fingerprint.js +111 -0
- package/dist/internal/geometry-reuse/fingerprint.js.map +1 -0
- package/dist/internal/geometry-reuse/identity.d.ts +33 -0
- package/dist/internal/geometry-reuse/identity.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/identity.js +201 -0
- package/dist/internal/geometry-reuse/identity.js.map +1 -0
- package/dist/internal/geometry-reuse/observer.d.ts +13 -0
- package/dist/internal/geometry-reuse/observer.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/observer.js +28 -0
- package/dist/internal/geometry-reuse/observer.js.map +1 -0
- package/dist/internal/geometry-reuse/options.d.ts +26 -0
- package/dist/internal/geometry-reuse/options.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/options.js +18 -0
- package/dist/internal/geometry-reuse/options.js.map +1 -0
- package/dist/internal/geometry-reuse/submit.d.ts +29 -0
- package/dist/internal/geometry-reuse/submit.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/submit.js +87 -0
- package/dist/internal/geometry-reuse/submit.js.map +1 -0
- package/dist/internal/geometry-reuse/types.d.ts +47 -0
- package/dist/internal/geometry-reuse/types.d.ts.map +1 -0
- package/dist/internal/geometry-reuse/types.js +2 -0
- package/dist/internal/geometry-reuse/types.js.map +1 -0
- package/dist/internal/geometry-url-store.d.ts +59 -0
- package/dist/internal/geometry-url-store.d.ts.map +1 -0
- package/dist/internal/geometry-url-store.js +92 -0
- package/dist/internal/geometry-url-store.js.map +1 -0
- package/dist/internal/ground-merge.d.ts +66 -0
- package/dist/internal/ground-merge.d.ts.map +1 -0
- package/dist/internal/ground-merge.js +100 -0
- package/dist/internal/ground-merge.js.map +1 -0
- package/dist/internal/idempotent-dispatch.d.ts +26 -0
- package/dist/internal/idempotent-dispatch.d.ts.map +1 -0
- package/dist/internal/idempotent-dispatch.js +93 -0
- package/dist/internal/idempotent-dispatch.js.map +1 -0
- package/dist/internal/initialize.d.ts +18 -0
- package/dist/internal/initialize.d.ts.map +1 -0
- package/dist/internal/initialize.js +21 -0
- package/dist/internal/initialize.js.map +1 -0
- package/dist/internal/job-response.d.ts +22 -0
- package/dist/internal/job-response.d.ts.map +1 -0
- package/dist/internal/job-response.js +82 -0
- package/dist/internal/job-response.js.map +1 -0
- package/dist/internal/kernel-group.d.ts +46 -0
- package/dist/internal/kernel-group.d.ts.map +1 -0
- package/dist/internal/kernel-group.js +65 -0
- package/dist/internal/kernel-group.js.map +1 -0
- package/dist/internal/link.d.ts +3 -0
- package/dist/internal/link.d.ts.map +1 -0
- package/dist/internal/link.js +150 -0
- package/dist/internal/link.js.map +1 -0
- package/dist/internal/map-limit.d.ts +17 -0
- package/dist/internal/map-limit.d.ts.map +1 -0
- package/dist/internal/map-limit.js +30 -0
- package/dist/internal/map-limit.js.map +1 -0
- package/dist/internal/node-digest.d.ts +2 -0
- package/dist/internal/node-digest.d.ts.map +1 -0
- package/dist/internal/node-digest.js +11 -0
- package/dist/internal/node-digest.js.map +1 -0
- package/dist/internal/node-loader.d.ts +2 -0
- package/dist/internal/node-loader.d.ts.map +1 -0
- package/dist/internal/node-loader.js +8 -0
- package/dist/internal/node-loader.js.map +1 -0
- package/dist/internal/options.d.ts +32 -0
- package/dist/internal/options.d.ts.map +1 -0
- package/dist/internal/options.js +22 -0
- package/dist/internal/options.js.map +1 -0
- package/dist/internal/poll-engine.d.ts +57 -0
- package/dist/internal/poll-engine.d.ts.map +1 -0
- package/dist/internal/poll-engine.js +59 -0
- package/dist/internal/poll-engine.js.map +1 -0
- package/dist/internal/poll-notify.d.ts +7 -0
- package/dist/internal/poll-notify.d.ts.map +1 -0
- package/dist/internal/poll-notify.js +15 -0
- package/dist/internal/poll-notify.js.map +1 -0
- package/dist/internal/prepared-json.d.ts +10 -0
- package/dist/internal/prepared-json.d.ts.map +1 -0
- package/dist/internal/prepared-json.js +23 -0
- package/dist/internal/prepared-json.js.map +1 -0
- package/dist/internal/registry-document.d.ts +96 -0
- package/dist/internal/registry-document.d.ts.map +1 -0
- package/dist/internal/registry-document.js +196 -0
- package/dist/internal/registry-document.js.map +1 -0
- package/dist/internal/scene-alignment.d.ts +14 -0
- package/dist/internal/scene-alignment.d.ts.map +1 -0
- package/dist/internal/scene-alignment.js +23 -0
- package/dist/internal/scene-alignment.js.map +1 -0
- package/dist/internal/send-body.d.ts +26 -0
- package/dist/internal/send-body.d.ts.map +1 -0
- package/dist/internal/send-body.js +49 -0
- package/dist/internal/send-body.js.map +1 -0
- package/dist/internal/send-guard.d.ts +66 -0
- package/dist/internal/send-guard.d.ts.map +1 -0
- package/dist/internal/send-guard.js +95 -0
- package/dist/internal/send-guard.js.map +1 -0
- package/dist/internal/service.d.ts +40 -0
- package/dist/internal/service.d.ts.map +1 -0
- package/dist/internal/service.js +43 -0
- package/dist/internal/service.js.map +1 -0
- package/dist/internal/status-batch.d.ts +42 -0
- package/dist/internal/status-batch.d.ts.map +1 -0
- package/dist/internal/status-batch.js +174 -0
- package/dist/internal/status-batch.js.map +1 -0
- package/dist/internal/stream-sender.d.ts +14 -0
- package/dist/internal/stream-sender.d.ts.map +1 -0
- package/dist/internal/stream-sender.js +41 -0
- package/dist/internal/stream-sender.js.map +1 -0
- package/dist/internal/submission-stopped.d.ts +6 -0
- package/dist/internal/submission-stopped.d.ts.map +1 -0
- package/dist/internal/submission-stopped.js +8 -0
- package/dist/internal/submission-stopped.js.map +1 -0
- package/dist/internal/submission.d.ts +49 -0
- package/dist/internal/submission.d.ts.map +1 -0
- package/dist/internal/submission.js +207 -0
- package/dist/internal/submission.js.map +1 -0
- package/dist/internal/submit-body.d.ts +8 -0
- package/dist/internal/submit-body.d.ts.map +1 -0
- package/dist/internal/submit-body.js +69 -0
- package/dist/internal/submit-body.js.map +1 -0
- package/dist/internal/surfgrid-types.check.d.ts +6 -0
- package/dist/internal/surfgrid-types.check.d.ts.map +1 -0
- package/dist/internal/surfgrid-types.check.js +13 -0
- package/dist/internal/surfgrid-types.check.js.map +1 -0
- package/dist/internal/transport-choice.d.ts +14 -0
- package/dist/internal/transport-choice.d.ts.map +1 -0
- package/dist/internal/transport-choice.js +29 -0
- package/dist/internal/transport-choice.js.map +1 -0
- package/dist/internal/transport.d.ts +70 -0
- package/dist/internal/transport.d.ts.map +1 -0
- package/dist/internal/transport.js +246 -0
- package/dist/internal/transport.js.map +1 -0
- package/dist/internal/upload.d.ts +17 -0
- package/dist/internal/upload.d.ts.map +1 -0
- package/dist/internal/upload.js +66 -0
- package/dist/internal/upload.js.map +1 -0
- package/dist/internal/url-trim.d.ts +23 -0
- package/dist/internal/url-trim.d.ts.map +1 -0
- package/dist/internal/url-trim.js +29 -0
- package/dist/internal/url-trim.js.map +1 -0
- package/dist/internal/wait-job.d.ts +19 -0
- package/dist/internal/wait-job.d.ts.map +1 -0
- package/dist/internal/wait-job.js +61 -0
- package/dist/internal/wait-job.js.map +1 -0
- package/dist/internal/weather-static-cache.d.ts +44 -0
- package/dist/internal/weather-static-cache.d.ts.map +1 -0
- package/dist/internal/weather-static-cache.js +71 -0
- package/dist/internal/weather-static-cache.js.map +1 -0
- package/dist/internal/weather-static-decode.d.ts +48 -0
- package/dist/internal/weather-static-decode.d.ts.map +1 -0
- package/dist/internal/weather-static-decode.js +150 -0
- package/dist/internal/weather-static-decode.js.map +1 -0
- package/dist/internal/weather-window.d.ts +37 -0
- package/dist/internal/weather-window.d.ts.map +1 -0
- package/dist/internal/weather-window.js +64 -0
- package/dist/internal/weather-window.js.map +1 -0
- package/dist/internal/wire-json.d.ts +25 -0
- package/dist/internal/wire-json.d.ts.map +1 -0
- package/dist/internal/wire-json.js +123 -0
- package/dist/internal/wire-json.js.map +1 -0
- package/dist/internal/xhr-sender.d.ts +8 -0
- package/dist/internal/xhr-sender.d.ts.map +1 -0
- package/dist/internal/xhr-sender.js +82 -0
- package/dist/internal/xhr-sender.js.map +1 -0
- package/dist/job-errors.d.ts +54 -0
- package/dist/job-errors.d.ts.map +1 -0
- package/dist/job-errors.js +67 -0
- package/dist/job-errors.js.map +1 -0
- package/dist/job-model.d.ts +92 -0
- package/dist/job-model.d.ts.map +1 -0
- package/dist/job-model.js +28 -0
- package/dist/job-model.js.map +1 -0
- package/dist/job-options.d.ts +136 -0
- package/dist/job-options.d.ts.map +1 -0
- package/dist/job-options.js +2 -0
- package/dist/job-options.js.map +1 -0
- package/dist/jobs.d.ts +134 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +336 -0
- package/dist/jobs.js.map +1 -0
- package/dist/legend.d.ts +116 -0
- package/dist/legend.d.ts.map +1 -0
- package/dist/legend.js +142 -0
- package/dist/legend.js.map +1 -0
- package/dist/logger.d.ts +29 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +19 -0
- package/dist/logger.js.map +1 -0
- package/dist/mesh-clean.d.ts +64 -0
- package/dist/mesh-clean.d.ts.map +1 -0
- package/dist/mesh-clean.js +53 -0
- package/dist/mesh-clean.js.map +1 -0
- package/dist/mesh.d.ts +42 -0
- package/dist/mesh.d.ts.map +1 -0
- package/dist/mesh.js +35 -0
- package/dist/mesh.js.map +1 -0
- package/dist/node-billing.js +13 -0
- package/dist/node-geodata.js +104 -0
- package/dist/node-runtime.cjs +15702 -0
- package/dist/node-runtime.cjs.map +7 -0
- package/dist/node-runtime.d.ts +192 -0
- package/dist/node-runtime.d.ts.map +1 -0
- package/dist/node-runtime.js +35 -0
- package/dist/node-runtime.js.map +1 -0
- package/dist/node-tiling.js +41 -0
- package/dist/node-utilities.js +13 -0
- package/dist/node.d.ts +5 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +155 -0
- package/dist/node.js.map +1 -0
- package/dist/parts/daylight-result.d.ts +149 -0
- package/dist/parts/daylight-result.d.ts.map +1 -0
- package/dist/parts/daylight-result.js +150 -0
- package/dist/parts/daylight-result.js.map +1 -0
- package/dist/parts/interior-binary.d.ts +76 -0
- package/dist/parts/interior-binary.d.ts.map +1 -0
- package/dist/parts/interior-binary.js +112 -0
- package/dist/parts/interior-binary.js.map +1 -0
- package/dist/parts/merge.d.ts +52 -0
- package/dist/parts/merge.d.ts.map +1 -0
- package/dist/parts/merge.js +147 -0
- package/dist/parts/merge.js.map +1 -0
- package/dist/parts/plan.d.ts +51 -0
- package/dist/parts/plan.d.ts.map +1 -0
- package/dist/parts/plan.js +131 -0
- package/dist/parts/plan.js.map +1 -0
- package/dist/parts/result-format.d.ts +42 -0
- package/dist/parts/result-format.d.ts.map +1 -0
- package/dist/parts/result-format.js +44 -0
- package/dist/parts/result-format.js.map +1 -0
- package/dist/parts/run.d.ts +141 -0
- package/dist/parts/run.d.ts.map +1 -0
- package/dist/parts/run.js +265 -0
- package/dist/parts/run.js.map +1 -0
- package/dist/parts/submit.d.ts +18 -0
- package/dist/parts/submit.d.ts.map +1 -0
- package/dist/parts/submit.js +86 -0
- package/dist/parts/submit.js.map +1 -0
- package/dist/parts/types.d.ts +194 -0
- package/dist/parts/types.d.ts.map +1 -0
- package/dist/parts/types.js +42 -0
- package/dist/parts/types.js.map +1 -0
- package/dist/pricing.d.ts +14 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +26 -0
- package/dist/pricing.js.map +1 -0
- package/dist/request-validation.d.ts +18 -0
- package/dist/request-validation.d.ts.map +1 -0
- package/dist/request-validation.js +314 -0
- package/dist/request-validation.js.map +1 -0
- package/dist/results/archive.d.ts +37 -0
- package/dist/results/archive.d.ts.map +1 -0
- package/dist/results/archive.js +128 -0
- package/dist/results/archive.js.map +1 -0
- package/dist/results/index.d.ts +13 -0
- package/dist/results/index.d.ts.map +1 -0
- package/dist/results/index.js +7 -0
- package/dist/results/index.js.map +1 -0
- package/dist/results/retired.d.ts +3 -0
- package/dist/results/retired.d.ts.map +1 -0
- package/dist/results/retired.js +39 -0
- package/dist/results/retired.js.map +1 -0
- package/dist/results/router.d.ts +70 -0
- package/dist/results/router.d.ts.map +1 -0
- package/dist/results/router.js +108 -0
- package/dist/results/router.js.map +1 -0
- package/dist/results/surface-analysis.d.ts +66 -0
- package/dist/results/surface-analysis.d.ts.map +1 -0
- package/dist/results/surface-analysis.js +5 -0
- package/dist/results/surface-analysis.js.map +1 -0
- package/dist/results/surface-columns-bytes.d.ts +35 -0
- package/dist/results/surface-columns-bytes.d.ts.map +1 -0
- package/dist/results/surface-columns-bytes.js +40 -0
- package/dist/results/surface-columns-bytes.js.map +1 -0
- package/dist/results/surface-columns.d.ts +288 -0
- package/dist/results/surface-columns.d.ts.map +1 -0
- package/dist/results/surface-columns.js +168 -0
- package/dist/results/surface-columns.js.map +1 -0
- package/dist/results/surface-record.d.ts +71 -0
- package/dist/results/surface-record.d.ts.map +1 -0
- package/dist/results/surface-record.js +170 -0
- package/dist/results/surface-record.js.map +1 -0
- package/dist/results/surface-render.d.ts +68 -0
- package/dist/results/surface-render.d.ts.map +1 -0
- package/dist/results/surface-render.js +25 -0
- package/dist/results/surface-render.js.map +1 -0
- package/dist/results/surface.d.ts +14 -0
- package/dist/results/surface.d.ts.map +1 -0
- package/dist/results/surface.js +16 -0
- package/dist/results/surface.js.map +1 -0
- package/dist/serialization.d.ts +54 -0
- package/dist/serialization.d.ts.map +1 -0
- package/dist/serialization.js +134 -0
- package/dist/serialization.js.map +1 -0
- package/dist/to-grade.d.ts +38 -0
- package/dist/to-grade.d.ts.map +1 -0
- package/dist/to-grade.js +100 -0
- package/dist/to-grade.js.map +1 -0
- package/dist/utilities.d.ts +10 -0
- package/dist/utilities.d.ts.map +1 -0
- package/dist/utilities.js +9 -0
- package/dist/utilities.js.map +1 -0
- package/dist/vegetation-mesh.d.ts +73 -0
- package/dist/vegetation-mesh.d.ts.map +1 -0
- package/dist/vegetation-mesh.js +73 -0
- package/dist/vegetation-mesh.js.map +1 -0
- package/dist/vegetation.d.ts +109 -0
- package/dist/vegetation.d.ts.map +1 -0
- package/dist/vegetation.js +155 -0
- package/dist/vegetation.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/dist/weather-epw.d.ts +159 -0
- package/dist/weather-epw.d.ts.map +1 -0
- package/dist/weather-epw.js +251 -0
- package/dist/weather-epw.js.map +1 -0
- package/dist/weather-static.d.ts +81 -0
- package/dist/weather-static.d.ts.map +1 -0
- package/dist/weather-static.js +278 -0
- package/dist/weather-static.js.map +1 -0
- package/dist/weather.d.ts +166 -0
- package/dist/weather.d.ts.map +1 -0
- package/dist/weather.js +171 -0
- package/dist/weather.js.map +1 -0
- package/dist/worker/client.d.ts +193 -0
- package/dist/worker/client.d.ts.map +1 -0
- package/dist/worker/client.js +242 -0
- package/dist/worker/client.js.map +1 -0
- package/dist/worker/index.d.ts +11 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +10 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/protocol.d.ts +129 -0
- package/dist/worker/protocol.d.ts.map +1 -0
- package/dist/worker/protocol.js +101 -0
- package/dist/worker/protocol.js.map +1 -0
- package/dist/worker/serve.d.ts +51 -0
- package/dist/worker/serve.d.ts.map +1 -0
- package/dist/worker/serve.js +115 -0
- package/dist/worker/serve.js.map +1 -0
- package/generated/infrared-core.d.ts +2454 -0
- package/generated/infrared-core.js +7151 -0
- package/generated/infrared-core_bg.wasm +0 -0
- package/generated/infrared-core_bg.wasm.d.ts +261 -0
- package/generated-threads/LICENSE +201 -0
- package/generated-threads/infrared-core.js +7280 -0
- package/generated-threads/infrared-core_bg.wasm +0 -0
- package/generated-threads/snippets/infrared-core-wasm-2ae142e530b240d1/inline0.js +8 -0
- package/generated-threads/snippets/wasm-bindgen-rayon-38edf6e439f6d70d/src/workerHelpers.js +124 -0
- 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.
|