@camstack/system 1.2.200 → 1.2.202
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/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
- package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
- package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
- package/dist/builtins/alerts/alerts.addon.js +1 -1
- package/dist/builtins/alerts/alerts.addon.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +38 -9
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +234 -81
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +234 -81
- package/dist/builtins/backup-orchestrator/destination-policy.d.ts +32 -14
- package/dist/builtins/backup-orchestrator/schedule-store.d.ts +12 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.js +1 -1
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +1 -1
- package/dist/builtins/device-manager/device-manager.addon.js +2 -2
- package/dist/builtins/device-manager/device-manager.addon.mjs +2 -2
- package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
- package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
- package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
- package/dist/builtins/local-auth/local-auth.addon.js +1 -1
- package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
- package/dist/builtins/local-network/local-network.addon.js +1 -1
- package/dist/builtins/local-network/local-network.addon.mjs +1 -1
- package/dist/builtins/loki-logging/index.js +1 -1
- package/dist/builtins/loki-logging/index.mjs +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
- package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
- package/dist/builtins/platform-probe/index.js +1 -1
- package/dist/builtins/platform-probe/index.mjs +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
- package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
- package/dist/builtins/snapshot/index.js +1 -1
- package/dist/builtins/snapshot/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
- package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +0 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +0 -0
- package/dist/builtins/storage-orchestrator/location-store.d.ts +12 -3
- package/dist/builtins/storage-orchestrator/storage-migration-coordinator.d.ts +9 -9
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +181 -129
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +181 -129
- package/dist/builtins/storage-orchestrator/storage-orchestrator.service.d.ts +54 -31
- package/dist/builtins/system-config/system-config.addon.js +1 -1
- package/dist/builtins/system-config/system-config.addon.mjs +1 -1
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{dist-CCp74QLJ.mjs → dist-CiHYspij.mjs} +235 -199
- package/dist/{dist-KQ5D2wqr.js → dist-jZb-HKI5.js} +246 -198
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{retired-settings-keys-7P9XwNdl.mjs → retired-settings-keys-DeRxo3vg.mjs} +1 -1
- package/dist/{retired-settings-keys-2lWk7OeU.js → retired-settings-keys-Dxv9S_lO.js} +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Rt as BaseAddon, dt as logDestinationCapability } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
//#region src/builtins/console-logging/console-destination.ts
|
|
4
4
|
var LEVEL_RANK = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
3
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
4
4
|
let node_crypto = require("node:crypto");
|
|
5
5
|
let node_fs_promises = require("node:fs/promises");
|
|
6
6
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as coreBlocksCapability, Lt as errMsg, R as coreBlockAddonId, Rt as BaseAddon, c as CORE_BLOCK_ADDON_PREFIX, d as DeclaredDevices, l as CoreBlockSchema, s as CORE_BLOCKS_ADDON_ID, z as coreBlockIdFromAddonId } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import * as fs from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
7
|
-
const require_retired_settings_keys = require("../../retired-settings-keys-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
|
+
const require_retired_settings_keys = require("../../retired-settings-keys-Dxv9S_lO.js");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let _camstack_types_node = require("@camstack/types/node");
|
|
10
10
|
//#region src/builtins/device-manager/adoption-job-engine.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-
|
|
1
|
+
import { G as deviceStateCapability, Ht as DeviceFeature, I as buildStreamParamsConfigSchema, K as deviceStatusCapability, Lt as errMsg, Rt as BaseAddon, S as STREAM_PROFILE_META, St as resolveContainerPrimaryChild, Ut as DeviceRole, W as deviceManagerCapability, Wt as DeviceType, X as enumerateSchemaFields, Y as enumerateItemArrayFields, _t as parseStreamParamsFormPatch, a as CAMERA_SWITCH_ORDER, f as DeviceStatusSchema, ht as normalizeUnit, ln as sleep, nn as isDeviceConfigCap, o as CAP_NAMES_WITH_STATUS, qt as WELL_KNOWN_TAB_MAP, t as ALL_CAPABILITY_DEFINITIONS, un as EventCategory, wt as runtimeStatePolicyFor } from "../../dist-CiHYspij.mjs";
|
|
2
|
+
import { n as purgeRetiredSettingsRows } from "../../retired-settings-keys-DeRxo3vg.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { canonicalDeviceFingerprint } from "@camstack/types/node";
|
|
5
5
|
//#region src/builtins/device-manager/adoption-job-engine.ts
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
//#region src/builtins/doorbell/trigger-engine.ts
|
|
8
8
|
/**
|
|
9
9
|
* Pure trigger logic for the virtual-doorbell builtin — edge detection over
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Lt as errMsg, P as bareAddonId, Rt as BaseAddon, Wt as DeviceType, Z as evaluateSensorEdge, Zt as createEvent, at as isSameAddonId, b as SOURCE_DEVICE_TYPES, ot as isSourceCap, q as doorbellCapability, un as EventCategory, y as SOURCE_CAPS } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
//#region src/builtins/doorbell/trigger-engine.ts
|
|
3
3
|
/**
|
|
4
4
|
* Pure trigger logic for the virtual-doorbell builtin — edge detection over
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
//#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
|
|
9
9
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Rt as BaseAddon, dt as logDestinationCapability } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
//#region src/builtins/hub-forwarder/hub-forwarder-destination.ts
|
|
4
4
|
var DEFAULT_OUTBOUND_BUFFER_SIZE = 500;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
3
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
4
4
|
//#region src/builtins/liveness-monitor/liveness-checks.ts
|
|
5
5
|
var NO_DEVICES = "liveness:no-devices";
|
|
6
6
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Lt as errMsg, Rt as BaseAddon, Zt as createEvent, un as EventCategory, v as RecordingStatusSchema } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
//#region src/builtins/liveness-monitor/liveness-checks.ts
|
|
3
3
|
var NO_DEVICES = "liveness:no-devices";
|
|
4
4
|
var ALL_OFFLINE = "liveness:all-devices-offline";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
node_crypto = require_chunk.__toESM(node_crypto);
|
|
9
9
|
let crypto$1 = require("crypto");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as __require, o as __toESM, t as __commonJSMin } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { C as ScopedTokenSchema, D as UserRecordSchema, M as authProviderCapability, Pt as userManagementCapability, Rt as BaseAddon, r as ApiKeyRecordSchema } from "../../dist-CiHYspij.mjs";
|
|
3
3
|
import * as crypto$2 from "node:crypto";
|
|
4
4
|
import { createHash, randomUUID, timingSafeEqual } from "node:crypto";
|
|
5
5
|
import nodeCrypto from "crypto";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
3
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
4
4
|
const require_tls = require("../../tls-BxQlomxd.js");
|
|
5
5
|
let node_fs_promises = require("node:fs/promises");
|
|
6
6
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Rt as BaseAddon, un as EventCategory, ut as localNetworkCapability } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { S as readLanHttpState, _ as DEFAULT_LAN_HTTP_PORT, a as writeTlsMode, i as writeExtraSans, l as reissueTlsLeaf, n as readTlsAccessStatus, o as validateUploadedTls, r as readTlsMode, s as ensureTlsCert, t as readExtraSans, y as applyLanHttp } from "../../tls-DOTmtLCW.mjs";
|
|
3
3
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join } from "node:path";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
//#region src/builtins/loki-logging/loki-payload.ts
|
|
8
8
|
/**
|
|
9
9
|
* Loki rejects a label name that is not a valid Prometheus label
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Rt as BaseAddon, dt as logDestinationCapability } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
//#region src/builtins/loki-logging/loki-payload.ts
|
|
3
3
|
/**
|
|
4
4
|
* Loki rejects a label name that is not a valid Prometheus label
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
let node_fs_promises = require("node:fs/promises");
|
|
8
8
|
let node_child_process = require("node:child_process");
|
|
9
9
|
let node_util = require("node:util");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Lt as errMsg, Rt as BaseAddon, Zt as createEvent, bt as reducePoints, et as foldSnapshotByFunction, mt as metricsProviderCapability, un as EventCategory, xt as resolveBucketMs } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { readFile, readdir } from "node:fs/promises";
|
|
3
3
|
import { execFile, execFileSync } from "node:child_process";
|
|
4
4
|
import { promisify } from "node:util";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
let node_util = require("node:util");
|
|
9
9
|
let node_fs = require("node:fs");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { $t as emitReadiness, Dt as scoreRuntimes, J as enumerateInferenceDevices, Lt as errMsg, Rt as BaseAddon, un as EventCategory, vt as platformProbeCapability } from "../../dist-CiHYspij.mjs";
|
|
3
3
|
import { execFile } from "node:child_process";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import * as fs from "node:fs";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
8
8
|
/**
|
|
9
9
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Rt as BaseAddon, un as EventCategory } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
//#region src/builtins/remote-access-orchestrator/enabled-providers-reconcile.ts
|
|
3
3
|
/**
|
|
4
4
|
* Reconcile the durable `enabledProviders` set against authoritative
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
let zod = require("zod");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
9
9
|
let _camstack_types_node = require("@camstack/types/node");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { F as batteryCapability, Ht as DeviceFeature, Lt as errMsg, Nt as streamQualityLabel, P as bareAddonId, Rt as BaseAddon, U as deriveBatteryPresence, Wt as DeviceType, i as BatteryStatusSchema, kt as snapshotCapability, rn as nodePin, un as EventCategory } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { signExpiringUrl, verifyExpiringUrl } from "@camstack/types/node";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
6
|
-
const require_dist = require("../../dist-
|
|
6
|
+
const require_dist = require("../../dist-jZb-HKI5.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as filesystemBrowseCapability, Mt as storageProviderCapability, Rt as BaseAddon } from "../../dist-CiHYspij.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { mkdir, readdir, realpath, statfs } from "node:fs/promises";
|
|
4
4
|
import * as path$1 from "node:path";
|
|
Binary file
|
|
Binary file
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import { ISettingsStoreProvider, StorageLocation } from '@camstack/types';
|
|
1
|
+
import { ISettingsStoreProvider, LegacyStorageLocationDefault, StorageLocation } from '@camstack/types';
|
|
2
|
+
/**
|
|
3
|
+
* A location as it comes back OFF DISK: the live record plus the retired
|
|
4
|
+
* `isDefault` column, which exists only so the orchestrator's boot migration
|
|
5
|
+
* can turn an old default into the enabled write set and say which row it came
|
|
6
|
+
* from. No other reader may take this type.
|
|
7
|
+
*/
|
|
8
|
+
export type PersistedStorageLocation = StorageLocation & LegacyStorageLocationDefault;
|
|
2
9
|
/**
|
|
3
10
|
* Abstract storage interface for `StorageLocation` records. Methods are
|
|
4
11
|
* async because production-side implementations hit SQLite — but the
|
|
@@ -6,8 +13,10 @@ import { ISettingsStoreProvider, StorageLocation } from '@camstack/types';
|
|
|
6
13
|
* disk doesn't block the cap surface.
|
|
7
14
|
*/
|
|
8
15
|
export interface ILocationStore {
|
|
9
|
-
/** Read every persisted location. Called once at boot.
|
|
10
|
-
|
|
16
|
+
/** Read every persisted location. Called once at boot. Rows carry the
|
|
17
|
+
* RETIRED `isDefault` column when it was set, for the one reader allowed to
|
|
18
|
+
* see it: the orchestrator's boot migration onto the `enabled` write set. */
|
|
19
|
+
loadAll(): Promise<readonly PersistedStorageLocation[]>;
|
|
11
20
|
/** Insert or replace a single location by id. */
|
|
12
21
|
upsert(loc: StorageLocation): Promise<void>;
|
|
13
22
|
/** Remove a location by id. */
|
|
@@ -125,7 +125,7 @@ export declare class StorageMigrationCoordinator {
|
|
|
125
125
|
* remaining" action.
|
|
126
126
|
*
|
|
127
127
|
* A class appears here only when something is (or might be) left on a
|
|
128
|
-
* location
|
|
128
|
+
* location outside its write set. An empty result therefore means exactly
|
|
129
129
|
* "there is nothing to drain", which is what lets the UI offer the action
|
|
130
130
|
* only when it is true, and what lets {@link drain} refuse rather than start
|
|
131
131
|
* a job that would move nothing and report `done` — the failure mode D295
|
|
@@ -137,12 +137,12 @@ export declare class StorageMigrationCoordinator {
|
|
|
137
137
|
*/
|
|
138
138
|
residue(): Promise<readonly StorageMigrationResidue[]>;
|
|
139
139
|
/**
|
|
140
|
-
* Run the DRAIN half alone, against classes whose
|
|
140
|
+
* Run the DRAIN half alone, against classes whose write set has already moved.
|
|
141
141
|
*
|
|
142
142
|
* ## Why this is a second verb rather than a looser `start`
|
|
143
143
|
*
|
|
144
|
-
* `start` refuses a destination that is already the class's
|
|
145
|
-
* (`"recordingsLow:ssd" is already the "recordingsLow"
|
|
144
|
+
* `start` refuses a destination that is already the class's only write target
|
|
145
|
+
* (`"recordingsLow:ssd" is already the only write target for "recordingsLow"`). That refusal
|
|
146
146
|
* is correct and it is load-bearing: there is genuinely nothing left to
|
|
147
147
|
* repoint, and an operator must never be able to re-repoint a migrated class
|
|
148
148
|
* by accident. Making `start` idempotent — "an already-repointed class
|
|
@@ -151,7 +151,7 @@ export declare class StorageMigrationCoordinator {
|
|
|
151
151
|
* operator reads ("pauses the writers…") would be a lie half the time.
|
|
152
152
|
*
|
|
153
153
|
* `drain` instead cannot repoint AT ALL: it never touches
|
|
154
|
-
* `
|
|
154
|
+
* `setWriteTargets`, and its job starts in `draining` with `repointed`
|
|
155
155
|
* already true, so the `repointing` / `refreshing` / `resuming` blocks of
|
|
156
156
|
* {@link run} are behind it and unreachable. The two verbs are disjoint, and
|
|
157
157
|
* `start`'s refusal keeps meaning exactly what it meant.
|
|
@@ -161,7 +161,7 @@ export declare class StorageMigrationCoordinator {
|
|
|
161
161
|
* The finished job is the audit of what happened; re-opening it destroys
|
|
162
162
|
* that. And a drain is needed in cases where no migration job ever existed
|
|
163
163
|
* (a mover armed by hand, footage stranded on a location an operator added
|
|
164
|
-
* and then
|
|
164
|
+
* and then disabled again). One job = one operation, and the work list comes
|
|
165
165
|
* from {@link residue} — the archive — not from what a previous job believed.
|
|
166
166
|
*/
|
|
167
167
|
drain(input: StorageMigrationDrainInput): Promise<string>;
|
|
@@ -217,9 +217,9 @@ export declare class StorageMigrationCoordinator {
|
|
|
217
217
|
private waitForSeal;
|
|
218
218
|
private verifyMoves;
|
|
219
219
|
/**
|
|
220
|
-
* After a from→to copy whose source was NOT
|
|
221
|
-
*
|
|
222
|
-
* naming a
|
|
220
|
+
* After a from→to copy whose source was NOT a write target: stop new writes
|
|
221
|
+
* to `from`. The rest of the write set is unchanged (that is the whole point
|
|
222
|
+
* of naming a source outside it). A location that is already disabled is
|
|
223
223
|
* left alone.
|
|
224
224
|
*/
|
|
225
225
|
private freezeDrainedSources;
|