@camstack/addon-smtp-nodemailer 1.2.57 → 1.2.58
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/smtp.addon.js +118 -1
- package/dist/smtp.addon.mjs +118 -1
- package/package.json +1 -1
package/dist/smtp.addon.js
CHANGED
|
@@ -10548,6 +10548,89 @@ var LocationStatSchema = object({
|
|
|
10548
10548
|
fileCount: number(),
|
|
10549
10549
|
present: boolean()
|
|
10550
10550
|
});
|
|
10551
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
10552
|
+
var BackupRunStateSchema = _enum([
|
|
10553
|
+
"queued",
|
|
10554
|
+
"running",
|
|
10555
|
+
"succeeded",
|
|
10556
|
+
"failed",
|
|
10557
|
+
"cancelled"
|
|
10558
|
+
]);
|
|
10559
|
+
/**
|
|
10560
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
10561
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
10562
|
+
* per-destination fan-out, `done` once terminal.
|
|
10563
|
+
*/
|
|
10564
|
+
var BackupRunPhaseSchema = _enum([
|
|
10565
|
+
"queued",
|
|
10566
|
+
"building",
|
|
10567
|
+
"uploading",
|
|
10568
|
+
"done"
|
|
10569
|
+
]);
|
|
10570
|
+
/**
|
|
10571
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
10572
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
10573
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
10574
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
10575
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
10576
|
+
* how large the staged archive had grown.
|
|
10577
|
+
*/
|
|
10578
|
+
var BackupRunSchema = object({
|
|
10579
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
10580
|
+
id: string(),
|
|
10581
|
+
state: BackupRunStateSchema,
|
|
10582
|
+
phase: BackupRunPhaseSchema,
|
|
10583
|
+
/**
|
|
10584
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
10585
|
+
* resolved when the run starts, against the then-current policies).
|
|
10586
|
+
*/
|
|
10587
|
+
destinationIds: array(string()).readonly(),
|
|
10588
|
+
label: string().optional(),
|
|
10589
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
10590
|
+
requestedAt: number(),
|
|
10591
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
10592
|
+
startedAt: number().optional(),
|
|
10593
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
10594
|
+
finishedAt: number().optional(),
|
|
10595
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
10596
|
+
stagedBytes: number(),
|
|
10597
|
+
/** Final staged archive size, once the build phase completes. */
|
|
10598
|
+
archiveSizeBytes: number().optional(),
|
|
10599
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
10600
|
+
uploadedBytes: number(),
|
|
10601
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
10602
|
+
completedDestinationIds: array(string()).readonly(),
|
|
10603
|
+
/** Destinations that failed during the fan-out. */
|
|
10604
|
+
failedDestinationIds: array(string()).readonly(),
|
|
10605
|
+
/** Failure message when `state === 'failed'`. */
|
|
10606
|
+
error: string().optional(),
|
|
10607
|
+
/**
|
|
10608
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
10609
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
10610
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
10611
|
+
* UI cannot show an order the executor will not honour.
|
|
10612
|
+
*/
|
|
10613
|
+
queuePosition: number().int().min(1).optional()
|
|
10614
|
+
});
|
|
10615
|
+
/**
|
|
10616
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
10617
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
10618
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
10619
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
10620
|
+
* an identical already-queued run), never started concurrently.
|
|
10621
|
+
*/
|
|
10622
|
+
var BackupTriggerResultSchema = object({
|
|
10623
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
10624
|
+
runId: string(),
|
|
10625
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
10626
|
+
queued: boolean(),
|
|
10627
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
10628
|
+
joined: boolean(),
|
|
10629
|
+
/** True when the run was cancelled before completing every destination. */
|
|
10630
|
+
cancelled: boolean(),
|
|
10631
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
10632
|
+
entries: array(BackupEntrySchema).readonly()
|
|
10633
|
+
});
|
|
10551
10634
|
/**
|
|
10552
10635
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
10553
10636
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -10595,7 +10678,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10595
10678
|
* retention (manual runs).
|
|
10596
10679
|
*/
|
|
10597
10680
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
10598
|
-
}).optional(),
|
|
10681
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
10682
|
+
kind: "mutation",
|
|
10683
|
+
auth: "admin"
|
|
10684
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
10599
10685
|
kind: "mutation",
|
|
10600
10686
|
auth: "admin"
|
|
10601
10687
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -11312,6 +11398,14 @@ method(object({
|
|
|
11312
11398
|
}), object({ success: literal(true) }), {
|
|
11313
11399
|
kind: "mutation",
|
|
11314
11400
|
auth: "admin"
|
|
11401
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
11402
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
11403
|
+
assignmentsPurged: boolean(),
|
|
11404
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
11405
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
11406
|
+
}), {
|
|
11407
|
+
kind: "mutation",
|
|
11408
|
+
auth: "admin"
|
|
11315
11409
|
}), method(object({
|
|
11316
11410
|
deviceId: number(),
|
|
11317
11411
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -29420,6 +29514,12 @@ Object.freeze({
|
|
|
29420
29514
|
addonId: null,
|
|
29421
29515
|
access: "create"
|
|
29422
29516
|
},
|
|
29517
|
+
"backup.cancel": {
|
|
29518
|
+
capName: "backup",
|
|
29519
|
+
capScope: "system",
|
|
29520
|
+
addonId: null,
|
|
29521
|
+
access: "create"
|
|
29522
|
+
},
|
|
29423
29523
|
"backup.delete": {
|
|
29424
29524
|
capName: "backup",
|
|
29425
29525
|
capScope: "system",
|
|
@@ -29462,6 +29562,12 @@ Object.freeze({
|
|
|
29462
29562
|
addonId: null,
|
|
29463
29563
|
access: "view"
|
|
29464
29564
|
},
|
|
29565
|
+
"backup.listRuns": {
|
|
29566
|
+
capName: "backup",
|
|
29567
|
+
capScope: "system",
|
|
29568
|
+
addonId: null,
|
|
29569
|
+
access: "view"
|
|
29570
|
+
},
|
|
29465
29571
|
"backup.listSchedules": {
|
|
29466
29572
|
capName: "backup",
|
|
29467
29573
|
capScope: "system",
|
|
@@ -34028,6 +34134,12 @@ Object.freeze({
|
|
|
34028
34134
|
addonId: null,
|
|
34029
34135
|
access: "create"
|
|
34030
34136
|
},
|
|
34137
|
+
"streamBroker.forgetDeviceHardware": {
|
|
34138
|
+
capName: "stream-broker",
|
|
34139
|
+
capScope: "system",
|
|
34140
|
+
addonId: null,
|
|
34141
|
+
access: "delete"
|
|
34142
|
+
},
|
|
34031
34143
|
"streamBroker.getAllRtspEntries": {
|
|
34032
34144
|
capName: "stream-broker",
|
|
34033
34145
|
capScope: "system",
|
|
@@ -36486,6 +36598,11 @@ Object.freeze({
|
|
|
36486
36598
|
form: "single",
|
|
36487
36599
|
optional: false
|
|
36488
36600
|
}],
|
|
36601
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
36602
|
+
name: "deviceId",
|
|
36603
|
+
form: "single",
|
|
36604
|
+
optional: false
|
|
36605
|
+
}],
|
|
36489
36606
|
"streamBroker.getDeviceAudioMute": [{
|
|
36490
36607
|
name: "deviceId",
|
|
36491
36608
|
form: "single",
|
package/dist/smtp.addon.mjs
CHANGED
|
@@ -10546,6 +10546,89 @@ var LocationStatSchema = object({
|
|
|
10546
10546
|
fileCount: number(),
|
|
10547
10547
|
present: boolean()
|
|
10548
10548
|
});
|
|
10549
|
+
/** Lifecycle of a backup run. Terminal states: succeeded / failed / cancelled. */
|
|
10550
|
+
var BackupRunStateSchema = _enum([
|
|
10551
|
+
"queued",
|
|
10552
|
+
"running",
|
|
10553
|
+
"succeeded",
|
|
10554
|
+
"failed",
|
|
10555
|
+
"cancelled"
|
|
10556
|
+
]);
|
|
10557
|
+
/**
|
|
10558
|
+
* Where a running backup currently is. `queued` before it starts,
|
|
10559
|
+
* `building` while the tar.gz is being staged, `uploading` during the
|
|
10560
|
+
* per-destination fan-out, `done` once terminal.
|
|
10561
|
+
*/
|
|
10562
|
+
var BackupRunPhaseSchema = _enum([
|
|
10563
|
+
"queued",
|
|
10564
|
+
"building",
|
|
10565
|
+
"uploading",
|
|
10566
|
+
"done"
|
|
10567
|
+
]);
|
|
10568
|
+
/**
|
|
10569
|
+
* Observable state of one backup run — readable WHILE it runs via
|
|
10570
|
+
* `backup.listRuns`. This is what makes the execution queue and
|
|
10571
|
+
* `backup.cancel` usable: the 2026-09-04 incident (two concurrent
|
|
10572
|
+
* multi-GB builds, staging 5.1 GB → 18 GB, load 62) was only
|
|
10573
|
+
* diagnosable with `du` because nothing reported that runs existed or
|
|
10574
|
+
* how large the staged archive had grown.
|
|
10575
|
+
*/
|
|
10576
|
+
var BackupRunSchema = object({
|
|
10577
|
+
/** Stable run id — the handle `backup.cancel` takes. */
|
|
10578
|
+
id: string(),
|
|
10579
|
+
state: BackupRunStateSchema,
|
|
10580
|
+
phase: BackupRunPhaseSchema,
|
|
10581
|
+
/**
|
|
10582
|
+
* Resolved destination location ids. Empty while queued (targets are
|
|
10583
|
+
* resolved when the run starts, against the then-current policies).
|
|
10584
|
+
*/
|
|
10585
|
+
destinationIds: array(string()).readonly(),
|
|
10586
|
+
label: string().optional(),
|
|
10587
|
+
/** ms-epoch when the run was submitted (trigger call / schedule fire). */
|
|
10588
|
+
requestedAt: number(),
|
|
10589
|
+
/** ms-epoch when the run left the queue and started building. */
|
|
10590
|
+
startedAt: number().optional(),
|
|
10591
|
+
/** ms-epoch when the run reached a terminal state. */
|
|
10592
|
+
finishedAt: number().optional(),
|
|
10593
|
+
/** Compressed bytes of the staging archive written so far. */
|
|
10594
|
+
stagedBytes: number(),
|
|
10595
|
+
/** Final staged archive size, once the build phase completes. */
|
|
10596
|
+
archiveSizeBytes: number().optional(),
|
|
10597
|
+
/** Bytes pushed to the destination currently uploading. */
|
|
10598
|
+
uploadedBytes: number(),
|
|
10599
|
+
/** Destinations where the archive fully landed (uploaded + indexed). */
|
|
10600
|
+
completedDestinationIds: array(string()).readonly(),
|
|
10601
|
+
/** Destinations that failed during the fan-out. */
|
|
10602
|
+
failedDestinationIds: array(string()).readonly(),
|
|
10603
|
+
/** Failure message when `state === 'failed'`. */
|
|
10604
|
+
error: string().optional(),
|
|
10605
|
+
/**
|
|
10606
|
+
* 1-based place in the execution queue — 1 = runs next. Present only
|
|
10607
|
+
* while `state === 'queued'`. Stamped by the orchestrator from the
|
|
10608
|
+
* queue's OWN pending order, never derived from timestamps, so the
|
|
10609
|
+
* UI cannot show an order the executor will not honour.
|
|
10610
|
+
*/
|
|
10611
|
+
queuePosition: number().int().min(1).optional()
|
|
10612
|
+
});
|
|
10613
|
+
/**
|
|
10614
|
+
* Result of `backup.trigger`. The call still resolves when the run
|
|
10615
|
+
* terminates (compat with schedule-driven runs and the admin UI), but
|
|
10616
|
+
* it now names the run and says whether it had to WAIT: a trigger that
|
|
10617
|
+
* arrives while another run is in flight is enqueued (or joined onto
|
|
10618
|
+
* an identical already-queued run), never started concurrently.
|
|
10619
|
+
*/
|
|
10620
|
+
var BackupTriggerResultSchema = object({
|
|
10621
|
+
/** The run this trigger mapped to — poll it via `listRuns`, stop it via `cancel`. */
|
|
10622
|
+
runId: string(),
|
|
10623
|
+
/** True when the run waited behind an in-flight run instead of starting immediately. */
|
|
10624
|
+
queued: boolean(),
|
|
10625
|
+
/** True when this trigger was coalesced onto an identical already-queued run. */
|
|
10626
|
+
joined: boolean(),
|
|
10627
|
+
/** True when the run was cancelled before completing every destination. */
|
|
10628
|
+
cancelled: boolean(),
|
|
10629
|
+
/** One entry per destination the archive landed at (partial on cancel). */
|
|
10630
|
+
entries: array(BackupEntrySchema).readonly()
|
|
10631
|
+
});
|
|
10549
10632
|
/**
|
|
10550
10633
|
* A backup schedule — the N:M "entry" that binds one cron cadence to a
|
|
10551
10634
|
* SET of destination locations. Supersedes the per-location cron on
|
|
@@ -10593,7 +10676,10 @@ method(_void(), array(BackupDestinationInfoSchema).readonly(), { auth: "admin" }
|
|
|
10593
10676
|
* retention (manual runs).
|
|
10594
10677
|
*/
|
|
10595
10678
|
retentionCount: number().int().min(1).max(1e3).optional()
|
|
10596
|
-
}).optional(),
|
|
10679
|
+
}).optional(), BackupTriggerResultSchema, {
|
|
10680
|
+
kind: "mutation",
|
|
10681
|
+
auth: "admin"
|
|
10682
|
+
}), method(_void(), array(BackupRunSchema).readonly(), { auth: "admin" }), method(object({ runId: string() }), object({ cancelled: boolean() }), {
|
|
10597
10683
|
kind: "mutation",
|
|
10598
10684
|
auth: "admin"
|
|
10599
10685
|
}), method(_void(), array(BackupEntrySchema).readonly(), { auth: "admin" }), method(_void(), array(LocationStatSchema).readonly(), { auth: "admin" }), method(object({
|
|
@@ -11310,6 +11396,14 @@ method(object({
|
|
|
11310
11396
|
}), object({ success: literal(true) }), {
|
|
11311
11397
|
kind: "mutation",
|
|
11312
11398
|
auth: "admin"
|
|
11399
|
+
}), method(object({ deviceId: number().int().nonnegative() }), object({
|
|
11400
|
+
derivedStreamsDeleted: array(string()).readonly(),
|
|
11401
|
+
assignmentsPurged: boolean(),
|
|
11402
|
+
probeSnapshotsDropped: number().int().nonnegative(),
|
|
11403
|
+
rtspTokenRowsDeleted: number().int().nonnegative()
|
|
11404
|
+
}), {
|
|
11405
|
+
kind: "mutation",
|
|
11406
|
+
auth: "admin"
|
|
11313
11407
|
}), method(object({
|
|
11314
11408
|
deviceId: number(),
|
|
11315
11409
|
/** Absent = the LOWEST assigned profile — a notification attachment is
|
|
@@ -29418,6 +29512,12 @@ Object.freeze({
|
|
|
29418
29512
|
addonId: null,
|
|
29419
29513
|
access: "create"
|
|
29420
29514
|
},
|
|
29515
|
+
"backup.cancel": {
|
|
29516
|
+
capName: "backup",
|
|
29517
|
+
capScope: "system",
|
|
29518
|
+
addonId: null,
|
|
29519
|
+
access: "create"
|
|
29520
|
+
},
|
|
29421
29521
|
"backup.delete": {
|
|
29422
29522
|
capName: "backup",
|
|
29423
29523
|
capScope: "system",
|
|
@@ -29460,6 +29560,12 @@ Object.freeze({
|
|
|
29460
29560
|
addonId: null,
|
|
29461
29561
|
access: "view"
|
|
29462
29562
|
},
|
|
29563
|
+
"backup.listRuns": {
|
|
29564
|
+
capName: "backup",
|
|
29565
|
+
capScope: "system",
|
|
29566
|
+
addonId: null,
|
|
29567
|
+
access: "view"
|
|
29568
|
+
},
|
|
29463
29569
|
"backup.listSchedules": {
|
|
29464
29570
|
capName: "backup",
|
|
29465
29571
|
capScope: "system",
|
|
@@ -34026,6 +34132,12 @@ Object.freeze({
|
|
|
34026
34132
|
addonId: null,
|
|
34027
34133
|
access: "create"
|
|
34028
34134
|
},
|
|
34135
|
+
"streamBroker.forgetDeviceHardware": {
|
|
34136
|
+
capName: "stream-broker",
|
|
34137
|
+
capScope: "system",
|
|
34138
|
+
addonId: null,
|
|
34139
|
+
access: "delete"
|
|
34140
|
+
},
|
|
34029
34141
|
"streamBroker.getAllRtspEntries": {
|
|
34030
34142
|
capName: "stream-broker",
|
|
34031
34143
|
capScope: "system",
|
|
@@ -36484,6 +36596,11 @@ Object.freeze({
|
|
|
36484
36596
|
form: "single",
|
|
36485
36597
|
optional: false
|
|
36486
36598
|
}],
|
|
36599
|
+
"streamBroker.forgetDeviceHardware": [{
|
|
36600
|
+
name: "deviceId",
|
|
36601
|
+
form: "single",
|
|
36602
|
+
optional: false
|
|
36603
|
+
}],
|
|
36487
36604
|
"streamBroker.getDeviceAudioMute": [{
|
|
36488
36605
|
name: "deviceId",
|
|
36489
36606
|
form: "single",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@camstack/addon-smtp-nodemailer",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.58",
|
|
4
4
|
"description": "SMTP email provider addon for CamStack — wraps `nodemailer` and registers a `smtp-provider` cap collection entry. Used by magic-link login + notifier addons.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"camstack",
|