@camstack/addon-provider-reolink 1.2.29 → 1.2.31
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.js +85 -7
- package/dist/addon.mjs +85 -7
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -11143,6 +11143,8 @@ var QueryFilterSchema = object({
|
|
|
11143
11143
|
where: record(string(), unknown()).optional(),
|
|
11144
11144
|
whereIn: record(string(), array(unknown())).optional(),
|
|
11145
11145
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
11146
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
11147
|
+
whereNot: record(string(), unknown()).optional(),
|
|
11146
11148
|
orderBy: object({
|
|
11147
11149
|
field: string(),
|
|
11148
11150
|
direction: _enum(["asc", "desc"])
|
|
@@ -11162,7 +11164,8 @@ var QueryFilterSchema = object({
|
|
|
11162
11164
|
var MutationFilterSchema = object({
|
|
11163
11165
|
where: record(string(), unknown()).optional(),
|
|
11164
11166
|
whereIn: record(string(), array(unknown())).optional(),
|
|
11165
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
|
|
11167
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
11168
|
+
whereNot: record(string(), unknown()).optional()
|
|
11166
11169
|
});
|
|
11167
11170
|
/** A single stored record: `{ id, data }`. */
|
|
11168
11171
|
var SettingsRecordSchema = object({
|
|
@@ -17238,7 +17241,10 @@ var RecentTracksQueryInput = object({
|
|
|
17238
17241
|
* Encodes the (lastSeen, trackId) sort position — treat as opaque. */
|
|
17239
17242
|
cursor: string().optional(),
|
|
17240
17243
|
/** See {@link TrackProjectionSchema}. Default `full`. */
|
|
17241
|
-
projection: TrackProjectionSchema.optional()
|
|
17244
|
+
projection: TrackProjectionSchema.optional(),
|
|
17245
|
+
/** Include stationary-promoted rows (parked objects). Default false: the
|
|
17246
|
+
* feed lists passages; parking records live on the stationary registry. */
|
|
17247
|
+
includeStationary: boolean().optional()
|
|
17242
17248
|
});
|
|
17243
17249
|
var RecentTracksPageSchema = object({
|
|
17244
17250
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
@@ -17456,7 +17462,11 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17456
17462
|
zone: TrackZoneFilterSchema.optional(),
|
|
17457
17463
|
/** See {@link TrackProjectionSchema}. Default `full` (backward
|
|
17458
17464
|
* compatible — omitting the field keeps today's exact behaviour). */
|
|
17459
|
-
projection: TrackProjectionSchema.optional()
|
|
17465
|
+
projection: TrackProjectionSchema.optional(),
|
|
17466
|
+
/** Include stationary-promoted rows (parked objects handed to the
|
|
17467
|
+
* stationary registry). Default false: the timeline lists passages,
|
|
17468
|
+
* not parking records (operator decision, 2026-08-15). */
|
|
17469
|
+
includeStationary: boolean().optional()
|
|
17460
17470
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
17461
17471
|
kind: "mutation",
|
|
17462
17472
|
auth: "admin"
|
|
@@ -17620,11 +17630,16 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17620
17630
|
auth: "admin"
|
|
17621
17631
|
}), method(object({
|
|
17622
17632
|
eventId: string(),
|
|
17623
|
-
kind: MediaFileKindEnum.optional()
|
|
17633
|
+
kind: MediaFileKindEnum.optional(),
|
|
17634
|
+
deviceId: number()
|
|
17635
|
+
}), array(MediaFileSchema).readonly()), method(object({
|
|
17636
|
+
trackId: string(),
|
|
17637
|
+
kinds: array(MediaFileKindEnum).optional(),
|
|
17638
|
+
deviceId: number()
|
|
17624
17639
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
17625
17640
|
trackId: string(),
|
|
17626
|
-
|
|
17627
|
-
}), array(
|
|
17641
|
+
deviceId: number()
|
|
17642
|
+
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
17628
17643
|
kind: "mutation",
|
|
17629
17644
|
auth: "admin"
|
|
17630
17645
|
}), method(RebuildObjectEmbeddingsInput, RebuildObjectEmbeddingsResultSchema, {
|
|
@@ -19732,7 +19747,16 @@ targets: array(object({
|
|
|
19732
19747
|
/** A sleeping battery camera: the frame is deliberately stale and will
|
|
19733
19748
|
* NOT refresh in the background. A surface should say so rather than
|
|
19734
19749
|
* present it as current. */
|
|
19735
|
-
sleeping: boolean()
|
|
19750
|
+
sleeping: boolean(),
|
|
19751
|
+
/** Current device state rendered over the cached frame. State images
|
|
19752
|
+
* remain authoritative even when their photographic background is
|
|
19753
|
+
* old; null means the link must carry a current camera frame. */
|
|
19754
|
+
stateReason: _enum([
|
|
19755
|
+
"disabled",
|
|
19756
|
+
"sleeping",
|
|
19757
|
+
"unreachable",
|
|
19758
|
+
"waking"
|
|
19759
|
+
]).nullable()
|
|
19736
19760
|
})))
|
|
19737
19761
|
},
|
|
19738
19762
|
status: {
|
|
@@ -36734,6 +36758,11 @@ Object.freeze({
|
|
|
36734
36758
|
form: "single",
|
|
36735
36759
|
optional: false
|
|
36736
36760
|
}],
|
|
36761
|
+
"pipelineAnalytics.getEventMedia": [{
|
|
36762
|
+
name: "deviceId",
|
|
36763
|
+
form: "single",
|
|
36764
|
+
optional: false
|
|
36765
|
+
}],
|
|
36737
36766
|
"pipelineAnalytics.getKeyEvents": [{
|
|
36738
36767
|
name: "deviceId",
|
|
36739
36768
|
form: "single",
|
|
@@ -36764,6 +36793,11 @@ Object.freeze({
|
|
|
36764
36793
|
form: "single",
|
|
36765
36794
|
optional: false
|
|
36766
36795
|
}],
|
|
36796
|
+
"pipelineAnalytics.getTrackMedia": [{
|
|
36797
|
+
name: "deviceId",
|
|
36798
|
+
form: "single",
|
|
36799
|
+
optional: false
|
|
36800
|
+
}],
|
|
36767
36801
|
"pipelineAnalytics.getTrainingExportSummary": [{
|
|
36768
36802
|
name: "deviceIds",
|
|
36769
36803
|
form: "array",
|
|
@@ -36799,6 +36833,11 @@ Object.freeze({
|
|
|
36799
36833
|
form: "array",
|
|
36800
36834
|
optional: true
|
|
36801
36835
|
}],
|
|
36836
|
+
"pipelineAnalytics.listTrackMedia": [{
|
|
36837
|
+
name: "deviceId",
|
|
36838
|
+
form: "single",
|
|
36839
|
+
optional: false
|
|
36840
|
+
}],
|
|
36802
36841
|
"pipelineAnalytics.listTracks": [{
|
|
36803
36842
|
name: "deviceId",
|
|
36804
36843
|
form: "single",
|
|
@@ -37239,6 +37278,12 @@ Object.freeze({
|
|
|
37239
37278
|
form: "single",
|
|
37240
37279
|
optional: false
|
|
37241
37280
|
}],
|
|
37281
|
+
"snapshot.getSnapshotLinks": [{
|
|
37282
|
+
name: "targets",
|
|
37283
|
+
form: "object-array",
|
|
37284
|
+
optional: false,
|
|
37285
|
+
itemField: "deviceId"
|
|
37286
|
+
}],
|
|
37242
37287
|
"snapshot.getSnapshotOverview": [{
|
|
37243
37288
|
name: "deviceIds",
|
|
37244
37289
|
form: "array",
|
|
@@ -230916,6 +230961,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
230916
230961
|
});
|
|
230917
230962
|
await sleep$1(1500);
|
|
230918
230963
|
})(), new Promise((_, rej) => setTimeout(() => rej(/* @__PURE__ */ new Error("wakeForStream timeout")), timeoutMs))]);
|
|
230964
|
+
const CONFIRM_TIMEOUT_MS = 1e4;
|
|
230965
|
+
const CONFIRM_POLL_MS = 1e3;
|
|
230966
|
+
const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
|
|
230967
|
+
let confirmed = false;
|
|
230968
|
+
while (Date.now() < confirmDeadline) {
|
|
230969
|
+
let state = null;
|
|
230970
|
+
try {
|
|
230971
|
+
state = api.getSleepStatus({ channel: this.getChannel() }).state;
|
|
230972
|
+
} catch {
|
|
230973
|
+
state = null;
|
|
230974
|
+
}
|
|
230975
|
+
if (state === "awake") {
|
|
230976
|
+
confirmed = true;
|
|
230977
|
+
break;
|
|
230978
|
+
}
|
|
230979
|
+
await sleep$1(CONFIRM_POLL_MS);
|
|
230980
|
+
}
|
|
230981
|
+
if (confirmed && this.commitSleepState(false, "sleep-poll")) {
|
|
230982
|
+
this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
|
|
230983
|
+
tags: { deviceId: this.id },
|
|
230984
|
+
meta: { confirmMs: Date.now() - startedAt }
|
|
230985
|
+
});
|
|
230986
|
+
this.onWakeTransition("sleep-poll").catch(() => {});
|
|
230987
|
+
} else if (!confirmed) {
|
|
230988
|
+
this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
|
|
230989
|
+
tags: { deviceId: this.id },
|
|
230990
|
+
meta: { confirmTimeoutMs: CONFIRM_TIMEOUT_MS }
|
|
230991
|
+
});
|
|
230992
|
+
return {
|
|
230993
|
+
awoke: false,
|
|
230994
|
+
durationMs: Date.now() - startedAt
|
|
230995
|
+
};
|
|
230996
|
+
}
|
|
230919
230997
|
return {
|
|
230920
230998
|
awoke: true,
|
|
230921
230999
|
durationMs: Date.now() - startedAt
|
package/dist/addon.mjs
CHANGED
|
@@ -11138,6 +11138,8 @@ var QueryFilterSchema = object({
|
|
|
11138
11138
|
where: record(string(), unknown()).optional(),
|
|
11139
11139
|
whereIn: record(string(), array(unknown())).optional(),
|
|
11140
11140
|
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
11141
|
+
/** NULL-safe exclusion: matches rows whose field is NULL OR != the value. */
|
|
11142
|
+
whereNot: record(string(), unknown()).optional(),
|
|
11141
11143
|
orderBy: object({
|
|
11142
11144
|
field: string(),
|
|
11143
11145
|
direction: _enum(["asc", "desc"])
|
|
@@ -11157,7 +11159,8 @@ var QueryFilterSchema = object({
|
|
|
11157
11159
|
var MutationFilterSchema = object({
|
|
11158
11160
|
where: record(string(), unknown()).optional(),
|
|
11159
11161
|
whereIn: record(string(), array(unknown())).optional(),
|
|
11160
|
-
whereBetween: record(string(), tuple([unknown(), unknown()])).optional()
|
|
11162
|
+
whereBetween: record(string(), tuple([unknown(), unknown()])).optional(),
|
|
11163
|
+
whereNot: record(string(), unknown()).optional()
|
|
11161
11164
|
});
|
|
11162
11165
|
/** A single stored record: `{ id, data }`. */
|
|
11163
11166
|
var SettingsRecordSchema = object({
|
|
@@ -17233,7 +17236,10 @@ var RecentTracksQueryInput = object({
|
|
|
17233
17236
|
* Encodes the (lastSeen, trackId) sort position — treat as opaque. */
|
|
17234
17237
|
cursor: string().optional(),
|
|
17235
17238
|
/** See {@link TrackProjectionSchema}. Default `full`. */
|
|
17236
|
-
projection: TrackProjectionSchema.optional()
|
|
17239
|
+
projection: TrackProjectionSchema.optional(),
|
|
17240
|
+
/** Include stationary-promoted rows (parked objects). Default false: the
|
|
17241
|
+
* feed lists passages; parking records live on the stationary registry. */
|
|
17242
|
+
includeStationary: boolean().optional()
|
|
17237
17243
|
});
|
|
17238
17244
|
var RecentTracksPageSchema = object({
|
|
17239
17245
|
/** Merged page, ordered by (`lastSeen` DESC, `trackId` DESC). */
|
|
@@ -17451,7 +17457,11 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17451
17457
|
zone: TrackZoneFilterSchema.optional(),
|
|
17452
17458
|
/** See {@link TrackProjectionSchema}. Default `full` (backward
|
|
17453
17459
|
* compatible — omitting the field keeps today's exact behaviour). */
|
|
17454
|
-
projection: TrackProjectionSchema.optional()
|
|
17460
|
+
projection: TrackProjectionSchema.optional(),
|
|
17461
|
+
/** Include stationary-promoted rows (parked objects handed to the
|
|
17462
|
+
* stationary registry). Default false: the timeline lists passages,
|
|
17463
|
+
* not parking records (operator decision, 2026-08-15). */
|
|
17464
|
+
includeStationary: boolean().optional()
|
|
17455
17465
|
}), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
|
|
17456
17466
|
kind: "mutation",
|
|
17457
17467
|
auth: "admin"
|
|
@@ -17615,11 +17625,16 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
17615
17625
|
auth: "admin"
|
|
17616
17626
|
}), method(object({
|
|
17617
17627
|
eventId: string(),
|
|
17618
|
-
kind: MediaFileKindEnum.optional()
|
|
17628
|
+
kind: MediaFileKindEnum.optional(),
|
|
17629
|
+
deviceId: number()
|
|
17630
|
+
}), array(MediaFileSchema).readonly()), method(object({
|
|
17631
|
+
trackId: string(),
|
|
17632
|
+
kinds: array(MediaFileKindEnum).optional(),
|
|
17633
|
+
deviceId: number()
|
|
17619
17634
|
}), array(MediaFileSchema).readonly()), method(object({
|
|
17620
17635
|
trackId: string(),
|
|
17621
|
-
|
|
17622
|
-
}), array(
|
|
17636
|
+
deviceId: number()
|
|
17637
|
+
}), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), method(object({}), WipeObjectEmbeddingsResultSchema, {
|
|
17623
17638
|
kind: "mutation",
|
|
17624
17639
|
auth: "admin"
|
|
17625
17640
|
}), method(RebuildObjectEmbeddingsInput, RebuildObjectEmbeddingsResultSchema, {
|
|
@@ -19727,7 +19742,16 @@ targets: array(object({
|
|
|
19727
19742
|
/** A sleeping battery camera: the frame is deliberately stale and will
|
|
19728
19743
|
* NOT refresh in the background. A surface should say so rather than
|
|
19729
19744
|
* present it as current. */
|
|
19730
|
-
sleeping: boolean()
|
|
19745
|
+
sleeping: boolean(),
|
|
19746
|
+
/** Current device state rendered over the cached frame. State images
|
|
19747
|
+
* remain authoritative even when their photographic background is
|
|
19748
|
+
* old; null means the link must carry a current camera frame. */
|
|
19749
|
+
stateReason: _enum([
|
|
19750
|
+
"disabled",
|
|
19751
|
+
"sleeping",
|
|
19752
|
+
"unreachable",
|
|
19753
|
+
"waking"
|
|
19754
|
+
]).nullable()
|
|
19731
19755
|
})))
|
|
19732
19756
|
},
|
|
19733
19757
|
status: {
|
|
@@ -36729,6 +36753,11 @@ Object.freeze({
|
|
|
36729
36753
|
form: "single",
|
|
36730
36754
|
optional: false
|
|
36731
36755
|
}],
|
|
36756
|
+
"pipelineAnalytics.getEventMedia": [{
|
|
36757
|
+
name: "deviceId",
|
|
36758
|
+
form: "single",
|
|
36759
|
+
optional: false
|
|
36760
|
+
}],
|
|
36732
36761
|
"pipelineAnalytics.getKeyEvents": [{
|
|
36733
36762
|
name: "deviceId",
|
|
36734
36763
|
form: "single",
|
|
@@ -36759,6 +36788,11 @@ Object.freeze({
|
|
|
36759
36788
|
form: "single",
|
|
36760
36789
|
optional: false
|
|
36761
36790
|
}],
|
|
36791
|
+
"pipelineAnalytics.getTrackMedia": [{
|
|
36792
|
+
name: "deviceId",
|
|
36793
|
+
form: "single",
|
|
36794
|
+
optional: false
|
|
36795
|
+
}],
|
|
36762
36796
|
"pipelineAnalytics.getTrainingExportSummary": [{
|
|
36763
36797
|
name: "deviceIds",
|
|
36764
36798
|
form: "array",
|
|
@@ -36794,6 +36828,11 @@ Object.freeze({
|
|
|
36794
36828
|
form: "array",
|
|
36795
36829
|
optional: true
|
|
36796
36830
|
}],
|
|
36831
|
+
"pipelineAnalytics.listTrackMedia": [{
|
|
36832
|
+
name: "deviceId",
|
|
36833
|
+
form: "single",
|
|
36834
|
+
optional: false
|
|
36835
|
+
}],
|
|
36797
36836
|
"pipelineAnalytics.listTracks": [{
|
|
36798
36837
|
name: "deviceId",
|
|
36799
36838
|
form: "single",
|
|
@@ -37234,6 +37273,12 @@ Object.freeze({
|
|
|
37234
37273
|
form: "single",
|
|
37235
37274
|
optional: false
|
|
37236
37275
|
}],
|
|
37276
|
+
"snapshot.getSnapshotLinks": [{
|
|
37277
|
+
name: "targets",
|
|
37278
|
+
form: "object-array",
|
|
37279
|
+
optional: false,
|
|
37280
|
+
itemField: "deviceId"
|
|
37281
|
+
}],
|
|
37237
37282
|
"snapshot.getSnapshotOverview": [{
|
|
37238
37283
|
name: "deviceIds",
|
|
37239
37284
|
form: "array",
|
|
@@ -230896,6 +230941,39 @@ var ReolinkCamera = class ReolinkCamera extends BaseDevice {
|
|
|
230896
230941
|
});
|
|
230897
230942
|
await sleep$1(1500);
|
|
230898
230943
|
})(), new Promise((_, rej) => setTimeout(() => rej(/* @__PURE__ */ new Error("wakeForStream timeout")), timeoutMs))]);
|
|
230944
|
+
const CONFIRM_TIMEOUT_MS = 1e4;
|
|
230945
|
+
const CONFIRM_POLL_MS = 1e3;
|
|
230946
|
+
const confirmDeadline = Date.now() + CONFIRM_TIMEOUT_MS;
|
|
230947
|
+
let confirmed = false;
|
|
230948
|
+
while (Date.now() < confirmDeadline) {
|
|
230949
|
+
let state = null;
|
|
230950
|
+
try {
|
|
230951
|
+
state = api.getSleepStatus({ channel: this.getChannel() }).state;
|
|
230952
|
+
} catch {
|
|
230953
|
+
state = null;
|
|
230954
|
+
}
|
|
230955
|
+
if (state === "awake") {
|
|
230956
|
+
confirmed = true;
|
|
230957
|
+
break;
|
|
230958
|
+
}
|
|
230959
|
+
await sleep$1(CONFIRM_POLL_MS);
|
|
230960
|
+
}
|
|
230961
|
+
if (confirmed && this.commitSleepState(false, "sleep-poll")) {
|
|
230962
|
+
this.ctx.logger.info("battery wakeForStream: wake confirmed — driving wake transition", {
|
|
230963
|
+
tags: { deviceId: this.id },
|
|
230964
|
+
meta: { confirmMs: Date.now() - startedAt }
|
|
230965
|
+
});
|
|
230966
|
+
this.onWakeTransition("sleep-poll").catch(() => {});
|
|
230967
|
+
} else if (!confirmed) {
|
|
230968
|
+
this.ctx.logger.warn("battery wakeForStream: ACK received but no awake evidence inside the confirm window", {
|
|
230969
|
+
tags: { deviceId: this.id },
|
|
230970
|
+
meta: { confirmTimeoutMs: CONFIRM_TIMEOUT_MS }
|
|
230971
|
+
});
|
|
230972
|
+
return {
|
|
230973
|
+
awoke: false,
|
|
230974
|
+
durationMs: Date.now() - startedAt
|
|
230975
|
+
};
|
|
230976
|
+
}
|
|
230899
230977
|
return {
|
|
230900
230978
|
awoke: true,
|
|
230901
230979
|
durationMs: Date.now() - startedAt
|