@camstack/types 0.1.39 → 0.1.41
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/dist/addon/base-addon.d.ts +14 -2
- package/dist/addon/base-addon.d.ts.map +1 -1
- package/dist/addon/durable-state.d.ts +33 -0
- package/dist/addon/durable-state.d.ts.map +1 -0
- package/dist/capabilities/accessories.cap.d.ts +56 -8
- package/dist/capabilities/accessories.cap.d.ts.map +1 -1
- package/dist/capabilities/addon-settings.cap.d.ts +1 -0
- package/dist/capabilities/addon-settings.cap.d.ts.map +1 -1
- package/dist/capabilities/addons.cap.d.ts +187 -1
- package/dist/capabilities/addons.cap.d.ts.map +1 -1
- package/dist/capabilities/advanced-notifier.cap.d.ts +4 -0
- package/dist/capabilities/advanced-notifier.cap.d.ts.map +1 -1
- package/dist/capabilities/air-quality-sensor.cap.d.ts +56 -0
- package/dist/capabilities/air-quality-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/alarm-panel.cap.d.ts +154 -0
- package/dist/capabilities/alarm-panel.cap.d.ts.map +1 -0
- package/dist/capabilities/alerts.cap.d.ts +5 -5
- package/dist/capabilities/ambient-light-sensor.cap.d.ts +39 -0
- package/dist/capabilities/ambient-light-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/audio-analyzer.cap.d.ts +2 -2
- package/dist/capabilities/automation-control.cap.d.ts +65 -0
- package/dist/capabilities/automation-control.cap.d.ts.map +1 -0
- package/dist/capabilities/battery.cap.d.ts +30 -1
- package/dist/capabilities/battery.cap.d.ts.map +1 -1
- package/dist/capabilities/binary.cap.d.ts +40 -0
- package/dist/capabilities/binary.cap.d.ts.map +1 -0
- package/dist/capabilities/brightness.cap.d.ts +3 -2
- package/dist/capabilities/brightness.cap.d.ts.map +1 -1
- package/dist/capabilities/broker.cap.d.ts +291 -0
- package/dist/capabilities/broker.cap.d.ts.map +1 -0
- package/dist/capabilities/button.cap.d.ts +27 -0
- package/dist/capabilities/button.cap.d.ts.map +1 -0
- package/dist/capabilities/camera-credentials.cap.d.ts +1 -0
- package/dist/capabilities/camera-credentials.cap.d.ts.map +1 -1
- package/dist/capabilities/camera-pipeline-config.cap.d.ts +43 -0
- package/dist/capabilities/camera-pipeline-config.cap.d.ts.map +1 -0
- package/dist/capabilities/camera-streams.cap.d.ts +147 -10
- package/dist/capabilities/camera-streams.cap.d.ts.map +1 -1
- package/dist/capabilities/capability-definition.d.ts +15 -0
- package/dist/capabilities/capability-definition.d.ts.map +1 -1
- package/dist/capabilities/carbon-monoxide.cap.d.ts +33 -0
- package/dist/capabilities/carbon-monoxide.cap.d.ts.map +1 -0
- package/dist/capabilities/climate-control.cap.d.ts +183 -0
- package/dist/capabilities/climate-control.cap.d.ts.map +1 -0
- package/dist/capabilities/color.cap.d.ts +186 -0
- package/dist/capabilities/color.cap.d.ts.map +1 -0
- package/dist/capabilities/connectivity.cap.d.ts +37 -0
- package/dist/capabilities/connectivity.cap.d.ts.map +1 -0
- package/dist/capabilities/consumables.cap.d.ts +105 -0
- package/dist/capabilities/consumables.cap.d.ts.map +1 -0
- package/dist/capabilities/contact.cap.d.ts +41 -0
- package/dist/capabilities/contact.cap.d.ts.map +1 -0
- package/dist/capabilities/control.cap.d.ts +167 -0
- package/dist/capabilities/control.cap.d.ts.map +1 -0
- package/dist/capabilities/cover.cap.d.ts +104 -0
- package/dist/capabilities/cover.cap.d.ts.map +1 -0
- package/dist/capabilities/custom-actions.d.ts +6 -0
- package/dist/capabilities/custom-actions.d.ts.map +1 -1
- package/dist/capabilities/decoder.cap.d.ts +1 -1
- package/dist/capabilities/device-adoption.cap.d.ts +203 -0
- package/dist/capabilities/device-adoption.cap.d.ts.map +1 -0
- package/dist/capabilities/device-discovery.cap.d.ts +44 -143
- package/dist/capabilities/device-discovery.cap.d.ts.map +1 -1
- package/dist/capabilities/device-manager.cap.d.ts +469 -0
- package/dist/capabilities/device-manager.cap.d.ts.map +1 -1
- package/dist/capabilities/device-ops.cap.d.ts +30 -0
- package/dist/capabilities/device-ops.cap.d.ts.map +1 -1
- package/dist/capabilities/device-provider.cap.d.ts +36 -0
- package/dist/capabilities/device-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/device-status.cap.d.ts +1 -0
- package/dist/capabilities/device-status.cap.d.ts.map +1 -1
- package/dist/capabilities/doorbell.cap.d.ts +1 -0
- package/dist/capabilities/doorbell.cap.d.ts.map +1 -1
- package/dist/capabilities/enum-sensor.cap.d.ts +60 -0
- package/dist/capabilities/enum-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/event-emitter.cap.d.ts +79 -0
- package/dist/capabilities/event-emitter.cap.d.ts.map +1 -0
- package/dist/capabilities/fan-control.cap.d.ts +100 -0
- package/dist/capabilities/fan-control.cap.d.ts.map +1 -0
- package/dist/capabilities/feature-probe.cap.d.ts +1 -0
- package/dist/capabilities/feature-probe.cap.d.ts.map +1 -1
- package/dist/capabilities/flood.cap.d.ts +37 -0
- package/dist/capabilities/flood.cap.d.ts.map +1 -0
- package/dist/capabilities/gas.cap.d.ts +34 -0
- package/dist/capabilities/gas.cap.d.ts.map +1 -0
- package/dist/capabilities/humidifier.cap.d.ts +82 -0
- package/dist/capabilities/humidifier.cap.d.ts.map +1 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts +43 -0
- package/dist/capabilities/humidity-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/image.cap.d.ts +44 -0
- package/dist/capabilities/image.cap.d.ts.map +1 -0
- package/dist/capabilities/index.d.ts +103 -15
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/integrations.cap.d.ts +12 -0
- package/dist/capabilities/integrations.cap.d.ts.map +1 -1
- package/dist/capabilities/intercom.cap.d.ts +49 -9
- package/dist/capabilities/intercom.cap.d.ts.map +1 -1
- package/dist/capabilities/lawn-mower-control.cap.d.ts +83 -0
- package/dist/capabilities/lawn-mower-control.cap.d.ts.map +1 -0
- package/dist/capabilities/local-network.cap.d.ts +1 -1
- package/dist/capabilities/lock-control.cap.d.ts +92 -0
- package/dist/capabilities/lock-control.cap.d.ts.map +1 -0
- package/dist/capabilities/mask-shape.d.ts +99 -0
- package/dist/capabilities/mask-shape.d.ts.map +1 -0
- package/dist/capabilities/media-player.cap.d.ts +201 -0
- package/dist/capabilities/media-player.cap.d.ts.map +1 -0
- package/dist/capabilities/mesh-network.cap.d.ts +3 -3
- package/dist/capabilities/motion-trigger.cap.d.ts +1 -0
- package/dist/capabilities/motion-trigger.cap.d.ts.map +1 -1
- package/dist/capabilities/motion-zones.cap.d.ts +95 -13
- package/dist/capabilities/motion-zones.cap.d.ts.map +1 -1
- package/dist/capabilities/mqtt-broker.cap.d.ts +3 -3
- package/dist/capabilities/native-object-detection.cap.d.ts +74 -3
- package/dist/capabilities/native-object-detection.cap.d.ts.map +1 -1
- package/dist/capabilities/network-access.cap.d.ts +7 -7
- package/dist/capabilities/network-quality.cap.d.ts +5 -0
- package/dist/capabilities/network-quality.cap.d.ts.map +1 -1
- package/dist/capabilities/notifier.cap.d.ts +173 -0
- package/dist/capabilities/notifier.cap.d.ts.map +1 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts +52 -0
- package/dist/capabilities/numeric-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/oauth-integration.cap.d.ts +4 -2
- package/dist/capabilities/oauth-integration.cap.d.ts.map +1 -1
- package/dist/capabilities/osd.cap.d.ts +1 -0
- package/dist/capabilities/osd.cap.d.ts.map +1 -1
- package/dist/capabilities/pipeline-analytics.cap.d.ts +69 -22
- package/dist/capabilities/pipeline-analytics.cap.d.ts.map +1 -1
- package/dist/capabilities/pipeline-executor.cap.d.ts +2 -2
- package/dist/capabilities/pipeline-orchestrator.cap.d.ts +1 -1
- package/dist/capabilities/pipeline-runner.cap.d.ts +4 -2
- package/dist/capabilities/pipeline-runner.cap.d.ts.map +1 -1
- package/dist/capabilities/platform-probe.cap.d.ts +25 -0
- package/dist/capabilities/platform-probe.cap.d.ts.map +1 -1
- package/dist/capabilities/power-meter.cap.d.ts +65 -0
- package/dist/capabilities/power-meter.cap.d.ts.map +1 -0
- package/dist/capabilities/presence.cap.d.ts +79 -0
- package/dist/capabilities/presence.cap.d.ts.map +1 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts +43 -0
- package/dist/capabilities/pressure-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/privacy-mask.cap.d.ts +207 -0
- package/dist/capabilities/privacy-mask.cap.d.ts.map +1 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts +1 -0
- package/dist/capabilities/ptz-autotrack.cap.d.ts.map +1 -1
- package/dist/capabilities/ptz.cap.d.ts +1 -0
- package/dist/capabilities/ptz.cap.d.ts.map +1 -1
- package/dist/capabilities/reboot.cap.d.ts +1 -0
- package/dist/capabilities/reboot.cap.d.ts.map +1 -1
- package/dist/capabilities/recording.cap.d.ts +238 -32
- package/dist/capabilities/recording.cap.d.ts.map +1 -1
- package/dist/capabilities/restreamer.cap.d.ts +2 -2
- package/dist/capabilities/schemas/detection-shared.d.ts +14 -1
- package/dist/capabilities/schemas/detection-shared.d.ts.map +1 -1
- package/dist/capabilities/schemas/orchestrator-metrics.d.ts +2 -2
- package/dist/capabilities/schemas/streaming-shared.d.ts +64 -1
- package/dist/capabilities/schemas/streaming-shared.d.ts.map +1 -1
- package/dist/capabilities/script-runner.cap.d.ts +62 -0
- package/dist/capabilities/script-runner.cap.d.ts.map +1 -0
- package/dist/capabilities/settings-store.cap.d.ts +25 -0
- package/dist/capabilities/settings-store.cap.d.ts.map +1 -1
- package/dist/capabilities/smoke.cap.d.ts +38 -0
- package/dist/capabilities/smoke.cap.d.ts.map +1 -0
- package/dist/capabilities/snapshot-provider.cap.d.ts +1 -1
- package/dist/capabilities/snapshot.cap.d.ts +1 -0
- package/dist/capabilities/snapshot.cap.d.ts.map +1 -1
- package/dist/capabilities/sso-bridge.cap.d.ts +3 -3
- package/dist/capabilities/storage-evictable.cap.d.ts +54 -0
- package/dist/capabilities/storage-evictable.cap.d.ts.map +1 -0
- package/dist/capabilities/storage-provider.cap.d.ts +31 -186
- package/dist/capabilities/storage-provider.cap.d.ts.map +1 -1
- package/dist/capabilities/storage.cap.d.ts +35 -226
- package/dist/capabilities/storage.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-broker.cap.d.ts +309 -25
- package/dist/capabilities/stream-broker.cap.d.ts.map +1 -1
- package/dist/capabilities/stream-catalog.cap.d.ts +85 -0
- package/dist/capabilities/stream-catalog.cap.d.ts.map +1 -0
- package/dist/capabilities/stream-params.cap.d.ts +27 -26
- package/dist/capabilities/stream-params.cap.d.ts.map +1 -1
- package/dist/capabilities/switch.cap.d.ts +1 -0
- package/dist/capabilities/switch.cap.d.ts.map +1 -1
- package/dist/capabilities/tamper.cap.d.ts +33 -0
- package/dist/capabilities/tamper.cap.d.ts.map +1 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts +51 -0
- package/dist/capabilities/temperature-sensor.cap.d.ts.map +1 -0
- package/dist/capabilities/update.cap.d.ts +49 -0
- package/dist/capabilities/update.cap.d.ts.map +1 -0
- package/dist/capabilities/user-management.cap.d.ts +20 -20
- package/dist/capabilities/vacuum-control.cap.d.ts +229 -0
- package/dist/capabilities/vacuum-control.cap.d.ts.map +1 -0
- package/dist/capabilities/valve.cap.d.ts +93 -0
- package/dist/capabilities/valve.cap.d.ts.map +1 -0
- package/dist/capabilities/vibration.cap.d.ts +33 -0
- package/dist/capabilities/vibration.cap.d.ts.map +1 -0
- package/dist/capabilities/water-heater.cap.d.ts +78 -0
- package/dist/capabilities/water-heater.cap.d.ts.map +1 -0
- package/dist/capabilities/weather.cap.d.ts +76 -0
- package/dist/capabilities/weather.cap.d.ts.map +1 -0
- package/dist/capabilities/webrtc-session.cap.d.ts +128 -0
- package/dist/capabilities/webrtc-session.cap.d.ts.map +1 -1
- package/dist/constants.d.ts +0 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/device/base-device-provider.d.ts +11 -0
- package/dist/device/base-device-provider.d.ts.map +1 -1
- package/dist/device/base-device.d.ts +52 -0
- package/dist/device/base-device.d.ts.map +1 -1
- package/dist/device/device-context.d.ts +29 -0
- package/dist/device/device-context.d.ts.map +1 -1
- package/dist/device/device-link-transform.d.ts +6 -0
- package/dist/device/device-link-transform.d.ts.map +1 -0
- package/dist/device/device-management.d.ts +116 -4
- package/dist/device/device-management.d.ts.map +1 -1
- package/dist/device/device-type.d.ts +214 -3
- package/dist/device/device-type.d.ts.map +1 -1
- package/dist/device/device.d.ts +25 -0
- package/dist/device/device.d.ts.map +1 -1
- package/dist/device/index.d.ts +5 -1
- package/dist/device/index.d.ts.map +1 -1
- package/dist/device/path-util.d.ts +13 -0
- package/dist/device/path-util.d.ts.map +1 -0
- package/dist/device/schema-fields.d.ts +12 -0
- package/dist/device/schema-fields.d.ts.map +1 -0
- package/dist/device/source-info.d.ts +87 -0
- package/dist/device/source-info.d.ts.map +1 -0
- package/dist/device/system-mirror.d.ts +6 -2
- package/dist/device/system-mirror.d.ts.map +1 -1
- package/dist/encode-profile.d.ts +126 -0
- package/dist/encode-profile.d.ts.map +1 -0
- package/dist/enums/event-category.d.ts +92 -7
- package/dist/enums/event-category.d.ts.map +1 -1
- package/dist/generated/addon-api.d.ts +12821 -8025
- package/dist/generated/addon-api.d.ts.map +1 -1
- package/dist/generated/cap-status-types.d.ts +87 -1
- package/dist/generated/cap-status-types.d.ts.map +1 -1
- package/dist/generated/capability-router-map.d.ts +142 -7
- package/dist/generated/capability-router-map.d.ts.map +1 -1
- package/dist/generated/device-local-state.d.ts +123 -0
- package/dist/generated/device-local-state.d.ts.map +1 -1
- package/dist/generated/device-proxy.d.ts +132 -5
- package/dist/generated/device-proxy.d.ts.map +1 -1
- package/dist/generated/method-access-map.d.ts +1 -1
- package/dist/generated/method-access-map.d.ts.map +1 -1
- package/dist/generated/provider-kind-map.d.ts +1 -1
- package/dist/generated/provider-kind-map.d.ts.map +1 -1
- package/dist/generated/system-proxy.d.ts +10 -8
- package/dist/generated/system-proxy.d.ts.map +1 -1
- package/dist/health/wiring-health.d.ts +136 -0
- package/dist/health/wiring-health.d.ts.map +1 -0
- package/dist/{index-CMM1Y9W6.js → index-BSA_TBea.js} +4774 -923
- package/dist/index-BSA_TBea.js.map +1 -0
- package/dist/{index-QRlzao1I.mjs → index-Bpj3ScIH.mjs} +5142 -1291
- package/dist/index-Bpj3ScIH.mjs.map +1 -0
- package/dist/index.d.ts +23 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1498 -119
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1806 -427
- package/dist/index.mjs.map +1 -1
- package/dist/interfaces/addon-data-plane.d.ts +76 -0
- package/dist/interfaces/addon-data-plane.d.ts.map +1 -0
- package/dist/interfaces/addon.d.ts +61 -1
- package/dist/interfaces/addon.d.ts.map +1 -1
- package/dist/interfaces/advanced-notifier.d.ts +4 -0
- package/dist/interfaces/advanced-notifier.d.ts.map +1 -1
- package/dist/interfaces/capability.d.ts +59 -1
- package/dist/interfaces/capability.d.ts.map +1 -1
- package/dist/interfaces/config-ui.d.ts +70 -6
- package/dist/interfaces/config-ui.d.ts.map +1 -1
- package/dist/interfaces/device-capabilities/camera.d.ts +2 -1
- package/dist/interfaces/device-capabilities/camera.d.ts.map +1 -1
- package/dist/interfaces/event-bus.d.ts +105 -4
- package/dist/interfaces/event-bus.d.ts.map +1 -1
- package/dist/interfaces/kernel-abstractions.d.ts +10 -1
- package/dist/interfaces/kernel-abstractions.d.ts.map +1 -1
- package/dist/interfaces/network-quality.d.ts +8 -0
- package/dist/interfaces/network-quality.d.ts.map +1 -1
- package/dist/interfaces/pipeline-executor-capability.d.ts +2 -2
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts +2 -1
- package/dist/interfaces/pipeline-orchestrator-capability.d.ts.map +1 -1
- package/dist/interfaces/pipeline-runner-capability.d.ts +7 -0
- package/dist/interfaces/pipeline-runner-capability.d.ts.map +1 -1
- package/dist/interfaces/recording-config.d.ts +91 -0
- package/dist/interfaces/recording-config.d.ts.map +1 -0
- package/dist/interfaces/rtp-egress.d.ts +2 -3
- package/dist/interfaces/rtp-egress.d.ts.map +1 -1
- package/dist/interfaces/storage-location-declaration.d.ts +34 -0
- package/dist/interfaces/storage-location-declaration.d.ts.map +1 -0
- package/dist/interfaces/storage-location.d.ts +18 -74
- package/dist/interfaces/storage-location.d.ts.map +1 -1
- package/dist/interfaces/storage.d.ts +15 -4
- package/dist/interfaces/storage.d.ts.map +1 -1
- package/dist/interfaces/stream-broker.d.ts +39 -4
- package/dist/interfaces/stream-broker.d.ts.map +1 -1
- package/dist/interfaces/timezones.d.ts +59 -0
- package/dist/interfaces/timezones.d.ts.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +50 -8
- package/dist/node.js.map +1 -1
- package/dist/node.mjs +51 -9
- package/dist/node.mjs.map +1 -1
- package/dist/readiness/readiness-registry.d.ts.map +1 -1
- package/dist/schemas/auth-records.d.ts +4 -4
- package/dist/storage/filesystem-storage-provider.d.ts +2 -1
- package/dist/storage/filesystem-storage-provider.d.ts.map +1 -1
- package/dist/stream-selection.d.ts +85 -0
- package/dist/stream-selection.d.ts.map +1 -0
- package/dist/types/detection.d.ts +3 -3
- package/dist/types/io.d.ts +13 -1
- package/dist/types/io.d.ts.map +1 -1
- package/dist/util/location-match.d.ts +15 -0
- package/dist/util/location-match.d.ts.map +1 -0
- package/dist/utils/canonical-hash.d.ts +20 -0
- package/dist/utils/canonical-hash.d.ts.map +1 -0
- package/dist/utils/export-reconciler.d.ts +101 -0
- package/dist/utils/export-reconciler.d.ts.map +1 -0
- package/dist/utils/privacy-grid-raster.d.ts +48 -0
- package/dist/utils/privacy-grid-raster.d.ts.map +1 -0
- package/dist/utils/sleep.d.ts +36 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/capabilities/recording-engine.cap.d.ts +0 -477
- package/dist/capabilities/recording-engine.cap.d.ts.map +0 -1
- package/dist/index-CMM1Y9W6.js.map +0 -1
- package/dist/index-QRlzao1I.mjs.map +0 -1
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Today the WebRTC viewer (`AdaptiveSession` in addon-pipeline) does
|
|
5
5
|
* DTLS-SRTP via werift. Tomorrow:
|
|
6
|
-
* - HomeKit consumes the same source via HAP-derived SRTP over raw UDP
|
|
7
|
-
*
|
|
8
|
-
* `addon-export-hap`; this interface is preparatory).
|
|
6
|
+
* - HomeKit consumes the same source via HAP-derived SRTP over raw UDP;
|
|
7
|
+
* this interface is preparatory for an in-process RtpEgress there.
|
|
9
8
|
* - Alexa Echo Show speaks WebRTC over an Alexa-Smart-Home-specific
|
|
10
9
|
* signalling path; once wired, that path will instantiate its own
|
|
11
10
|
* `AlexaRtcEgress` and consume the same broker source.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rtp-egress.d.ts","sourceRoot":"","sources":["../../src/interfaces/rtp-egress.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rtp-egress.d.ts","sourceRoot":"","sources":["../../src/interfaces/rtp-egress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,CAAA;IACrC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC,QAAQ,CAAC,eAAe,CAAC,EAAE,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IACzC,YAAY,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* `StorageLocationDeclaration` — a single storage-location entry declared by
|
|
4
|
+
* an addon in its `package.json` under `camstack.storageLocations`.
|
|
5
|
+
*
|
|
6
|
+
* Design intent:
|
|
7
|
+
* - **Addon declares its needs** — each addon describes the logical storage
|
|
8
|
+
* slots it requires (e.g. `recordings`, `recordingsLow`) without caring
|
|
9
|
+
* about the physical path.
|
|
10
|
+
* - **Kernel aggregates** — at boot the kernel collects declarations from all
|
|
11
|
+
* installed addons, deduplicates by `id`, and exposes the union via the
|
|
12
|
+
* storage-locations settings surface.
|
|
13
|
+
* - **Orchestrator seeds** — for every declared `id` the orchestrator ensures
|
|
14
|
+
* at least one instance named `<id>:default` is present, using
|
|
15
|
+
* `defaultsTo` to inherit the resolved root from another location when the
|
|
16
|
+
* declaration is a derivative slot (e.g. `recordingsLow` defaults to
|
|
17
|
+
* `recordings`).
|
|
18
|
+
* - **ids are global** — `id` values are shared across the entire deployment;
|
|
19
|
+
* two addons declaring the same `id` must agree on `cardinality` (validated
|
|
20
|
+
* at kernel aggregation time, not here).
|
|
21
|
+
*/
|
|
22
|
+
export declare const StorageLocationDeclarationSchema: z.ZodObject<{
|
|
23
|
+
id: z.ZodString;
|
|
24
|
+
displayName: z.ZodString;
|
|
25
|
+
description: z.ZodOptional<z.ZodString>;
|
|
26
|
+
cardinality: z.ZodEnum<{
|
|
27
|
+
single: "single";
|
|
28
|
+
multi: "multi";
|
|
29
|
+
}>;
|
|
30
|
+
defaultsTo: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
/** Inferred TypeScript type for `StorageLocationDeclarationSchema`. */
|
|
33
|
+
export type StorageLocationDeclaration = z.infer<typeof StorageLocationDeclarationSchema>;
|
|
34
|
+
//# sourceMappingURL=storage-location-declaration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-location-declaration.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-location-declaration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;iBA+B3C,CAAA;AAEF,uEAAuE;AACvE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* `StorageLocationType` —
|
|
4
|
-
*
|
|
5
|
-
* persisted record schema and the consumer-facing cap can both consume it
|
|
3
|
+
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
4
|
+
* storage a location serves. Defined here (not in `capabilities/storage.cap.ts`)
|
|
5
|
+
* so the persisted record schema and the consumer-facing cap can both consume it
|
|
6
6
|
* without forming a circular import. The `storage` cap re-exports it
|
|
7
7
|
* verbatim for back-compat.
|
|
8
8
|
*
|
|
@@ -10,54 +10,24 @@ import { z } from 'zod';
|
|
|
10
10
|
* The TS alias in `./storage.ts` re-exports `z.infer<typeof
|
|
11
11
|
* StorageLocationTypeSchema>` so the wire surface (cap) and the legacy
|
|
12
12
|
* `IStorageProvider` interface stay in lockstep.
|
|
13
|
+
*
|
|
14
|
+
* The type is now an **open string** (not a closed enum) — addons declare
|
|
15
|
+
* their own location kinds via `StorageLocationDeclaration.id`. The regex
|
|
16
|
+
* enforces a safe id format: lowercase-start, alphanumeric + hyphens.
|
|
13
17
|
*/
|
|
14
|
-
export declare const StorageLocationTypeSchema: z.
|
|
15
|
-
data: "data";
|
|
16
|
-
media: "media";
|
|
17
|
-
recordings: "recordings";
|
|
18
|
-
cache: "cache";
|
|
19
|
-
logs: "logs";
|
|
20
|
-
models: "models";
|
|
21
|
-
"recordings-high": "recordings-high";
|
|
22
|
-
"recordings-low": "recordings-low";
|
|
23
|
-
"recordings-clips": "recordings-clips";
|
|
24
|
-
"event-images": "event-images";
|
|
25
|
-
"addons-data": "addons-data";
|
|
26
|
-
backups: "backups";
|
|
27
|
-
}>;
|
|
18
|
+
export declare const StorageLocationTypeSchema: z.ZodString;
|
|
28
19
|
/**
|
|
29
|
-
* `StorageLocationType` — TS alias for the
|
|
30
|
-
* by `./storage.ts` so the legacy `IStorageProvider` interface
|
|
31
|
-
* same name without duplicating the
|
|
20
|
+
* `StorageLocationType` — TS alias for the open string schema above (`string`).
|
|
21
|
+
* Re-exported by `./storage.ts` so the legacy `IStorageProvider` interface
|
|
22
|
+
* keeps the same name without duplicating the schema.
|
|
32
23
|
*/
|
|
33
24
|
export type StorageLocationType = z.infer<typeof StorageLocationTypeSchema>;
|
|
34
25
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* state lands in either or both; two `cache` roots → cache misses
|
|
41
|
-
* on every read; two `data` roots → sqlite path bifurcation).
|
|
42
|
-
* Operators can EDIT the singleton's config (path / providerId)
|
|
43
|
-
* but never add a second instance. The seed always creates the
|
|
44
|
-
* initial default.
|
|
45
|
-
*
|
|
46
|
-
* - `multi` — multiple instances are first-class. Operators add
|
|
47
|
-
* secondary locations (e.g. NAS + local SSD for `recordings`,
|
|
48
|
-
* offsite + on-disk for `backups`). One is `isDefault: true`
|
|
49
|
-
* at any moment; others are addressable via fully-qualified id.
|
|
50
|
-
*
|
|
51
|
-
* Used by `StorageOrchestratorService.upsertLocation` to reject
|
|
52
|
-
* "Add" attempts on singleton types, and by the admin UI to hide
|
|
53
|
-
* the "+ Add location" button on those groups.
|
|
54
|
-
*/
|
|
55
|
-
export declare const STORAGE_LOCATION_CARDINALITY: Readonly<Record<StorageLocationType, 'singleton' | 'multi'>>;
|
|
56
|
-
/**
|
|
57
|
-
* Persisted record for a storage location instance. Multi-instance
|
|
58
|
-
* (per `STORAGE_LOCATION_CARDINALITY[type]`) — operators can register
|
|
59
|
-
* e.g. two `backups` locations (one filesystem, one SFTP) with
|
|
60
|
-
* different `providerId`s, but only one `cache`/`data`/etc.
|
|
26
|
+
* Persisted record for a storage location instance. Operators can register
|
|
27
|
+
* multiple instances for multi-cardinality types (e.g. two `backups`
|
|
28
|
+
* locations with different `providerId`s). Cardinality is now declared per
|
|
29
|
+
* location via `StorageLocationDeclaration.cardinality` — the static
|
|
30
|
+
* `STORAGE_LOCATION_CARDINALITY` map has been removed.
|
|
61
31
|
*
|
|
62
32
|
* `id` is a stable namespaced string of the form `<type>:<slug>`.
|
|
63
33
|
* The default location for a type uses `id === <type>:default` by
|
|
@@ -71,20 +41,7 @@ export declare const STORAGE_LOCATION_CARDINALITY: Readonly<Record<StorageLocati
|
|
|
71
41
|
*/
|
|
72
42
|
export declare const StorageLocationSchema: z.ZodObject<{
|
|
73
43
|
id: z.ZodString;
|
|
74
|
-
type: z.
|
|
75
|
-
data: "data";
|
|
76
|
-
media: "media";
|
|
77
|
-
recordings: "recordings";
|
|
78
|
-
cache: "cache";
|
|
79
|
-
logs: "logs";
|
|
80
|
-
models: "models";
|
|
81
|
-
"recordings-high": "recordings-high";
|
|
82
|
-
"recordings-low": "recordings-low";
|
|
83
|
-
"recordings-clips": "recordings-clips";
|
|
84
|
-
"event-images": "event-images";
|
|
85
|
-
"addons-data": "addons-data";
|
|
86
|
-
backups: "backups";
|
|
87
|
-
}>;
|
|
44
|
+
type: z.ZodString;
|
|
88
45
|
displayName: z.ZodString;
|
|
89
46
|
providerId: z.ZodString;
|
|
90
47
|
config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
@@ -102,19 +59,6 @@ export type StorageLocation = z.infer<typeof StorageLocationSchema>;
|
|
|
102
59
|
*
|
|
103
60
|
* The orchestrator's `resolveRef(ref)` handles both cases.
|
|
104
61
|
*/
|
|
105
|
-
export declare const StorageLocationRefSchema: z.ZodUnion<readonly [z.
|
|
106
|
-
data: "data";
|
|
107
|
-
media: "media";
|
|
108
|
-
recordings: "recordings";
|
|
109
|
-
cache: "cache";
|
|
110
|
-
logs: "logs";
|
|
111
|
-
models: "models";
|
|
112
|
-
"recordings-high": "recordings-high";
|
|
113
|
-
"recordings-low": "recordings-low";
|
|
114
|
-
"recordings-clips": "recordings-clips";
|
|
115
|
-
"event-images": "event-images";
|
|
116
|
-
"addons-data": "addons-data";
|
|
117
|
-
backups: "backups";
|
|
118
|
-
}>, z.ZodString]>;
|
|
62
|
+
export declare const StorageLocationRefSchema: z.ZodUnion<readonly [z.ZodString, z.ZodString]>;
|
|
119
63
|
export type StorageLocationRef = z.infer<typeof StorageLocationRefSchema>;
|
|
120
64
|
//# sourceMappingURL=storage-location.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-location.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-location.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB
|
|
1
|
+
{"version":3,"file":"storage-location.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage-location.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,yBAAyB,aAA2C,CAAA;AAEjF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAahC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,iDAGnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
export type { StorageLocationType } from './storage-location.js';
|
|
2
2
|
import type { StorageLocationType } from './storage-location.js';
|
|
3
|
-
/** All location types as an array (for iteration) */
|
|
4
|
-
export declare const STORAGE_LOCATION_TYPES: readonly StorageLocationType[];
|
|
5
|
-
/** Default subdirectory names for filesystem storage */
|
|
6
|
-
export declare const DEFAULT_LOCATION_SUBDIRS: Readonly<Record<StorageLocationType, string>>;
|
|
7
3
|
/**
|
|
8
4
|
* A storage provider serves file-based storage for one or more location types.
|
|
9
5
|
* Multiple providers can coexist (local filesystem, NAS, S3, etc.).
|
|
@@ -95,6 +91,19 @@ export interface SettingsIsEmptyInput {
|
|
|
95
91
|
readonly namespace?: string;
|
|
96
92
|
readonly collection: SettingsCollection;
|
|
97
93
|
}
|
|
94
|
+
export interface SettingsHistogramInput {
|
|
95
|
+
readonly namespace?: string;
|
|
96
|
+
readonly collection: SettingsCollection;
|
|
97
|
+
/** Numeric column to bucket on (e.g. 'timestamp'). */
|
|
98
|
+
readonly field: string;
|
|
99
|
+
readonly bucketSize: number;
|
|
100
|
+
readonly origin: number;
|
|
101
|
+
readonly filter?: QueryFilter;
|
|
102
|
+
}
|
|
103
|
+
export interface HistogramBucket {
|
|
104
|
+
readonly bucket: number;
|
|
105
|
+
readonly count: number;
|
|
106
|
+
}
|
|
98
107
|
/**
|
|
99
108
|
* Settings backend — persistent key-value and document storage.
|
|
100
109
|
* Default implementation: SQLite. Can be replaced by Postgres, etc.
|
|
@@ -115,6 +124,8 @@ export interface ISettingsBackend {
|
|
|
115
124
|
delete(input: SettingsDeleteInput): Promise<void>;
|
|
116
125
|
/** Count entries in a collection */
|
|
117
126
|
count(input: SettingsCountInput): Promise<number>;
|
|
127
|
+
/** Grouped counts: COUNT(*) per ((field - origin) / bucketSize) bucket. */
|
|
128
|
+
histogram(input: SettingsHistogramInput): Promise<readonly HistogramBucket[]>;
|
|
118
129
|
/** Check if a collection is empty (used for first-boot detection) */
|
|
119
130
|
isEmpty(input: SettingsIsEmptyInput): Promise<boolean>;
|
|
120
131
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage.ts"],"names":[],"mappings":"AAWA,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/interfaces/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import type { FrameFormat } from '../types/io.js';
|
|
3
3
|
import type { FrameHandle } from './frame-handle.js';
|
|
4
4
|
import type { SubscribeFramesInput, SubscribeFramesResult, SubscribeAudioChunksResult } from '../capabilities/schemas/streaming-shared.js';
|
|
5
|
+
import type { BrokerConsumerAttribution } from '../capabilities/stream-broker.cap.js';
|
|
5
6
|
export declare const DecoderStatsSchema: z.ZodObject<{
|
|
6
7
|
inputFps: z.ZodNumber;
|
|
7
8
|
outputFps: z.ZodNumber;
|
|
@@ -126,6 +127,10 @@ export interface DecodedFrame {
|
|
|
126
127
|
readonly height: number;
|
|
127
128
|
readonly format: FrameFormat;
|
|
128
129
|
readonly timestamp: number;
|
|
130
|
+
/** Wall-clock ms (Date.now) when the frame was committed to the shm ring.
|
|
131
|
+
* Unlike `timestamp` (codec PTS), this is diff-able against Date.now() to
|
|
132
|
+
* measure frame age (capture→processing). Absent on non-shm frame sources. */
|
|
133
|
+
readonly capturedAt?: number;
|
|
129
134
|
}
|
|
130
135
|
export interface DecodedAudioChunk {
|
|
131
136
|
readonly data: Buffer;
|
|
@@ -231,7 +236,14 @@ export interface IStreamBroker {
|
|
|
231
236
|
* be a no-op when no RTP subscribers exist.
|
|
232
237
|
*/
|
|
233
238
|
pushVideoRtp?(rtpData: Buffer): void;
|
|
234
|
-
|
|
239
|
+
/**
|
|
240
|
+
* Subscribe to AnnexB-encoded packets. The optional `attribution`
|
|
241
|
+
* blob identifies the consumer in the broker's `listClients()` /
|
|
242
|
+
* widget output ("Alexa cam 54 / sessionId=...", "HAP iOS", etc).
|
|
243
|
+
* Callers that don't have identity context pass nothing and land
|
|
244
|
+
* as `kind: 'unknown'`.
|
|
245
|
+
*/
|
|
246
|
+
onEncodedData(callback: (packet: EncodedPacket) => void, attribution?: BrokerConsumerAttribution): Unsubscribe;
|
|
235
247
|
/**
|
|
236
248
|
* Subscribe to source video RTP packets (raw on-wire bytes, before
|
|
237
249
|
* depacketization). Used by the WebRTC server's H.265 path to feed
|
|
@@ -240,9 +252,16 @@ export interface IStreamBroker {
|
|
|
240
252
|
*
|
|
241
253
|
* Sources that don't have an underlying RTP wire (e.g. Frigate event
|
|
242
254
|
* streams that call `pushEncodedPacket`) MAY register zero callbacks
|
|
243
|
-
* and emit nothing.
|
|
255
|
+
* and emit nothing. `attribution` works the same as `onEncodedData`.
|
|
256
|
+
*/
|
|
257
|
+
onVideoRtp(callback: (rtpData: Buffer) => void, attribution?: BrokerConsumerAttribution): Unsubscribe;
|
|
258
|
+
/**
|
|
259
|
+
* Re-tag every subscriber whose attribution carries `sessionId` with the
|
|
260
|
+
* supplied patch (e.g. a remote address discovered once ICE connects). The
|
|
261
|
+
* stored attribution is replaced with a freshly merged object — never
|
|
262
|
+
* mutated. Returns true when at least one entry matched.
|
|
244
263
|
*/
|
|
245
|
-
|
|
264
|
+
updateConsumerAttributionBySession(sessionId: string, patch: Partial<BrokerConsumerAttribution>): boolean;
|
|
246
265
|
/**
|
|
247
266
|
* Codec parameter sets harvested from the camera's SDP (sprop-vps /
|
|
248
267
|
* sprop-sps / sprop-pps). Cameras like Reolink high-profile streams
|
|
@@ -309,8 +328,16 @@ export interface IStreamBroker {
|
|
|
309
328
|
unsubscribeFrameHandles(subscriptionId: string): Promise<boolean>;
|
|
310
329
|
getStats(): BrokerStats;
|
|
311
330
|
getLocalStreamUrl(): string;
|
|
312
|
-
/**
|
|
331
|
+
/**
|
|
332
|
+
* Get the pre-buffer (current GOP from the last keyframe), for late-joining
|
|
333
|
+
* consumers to start decoding immediately. Two mutually-exclusive forms by
|
|
334
|
+
* source: AnnexB (`getPreBuffer`) for push/AnnexB sources (writeVideoNals
|
|
335
|
+
* path); raw source RTP (`getRtpPreBuffer`) for RTP sources (RTSP) on the
|
|
336
|
+
* repacketizer path. A given broker populates exactly ONE of them.
|
|
337
|
+
*/
|
|
313
338
|
getPreBuffer(): readonly EncodedPacket[];
|
|
339
|
+
/** Raw source-RTP pre-buffer (current GOP) — RTP sources only; [] otherwise. */
|
|
340
|
+
getRtpPreBuffer(): readonly Buffer[];
|
|
314
341
|
/** Set the pre-buffer duration in seconds (0 to disable, max 30). */
|
|
315
342
|
setPreBufferDuration(seconds: number): void;
|
|
316
343
|
/** Get the current pre-buffer duration in seconds. */
|
|
@@ -375,5 +402,13 @@ export interface CameraDetectionConfig {
|
|
|
375
402
|
*/
|
|
376
403
|
readonly detectionMode: import('../device/device-profile.js').PipelinePhaseMode;
|
|
377
404
|
readonly audioMode: import('../device/device-profile.js').PipelinePhaseMode;
|
|
405
|
+
/**
|
|
406
|
+
* When true, the runner dynamically opens the WASM frame-diff analyzer
|
|
407
|
+
* on onboard-motion events and tears it down after the cooldown window.
|
|
408
|
+
* Has no effect when `motionSources` already includes `'analyzer'`.
|
|
409
|
+
* Mirrors `audioMode`'s optional pattern — resolved with operator-wins →
|
|
410
|
+
* default(true) in `resolveDeviceDetectionSettings`.
|
|
411
|
+
*/
|
|
412
|
+
readonly onboardMotionDrivesAnalyzer: boolean;
|
|
378
413
|
}
|
|
379
414
|
//# sourceMappingURL=stream-broker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-broker.d.ts","sourceRoot":"","sources":["../../src/interfaces/stream-broker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,6CAA6C,CAAA;
|
|
1
|
+
{"version":3,"file":"stream-broker.d.ts","sourceRoot":"","sources":["../../src/interfaces/stream-broker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Curated world-timezone catalogue + DST rules.
|
|
3
|
+
*
|
|
4
|
+
* Lives in `@camstack/types` (a system package every addon already
|
|
5
|
+
* depends on) so BOTH the shared `<TimezoneSelector>` in
|
|
6
|
+
* `@camstack/ui-library` AND device providers (e.g. the Reolink camera
|
|
7
|
+
* driver) can resolve a friendly IANA id to its standard UTC offset and
|
|
8
|
+
* DST rule without importing the UI package.
|
|
9
|
+
*
|
|
10
|
+
* Each entry carries the STANDARD (winter) offset plus an optional DST
|
|
11
|
+
* rule. DST is handled IMPLICITLY by the timezone choice: selecting a
|
|
12
|
+
* DST-observing zone enables DST on the camera with that rule, a
|
|
13
|
+
* non-DST zone disables it. There is no separate DST toggle.
|
|
14
|
+
*
|
|
15
|
+
* `stdOffsetMinutes` is east-positive (the human-friendly convention):
|
|
16
|
+
* Rome (UTC+1) = 60, New York (UTC−5) = −300. Consumers that need the
|
|
17
|
+
* POSIX seconds offset (e.g. Reolink `setSystemGeneral.timeZone`) negate
|
|
18
|
+
* and scale: `-(stdOffsetMinutes * 60)`.
|
|
19
|
+
*/
|
|
20
|
+
/** Day-of-week names. Matches the day strings used by camera DST rules. */
|
|
21
|
+
export type Weekday = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday';
|
|
22
|
+
/**
|
|
23
|
+
* A daylight-saving-time rule. `startWeekIndex` / `endWeekIndex` are
|
|
24
|
+
* 1-based week-of-month (1 = first, 5 = last). Hours are local wall-clock.
|
|
25
|
+
*/
|
|
26
|
+
export interface TimezoneDstRule {
|
|
27
|
+
/** Forward shift while DST is active, in hours (typically 1). */
|
|
28
|
+
readonly offsetHours: number;
|
|
29
|
+
readonly startMonth: number;
|
|
30
|
+
/** Week-of-month index (1..5, 5 = last). */
|
|
31
|
+
readonly startWeekIndex: number;
|
|
32
|
+
readonly startWeekday: Weekday;
|
|
33
|
+
readonly startHour: number;
|
|
34
|
+
readonly endMonth: number;
|
|
35
|
+
readonly endWeekIndex: number;
|
|
36
|
+
readonly endWeekday: Weekday;
|
|
37
|
+
readonly endHour: number;
|
|
38
|
+
}
|
|
39
|
+
/** A single selectable timezone. */
|
|
40
|
+
export interface Timezone {
|
|
41
|
+
/** IANA id, e.g. 'Europe/Rome'. */
|
|
42
|
+
readonly id: string;
|
|
43
|
+
/** Human-friendly label, e.g. 'Europe/Rome (UTC+1 / CEST)'. */
|
|
44
|
+
readonly label: string;
|
|
45
|
+
/** Region grouping for the picker's `<optgroup>`. */
|
|
46
|
+
readonly region: string;
|
|
47
|
+
/** Standard/winter offset, east-positive minutes (Rome = 60). */
|
|
48
|
+
readonly stdOffsetMinutes: number;
|
|
49
|
+
/** DST rule, or null for zones that do not observe DST. */
|
|
50
|
+
readonly dst: TimezoneDstRule | null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Curated catalogue of common world zones, grouped by region. Not
|
|
54
|
+
* exhaustive — covers the everyday zones an operator is likely to pick.
|
|
55
|
+
*/
|
|
56
|
+
export declare const TIMEZONES: readonly Timezone[];
|
|
57
|
+
/** Resolve an IANA id to its `Timezone`, or `undefined` if unknown. */
|
|
58
|
+
export declare function findTimezone(id: string): Timezone | undefined;
|
|
59
|
+
//# sourceMappingURL=timezones.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezones.d.ts","sourceRoot":"","sources":["../../src/interfaces/timezones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,GACR,UAAU,CAAA;AAEd;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,oCAAoC;AACpC,MAAM,WAAW,QAAQ;IACvB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,iEAAiE;IACjE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAAA;CACrC;AA2CD;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,SAAS,QAAQ,EA6B/B,CAAA;AAEV,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE7D"}
|
package/dist/node.d.ts
CHANGED
|
@@ -3,4 +3,7 @@ export type { PlatformInfo } from './deps/binary-downloader.js';
|
|
|
3
3
|
export { ensureFfmpeg, getFfmpegDownloadUrl } from './deps/ffmpeg-downloader.js';
|
|
4
4
|
export { ensurePython, installPythonPackages, installPythonRequirements, getPythonDownloadUrl, PYTHON_VERSION, } from './deps/python-downloader.js';
|
|
5
5
|
export { FilesystemStorageProvider } from './storage/filesystem-storage-provider.js';
|
|
6
|
+
export { canonicalHash } from './utils/canonical-hash.js';
|
|
7
|
+
export { canonicalDeviceFingerprint, diffExportTargets, resolveExportFingerprint, } from './utils/export-reconciler.js';
|
|
8
|
+
export type { DeviceExportShape, ExportDelta, ExportTargetEntry, } from './utils/export-reconciler.js';
|
|
6
9
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,GACf,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA"}
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,YAAY,EACZ,cAAc,EACd,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,6BAA6B,CAAA;AACpC,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,GACf,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,8BAA8B,CAAA;AACrC,YAAY,EACV,iBAAiB,EACjB,WAAW,EACX,iBAAiB,GAClB,MAAM,8BAA8B,CAAA"}
|
package/dist/node.js
CHANGED
|
@@ -28,7 +28,7 @@ const promises = require("node:stream/promises");
|
|
|
28
28
|
const node_stream = require("node:stream");
|
|
29
29
|
const node_child_process = require("node:child_process");
|
|
30
30
|
const node_crypto = require("node:crypto");
|
|
31
|
-
const index = require("./index-
|
|
31
|
+
const index = require("./index-BSA_TBea.js");
|
|
32
32
|
require("zod");
|
|
33
33
|
function _interopNamespaceDefault(e) {
|
|
34
34
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -385,7 +385,7 @@ class FilesystemStorageProvider {
|
|
|
385
385
|
if (override) {
|
|
386
386
|
this.locationPaths.set(loc, path__namespace.resolve(override));
|
|
387
387
|
} else {
|
|
388
|
-
const subdir = DEFAULT_LOCATION_SUBDIRS[loc];
|
|
388
|
+
const subdir = DEFAULT_LOCATION_SUBDIRS[loc] ?? loc;
|
|
389
389
|
this.locationPaths.set(
|
|
390
390
|
loc,
|
|
391
391
|
path__namespace.isAbsolute(subdir) ? subdir : path__namespace.join(this.rootPath, subdir)
|
|
@@ -394,8 +394,7 @@ class FilesystemStorageProvider {
|
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
async resolve({ location, relativePath }) {
|
|
397
|
-
const base = this.locationPaths.get(location);
|
|
398
|
-
if (!base) throw new Error(`Unknown storage location: ${location}`);
|
|
397
|
+
const base = this.locationPaths.get(location) ?? path__namespace.join(this.rootPath, location);
|
|
399
398
|
return path__namespace.join(base, relativePath);
|
|
400
399
|
}
|
|
401
400
|
async write({ location, relativePath, data }) {
|
|
@@ -454,20 +453,62 @@ class FilesystemStorageProvider {
|
|
|
454
453
|
return null;
|
|
455
454
|
}
|
|
456
455
|
}
|
|
457
|
-
/** Get the resolved path for a location type
|
|
456
|
+
/** Get the resolved path for a location type (addon-declared ids fall back
|
|
457
|
+
* to `<rootPath>/<id>`). */
|
|
458
458
|
getLocationPath(location) {
|
|
459
|
-
|
|
460
|
-
if (!p) throw new Error(`Unknown storage location: ${location}`);
|
|
461
|
-
return p;
|
|
459
|
+
return this.locationPaths.get(location) ?? path__namespace.join(this.rootPath, location);
|
|
462
460
|
}
|
|
463
461
|
/** Get the root path */
|
|
464
462
|
getRootPath() {
|
|
465
463
|
return this.rootPath;
|
|
466
464
|
}
|
|
467
465
|
}
|
|
466
|
+
function canonicalHash(value) {
|
|
467
|
+
const canonical = JSON.stringify(value, replaceWithSortedKeys);
|
|
468
|
+
return node_crypto.createHash("sha256").update(canonical ?? "").digest("hex");
|
|
469
|
+
}
|
|
470
|
+
function replaceWithSortedKeys(_key, value) {
|
|
471
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
472
|
+
const obj = value;
|
|
473
|
+
const out = {};
|
|
474
|
+
for (const k of Object.keys(obj).sort()) out[k] = obj[k];
|
|
475
|
+
return out;
|
|
476
|
+
}
|
|
477
|
+
return value;
|
|
478
|
+
}
|
|
479
|
+
function canonicalDeviceFingerprint(shape) {
|
|
480
|
+
const features = [...new Set(shape.features)].sort();
|
|
481
|
+
return canonicalHash({ deviceType: shape.deviceType, features });
|
|
482
|
+
}
|
|
483
|
+
function diffExportTargets(desired, lastAdvertised) {
|
|
484
|
+
const toAdd = [];
|
|
485
|
+
const toUpdate = [];
|
|
486
|
+
const desiredIds = /* @__PURE__ */ new Set();
|
|
487
|
+
for (const entry of desired) {
|
|
488
|
+
desiredIds.add(entry.deviceId);
|
|
489
|
+
const previous = lastAdvertised.get(entry.deviceId);
|
|
490
|
+
if (previous === void 0) {
|
|
491
|
+
toAdd.push(entry);
|
|
492
|
+
} else if (previous.fingerprint !== entry.fingerprint) {
|
|
493
|
+
toUpdate.push(entry);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
const toRemove = [];
|
|
497
|
+
for (const deviceId of lastAdvertised.keys()) {
|
|
498
|
+
if (!desiredIds.has(deviceId)) toRemove.push(deviceId);
|
|
499
|
+
}
|
|
500
|
+
return { toAdd, toUpdate, toRemove };
|
|
501
|
+
}
|
|
502
|
+
function resolveExportFingerprint(input) {
|
|
503
|
+
if (input.ready) return input.fresh;
|
|
504
|
+
return input.persisted ?? input.fresh;
|
|
505
|
+
}
|
|
468
506
|
exports.FilesystemStorageProvider = FilesystemStorageProvider;
|
|
469
507
|
exports.PYTHON_VERSION = PYTHON_VERSION;
|
|
470
508
|
exports.buildBinaryPath = buildBinaryPath;
|
|
509
|
+
exports.canonicalDeviceFingerprint = canonicalDeviceFingerprint;
|
|
510
|
+
exports.canonicalHash = canonicalHash;
|
|
511
|
+
exports.diffExportTargets = diffExportTargets;
|
|
471
512
|
exports.downloadBinary = downloadBinary;
|
|
472
513
|
exports.ensureBinary = ensureBinary;
|
|
473
514
|
exports.ensureFfmpeg = ensureFfmpeg;
|
|
@@ -478,4 +519,5 @@ exports.getPlatformInfo = getPlatformInfo;
|
|
|
478
519
|
exports.getPythonDownloadUrl = getPythonDownloadUrl;
|
|
479
520
|
exports.installPythonPackages = installPythonPackages;
|
|
480
521
|
exports.installPythonRequirements = installPythonRequirements;
|
|
522
|
+
exports.resolveExportFingerprint = resolveExportFingerprint;
|
|
481
523
|
//# sourceMappingURL=node.js.map
|