@camstack/system 1.2.444 → 1.2.446
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-runner.js +40 -31
- package/dist/addon-runner.mjs +41 -32
- package/dist/{agent-https-DlpTMDqA.js → agent-https-5DYAOJMO.js} +810 -12
- package/dist/{agent-https-U0d4uvn2.mjs → agent-https-BWUEf6ev.mjs} +697 -13
- package/dist/auth/admin-token-manager.d.ts +9 -3
- package/dist/auth/api-key-manager.d.ts +9 -3
- package/dist/auth/auth-audit-log.d.ts +9 -3
- package/dist/auth/device-credential-manager.d.ts +5 -1
- package/dist/auth/external-identity-manager.d.ts +8 -21
- package/dist/auth/login-session-manager.d.ts +11 -3
- package/dist/auth/scoped-token-manager.d.ts +8 -52
- package/dist/auth/totp-manager.d.ts +11 -3
- package/dist/auth/user-manager.d.ts +10 -17
- 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/alert-store.d.ts +32 -0
- package/dist/builtins/alerts/alerts.addon.d.ts +9 -2
- package/dist/builtins/alerts/alerts.addon.js +373 -154
- package/dist/builtins/alerts/alerts.addon.mjs +372 -154
- package/dist/builtins/alerts/critical-push.d.ts +4 -0
- package/dist/builtins/alerts/emit-alert-policy.d.ts +28 -0
- package/dist/builtins/alerts/record-kinds.d.ts +15 -0
- package/dist/builtins/autotrack/index.js +1 -1
- package/dist/builtins/autotrack/index.mjs +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.d.ts +1 -0
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +134 -193
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +134 -193
- package/dist/builtins/backup-orchestrator/destination-policy.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/encryption-key-store.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/record-kinds.d.ts +58 -0
- package/dist/builtins/backup-orchestrator/schedule-store.d.ts +4 -2
- package/dist/builtins/backup-orchestrator/seed-marker-store.d.ts +4 -2
- package/dist/builtins/calendars/calendar-prefs-store.d.ts +13 -5
- package/dist/builtins/calendars/calendars.addon.d.ts +2 -2
- package/dist/builtins/calendars/calendars.addon.js +67 -64
- package/dist/builtins/calendars/calendars.addon.mjs +59 -64
- package/dist/builtins/calendars/record-kinds.d.ts +18 -0
- package/dist/builtins/camera-grid/index.js +1 -1
- package/dist/builtins/camera-grid/index.mjs +1 -1
- package/dist/builtins/cluster-agent/record-kinds.d.ts +36 -0
- package/dist/builtins/composer/composer.addon.js +2 -2
- package/dist/builtins/composer/composer.addon.mjs +2 -2
- package/dist/builtins/console-logging/index.js +1 -1
- package/dist/builtins/console-logging/index.mjs +1 -1
- package/dist/builtins/core-blocks/block-settings-store.d.ts +8 -4
- package/dist/builtins/core-blocks/core-block-store.d.ts +8 -16
- package/dist/builtins/core-blocks/core-blocks.addon.js +85 -112
- package/dist/builtins/core-blocks/core-blocks.addon.mjs +86 -113
- package/dist/builtins/core-blocks/index.mjs +1 -1
- package/dist/builtins/core-blocks/record-kinds.d.ts +26 -0
- package/dist/builtins/device-manager/device-manager.addon.js +111 -187
- package/dist/builtins/device-manager/device-manager.addon.mjs +110 -187
- package/dist/builtins/device-manager/device-tombstone-store.d.ts +9 -48
- package/dist/builtins/device-manager/record-kinds.d.ts +14 -0
- package/dist/builtins/hub-forwarder/index.js +1 -1
- package/dist/builtins/hub-forwarder/index.mjs +1 -1
- package/dist/builtins/keychain/index.js +152 -22
- package/dist/builtins/keychain/index.mjs +152 -22
- package/dist/builtins/keychain/keychain-service.d.ts +3 -2
- package/dist/builtins/keychain/keychain-store.d.ts +13 -2
- package/dist/builtins/keychain/record-kinds.d.ts +16 -0
- 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/auth-schema.d.ts +3 -1
- package/dist/builtins/local-auth/local-auth.addon.js +2903 -2123
- package/dist/builtins/local-auth/local-auth.addon.mjs +2904 -2124
- package/dist/builtins/local-auth/oauth-session-manager.d.ts +8 -48
- package/dist/builtins/local-auth/record-kinds.d.ts +141 -0
- package/dist/builtins/local-network/local-network.addon.js +2 -2
- package/dist/builtins/local-network/local-network.addon.mjs +2 -2
- 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/record-entries/index.js +1 -1
- package/dist/builtins/record-entries/index.mjs +1 -1
- package/dist/builtins/records/legacy-table-row-count.d.ts +5 -0
- package/dist/builtins/records/phase6-declare-gate.d.ts +28 -0
- package/dist/builtins/records-isolated.d.ts +10 -0
- 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/index.js +1 -1
- package/dist/builtins/sqlite-storage/index.mjs +1 -1
- package/dist/builtins/sqlite-storage/integration-record-kinds.d.ts +30 -0
- package/dist/builtins/sqlite-storage/integration-registry.d.ts +10 -16
- package/dist/builtins/sqlite-storage/records/count-settings-array-legacy.d.ts +5 -0
- package/dist/builtins/sqlite-storage/records/count-settings-brokers-legacy.d.ts +6 -0
- package/dist/builtins/sqlite-storage/records/records-engine-types.d.ts +5 -0
- package/dist/builtins/sqlite-storage/records/records-engine.d.ts +4 -0
- package/dist/builtins/sqlite-storage/records/records-provider.d.ts +5 -1
- package/dist/builtins/sqlite-storage/sqlite-settings-backend.d.ts +17 -0
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +111 -3
- package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +111 -3
- package/dist/builtins/sqlite-storage/storage-admin-provider.d.ts +9 -1
- package/dist/builtins/storage-orchestrator/drain-state-store.d.ts +5 -2
- package/dist/builtins/storage-orchestrator/location-store.d.ts +7 -2
- package/dist/builtins/storage-orchestrator/record-kinds.d.ts +38 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.d.ts +2 -0
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +196 -5
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +195 -6
- package/dist/builtins/system-config/record-kinds.d.ts +32 -0
- package/dist/builtins/system-config/system-config.addon.js +53 -618
- package/dist/builtins/system-config/system-config.addon.mjs +29 -577
- package/dist/builtins/winston-logging/index.js +1 -1
- package/dist/builtins/winston-logging/index.mjs +1 -1
- package/dist/{composition-sources-C3rKncIF.mjs → composition-sources-BmC5jAUv.mjs} +1 -1
- package/dist/{composition-sources-NAPZddic.js → composition-sources-BwIIltnZ.js} +1 -1
- package/dist/{constants-BKX2QnIg.mjs → constants-6XHGmEUF.mjs} +1 -1
- package/dist/{constants-BXiNEIeV.js → constants-DA_tjzIk.js} +1 -1
- package/dist/{device-ca-jxjSL8Ov.mjs → device-ca-Bh_ClxMO.mjs} +1 -1
- package/dist/{device-ca-DT9X2S6d.js → device-ca-CnbrgfmW.js} +1 -1
- package/dist/{dist-D1vECb_6.js → dist-BkNfEJKa.js} +521 -64
- package/dist/{dist-DERK-gP5.mjs → dist-CkZIrsAP.mjs} +462 -65
- package/dist/file-host-worker.js +1 -1
- package/dist/file-host-worker.mjs +1 -1
- package/dist/{hub-mdns-ciao-CRaC97V0.mjs → hub-mdns-ciao-CoyIUWHC.mjs} +2 -2
- package/dist/{hub-mdns-ciao-Cah9GCIg.js → hub-mdns-ciao-m5LIr4oA.js} +2 -2
- package/dist/index.d.ts +7 -0
- package/dist/index.js +3095 -2821
- package/dist/index.mjs +3067 -2810
- package/dist/kernel/index.d.ts +2 -0
- package/dist/kernel/moleculer/event-bus.d.ts +3 -1
- package/dist/kernel/moleculer/mesh-mtls/mesh-certificate-registry.d.ts +5 -1
- package/dist/kernel/moleculer/remote-logger.d.ts +2 -2
- package/dist/kernel/transport/cap-route-resolver.d.ts +9 -38
- package/dist/phase6-declare-gate-BDWZuB2n.mjs +93 -0
- package/dist/phase6-declare-gate-Bl7KocEs.js +98 -0
- package/dist/read-all-rows-CVoO1ONM.js +29 -0
- package/dist/read-all-rows-TaPqdWNF.mjs +25 -0
- package/dist/records/read-all-rows.d.ts +6 -0
- package/dist/{restore-archive-Dy-qKTdF.js → restore-archive-B57xI5Ue.js} +353 -5
- package/dist/{restore-archive-daKyE24F.mjs → restore-archive-CMr4V7Fi.mjs} +339 -9
- package/dist/tls/agent-https-names.d.ts +9 -13
- package/dist/{wal-maintenance-zRc24mOC.mjs → wal-maintenance-Bqm4zrNA.mjs} +0 -0
- package/dist/{wal-maintenance-dAv4IdzC.js → wal-maintenance-CuG1DUca.js} +0 -0
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("../../chunk-Cek0wNdY.js");
|
|
3
|
-
const require_dist = require("../../dist-
|
|
4
|
-
const
|
|
3
|
+
const require_dist = require("../../dist-BkNfEJKa.js");
|
|
4
|
+
const require_read_all_rows$1 = require("../../read-all-rows-CVoO1ONM.js");
|
|
5
|
+
const require_composition_sources = require("../../composition-sources-BwIIltnZ.js");
|
|
5
6
|
const require_prefix_range = require("../../prefix-range-D_KueXbQ.js");
|
|
6
7
|
const require_prefix_walk = require("../../prefix-walk-Dv6MLZlM.js");
|
|
8
|
+
let zod = require("zod");
|
|
7
9
|
let node_crypto = require("node:crypto");
|
|
8
10
|
let _camstack_types_node = require("@camstack/types/node");
|
|
9
11
|
let node_fs_promises = require("node:fs/promises");
|
|
@@ -502,6 +504,50 @@ var BlockSupervisor = class {
|
|
|
502
504
|
}
|
|
503
505
|
};
|
|
504
506
|
//#endregion
|
|
507
|
+
//#region src/builtins/core-blocks/record-kinds.ts
|
|
508
|
+
var import_read_all_rows = require_read_all_rows$1.require_read_all_rows();
|
|
509
|
+
/**
|
|
510
|
+
* Record kinds owned by core-blocks (phase 4).
|
|
511
|
+
*/
|
|
512
|
+
var CORE_BLOCKS_COLLECTION = "core_blocks";
|
|
513
|
+
var CORE_BLOCK_SETTINGS_COLLECTION = "core-blocks:settings";
|
|
514
|
+
var CoreBlockRowBodySchema = zod.z.object({
|
|
515
|
+
name: zod.z.string(),
|
|
516
|
+
enabled: zod.z.boolean(),
|
|
517
|
+
placement: zod.z.string(),
|
|
518
|
+
updatedAt: zod.z.number(),
|
|
519
|
+
block: zod.z.record(zod.z.string(), zod.z.unknown())
|
|
520
|
+
});
|
|
521
|
+
var CoreBlockSettingsBodySchema = zod.z.object({ values: zod.z.record(zod.z.string(), zod.z.unknown()) });
|
|
522
|
+
var _coreBlocksRecordKinds = require_dist.defineRecordKinds({
|
|
523
|
+
blocks: {
|
|
524
|
+
schema: CoreBlockRowBodySchema,
|
|
525
|
+
class: "config",
|
|
526
|
+
writeTrigger: "create / update / setStatus after compile",
|
|
527
|
+
device: "none",
|
|
528
|
+
at: "none",
|
|
529
|
+
indexes: [{
|
|
530
|
+
name: "enabled",
|
|
531
|
+
fields: ["enabled"]
|
|
532
|
+
}],
|
|
533
|
+
retention: { none: "operator delete only" },
|
|
534
|
+
maxDataBytes: 256 * 1024,
|
|
535
|
+
adoptsFrom: CORE_BLOCKS_COLLECTION
|
|
536
|
+
},
|
|
537
|
+
settings: {
|
|
538
|
+
schema: CoreBlockSettingsBodySchema,
|
|
539
|
+
class: "config",
|
|
540
|
+
writeTrigger: "legacy only — migrateRawSecrets reads then deletes rows (D880)",
|
|
541
|
+
device: "none",
|
|
542
|
+
at: "none",
|
|
543
|
+
retention: { none: "rows deleted by migrateRawSecrets" },
|
|
544
|
+
adoptsFrom: CORE_BLOCK_SETTINGS_COLLECTION
|
|
545
|
+
}
|
|
546
|
+
});
|
|
547
|
+
var coreBlocksRecordKinds = _coreBlocksRecordKinds;
|
|
548
|
+
_coreBlocksRecordKinds.blocks;
|
|
549
|
+
_coreBlocksRecordKinds.settings;
|
|
550
|
+
//#endregion
|
|
505
551
|
//#region src/kernel/addon-settings-store.ts
|
|
506
552
|
/** The collection every addon's settings share. Named nowhere else (with sections' own module). */
|
|
507
553
|
var ADDON_SETTINGS_COLLECTION = "addon-settings";
|
|
@@ -593,23 +639,6 @@ function createAddonSettingsStore(door, addonId) {
|
|
|
593
639
|
* now LEGACY - read only by {@link BlockSettingsStore.migrateRawSecrets}, which
|
|
594
640
|
* moves the secrets, copies any key the rows lack, and deletes the blob.
|
|
595
641
|
*/
|
|
596
|
-
/**
|
|
597
|
-
* @durable class=config owner=core-blocks
|
|
598
|
-
* write="NOTHING since D880 - the values live in the block addon's `addon-settings` rows. Only the one-shot `migrateRawSecrets` reads it, then deletes each row."
|
|
599
|
-
* retention="legacy: every row is deleted by the verified operator migration; the declaration goes with it once every hub ran it."
|
|
600
|
-
*/
|
|
601
|
-
var CORE_BLOCK_SETTINGS_COLLECTION = "core-blocks:settings";
|
|
602
|
-
var CORE_BLOCK_SETTINGS_COLUMNS = [{
|
|
603
|
-
name: "id",
|
|
604
|
-
type: "TEXT",
|
|
605
|
-
primaryKey: true,
|
|
606
|
-
notNull: true
|
|
607
|
-
}, {
|
|
608
|
-
name: "values",
|
|
609
|
-
type: "JSON",
|
|
610
|
-
notNull: true,
|
|
611
|
-
defaultValue: "{}"
|
|
612
|
-
}];
|
|
613
642
|
/** The block declares a secret, but this process has no keychain door to put it in. */
|
|
614
643
|
var BlockSecretsUnavailableError = class extends Error {
|
|
615
644
|
blockId;
|
|
@@ -693,19 +722,17 @@ function legacyValuesOf(row) {
|
|
|
693
722
|
}
|
|
694
723
|
var BlockSettingsStore = class {
|
|
695
724
|
store;
|
|
725
|
+
legacySettings;
|
|
696
726
|
keychainFor;
|
|
697
727
|
onOrphaned;
|
|
698
728
|
constructor(deps) {
|
|
699
729
|
this.store = deps.store;
|
|
730
|
+
this.legacySettings = deps.legacySettings;
|
|
700
731
|
this.keychainFor = deps.keychainFor;
|
|
701
732
|
this.onOrphaned = deps.onOrphaned ?? (() => void 0);
|
|
702
733
|
}
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
await store.declareCollection.mutate({
|
|
706
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
707
|
-
columns: [...CORE_BLOCK_SETTINGS_COLUMNS]
|
|
708
|
-
});
|
|
734
|
+
static legacyKindOf(records) {
|
|
735
|
+
return records.kind(coreBlocksRecordKinds.settings);
|
|
709
736
|
}
|
|
710
737
|
rows(blockId) {
|
|
711
738
|
const store = this.store;
|
|
@@ -757,10 +784,7 @@ var BlockSettingsStore = class {
|
|
|
757
784
|
const removal = {};
|
|
758
785
|
for (const key of Object.keys(stored)) removal[key] = void 0;
|
|
759
786
|
await this.rows(blockId).merge(removal);
|
|
760
|
-
await this.
|
|
761
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
762
|
-
key: blockId
|
|
763
|
-
});
|
|
787
|
+
await this.legacySettings.delete(blockId);
|
|
764
788
|
if (refs.length === 0) return;
|
|
765
789
|
const secrets = this.keychainFor(owner);
|
|
766
790
|
try {
|
|
@@ -782,9 +806,8 @@ var BlockSettingsStore = class {
|
|
|
782
806
|
* only - never a value, a ref or a block id.
|
|
783
807
|
*/
|
|
784
808
|
async migrateRawSecrets(blocks, apply) {
|
|
785
|
-
const legacyRows = await this.store.query.query({ collection: CORE_BLOCK_SETTINGS_COLLECTION });
|
|
786
809
|
const legacyById = /* @__PURE__ */ new Map();
|
|
787
|
-
for (const row of
|
|
810
|
+
for (const row of await (0, import_read_all_rows.readAllRows)(this.legacySettings)) legacyById.set(row.id, legacyValuesOf({ values: row.data.values }));
|
|
788
811
|
const tally = {
|
|
789
812
|
rows: 0,
|
|
790
813
|
raw: 0,
|
|
@@ -856,10 +879,7 @@ var BlockSettingsStore = class {
|
|
|
856
879
|
};
|
|
857
880
|
}
|
|
858
881
|
async dropLegacy(blockId) {
|
|
859
|
-
await this.
|
|
860
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
861
|
-
key: blockId
|
|
862
|
-
});
|
|
882
|
+
await this.legacySettings.delete(blockId);
|
|
863
883
|
}
|
|
864
884
|
/** put -> read back -> compare -> only then the marker rows. */
|
|
865
885
|
async moveBlock(block, tree, rest, effective, stored) {
|
|
@@ -905,7 +925,7 @@ var BlockSettingsStore = class {
|
|
|
905
925
|
let remainingRaw = 0;
|
|
906
926
|
let unresolvedMarkers = 0;
|
|
907
927
|
const legacyById = /* @__PURE__ */ new Map();
|
|
908
|
-
for (const row of await
|
|
928
|
+
for (const row of await (0, import_read_all_rows.readAllRows)(this.legacySettings)) legacyById.set(row.id, legacyValuesOf({ values: row.data.values }));
|
|
909
929
|
for (const block of subjects) {
|
|
910
930
|
const tree = require_dist.secretTreeFromSchema(block.settingsSchema ?? null);
|
|
911
931
|
const after = await this.readStored(block.id);
|
|
@@ -1332,47 +1352,6 @@ async function compileFiles(transpiler, files, entryPath) {
|
|
|
1332
1352
|
* shape, or a new PK/UNIQUE/NOT-NULL-without-default column — which drops the
|
|
1333
1353
|
* table and takes the operator's source code with it."
|
|
1334
1354
|
*/
|
|
1335
|
-
var CORE_BLOCKS_COLLECTION = "core_blocks";
|
|
1336
|
-
var CORE_BLOCKS_COLUMNS = [
|
|
1337
|
-
{
|
|
1338
|
-
name: "id",
|
|
1339
|
-
type: "TEXT",
|
|
1340
|
-
primaryKey: true,
|
|
1341
|
-
notNull: true
|
|
1342
|
-
},
|
|
1343
|
-
{
|
|
1344
|
-
name: "name",
|
|
1345
|
-
type: "TEXT",
|
|
1346
|
-
notNull: true
|
|
1347
|
-
},
|
|
1348
|
-
{
|
|
1349
|
-
name: "enabled",
|
|
1350
|
-
type: "BOOLEAN",
|
|
1351
|
-
notNull: true
|
|
1352
|
-
},
|
|
1353
|
-
{
|
|
1354
|
-
name: "placement",
|
|
1355
|
-
type: "TEXT",
|
|
1356
|
-
notNull: true
|
|
1357
|
-
},
|
|
1358
|
-
{
|
|
1359
|
-
name: "updatedAt",
|
|
1360
|
-
type: "INTEGER",
|
|
1361
|
-
notNull: true
|
|
1362
|
-
},
|
|
1363
|
-
(
|
|
1364
|
-
/** The FULL block, Zod-validated on read; the scalars above are indexed
|
|
1365
|
-
* projections for the list view. */
|
|
1366
|
-
{
|
|
1367
|
-
name: "block",
|
|
1368
|
-
type: "JSON",
|
|
1369
|
-
notNull: true
|
|
1370
|
-
})
|
|
1371
|
-
];
|
|
1372
|
-
var CORE_BLOCKS_INDEXES = [{
|
|
1373
|
-
name: "idx_core_blocks_enabled",
|
|
1374
|
-
columns: ["enabled"]
|
|
1375
|
-
}];
|
|
1376
1355
|
/**
|
|
1377
1356
|
* Rows one read asks for. A read that ANSWERS this many is not a loaded table:
|
|
1378
1357
|
* rows past the limit would be absent, and an absent composition reads as a
|
|
@@ -1398,11 +1377,11 @@ function mayBeComposition(raw) {
|
|
|
1398
1377
|
function parseErrorText(issues) {
|
|
1399
1378
|
return issues.map((i) => `${i.path.map(String).join(".")}: ${i.message}`).join("; ");
|
|
1400
1379
|
}
|
|
1401
|
-
var CoreBlockStore = class {
|
|
1380
|
+
var CoreBlockStore = class CoreBlockStore {
|
|
1402
1381
|
byId = /* @__PURE__ */ new Map();
|
|
1403
1382
|
/** Rows that exist but do not parse and may be compositions — held for the composer, never dropped (D49). */
|
|
1404
1383
|
unreadable = [];
|
|
1405
|
-
|
|
1384
|
+
blocks;
|
|
1406
1385
|
logger;
|
|
1407
1386
|
now;
|
|
1408
1387
|
newId;
|
|
@@ -1410,16 +1389,15 @@ var CoreBlockStore = class {
|
|
|
1410
1389
|
/** Consecutive failed reads — the warn is once per run of them, not once per retry. */
|
|
1411
1390
|
failedLoads = 0;
|
|
1412
1391
|
constructor(deps) {
|
|
1413
|
-
this.
|
|
1392
|
+
this.blocks = deps.blocks;
|
|
1414
1393
|
this.logger = deps.logger;
|
|
1415
1394
|
this.now = deps.now ?? (() => Date.now());
|
|
1416
1395
|
this.newId = deps.newId ?? (() => (0, node_crypto.randomUUID)());
|
|
1417
1396
|
}
|
|
1418
|
-
static
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
indexes: [...CORE_BLOCKS_INDEXES]
|
|
1397
|
+
static of(records, logger) {
|
|
1398
|
+
return new CoreBlockStore({
|
|
1399
|
+
blocks: records.kind(coreBlocksRecordKinds.blocks),
|
|
1400
|
+
logger
|
|
1423
1401
|
});
|
|
1424
1402
|
}
|
|
1425
1403
|
/** True only after a `load()` that READ the table. The composer withdraws nothing otherwise (D49). */
|
|
@@ -1444,11 +1422,8 @@ var CoreBlockStore = class {
|
|
|
1444
1422
|
*/
|
|
1445
1423
|
async load() {
|
|
1446
1424
|
try {
|
|
1447
|
-
const rows = await this.
|
|
1448
|
-
|
|
1449
|
-
filter: { limit: CORE_BLOCKS_LOAD_LIMIT }
|
|
1450
|
-
});
|
|
1451
|
-
if (rows.length >= 1e3) throw new Error(`core_blocks answered ${rows.length} rows, the read limit — rows past it would read as deleted`);
|
|
1425
|
+
const rows = (await this.blocks.query({ limit: CORE_BLOCKS_LOAD_LIMIT })).records;
|
|
1426
|
+
if (rows.length >= 1e3) throw new Error(`${CORE_BLOCKS_COLLECTION} answered ${rows.length} rows, the read limit — rows past it would read as deleted`);
|
|
1452
1427
|
this.byId.clear();
|
|
1453
1428
|
this.loaded = true;
|
|
1454
1429
|
if (this.failedLoads > 0) {
|
|
@@ -1458,12 +1433,12 @@ var CoreBlockStore = class {
|
|
|
1458
1433
|
let skipped = 0;
|
|
1459
1434
|
const unreadable = [];
|
|
1460
1435
|
for (const row of rows) {
|
|
1461
|
-
const raw = row.data
|
|
1436
|
+
const raw = row.data.block;
|
|
1462
1437
|
const parsed = require_dist.CoreBlockSchema.safeParse(raw);
|
|
1463
1438
|
if (!parsed.success) {
|
|
1464
1439
|
skipped += 1;
|
|
1465
1440
|
if (mayBeComposition(raw)) {
|
|
1466
|
-
const name = row.data
|
|
1441
|
+
const name = row.data.name;
|
|
1467
1442
|
unreadable.push({
|
|
1468
1443
|
id: row.id,
|
|
1469
1444
|
name: typeof name === "string" ? name : null,
|
|
@@ -1623,22 +1598,21 @@ var CoreBlockStore = class {
|
|
|
1623
1598
|
async delete(blockId) {
|
|
1624
1599
|
this.byId.delete(blockId);
|
|
1625
1600
|
this.unreadable = this.unreadable.filter((u) => u.id !== blockId);
|
|
1626
|
-
await this.
|
|
1627
|
-
collection: CORE_BLOCKS_COLLECTION,
|
|
1628
|
-
key: blockId
|
|
1629
|
-
});
|
|
1601
|
+
await this.blocks.delete(blockId);
|
|
1630
1602
|
}
|
|
1631
1603
|
async persist(block) {
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1604
|
+
const body = {
|
|
1605
|
+
name: block.name,
|
|
1606
|
+
enabled: block.enabled,
|
|
1607
|
+
placement: block.placement,
|
|
1608
|
+
updatedAt: block.updatedAt,
|
|
1609
|
+
block
|
|
1610
|
+
};
|
|
1611
|
+
const parsed = coreBlocksRecordKinds.blocks.schema.safeParse(body);
|
|
1612
|
+
if (!parsed.success) return;
|
|
1613
|
+
await this.blocks.put({
|
|
1614
|
+
id: block.id,
|
|
1615
|
+
data: parsed.data
|
|
1642
1616
|
});
|
|
1643
1617
|
}
|
|
1644
1618
|
/**
|
|
@@ -2262,14 +2236,13 @@ var CoreBlocksAddon = class extends require_dist.BaseAddon {
|
|
|
2262
2236
|
async onInitialize() {
|
|
2263
2237
|
const settingsStore = this.ctx.api?.settingsStore;
|
|
2264
2238
|
if (!settingsStore) throw new Error("core-blocks: settings-store API not available — refusing to register the cap");
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
logger: this.ctx.logger.child("store")
|
|
2270
|
-
});
|
|
2239
|
+
const records = this.ctx.records;
|
|
2240
|
+
if (records === void 0) throw new Error("core-blocks needs ctx.records on the hub");
|
|
2241
|
+
await records.declare(coreBlocksRecordKinds);
|
|
2242
|
+
this.store = CoreBlockStore.of(records, this.ctx.logger.child("store"));
|
|
2271
2243
|
this.prefs = new BlockSettingsStore({
|
|
2272
2244
|
store: settingsStore,
|
|
2245
|
+
legacySettings: BlockSettingsStore.legacyKindOf(records),
|
|
2273
2246
|
keychainFor: (owner) => this.ctx.secrets?.forOwner?.(owner) ?? null,
|
|
2274
2247
|
onOrphaned: (blockId, refs) => this.ctx.logger.warn("core block settings: dropped keychain refs could not be deleted", { meta: {
|
|
2275
2248
|
blockId,
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as
|
|
1
|
+
import { $i as resolveSecretMarkers, An as normalizeCoreBlockWrite, Ar as compositionSourceKey, At as coreBlockIdFromAddonId, Bt as describeComposableCaps, Di as defineRecordKinds, Dt as compositionSourceRefs, In as planComposition, Kn as resolveCoreBlockEntry, Li as isSecretMarker, Lr as errMsg, Mi as hydrateSchema, Mt as coreBlocksCapability, Ot as coreBlockAddonId, Rr as BaseAddon, Tr as composedDeviceRef, Un as replacedFieldKeys, _t as buildCapabilityLookup, gr as validateComposition, h as CORE_BLOCK_ADDON_PREFIX, j as DeclaredDevices, jt as coreBlockSourceKind, kt as coreBlockComposition, m as CORE_BLOCKS_ADDON_ID, na as secretTreeFromSchema, oa as transformSecretWrite, p as COMPOSER_RUNNER_ID, qn as resolveCoreBlockFiles, r as ALL_CAPABILITY_DEFINITIONS, v as CoreBlockSchema, xi as collectSecretMarkerRefs, zi as isSecretRefOwnedBy } from "../../dist-CkZIrsAP.mjs";
|
|
2
|
+
import { t as require_read_all_rows } from "../../read-all-rows-TaPqdWNF.mjs";
|
|
3
|
+
import { t as describeCompositionSources } from "../../composition-sources-BmC5jAUv.mjs";
|
|
3
4
|
import { t as prefixRange } from "../../prefix-range-Dl0znowN.mjs";
|
|
4
5
|
import { n as unwrapStoredValue, t as loadPrefixed } from "../../prefix-walk-DAOBSyH1.mjs";
|
|
5
6
|
import { createRequire } from "node:module";
|
|
7
|
+
import { z } from "zod";
|
|
6
8
|
import { randomUUID } from "node:crypto";
|
|
7
9
|
import { customizationBlockName } from "@camstack/types/node";
|
|
8
10
|
import * as fs from "node:fs/promises";
|
|
@@ -497,6 +499,50 @@ var BlockSupervisor = class {
|
|
|
497
499
|
}
|
|
498
500
|
};
|
|
499
501
|
//#endregion
|
|
502
|
+
//#region src/builtins/core-blocks/record-kinds.ts
|
|
503
|
+
var import_read_all_rows = require_read_all_rows();
|
|
504
|
+
/**
|
|
505
|
+
* Record kinds owned by core-blocks (phase 4).
|
|
506
|
+
*/
|
|
507
|
+
var CORE_BLOCKS_COLLECTION = "core_blocks";
|
|
508
|
+
var CORE_BLOCK_SETTINGS_COLLECTION = "core-blocks:settings";
|
|
509
|
+
var CoreBlockRowBodySchema = z.object({
|
|
510
|
+
name: z.string(),
|
|
511
|
+
enabled: z.boolean(),
|
|
512
|
+
placement: z.string(),
|
|
513
|
+
updatedAt: z.number(),
|
|
514
|
+
block: z.record(z.string(), z.unknown())
|
|
515
|
+
});
|
|
516
|
+
var CoreBlockSettingsBodySchema = z.object({ values: z.record(z.string(), z.unknown()) });
|
|
517
|
+
var _coreBlocksRecordKinds = defineRecordKinds({
|
|
518
|
+
blocks: {
|
|
519
|
+
schema: CoreBlockRowBodySchema,
|
|
520
|
+
class: "config",
|
|
521
|
+
writeTrigger: "create / update / setStatus after compile",
|
|
522
|
+
device: "none",
|
|
523
|
+
at: "none",
|
|
524
|
+
indexes: [{
|
|
525
|
+
name: "enabled",
|
|
526
|
+
fields: ["enabled"]
|
|
527
|
+
}],
|
|
528
|
+
retention: { none: "operator delete only" },
|
|
529
|
+
maxDataBytes: 256 * 1024,
|
|
530
|
+
adoptsFrom: CORE_BLOCKS_COLLECTION
|
|
531
|
+
},
|
|
532
|
+
settings: {
|
|
533
|
+
schema: CoreBlockSettingsBodySchema,
|
|
534
|
+
class: "config",
|
|
535
|
+
writeTrigger: "legacy only — migrateRawSecrets reads then deletes rows (D880)",
|
|
536
|
+
device: "none",
|
|
537
|
+
at: "none",
|
|
538
|
+
retention: { none: "rows deleted by migrateRawSecrets" },
|
|
539
|
+
adoptsFrom: CORE_BLOCK_SETTINGS_COLLECTION
|
|
540
|
+
}
|
|
541
|
+
});
|
|
542
|
+
var coreBlocksRecordKinds = _coreBlocksRecordKinds;
|
|
543
|
+
_coreBlocksRecordKinds.blocks;
|
|
544
|
+
_coreBlocksRecordKinds.settings;
|
|
545
|
+
//#endregion
|
|
500
546
|
//#region src/kernel/addon-settings-store.ts
|
|
501
547
|
/** The collection every addon's settings share. Named nowhere else (with sections' own module). */
|
|
502
548
|
var ADDON_SETTINGS_COLLECTION = "addon-settings";
|
|
@@ -588,23 +634,6 @@ function createAddonSettingsStore(door, addonId) {
|
|
|
588
634
|
* now LEGACY - read only by {@link BlockSettingsStore.migrateRawSecrets}, which
|
|
589
635
|
* moves the secrets, copies any key the rows lack, and deletes the blob.
|
|
590
636
|
*/
|
|
591
|
-
/**
|
|
592
|
-
* @durable class=config owner=core-blocks
|
|
593
|
-
* write="NOTHING since D880 - the values live in the block addon's `addon-settings` rows. Only the one-shot `migrateRawSecrets` reads it, then deletes each row."
|
|
594
|
-
* retention="legacy: every row is deleted by the verified operator migration; the declaration goes with it once every hub ran it."
|
|
595
|
-
*/
|
|
596
|
-
var CORE_BLOCK_SETTINGS_COLLECTION = "core-blocks:settings";
|
|
597
|
-
var CORE_BLOCK_SETTINGS_COLUMNS = [{
|
|
598
|
-
name: "id",
|
|
599
|
-
type: "TEXT",
|
|
600
|
-
primaryKey: true,
|
|
601
|
-
notNull: true
|
|
602
|
-
}, {
|
|
603
|
-
name: "values",
|
|
604
|
-
type: "JSON",
|
|
605
|
-
notNull: true,
|
|
606
|
-
defaultValue: "{}"
|
|
607
|
-
}];
|
|
608
637
|
/** The block declares a secret, but this process has no keychain door to put it in. */
|
|
609
638
|
var BlockSecretsUnavailableError = class extends Error {
|
|
610
639
|
blockId;
|
|
@@ -688,19 +717,17 @@ function legacyValuesOf(row) {
|
|
|
688
717
|
}
|
|
689
718
|
var BlockSettingsStore = class {
|
|
690
719
|
store;
|
|
720
|
+
legacySettings;
|
|
691
721
|
keychainFor;
|
|
692
722
|
onOrphaned;
|
|
693
723
|
constructor(deps) {
|
|
694
724
|
this.store = deps.store;
|
|
725
|
+
this.legacySettings = deps.legacySettings;
|
|
695
726
|
this.keychainFor = deps.keychainFor;
|
|
696
727
|
this.onOrphaned = deps.onOrphaned ?? (() => void 0);
|
|
697
728
|
}
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
await store.declareCollection.mutate({
|
|
701
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
702
|
-
columns: [...CORE_BLOCK_SETTINGS_COLUMNS]
|
|
703
|
-
});
|
|
729
|
+
static legacyKindOf(records) {
|
|
730
|
+
return records.kind(coreBlocksRecordKinds.settings);
|
|
704
731
|
}
|
|
705
732
|
rows(blockId) {
|
|
706
733
|
const store = this.store;
|
|
@@ -752,10 +779,7 @@ var BlockSettingsStore = class {
|
|
|
752
779
|
const removal = {};
|
|
753
780
|
for (const key of Object.keys(stored)) removal[key] = void 0;
|
|
754
781
|
await this.rows(blockId).merge(removal);
|
|
755
|
-
await this.
|
|
756
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
757
|
-
key: blockId
|
|
758
|
-
});
|
|
782
|
+
await this.legacySettings.delete(blockId);
|
|
759
783
|
if (refs.length === 0) return;
|
|
760
784
|
const secrets = this.keychainFor(owner);
|
|
761
785
|
try {
|
|
@@ -777,9 +801,8 @@ var BlockSettingsStore = class {
|
|
|
777
801
|
* only - never a value, a ref or a block id.
|
|
778
802
|
*/
|
|
779
803
|
async migrateRawSecrets(blocks, apply) {
|
|
780
|
-
const legacyRows = await this.store.query.query({ collection: CORE_BLOCK_SETTINGS_COLLECTION });
|
|
781
804
|
const legacyById = /* @__PURE__ */ new Map();
|
|
782
|
-
for (const row of
|
|
805
|
+
for (const row of await (0, import_read_all_rows.readAllRows)(this.legacySettings)) legacyById.set(row.id, legacyValuesOf({ values: row.data.values }));
|
|
783
806
|
const tally = {
|
|
784
807
|
rows: 0,
|
|
785
808
|
raw: 0,
|
|
@@ -851,10 +874,7 @@ var BlockSettingsStore = class {
|
|
|
851
874
|
};
|
|
852
875
|
}
|
|
853
876
|
async dropLegacy(blockId) {
|
|
854
|
-
await this.
|
|
855
|
-
collection: CORE_BLOCK_SETTINGS_COLLECTION,
|
|
856
|
-
key: blockId
|
|
857
|
-
});
|
|
877
|
+
await this.legacySettings.delete(blockId);
|
|
858
878
|
}
|
|
859
879
|
/** put -> read back -> compare -> only then the marker rows. */
|
|
860
880
|
async moveBlock(block, tree, rest, effective, stored) {
|
|
@@ -900,7 +920,7 @@ var BlockSettingsStore = class {
|
|
|
900
920
|
let remainingRaw = 0;
|
|
901
921
|
let unresolvedMarkers = 0;
|
|
902
922
|
const legacyById = /* @__PURE__ */ new Map();
|
|
903
|
-
for (const row of await
|
|
923
|
+
for (const row of await (0, import_read_all_rows.readAllRows)(this.legacySettings)) legacyById.set(row.id, legacyValuesOf({ values: row.data.values }));
|
|
904
924
|
for (const block of subjects) {
|
|
905
925
|
const tree = secretTreeFromSchema(block.settingsSchema ?? null);
|
|
906
926
|
const after = await this.readStored(block.id);
|
|
@@ -1327,47 +1347,6 @@ async function compileFiles(transpiler, files, entryPath) {
|
|
|
1327
1347
|
* shape, or a new PK/UNIQUE/NOT-NULL-without-default column — which drops the
|
|
1328
1348
|
* table and takes the operator's source code with it."
|
|
1329
1349
|
*/
|
|
1330
|
-
var CORE_BLOCKS_COLLECTION = "core_blocks";
|
|
1331
|
-
var CORE_BLOCKS_COLUMNS = [
|
|
1332
|
-
{
|
|
1333
|
-
name: "id",
|
|
1334
|
-
type: "TEXT",
|
|
1335
|
-
primaryKey: true,
|
|
1336
|
-
notNull: true
|
|
1337
|
-
},
|
|
1338
|
-
{
|
|
1339
|
-
name: "name",
|
|
1340
|
-
type: "TEXT",
|
|
1341
|
-
notNull: true
|
|
1342
|
-
},
|
|
1343
|
-
{
|
|
1344
|
-
name: "enabled",
|
|
1345
|
-
type: "BOOLEAN",
|
|
1346
|
-
notNull: true
|
|
1347
|
-
},
|
|
1348
|
-
{
|
|
1349
|
-
name: "placement",
|
|
1350
|
-
type: "TEXT",
|
|
1351
|
-
notNull: true
|
|
1352
|
-
},
|
|
1353
|
-
{
|
|
1354
|
-
name: "updatedAt",
|
|
1355
|
-
type: "INTEGER",
|
|
1356
|
-
notNull: true
|
|
1357
|
-
},
|
|
1358
|
-
(
|
|
1359
|
-
/** The FULL block, Zod-validated on read; the scalars above are indexed
|
|
1360
|
-
* projections for the list view. */
|
|
1361
|
-
{
|
|
1362
|
-
name: "block",
|
|
1363
|
-
type: "JSON",
|
|
1364
|
-
notNull: true
|
|
1365
|
-
})
|
|
1366
|
-
];
|
|
1367
|
-
var CORE_BLOCKS_INDEXES = [{
|
|
1368
|
-
name: "idx_core_blocks_enabled",
|
|
1369
|
-
columns: ["enabled"]
|
|
1370
|
-
}];
|
|
1371
1350
|
/**
|
|
1372
1351
|
* Rows one read asks for. A read that ANSWERS this many is not a loaded table:
|
|
1373
1352
|
* rows past the limit would be absent, and an absent composition reads as a
|
|
@@ -1393,11 +1372,11 @@ function mayBeComposition(raw) {
|
|
|
1393
1372
|
function parseErrorText(issues) {
|
|
1394
1373
|
return issues.map((i) => `${i.path.map(String).join(".")}: ${i.message}`).join("; ");
|
|
1395
1374
|
}
|
|
1396
|
-
var CoreBlockStore = class {
|
|
1375
|
+
var CoreBlockStore = class CoreBlockStore {
|
|
1397
1376
|
byId = /* @__PURE__ */ new Map();
|
|
1398
1377
|
/** Rows that exist but do not parse and may be compositions — held for the composer, never dropped (D49). */
|
|
1399
1378
|
unreadable = [];
|
|
1400
|
-
|
|
1379
|
+
blocks;
|
|
1401
1380
|
logger;
|
|
1402
1381
|
now;
|
|
1403
1382
|
newId;
|
|
@@ -1405,16 +1384,15 @@ var CoreBlockStore = class {
|
|
|
1405
1384
|
/** Consecutive failed reads — the warn is once per run of them, not once per retry. */
|
|
1406
1385
|
failedLoads = 0;
|
|
1407
1386
|
constructor(deps) {
|
|
1408
|
-
this.
|
|
1387
|
+
this.blocks = deps.blocks;
|
|
1409
1388
|
this.logger = deps.logger;
|
|
1410
1389
|
this.now = deps.now ?? (() => Date.now());
|
|
1411
1390
|
this.newId = deps.newId ?? (() => randomUUID());
|
|
1412
1391
|
}
|
|
1413
|
-
static
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
indexes: [...CORE_BLOCKS_INDEXES]
|
|
1392
|
+
static of(records, logger) {
|
|
1393
|
+
return new CoreBlockStore({
|
|
1394
|
+
blocks: records.kind(coreBlocksRecordKinds.blocks),
|
|
1395
|
+
logger
|
|
1418
1396
|
});
|
|
1419
1397
|
}
|
|
1420
1398
|
/** True only after a `load()` that READ the table. The composer withdraws nothing otherwise (D49). */
|
|
@@ -1439,11 +1417,8 @@ var CoreBlockStore = class {
|
|
|
1439
1417
|
*/
|
|
1440
1418
|
async load() {
|
|
1441
1419
|
try {
|
|
1442
|
-
const rows = await this.
|
|
1443
|
-
|
|
1444
|
-
filter: { limit: CORE_BLOCKS_LOAD_LIMIT }
|
|
1445
|
-
});
|
|
1446
|
-
if (rows.length >= 1e3) throw new Error(`core_blocks answered ${rows.length} rows, the read limit — rows past it would read as deleted`);
|
|
1420
|
+
const rows = (await this.blocks.query({ limit: CORE_BLOCKS_LOAD_LIMIT })).records;
|
|
1421
|
+
if (rows.length >= 1e3) throw new Error(`${CORE_BLOCKS_COLLECTION} answered ${rows.length} rows, the read limit — rows past it would read as deleted`);
|
|
1447
1422
|
this.byId.clear();
|
|
1448
1423
|
this.loaded = true;
|
|
1449
1424
|
if (this.failedLoads > 0) {
|
|
@@ -1453,12 +1428,12 @@ var CoreBlockStore = class {
|
|
|
1453
1428
|
let skipped = 0;
|
|
1454
1429
|
const unreadable = [];
|
|
1455
1430
|
for (const row of rows) {
|
|
1456
|
-
const raw = row.data
|
|
1431
|
+
const raw = row.data.block;
|
|
1457
1432
|
const parsed = CoreBlockSchema.safeParse(raw);
|
|
1458
1433
|
if (!parsed.success) {
|
|
1459
1434
|
skipped += 1;
|
|
1460
1435
|
if (mayBeComposition(raw)) {
|
|
1461
|
-
const name = row.data
|
|
1436
|
+
const name = row.data.name;
|
|
1462
1437
|
unreadable.push({
|
|
1463
1438
|
id: row.id,
|
|
1464
1439
|
name: typeof name === "string" ? name : null,
|
|
@@ -1618,22 +1593,21 @@ var CoreBlockStore = class {
|
|
|
1618
1593
|
async delete(blockId) {
|
|
1619
1594
|
this.byId.delete(blockId);
|
|
1620
1595
|
this.unreadable = this.unreadable.filter((u) => u.id !== blockId);
|
|
1621
|
-
await this.
|
|
1622
|
-
collection: CORE_BLOCKS_COLLECTION,
|
|
1623
|
-
key: blockId
|
|
1624
|
-
});
|
|
1596
|
+
await this.blocks.delete(blockId);
|
|
1625
1597
|
}
|
|
1626
1598
|
async persist(block) {
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1599
|
+
const body = {
|
|
1600
|
+
name: block.name,
|
|
1601
|
+
enabled: block.enabled,
|
|
1602
|
+
placement: block.placement,
|
|
1603
|
+
updatedAt: block.updatedAt,
|
|
1604
|
+
block
|
|
1605
|
+
};
|
|
1606
|
+
const parsed = coreBlocksRecordKinds.blocks.schema.safeParse(body);
|
|
1607
|
+
if (!parsed.success) return;
|
|
1608
|
+
await this.blocks.put({
|
|
1609
|
+
id: block.id,
|
|
1610
|
+
data: parsed.data
|
|
1637
1611
|
});
|
|
1638
1612
|
}
|
|
1639
1613
|
/**
|
|
@@ -2257,14 +2231,13 @@ var CoreBlocksAddon = class extends BaseAddon {
|
|
|
2257
2231
|
async onInitialize() {
|
|
2258
2232
|
const settingsStore = this.ctx.api?.settingsStore;
|
|
2259
2233
|
if (!settingsStore) throw new Error("core-blocks: settings-store API not available — refusing to register the cap");
|
|
2260
|
-
|
|
2261
|
-
|
|
2262
|
-
|
|
2263
|
-
|
|
2264
|
-
logger: this.ctx.logger.child("store")
|
|
2265
|
-
});
|
|
2234
|
+
const records = this.ctx.records;
|
|
2235
|
+
if (records === void 0) throw new Error("core-blocks needs ctx.records on the hub");
|
|
2236
|
+
await records.declare(coreBlocksRecordKinds);
|
|
2237
|
+
this.store = CoreBlockStore.of(records, this.ctx.logger.child("store"));
|
|
2266
2238
|
this.prefs = new BlockSettingsStore({
|
|
2267
2239
|
store: settingsStore,
|
|
2240
|
+
legacySettings: BlockSettingsStore.legacyKindOf(records),
|
|
2268
2241
|
keychainFor: (owner) => this.ctx.secrets?.forOwner?.(owner) ?? null,
|
|
2269
2242
|
onOrphaned: (blockId, refs) => this.ctx.logger.warn("core block settings: dropped keychain refs could not be deleted", { meta: {
|
|
2270
2243
|
blockId,
|
|
@@ -2650,4 +2623,4 @@ async function loadTranspiler(logger) {
|
|
|
2650
2623
|
}
|
|
2651
2624
|
}
|
|
2652
2625
|
//#endregion
|
|
2653
|
-
export { CoreBlocksAddon,
|
|
2626
|
+
export { CoreBlocksAddon, BlockSettingsStore as a, CORE_BLOCK_SETTINGS_COLLECTION as c, blockAddonId as d, blockIdFromAddonId as f, loadBlockTypeDefs as i, BlockSupervisor as l, removeBlockPackage as m, CoreBlockStore as n, createAddonSettingsStore as o, materializeBlock as p, compileBlock as r, CORE_BLOCKS_COLLECTION as s, extractSettingsSchema as t, BLOCK_ADDON_PREFIX as u };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { CoreBlocksAddon, a as
|
|
1
|
+
import { CoreBlocksAddon, a as BlockSettingsStore, c as CORE_BLOCK_SETTINGS_COLLECTION, d as blockAddonId, f as blockIdFromAddonId, i as loadBlockTypeDefs, l as BlockSupervisor, m as removeBlockPackage, n as CoreBlockStore, p as materializeBlock, r as compileBlock, s as CORE_BLOCKS_COLLECTION, t as extractSettingsSchema, u as BLOCK_ADDON_PREFIX } from "./core-blocks.addon.mjs";
|
|
2
2
|
export { BLOCK_ADDON_PREFIX, BlockSettingsStore, BlockSupervisor, CORE_BLOCKS_COLLECTION, CORE_BLOCK_SETTINGS_COLLECTION, CoreBlockStore, CoreBlocksAddon, CoreBlocksAddon as default, blockAddonId, blockIdFromAddonId, compileBlock, extractSettingsSchema, loadBlockTypeDefs, materializeBlock, removeBlockPackage };
|