@camstack/system 1.2.144 → 1.2.146
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 +2 -1
- package/dist/addon-runner.mjs +2 -1
- 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.js +1 -1
- package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
- 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 +157 -35
- package/dist/builtins/device-manager/device-manager.addon.mjs +157 -35
- package/dist/builtins/device-manager/device-queries.d.ts +22 -0
- package/dist/builtins/device-manager/device-row-store.d.ts +18 -0
- 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-backend.d.ts +14 -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/storage-orchestrator.addon.js +2 -1
- package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +2 -1
- 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-D3lqzV40.js → dist-BVU5JADq.js} +401 -24
- package/dist/{dist-6rM7chzb.mjs → dist-CG7kwIZp.mjs} +401 -24
- package/dist/index.d.ts +2 -2
- package/dist/index.js +60 -11
- package/dist/index.mjs +52 -12
- package/dist/kernel/heap-watch.d.ts +209 -1
- package/dist/kernel/moleculer/children-batch-loader.d.ts +46 -0
- package/dist/kernel/moleculer/process-service.d.ts +15 -6
- package/dist/{manifest-python-deps-BuhBXCg0.mjs → manifest-python-deps-CVeckyXx.mjs} +390 -8
- package/dist/{manifest-python-deps-B_mCU6gz.js → manifest-python-deps-CktMcXzS.js} +443 -7
- package/dist/{retired-settings-keys-BtvClSPu.mjs → retired-settings-keys-Dm1z4mO4.mjs} +1 -1
- package/dist/{retired-settings-keys-OtUQtEbq.js → retired-settings-keys-_PLI9w0k.js} +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,28 @@ export declare function listPersistedByAddon(pctx: ProviderContext, input: Param
|
|
|
5
5
|
export declare function listAll(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['listAll']>[0]): ReturnType<IDeviceManagerProvider['listAll']>;
|
|
6
6
|
export declare function getDevice(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getDevice']>[0]): ReturnType<IDeviceManagerProvider['getDevice']>;
|
|
7
7
|
export declare function getChildren(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getChildren']>[0]): ReturnType<IDeviceManagerProvider['getChildren']>;
|
|
8
|
+
/**
|
|
9
|
+
* `getChildren` for a set of parents — TWO store reads for the whole set, not
|
|
10
|
+
* two per parent.
|
|
11
|
+
*
|
|
12
|
+
* The single-parent path costs one `resolvePersistedById` (a primary-key read)
|
|
13
|
+
* plus one `listByParent` (an indexed scan) EACH. Asked once per device at
|
|
14
|
+
* boot that was 1 024 of each, measured on the live hub 2026-08-27 — see the
|
|
15
|
+
* cap method's note. Here the ownership lookup for every parent the live
|
|
16
|
+
* registry does not hold is ONE `getMany`, and the children of every parent
|
|
17
|
+
* are ONE `listByParentMany`.
|
|
18
|
+
*
|
|
19
|
+
* The live half is indexed once too: `registry.getChildren` is
|
|
20
|
+
* `getAll().filter(…)`, so calling it per parent would trade an RPC N+1 for an
|
|
21
|
+
* in-memory one — 256 full sweeps of the registry per batch. One pass over
|
|
22
|
+
* `getAll()` buckets every live device by its parent instead.
|
|
23
|
+
*
|
|
24
|
+
* A parent with no children at all is ABSENT from the record; so is a parent
|
|
25
|
+
* the fleet does not know. Same contract as `DeviceRowStore.getMany` — the
|
|
26
|
+
* caller asked about it and gets no row, rather than an invented empty one it
|
|
27
|
+
* cannot tell apart from a real childless parent.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getChildrenBatch(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getChildrenBatch']>[0]): ReturnType<IDeviceManagerProvider['getChildrenBatch']>;
|
|
8
30
|
export declare function getStreamSources(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getStreamSources']>[0]): ReturnType<IDeviceManagerProvider['getStreamSources']>;
|
|
9
31
|
export declare function getConfigSchema(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getConfigSchema']>[0]): ReturnType<IDeviceManagerProvider['getConfigSchema']>;
|
|
10
32
|
export declare function getSettingsSchema(pctx: ProviderContext, input: Parameters<IDeviceManagerProvider['getSettingsSchema']>[0]): ReturnType<IDeviceManagerProvider['getSettingsSchema']>;
|
|
@@ -296,6 +296,24 @@ export declare class DeviceRowStore {
|
|
|
296
296
|
listByIntegration(integrationId: string): Promise<readonly DeviceRow[]>;
|
|
297
297
|
/** Direct children of one device, ordered by numeric id. */
|
|
298
298
|
listByParent(parentDeviceId: number): Promise<readonly DeviceRow[]>;
|
|
299
|
+
/**
|
|
300
|
+
* Direct children of MANY devices, in ONE query.
|
|
301
|
+
*
|
|
302
|
+
* `listByParent` called once per parent is the same shape `get` was before
|
|
303
|
+
* {@link getMany}: an indexed lookup this store makes cheap, repeated until
|
|
304
|
+
* it isn't. Measured on the live hub 2026-08-27, 120-second boot window:
|
|
305
|
+
* `DeviceRowStore.list < DeviceRowStore.listByParent < getChildren` at
|
|
306
|
+
* **1 024 calls** — one per device — for 919 rows in total. The BFS in
|
|
307
|
+
* `device-meta-actions.ts#collectDescendants` walked a container tree the
|
|
308
|
+
* same way, one query per node.
|
|
309
|
+
*
|
|
310
|
+
* `whereIn` on the indexed `parentDeviceId` column collapses a level of that
|
|
311
|
+
* walk into a single statement. Contract, verbatim from {@link getMany}: an
|
|
312
|
+
* EMPTY `parentDeviceIds` reads nothing at all rather than degrading to
|
|
313
|
+
* "everything", and a parent with no children — or one the fleet does not
|
|
314
|
+
* know — is simply ABSENT from the map, never an invented empty row.
|
|
315
|
+
*/
|
|
316
|
+
listByParentMany(parentDeviceIds: readonly number[]): Promise<ReadonlyMap<number, readonly DeviceRow[]>>;
|
|
299
317
|
/** How many devices the fleet holds. Used to tell "empty store" from "gone device". */
|
|
300
318
|
count(): Promise<number>;
|
|
301
319
|
private list;
|
|
@@ -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-BVU5JADq.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 { B as doorbellCapability, Et as BaseAddon, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, W as evaluateSensorEdge, X as isSameAddonId, Z as isSourceCap, g as SOURCE_DEVICE_TYPES, h as SOURCE_CAPS, zt as createEvent } from "../../dist-
|
|
1
|
+
import { B as doorbellCapability, Et as BaseAddon, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, W as evaluateSensorEdge, X as isSameAddonId, Z as isSourceCap, g as SOURCE_DEVICE_TYPES, h as SOURCE_CAPS, zt as createEvent } from "../../dist-CG7kwIZp.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-BVU5JADq.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 { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.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-BVU5JADq.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 { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, zt as createEvent } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, zt as createEvent } from "../../dist-CG7kwIZp.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-BVU5JADq.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 { E as authProviderCapability, Et as BaseAddon, St as userManagementCapability, r as ApiKeyRecordSchema, v as ScopedTokenSchema, x as UserRecordSchema } from "../../dist-
|
|
2
|
+
import { E as authProviderCapability, Et as BaseAddon, St as userManagementCapability, r as ApiKeyRecordSchema, v as ScopedTokenSchema, x as UserRecordSchema } from "../../dist-CG7kwIZp.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-BVU5JADq.js");
|
|
4
4
|
const require_tls = require("../../tls-u8QCJCFE.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 { Et as BaseAddon, Qt as EventCategory, tt as localNetworkCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Qt as EventCategory, tt as localNetworkCapability } from "../../dist-CG7kwIZp.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-CQhPGSJm.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-BVU5JADq.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 { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.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-BVU5JADq.js");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
let node_util = require("node:util");
|
|
9
9
|
let node_os = require("node:os");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as BaseAddon, Qt as EventCategory, at as metricsProviderCapability, zt as createEvent } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Qt as EventCategory, at as metricsProviderCapability, zt as createEvent } from "../../dist-CG7kwIZp.mjs";
|
|
2
2
|
import { execFile, execFileSync } from "node:child_process";
|
|
3
3
|
import { promisify } from "node:util";
|
|
4
4
|
import * as os from "node:os";
|
|
@@ -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-BVU5JADq.js");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
let node_util = require("node:util");
|
|
9
9
|
let node_os = require("node:os");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as __toESM } from "../../chunk-CNf5ZN-e.mjs";
|
|
2
|
-
import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, V as enumerateInferenceDevices, Vt as emitReadiness, ht as scoreRuntimes, lt as platformProbeCapability } from "../../dist-
|
|
2
|
+
import { Et as BaseAddon, Qt as EventCategory, Tt as errMsg, V as enumerateInferenceDevices, Vt as emitReadiness, ht as scoreRuntimes, lt as platformProbeCapability } from "../../dist-CG7kwIZp.mjs";
|
|
3
3
|
import { execFile } from "node:child_process";
|
|
4
4
|
import { promisify } from "node:util";
|
|
5
5
|
import * as os from "node:os";
|
|
@@ -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-BVU5JADq.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 { Et as BaseAddon, Qt as EventCategory } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Qt as EventCategory } from "../../dist-CG7kwIZp.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-BVU5JADq.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 { At as DeviceFeature, Et as BaseAddon, Gt as nodePin, I as deriveBatteryPresence, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, _t as snapshotCapability, i as BatteryStatusSchema, k as batteryCapability, xt as streamQualityLabel } from "../../dist-
|
|
1
|
+
import { At as DeviceFeature, Et as BaseAddon, Gt as nodePin, I as deriveBatteryPresence, Mt as DeviceType, O as bareAddonId, Qt as EventCategory, Tt as errMsg, _t as snapshotCapability, i as BatteryStatusSchema, k as batteryCapability, xt as streamQualityLabel } from "../../dist-CG7kwIZp.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-BVU5JADq.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 { Et as BaseAddon, K as filesystemBrowseCapability, bt as storageProviderCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, K as filesystemBrowseCapability, bt as storageProviderCapability } from "../../dist-CG7kwIZp.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CollectionColumn, CollectionIndex, DataStoreEngineInfo, HistogramBucket, IScopedLogger, ISettingsBackend, QueryFilter, SettingsCountInput, SettingsDeleteInput, SettingsGetInput, SettingsHistogramInput, SettingsInsertInput, SettingsIsEmptyInput, SettingsQueryInput, SettingsRecord, SettingsSetInput, SettingsUpdateInput } from '@camstack/types';
|
|
1
|
+
import { CollectionColumn, CollectionIndex, DataStoreEngineInfo, HistogramBucket, IScopedLogger, ISettingsBackend, QueryFilter, SettingsCountInput, SettingsDeleteInput, SettingsGetInput, SettingsAggregateInput, SettingsAggregateResult, SettingsHistogramInput, SettingsInsertInput, SettingsIsEmptyInput, SettingsQueryInput, SettingsRecord, SettingsSetInput, SettingsUpdateInput } from '@camstack/types';
|
|
2
2
|
import { default as Database } from 'better-sqlite3';
|
|
3
3
|
import { MutationFilterInput } from './filter-compiler.js';
|
|
4
4
|
import { SqliteOpProfiler } from './query-profiler.js';
|
|
@@ -190,6 +190,19 @@ export declare class SqliteSettingsBackend implements ISettingsBackend {
|
|
|
190
190
|
* `query` is, or the two disagree again for a new reason.
|
|
191
191
|
*/
|
|
192
192
|
count({ namespace, collection, filter }: SettingsCountInput): Promise<number>;
|
|
193
|
+
/**
|
|
194
|
+
* `COUNT(*)` and one SUM/MIN/MAX per requested field, in ONE statement.
|
|
195
|
+
*
|
|
196
|
+
* Result slots are aliased POSITIONALLY (`a0`, `a1`, …) and mapped back by
|
|
197
|
+
* index: `as` is caller text and must never reach SQL as an identifier, and
|
|
198
|
+
* the column name is validated through {@link fieldExprFor} exactly like a
|
|
199
|
+
* projection — an unresolvable field THROWS rather than being dropped, because
|
|
200
|
+
* a missing aggregate comes back as a number that looks real.
|
|
201
|
+
*
|
|
202
|
+
* `select` mode on the filter, so this agrees with `query` and `count` about
|
|
203
|
+
* which rows it is talking about.
|
|
204
|
+
*/
|
|
205
|
+
aggregate({ namespace, collection, fields, filter, }: SettingsAggregateInput): Promise<SettingsAggregateResult>;
|
|
193
206
|
histogram({ namespace, collection, field, bucketSize, origin, filter, }: SettingsHistogramInput): Promise<readonly HistogramBucket[]>;
|
|
194
207
|
isEmpty({ namespace, collection }: SettingsIsEmptyInput): Promise<boolean>;
|
|
195
208
|
private queryDeclared;
|
|
Binary file
|
|
Binary file
|
|
@@ -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-BVU5JADq.js");
|
|
7
7
|
let node_crypto = require("node:crypto");
|
|
8
8
|
let node_fs_promises = require("node:fs/promises");
|
|
9
9
|
node_fs_promises = require_chunk.__toESM(node_fs_promises);
|
|
@@ -668,6 +668,7 @@ function createDataStoreDispatch(getEngines) {
|
|
|
668
668
|
deleteWhere: async (input) => (await engine()).deleteWhere(input),
|
|
669
669
|
updateWhere: async (input) => (await engine()).updateWhere(input),
|
|
670
670
|
count: async (input) => (await engine()).count(input),
|
|
671
|
+
aggregate: async (input) => (await engine()).aggregate(input),
|
|
671
672
|
histogram: async (input) => (await engine()).histogram(input),
|
|
672
673
|
isEmpty: async (input) => (await engine()).isEmpty(input),
|
|
673
674
|
declareCollection: async (input) => (await engine()).declareCollection(input)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as BaseAddon, Kt as parseJsonObject, b as StorageMigrationJobSchema, gt as settingsStoreCapability, vt as storageCapability, y as StorageLocationTypeSchema, yt as storageMigrationCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Kt as parseJsonObject, b as StorageMigrationJobSchema, gt as settingsStoreCapability, vt as storageCapability, y as StorageLocationTypeSchema, yt as storageMigrationCapability } from "../../dist-CG7kwIZp.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";
|
|
@@ -661,6 +661,7 @@ function createDataStoreDispatch(getEngines) {
|
|
|
661
661
|
deleteWhere: async (input) => (await engine()).deleteWhere(input),
|
|
662
662
|
updateWhere: async (input) => (await engine()).updateWhere(input),
|
|
663
663
|
count: async (input) => (await engine()).count(input),
|
|
664
|
+
aggregate: async (input) => (await engine()).aggregate(input),
|
|
664
665
|
histogram: async (input) => (await engine()).histogram(input),
|
|
665
666
|
isEmpty: async (input) => (await engine()).isEmpty(input),
|
|
666
667
|
declareCollection: async (input) => (await engine()).declareCollection(input)
|
|
@@ -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-BVU5JADq.js");
|
|
7
7
|
//#region src/builtins/system-config/system-config.addon.ts
|
|
8
8
|
/**
|
|
9
9
|
* Built-in `system-config` addon — Phase 4 of the settings redesign.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as BaseAddon, Tt as errMsg, Ut as hydrateSchema } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, Tt as errMsg, Ut as hydrateSchema } from "../../dist-CG7kwIZp.mjs";
|
|
2
2
|
//#region src/builtins/system-config/system-config.addon.ts
|
|
3
3
|
/**
|
|
4
4
|
* Built-in `system-config` addon — Phase 4 of the settings redesign.
|
|
@@ -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-BVU5JADq.js");
|
|
7
7
|
const require_formatter = require("../../formatter-DqAKDlvN.js");
|
|
8
8
|
let node_path = require("node:path");
|
|
9
9
|
node_path = require_chunk.__toESM(node_path);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-
|
|
1
|
+
import { Et as BaseAddon, nt as logDestinationCapability } from "../../dist-CG7kwIZp.mjs";
|
|
2
2
|
import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
|
|
3
3
|
import * as path$1 from "node:path";
|
|
4
4
|
import path from "node:path";
|