target-supabase-sdk 0.2.12 → 0.2.13
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/browser.d.ts +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -1
- package/dist/chunks/enable-DqnfLPsQ.js +874 -0
- package/dist/chunks/enable-DqnfLPsQ.js.map +1 -0
- package/dist/chunks/list.api-BzbTJBsM.js.map +1 -1
- package/dist/chunks/{task-queue-H4mpSW8R.js → task-queue-6X3aglJh.js} +108 -3
- package/dist/chunks/task-queue-6X3aglJh.js.map +1 -0
- package/dist/node/preload/run-service-preload.d.ts.map +1 -1
- package/dist/node/preload/service-preload.interface.d.ts +3 -1
- package/dist/node/preload/service-preload.interface.d.ts.map +1 -1
- package/dist/node/process/managed-child-processes.d.ts.map +1 -1
- package/dist/node/service-guard/service-guard-node.d.ts.map +1 -1
- package/dist/node/service-host/index.d.ts +1 -0
- package/dist/node/service-host/index.d.ts.map +1 -1
- package/dist/node/service-host/service-host.d.ts +5 -1
- package/dist/node/service-host/service-host.d.ts.map +1 -1
- package/dist/node.d.ts +10 -5
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +492 -47
- package/dist/node.js.map +1 -1
- package/dist/preload.js +9 -6
- package/dist/preload.js.map +1 -1
- package/dist/service/index.d.ts +2 -2
- package/dist/service/index.d.ts.map +1 -1
- package/dist/service/registry.service.d.ts +19 -0
- package/dist/service/registry.service.d.ts.map +1 -1
- package/dist/shared/log/core/create-logger.d.ts.map +1 -0
- package/dist/shared/log/{log-batch.d.ts → core/log-batch.d.ts} +4 -4
- package/dist/shared/log/core/log-batch.d.ts.map +1 -0
- package/dist/shared/log/core/log-manager.d.ts.map +1 -0
- package/dist/shared/log/core/log-min-level.d.ts.map +1 -0
- package/dist/shared/log/core/log-scope.d.ts.map +1 -0
- package/dist/shared/log/index.d.ts +13 -13
- package/dist/shared/log/index.d.ts.map +1 -1
- package/dist/shared/log/spool/collector.d.ts +21 -0
- package/dist/shared/log/spool/collector.d.ts.map +1 -0
- package/dist/shared/log/spool/config.d.ts +7 -0
- package/dist/shared/log/spool/config.d.ts.map +1 -0
- package/dist/shared/log/spool/coordinator.d.ts +18 -0
- package/dist/shared/log/spool/coordinator.d.ts.map +1 -0
- package/dist/shared/log/spool/enable.d.ts +23 -0
- package/dist/shared/log/spool/enable.d.ts.map +1 -0
- package/dist/shared/log/spool/file.d.ts +21 -0
- package/dist/shared/log/spool/file.d.ts.map +1 -0
- package/dist/shared/log/spool/interface.d.ts +55 -0
- package/dist/shared/log/spool/interface.d.ts.map +1 -0
- package/dist/shared/log/spool/paths.d.ts +6 -0
- package/dist/shared/log/spool/paths.d.ts.map +1 -0
- package/dist/shared/log/spool/process-roles.d.ts +17 -0
- package/dist/shared/log/spool/process-roles.d.ts.map +1 -0
- package/dist/shared/log/spool/register-collect-log-runner.d.ts +15 -0
- package/dist/shared/log/spool/register-collect-log-runner.d.ts.map +1 -0
- package/dist/shared/log/spool/service-lifecycle.d.ts +13 -0
- package/dist/shared/log/spool/service-lifecycle.d.ts.map +1 -0
- package/dist/shared/log/spool/writer.d.ts +32 -0
- package/dist/shared/log/spool/writer.d.ts.map +1 -0
- package/dist/shared/log/{log-persist-batch-id.d.ts → upload/batch-id.d.ts} +3 -3
- package/dist/shared/log/upload/batch-id.d.ts.map +1 -0
- package/dist/shared/log/upload/env.d.ts +7 -0
- package/dist/shared/log/upload/env.d.ts.map +1 -0
- package/dist/shared/log/{log-persist-flush.d.ts → upload/flush.d.ts} +3 -3
- package/dist/shared/log/upload/flush.d.ts.map +1 -0
- package/dist/shared/log/{log-persist-hook.d.ts → upload/hook.d.ts} +2 -2
- package/dist/shared/log/upload/hook.d.ts.map +1 -0
- package/dist/shared/log/upload/interface.d.ts +33 -0
- package/dist/shared/log/upload/interface.d.ts.map +1 -0
- package/dist/shared/log/upload/logger.d.ts +22 -0
- package/dist/shared/log/upload/logger.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/browser.ts +1 -0
- package/src/node/preload/run-service-preload.ts +11 -6
- package/src/node/preload/service-preload.interface.ts +3 -1
- package/src/node/process/create-managed-child-processes.ts +1 -1
- package/src/node/process/managed-child-processes.ts +8 -1
- package/src/node/service-guard/service-guard-node.ts +5 -0
- package/src/node/service-host/index.ts +4 -0
- package/src/node/service-host/service-host.ts +22 -3
- package/src/node.ts +26 -19
- package/src/service/index.ts +3 -0
- package/src/service/registry.service.ts +142 -0
- package/src/shared/log/README.md +206 -0
- package/src/shared/log/{log-batch.ts → core/log-batch.ts} +4 -4
- package/src/shared/log/{log-manager.ts → core/log-manager.ts} +3 -3
- package/src/shared/log/{log-min-level.ts → core/log-min-level.ts} +1 -1
- package/src/shared/log/{log-scope.ts → core/log-scope.ts} +1 -1
- package/src/shared/log/index.ts +13 -18
- package/src/shared/log/spool/collector.ts +330 -0
- package/src/shared/log/spool/config.ts +56 -0
- package/src/shared/log/spool/coordinator.ts +55 -0
- package/src/shared/log/spool/enable.ts +136 -0
- package/src/shared/log/spool/file.ts +75 -0
- package/src/shared/log/spool/interface.ts +62 -0
- package/src/shared/log/spool/paths.ts +30 -0
- package/src/shared/log/spool/process-roles.ts +75 -0
- package/src/shared/log/spool/register-collect-log-runner.ts +63 -0
- package/src/shared/log/spool/service-lifecycle.ts +35 -0
- package/src/shared/log/spool/writer.ts +273 -0
- package/src/shared/log/{log-persist-batch-id.ts → upload/batch-id.ts} +2 -2
- package/src/shared/log/upload/env.ts +26 -0
- package/src/shared/log/{log-persist-flush.ts → upload/flush.ts} +8 -7
- package/src/shared/log/{log-persist-hook.ts → upload/hook.ts} +1 -1
- package/src/shared/log/upload/interface.ts +38 -0
- package/src/shared/log/upload/logger.ts +37 -0
- package/dist/chunks/enable-log-persist-Dl55_mv2.js +0 -1674
- package/dist/chunks/enable-log-persist-Dl55_mv2.js.map +0 -1
- package/dist/chunks/task-queue-H4mpSW8R.js.map +0 -1
- package/dist/shared/log/create-logger.d.ts.map +0 -1
- package/dist/shared/log/enable-log-persist.d.ts +0 -28
- package/dist/shared/log/enable-log-persist.d.ts.map +0 -1
- package/dist/shared/log/log-batch.d.ts.map +0 -1
- package/dist/shared/log/log-manager.d.ts.map +0 -1
- package/dist/shared/log/log-min-level.d.ts.map +0 -1
- package/dist/shared/log/log-persist-batch-id.d.ts.map +0 -1
- package/dist/shared/log/log-persist-coordinator.d.ts +0 -37
- package/dist/shared/log/log-persist-coordinator.d.ts.map +0 -1
- package/dist/shared/log/log-persist-errors.d.ts +0 -4
- package/dist/shared/log/log-persist-errors.d.ts.map +0 -1
- package/dist/shared/log/log-persist-flush.d.ts.map +0 -1
- package/dist/shared/log/log-persist-hook.d.ts.map +0 -1
- package/dist/shared/log/log-persist-logger.d.ts +0 -16
- package/dist/shared/log/log-persist-logger.d.ts.map +0 -1
- package/dist/shared/log/log-persist-registry.d.ts +0 -18
- package/dist/shared/log/log-persist-registry.d.ts.map +0 -1
- package/dist/shared/log/log-persist.config.d.ts +0 -9
- package/dist/shared/log/log-persist.config.d.ts.map +0 -1
- package/dist/shared/log/log-persist.d.ts +0 -62
- package/dist/shared/log/log-persist.d.ts.map +0 -1
- package/dist/shared/log/log-persist.interface.d.ts +0 -132
- package/dist/shared/log/log-persist.interface.d.ts.map +0 -1
- package/dist/shared/log/log-scope.d.ts.map +0 -1
- package/src/shared/log/enable-log-persist.ts +0 -225
- package/src/shared/log/log-persist-coordinator.ts +0 -107
- package/src/shared/log/log-persist-errors.ts +0 -16
- package/src/shared/log/log-persist-logger.ts +0 -61
- package/src/shared/log/log-persist-registry.ts +0 -252
- package/src/shared/log/log-persist.config.ts +0 -115
- package/src/shared/log/log-persist.interface.ts +0 -150
- package/src/shared/log/log-persist.ts +0 -822
- /package/dist/shared/log/{create-logger.d.ts → core/create-logger.d.ts} +0 -0
- /package/dist/shared/log/{log-manager.d.ts → core/log-manager.d.ts} +0 -0
- /package/dist/shared/log/{log-min-level.d.ts → core/log-min-level.d.ts} +0 -0
- /package/dist/shared/log/{log-scope.d.ts → core/log-scope.d.ts} +0 -0
- /package/src/shared/log/{create-logger.ts → core/create-logger.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create-logger.d.ts","sourceRoot":"","sources":["../../../src/shared/log/create-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAc,MAAM,eAAe,CAAC;AAChF,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7E,KAAK,uBAAuB,GAAG;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,GAAG,uBAAuB,CAAC;AAE5B,qDAAqD;AACrD,MAAM,MAAM,0BAA0B,GAAG;IACrC,KAAK,EAAE,QAAQ,CAAC;CACnB,GAAG,uBAAuB,CAAC;AAE5B,MAAM,MAAM,iBAAiB,GAAG,2BAA2B,GAAG,0BAA0B,CAAC;AAMzF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,eAAe,CAetE;AAED,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { logPersistEnabledFromEnv } from "./log-persist.config";
|
|
2
|
-
import type { EnableLogPersistOptions, EnsureLogPersistFromEnvOptions, LogPersistReadySnapshot, LogPersistStats, WaitForLogPersistReadyOptions } from "./log-persist.interface";
|
|
3
|
-
export { logPersistEnabledFromEnv };
|
|
4
|
-
export declare function enableLogPersist(options: EnableLogPersistOptions): Promise<void>;
|
|
5
|
-
export declare function disableLogPersist(): Promise<void>;
|
|
6
|
-
export declare function getLogPersistStats(): LogPersistStats;
|
|
7
|
-
/**
|
|
8
|
-
* Enable log persistence when LOG_PERSIST_ENABLED=true.
|
|
9
|
-
* `process` / `service` can be passed explicitly or via LOG_PERSIST_PROCESS / LOG_PERSIST_SERVICE.
|
|
10
|
-
*/
|
|
11
|
-
export declare function ensureLogPersistFromEnv(options?: EnsureLogPersistFromEnvOptions): Promise<boolean>;
|
|
12
|
-
/**
|
|
13
|
-
* Preload guard: when persistence is enabled, required env must be present before app code runs.
|
|
14
|
-
*/
|
|
15
|
-
export declare function validateLogPersistPreloadEnv(env?: NodeJS.ProcessEnv): void;
|
|
16
|
-
/**
|
|
17
|
-
* Wait until every expected process has registered in the shared registry with a fresh heartbeat.
|
|
18
|
-
* Call from the service main process after spawning children.
|
|
19
|
-
*/
|
|
20
|
-
export declare function waitForLogPersistReady(options: WaitForLogPersistReadyOptions): Promise<LogPersistReadySnapshot>;
|
|
21
|
-
export declare function snapshotLogPersistReady(options: {
|
|
22
|
-
registryFilePath: string;
|
|
23
|
-
service: string;
|
|
24
|
-
expectedProcesses: string[];
|
|
25
|
-
staleMs?: number;
|
|
26
|
-
}): Promise<LogPersistReadySnapshot>;
|
|
27
|
-
export declare function resolveLogPersistRegistryPath(registryDir?: string): string;
|
|
28
|
-
//# sourceMappingURL=enable-log-persist.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enable-log-persist.d.ts","sourceRoot":"","sources":["../../../src/shared/log/enable-log-persist.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,wBAAwB,EAK3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACR,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACvB,eAAe,EACf,6BAA6B,EAChC,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAepC,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBtF;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,GAAE,8BAAmC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkC5G;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAiBvF;AAoCD;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAwCrH;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAGnC;AAED,wBAAgB,6BAA6B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-batch.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-batch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAA0B,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzG,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC5B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAa,SAAQ,QAAQ;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;CACnB;AAcD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkCvE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAW5D;AAED,yDAAyD;AACzD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,GAAG,IAAI,CAkBjE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,eAAe,EAAE,CAS5E;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,EAAE,CAStE;AAED,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,YAAY,EAAE,CAMrF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-manager.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-min-level.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-min-level.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAWrD,MAAM,WAAW,yBAAyB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,gHAAgH;IAChH,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,QAAQ,CAYhF;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,QAAQ,CAEhF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-batch-id.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-batch-id.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAoB9D;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,QAAQ,EAAE,CAAC;CACvB,GAAG,MAAM,CAWT"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import type { LogPersistReadySnapshot, LogPersistStats } from "./log-persist.interface";
|
|
2
|
-
export interface LogPersistCoordinatorOptions {
|
|
3
|
-
/** Service identity written into each registry shard (e.g. `log-service`). */
|
|
4
|
-
service: string;
|
|
5
|
-
/** Directory holding one JSON shard per process (`main.json`, `guard.json`, …). */
|
|
6
|
-
registryFilePath: string;
|
|
7
|
-
/** Process labels main waits for before accepting traffic (must match `LOG_PERSIST_PROCESS` per child). */
|
|
8
|
-
expectedProcesses: readonly string[];
|
|
9
|
-
/** Max wait for {@link LogPersistCoordinator.waitForAllProcessesReady} (default 60_000 ms). */
|
|
10
|
-
readyTimeoutMs?: number;
|
|
11
|
-
}
|
|
12
|
-
/** Service-bound facade over env-driven log-persist registration and readiness gates. */
|
|
13
|
-
export interface LogPersistCoordinator {
|
|
14
|
-
/** Whether `LOG_PERSIST_ENABLED` is active in this process. */
|
|
15
|
-
isEnabled(): boolean;
|
|
16
|
-
/** Absolute path to the multi-process registry directory configured at construction. */
|
|
17
|
-
getRegistryFilePath(): string;
|
|
18
|
-
/**
|
|
19
|
-
* Enable log-persist for this process and write/update its registry shard.
|
|
20
|
-
* @param process Optional label; defaults to `LOG_PERSIST_PROCESS` env.
|
|
21
|
-
*/
|
|
22
|
-
registerProcess(process?: string): Promise<boolean>;
|
|
23
|
-
/** Block until every {@link LogPersistCoordinatorOptions.expectedProcesses} entry is registered and fresh. */
|
|
24
|
-
waitForAllProcessesReady(): Promise<LogPersistReadySnapshot>;
|
|
25
|
-
/** Immediate readiness snapshot without blocking; `null` when log-persist is disabled. */
|
|
26
|
-
snapshotProcessesReady(): Promise<LogPersistReadySnapshot | null>;
|
|
27
|
-
/** Flush-queue stats for observability; `null` when log-persist is disabled. */
|
|
28
|
-
getPersistStats(): LogPersistStats | null;
|
|
29
|
-
/** Flush pending logs and tear down log-persist (call from process shutdown hooks). */
|
|
30
|
-
shutdownLogPersist(): Promise<void>;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Bind service-specific log-persist registry settings (process list, paths, timeouts).
|
|
34
|
-
* Each L3 service exports one instance from `src/startup/log-persist.ts`.
|
|
35
|
-
*/
|
|
36
|
-
export declare function createLogPersistCoordinator(options: LogPersistCoordinatorOptions): LogPersistCoordinator;
|
|
37
|
-
//# sourceMappingURL=log-persist-coordinator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-coordinator.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-coordinator.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAExF,MAAM,WAAW,4BAA4B;IACzC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,gBAAgB,EAAE,MAAM,CAAC;IACzB,2GAA2G;IAC3G,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,yFAAyF;AACzF,MAAM,WAAW,qBAAqB;IAClC,+DAA+D;IAC/D,SAAS,IAAI,OAAO,CAAC;IAErB,wFAAwF;IACxF,mBAAmB,IAAI,MAAM,CAAC;IAE9B;;;OAGG;IACH,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,8GAA8G;IAC9G,wBAAwB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAE7D,0FAA0F;IAC1F,sBAAsB,IAAI,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IAElE,gFAAgF;IAChF,eAAe,IAAI,eAAe,GAAG,IAAI,CAAC;IAE1C,uFAAuF;IACvF,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,4BAA4B,GAAG,qBAAqB,CAsDxG"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export declare function formatLogPersistError(error: unknown): string;
|
|
2
|
-
/** Errors that will not succeed on retry without fixing process configuration. */
|
|
3
|
-
export declare function isPermanentLogPersistError(error: unknown): boolean;
|
|
4
|
-
//# sourceMappingURL=log-persist-errors.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-errors.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-errors.ts"],"names":[],"mappings":"AAOA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,kFAAkF;AAClF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGlE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-flush.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-flush.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAIpF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAShE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CA4B7E;AAoBD,wBAAsB,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5F;AAED,0DAA0D;AAC1D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAyBxF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-hook.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-hook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;AAInD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAE1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEvD"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/** User-facing / lifecycle logs — may be persisted like normal app logs. */
|
|
2
|
-
export declare const LOG_PERSIST_TOPIC = "log-persist";
|
|
3
|
-
/** Operational logs from the persist pipeline — never re-offered to avoid feedback loops. */
|
|
4
|
-
export declare const LOG_PERSIST_INTERNAL_TOPIC = "log-persist-internal";
|
|
5
|
-
export declare function configurePersistLoggerRateLimit(ms: number): void;
|
|
6
|
-
export declare function isLogPersistInternalTopic(topic: string | undefined): boolean;
|
|
7
|
-
type PersistLogData = Record<string, unknown>;
|
|
8
|
-
export declare const persistLogger: {
|
|
9
|
-
debug: (message: string, data?: PersistLogData) => void;
|
|
10
|
-
info: (message: string, data?: PersistLogData) => void;
|
|
11
|
-
warn: (message: string, data?: PersistLogData) => void;
|
|
12
|
-
error: (message: string, data?: PersistLogData) => void;
|
|
13
|
-
};
|
|
14
|
-
export declare function patchPersistLoggerScope(labels: Record<string, string>): void;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=log-persist-logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-logger.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-logger.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,6FAA6F;AAC7F,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAOjE,wBAAgB,+BAA+B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEhE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE5E;AAED,KAAK,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA8B9C,eAAO,MAAM,aAAa;qBACL,MAAM,SAAS,cAAc;oBAC9B,MAAM,SAAS,cAAc;oBAC7B,MAAM,SAAS,cAAc;qBAC5B,MAAM,SAAS,cAAc;CACjD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAE5E"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { LogPersistRegistryState } from "./log-persist.interface";
|
|
2
|
-
/** Registry root directory — one shard file per process under this path. */
|
|
3
|
-
export declare function defaultLogPersistRegistryPath(registryDir: string): string;
|
|
4
|
-
export declare function registerLogPersistProcess(input: {
|
|
5
|
-
registryFilePath: string;
|
|
6
|
-
service: string;
|
|
7
|
-
process: string;
|
|
8
|
-
}): Promise<void>;
|
|
9
|
-
export declare function heartbeatLogPersistProcess(input: {
|
|
10
|
-
registryFilePath: string;
|
|
11
|
-
process: string;
|
|
12
|
-
}): Promise<void>;
|
|
13
|
-
export declare function unregisterLogPersistProcess(input: {
|
|
14
|
-
registryFilePath: string;
|
|
15
|
-
process: string;
|
|
16
|
-
}): Promise<void>;
|
|
17
|
-
export declare function readLogPersistRegistry(registryFilePath: string): Promise<LogPersistRegistryState>;
|
|
18
|
-
//# sourceMappingURL=log-persist-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist-registry.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAiEhG,4EAA4E;AAC5E,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzE;AAmDD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACnD,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoCpH;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDrH;AAED,wBAAsB,sBAAsB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAKvG"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LogPersistConfig } from "./log-persist.interface";
|
|
2
|
-
export declare const DEFAULT_LOG_PERSIST_CONFIG: LogPersistConfig;
|
|
3
|
-
export declare function resolveLogPersistConfig(partial?: Partial<LogPersistConfig>): LogPersistConfig;
|
|
4
|
-
export declare function logPersistEnabledFromEnv(env?: NodeJS.ProcessEnv): boolean;
|
|
5
|
-
export declare function logPersistServiceFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
|
|
6
|
-
export declare function logPersistProcessFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
|
|
7
|
-
export declare function logPersistRegistryDirFromEnv(env?: NodeJS.ProcessEnv): string | undefined;
|
|
8
|
-
export declare function logPersistConfigFromEnv(env?: NodeJS.ProcessEnv): LogPersistConfig;
|
|
9
|
-
//# sourceMappingURL=log-persist.config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist.config.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist.config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,eAAO,MAAM,0BAA0B,EAAE,gBAqBxC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAa7F;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEtF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAGjG;AAED,wBAAgB,wBAAwB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAGjG;AAED,wBAAgB,4BAA4B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAOrG;AAED,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,gBAAgB,CAkD9F"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { type LogEntry } from "./log-manager";
|
|
2
|
-
import type { EnableLogPersistOptions, LogPersistStats } from "./log-persist.interface";
|
|
3
|
-
declare class LogPersist {
|
|
4
|
-
private static instance;
|
|
5
|
-
private enabled;
|
|
6
|
-
private draining;
|
|
7
|
-
private service;
|
|
8
|
-
private processName;
|
|
9
|
-
private registryFilePath;
|
|
10
|
-
private config;
|
|
11
|
-
private fastQueue;
|
|
12
|
-
private fastRetryQueue;
|
|
13
|
-
private mediumQueue;
|
|
14
|
-
private slowQueue;
|
|
15
|
-
private mediumDebounceTimer;
|
|
16
|
-
private slowQueueStartedAt;
|
|
17
|
-
private fastRetryTimer;
|
|
18
|
-
private mediumRetryTimer;
|
|
19
|
-
private slowRetryTimer;
|
|
20
|
-
private heartbeatTimer;
|
|
21
|
-
private lastHeartbeatAt;
|
|
22
|
-
private permanentFailureCount;
|
|
23
|
-
private circuitBreakerTripped;
|
|
24
|
-
private laneFlushing;
|
|
25
|
-
private consecutiveFailures;
|
|
26
|
-
private lastFlushAt;
|
|
27
|
-
private lastError;
|
|
28
|
-
private lastErrorAt;
|
|
29
|
-
private shutdownHookInstalled;
|
|
30
|
-
private shutdownPromise;
|
|
31
|
-
static getInstance(): LogPersist;
|
|
32
|
-
enable(options: EnableLogPersistOptions): Promise<void>;
|
|
33
|
-
disable(): Promise<void>;
|
|
34
|
-
offer(entry: LogEntry): void;
|
|
35
|
-
getStats(): LogPersistStats;
|
|
36
|
-
shutdown(): Promise<void>;
|
|
37
|
-
private shutdownInner;
|
|
38
|
-
private hasQueued;
|
|
39
|
-
private drainQueues;
|
|
40
|
-
private recordLaneError;
|
|
41
|
-
private recordLaneSuccess;
|
|
42
|
-
private handleLaneFlushFailure;
|
|
43
|
-
private tripCircuitBreaker;
|
|
44
|
-
private cancelLaneRetryTimers;
|
|
45
|
-
private scheduleLaneRetry;
|
|
46
|
-
private queueSnapshot;
|
|
47
|
-
private installShutdownHook;
|
|
48
|
-
private startHeartbeat;
|
|
49
|
-
private stopHeartbeat;
|
|
50
|
-
private touchRegistryHeartbeat;
|
|
51
|
-
private scheduleMediumFlush;
|
|
52
|
-
private cancelMediumDebounce;
|
|
53
|
-
private scheduleSlowFlush;
|
|
54
|
-
private evictFastOverflow;
|
|
55
|
-
private evictMediumOverflow;
|
|
56
|
-
private evictSlowOverflow;
|
|
57
|
-
private flushFast;
|
|
58
|
-
private flushMedium;
|
|
59
|
-
private flushSlow;
|
|
60
|
-
}
|
|
61
|
-
export { LogPersist };
|
|
62
|
-
//# sourceMappingURL=log-persist.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAY,MAAM,eAAe,CAAC;AAExD,OAAO,KAAK,EACR,uBAAuB,EAGvB,eAAe,EAClB,MAAM,yBAAyB,CAAC;AAyBjC,cAAM,UAAU;IACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAElD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,MAAM,CAAgD;IAE9D,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,SAAS,CAAkB;IAEnC,OAAO,CAAC,mBAAmB,CAA8C;IACzE,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,qBAAqB,CAAS;IAEtC,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,eAAe,CAA8B;IAErD,MAAM,CAAC,WAAW,IAAI,UAAU;IAK1B,MAAM,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDvD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAmC5B,QAAQ,IAAI,eAAe;IA8BrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YASjB,aAAa;IAqC3B,OAAO,CAAC,SAAS;YASH,WAAW;IASzB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,aAAa;YAOP,sBAAsB;IAepC,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,iBAAiB;YA0BX,SAAS;YAoET,WAAW;YA6EX,SAAS;CAgF1B;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import type { TargetDraft } from "../../core.interface";
|
|
2
|
-
import type { List } from "../../list/list.interface";
|
|
3
|
-
import type { LogEntry } from "./log-manager";
|
|
4
|
-
/**
|
|
5
|
-
* `ListDetails.loaderKey` stamped on every persisted log batch (write + read side).
|
|
6
|
-
* Business type: **LogBatch** (transport flush). Pairs with log-service **LogTrace**
|
|
7
|
-
* (`LogTrace.0`) after rekeying by `traceId`.
|
|
8
|
-
*/
|
|
9
|
-
export declare const LOG_PERSIST_LOADER_KEY = "LogBatch.0";
|
|
10
|
-
/** Alias for {@link LOG_PERSIST_LOADER_KEY} — preferred when contrasting with LogTrace. */
|
|
11
|
-
export declare const LOG_BATCH_LOADER_KEY = "LogBatch.0";
|
|
12
|
-
/** Persistence lane — maps to List tagList and flush policy. */
|
|
13
|
-
export type LogPersistLane = "fast" | "medium" | "slow";
|
|
14
|
-
export interface LogPersistFastConfig {
|
|
15
|
-
maxBufferEntries: number;
|
|
16
|
-
}
|
|
17
|
-
export interface LogPersistMediumConfig {
|
|
18
|
-
debounceMs: number;
|
|
19
|
-
maxEntries: number;
|
|
20
|
-
maxBytes: number;
|
|
21
|
-
maxBufferEntries: number;
|
|
22
|
-
}
|
|
23
|
-
export interface LogPersistSlowConfig {
|
|
24
|
-
maxEntries: number;
|
|
25
|
-
maxBytes: number;
|
|
26
|
-
maxAgeMs: number;
|
|
27
|
-
maxBufferEntries: number;
|
|
28
|
-
}
|
|
29
|
-
export interface LogPersistConfig {
|
|
30
|
-
fast: LogPersistFastConfig;
|
|
31
|
-
medium: LogPersistMediumConfig;
|
|
32
|
-
slow: LogPersistSlowConfig;
|
|
33
|
-
/** postListCreate / network ceiling per batch */
|
|
34
|
-
postTimeoutMs: number;
|
|
35
|
-
/** Graceful shutdown drain ceiling */
|
|
36
|
-
shutdownDrainTimeoutMs: number;
|
|
37
|
-
/** Delay before medium/slow lane flush retries after failure (fast lane uses the same interval). */
|
|
38
|
-
laneRetryIntervalMs: number;
|
|
39
|
-
/** Suppress duplicate persistLogger warn/error lines with the same message within this window. */
|
|
40
|
-
errorLogRateLimitMs: number;
|
|
41
|
-
/** Disable log-persist after this many consecutive permanent flush errors. */
|
|
42
|
-
circuitBreakerPermanentFailureThreshold: number;
|
|
43
|
-
}
|
|
44
|
-
export interface EnableLogPersistOptions {
|
|
45
|
-
service: string;
|
|
46
|
-
process: string;
|
|
47
|
-
/** Shared registry root directory — all processes use the same path; each writes its own shard file. */
|
|
48
|
-
registryFilePath?: string;
|
|
49
|
-
config?: Partial<LogPersistConfig>;
|
|
50
|
-
}
|
|
51
|
-
export interface EnsureLogPersistFromEnvOptions {
|
|
52
|
-
/** Overrides LOG_PERSIST_PROCESS when set. */
|
|
53
|
-
process?: string;
|
|
54
|
-
/** Overrides LOG_PERSIST_SERVICE when set. */
|
|
55
|
-
service?: string;
|
|
56
|
-
registryFilePath?: string;
|
|
57
|
-
config?: Partial<LogPersistConfig>;
|
|
58
|
-
}
|
|
59
|
-
export interface LogPersistProcessRecord {
|
|
60
|
-
pid: number;
|
|
61
|
-
enabledAt: string;
|
|
62
|
-
lastHeartbeatAt: string;
|
|
63
|
-
}
|
|
64
|
-
export interface LogPersistRegistryState {
|
|
65
|
-
updatedAt: string;
|
|
66
|
-
service: string;
|
|
67
|
-
processes: Record<string, LogPersistProcessRecord>;
|
|
68
|
-
}
|
|
69
|
-
export interface LogPersistQueueStats {
|
|
70
|
-
fast: number;
|
|
71
|
-
fastRetry: number;
|
|
72
|
-
medium: number;
|
|
73
|
-
slow: number;
|
|
74
|
-
}
|
|
75
|
-
export interface LogPersistQueueBytesStats {
|
|
76
|
-
fast: number;
|
|
77
|
-
fastRetry: number;
|
|
78
|
-
medium: number;
|
|
79
|
-
slow: number;
|
|
80
|
-
}
|
|
81
|
-
export interface LogPersistStats {
|
|
82
|
-
enabled: boolean;
|
|
83
|
-
draining: boolean;
|
|
84
|
-
circuitBreakerTripped: boolean;
|
|
85
|
-
permanentFailureCount: number;
|
|
86
|
-
service: string | null;
|
|
87
|
-
process: string | null;
|
|
88
|
-
queues: LogPersistQueueStats;
|
|
89
|
-
queueBytes: LogPersistQueueBytesStats;
|
|
90
|
-
mediumDebouncePending: boolean;
|
|
91
|
-
laneFlushing: Record<LogPersistLane, boolean>;
|
|
92
|
-
consecutiveFailures: Record<LogPersistLane, number>;
|
|
93
|
-
config: LogPersistConfig;
|
|
94
|
-
lastFlushAt: Record<LogPersistLane, string | null>;
|
|
95
|
-
lastError: string | null;
|
|
96
|
-
lastErrorAt: string | null;
|
|
97
|
-
}
|
|
98
|
-
export interface WaitForLogPersistReadyOptions {
|
|
99
|
-
registryFilePath: string;
|
|
100
|
-
service: string;
|
|
101
|
-
expectedProcesses: string[];
|
|
102
|
-
timeoutMs?: number;
|
|
103
|
-
pollIntervalMs?: number;
|
|
104
|
-
/** Process heartbeat older than this is treated as missing. */
|
|
105
|
-
staleMs?: number;
|
|
106
|
-
}
|
|
107
|
-
export interface LogPersistReadySnapshot {
|
|
108
|
-
ok: boolean;
|
|
109
|
-
missing: string[];
|
|
110
|
-
stale: string[];
|
|
111
|
-
registered: string[];
|
|
112
|
-
}
|
|
113
|
-
export interface LogBatchMeta {
|
|
114
|
-
service: string;
|
|
115
|
-
process: string;
|
|
116
|
-
pid: number;
|
|
117
|
-
lane: LogPersistLane;
|
|
118
|
-
count: number;
|
|
119
|
-
from: number | null;
|
|
120
|
-
to: number | null;
|
|
121
|
-
flushedAt: number;
|
|
122
|
-
idempotencyKey: string;
|
|
123
|
-
}
|
|
124
|
-
export interface BuildLogListDraftInput {
|
|
125
|
-
service: string;
|
|
126
|
-
process: string;
|
|
127
|
-
lane: LogPersistLane;
|
|
128
|
-
idempotencyKey: string;
|
|
129
|
-
entries: LogEntry[];
|
|
130
|
-
}
|
|
131
|
-
export type LogListDraft = TargetDraft<List>;
|
|
132
|
-
//# sourceMappingURL=log-persist.interface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-persist.interface.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-persist.interface.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"log-scope.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-scope.ts"],"names":[],"mappings":"AAEA,kEAAkE;AAClE,MAAM,WAAW,QAAQ;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7C;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,GAAG;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,wFAAwF;AACxF,MAAM,MAAM,qBAAqB,GAAG;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAErE,UAAU,qBAAqB;IAC3B,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,oCAAoC;AACpC,MAAM,MAAM,eAAe,GAAG;IAC1B,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAUF,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,QAAQ,CAa9F;AAED,qCAAqC;AACrC,MAAM,MAAM,gBAAgB,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,QAAQ,CAQ7D;AAED,uEAAuE;AACvE,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,QAAQ,CAY3D;AAED,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAEpE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,MAAM,CAOnF;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,GAAG,SAAS,CAQhG"}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
import { resolve } from "node:path";
|
|
2
|
-
import { envBool } from "../../node/env/env-parsers";
|
|
3
|
-
import { readEnv, requireEnv } from "../../node/env/require-env";
|
|
4
|
-
import { pollUntil } from "../../node/readiness";
|
|
5
|
-
import { createLogger } from "./create-logger";
|
|
6
|
-
import { LogPersist } from "./log-persist";
|
|
7
|
-
import {
|
|
8
|
-
logPersistConfigFromEnv,
|
|
9
|
-
logPersistEnabledFromEnv,
|
|
10
|
-
logPersistProcessFromEnv,
|
|
11
|
-
logPersistRegistryDirFromEnv,
|
|
12
|
-
logPersistServiceFromEnv,
|
|
13
|
-
resolveLogPersistConfig,
|
|
14
|
-
} from "./log-persist.config";
|
|
15
|
-
import type {
|
|
16
|
-
EnableLogPersistOptions,
|
|
17
|
-
EnsureLogPersistFromEnvOptions,
|
|
18
|
-
LogPersistReadySnapshot,
|
|
19
|
-
LogPersistStats,
|
|
20
|
-
WaitForLogPersistReadyOptions,
|
|
21
|
-
} from "./log-persist.interface";
|
|
22
|
-
import { registerLogPersistOffer } from "./log-persist-hook";
|
|
23
|
-
import { LOG_PERSIST_TOPIC, persistLogger } from "./log-persist-logger";
|
|
24
|
-
import { defaultLogPersistRegistryPath, readLogPersistRegistry } from "./log-persist-registry";
|
|
25
|
-
|
|
26
|
-
export { logPersistEnabledFromEnv };
|
|
27
|
-
|
|
28
|
-
function resolveRegistryFilePath(explicit?: string): string {
|
|
29
|
-
if (explicit != null && explicit.trim() !== "") {
|
|
30
|
-
return resolve(explicit);
|
|
31
|
-
}
|
|
32
|
-
const dir = logPersistRegistryDirFromEnv();
|
|
33
|
-
if (dir == null) {
|
|
34
|
-
throw new Error(
|
|
35
|
-
"[LogPersist] registry path required: set registryFilePath option or LOG_PERSIST_REGISTRY_DIR / RUNTIME_DATA_DIR",
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
return defaultLogPersistRegistryPath(resolve(dir));
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export async function enableLogPersist(options: EnableLogPersistOptions): Promise<void> {
|
|
42
|
-
const registryFilePath = options.registryFilePath != null ? resolve(options.registryFilePath) : undefined;
|
|
43
|
-
const resolvedRegistry = registryFilePath ?? resolveRegistryFilePath();
|
|
44
|
-
|
|
45
|
-
const envConfig = logPersistConfigFromEnv();
|
|
46
|
-
await LogPersist.getInstance().enable({
|
|
47
|
-
...options,
|
|
48
|
-
registryFilePath: resolvedRegistry,
|
|
49
|
-
config: resolveLogPersistConfig({
|
|
50
|
-
fast: { ...envConfig.fast, ...options.config?.fast },
|
|
51
|
-
medium: { ...envConfig.medium, ...options.config?.medium },
|
|
52
|
-
slow: { ...envConfig.slow, ...options.config?.slow },
|
|
53
|
-
postTimeoutMs: options.config?.postTimeoutMs ?? envConfig.postTimeoutMs,
|
|
54
|
-
shutdownDrainTimeoutMs: options.config?.shutdownDrainTimeoutMs ?? envConfig.shutdownDrainTimeoutMs,
|
|
55
|
-
}),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export async function disableLogPersist(): Promise<void> {
|
|
60
|
-
await LogPersist.getInstance().disable();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export function getLogPersistStats(): LogPersistStats {
|
|
64
|
-
return LogPersist.getInstance().getStats();
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Enable log persistence when LOG_PERSIST_ENABLED=true.
|
|
69
|
-
* `process` / `service` can be passed explicitly or via LOG_PERSIST_PROCESS / LOG_PERSIST_SERVICE.
|
|
70
|
-
*/
|
|
71
|
-
export async function ensureLogPersistFromEnv(options: EnsureLogPersistFromEnvOptions = {}): Promise<boolean> {
|
|
72
|
-
if (!logPersistEnabledFromEnv()) {
|
|
73
|
-
registerLogPersistOffer(null);
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const service = options.service ?? logPersistServiceFromEnv();
|
|
78
|
-
const processName = options.process ?? logPersistProcessFromEnv();
|
|
79
|
-
if (service == null || service === "") {
|
|
80
|
-
throw new Error("[LogPersist] LOG_PERSIST_SERVICE is required when LOG_PERSIST_ENABLED=true");
|
|
81
|
-
}
|
|
82
|
-
if (processName == null || processName === "") {
|
|
83
|
-
throw new Error(
|
|
84
|
-
"[LogPersist] LOG_PERSIST_PROCESS is required when LOG_PERSIST_ENABLED=true (or pass process option)",
|
|
85
|
-
);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const registryFilePath =
|
|
89
|
-
options.registryFilePath != null ? resolve(options.registryFilePath) : resolveRegistryFilePath();
|
|
90
|
-
|
|
91
|
-
await enableLogPersist({
|
|
92
|
-
service,
|
|
93
|
-
process: processName,
|
|
94
|
-
registryFilePath,
|
|
95
|
-
config: options.config,
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
const lifecycleLogger = createLogger({ module: "log-persist" });
|
|
99
|
-
lifecycleLogger.info("log persist enabled from env", {
|
|
100
|
-
topic: LOG_PERSIST_TOPIC,
|
|
101
|
-
data: { service, process: processName, registryFilePath },
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* Preload guard: when persistence is enabled, required env must be present before app code runs.
|
|
109
|
-
*/
|
|
110
|
-
export function validateLogPersistPreloadEnv(env: NodeJS.ProcessEnv = process.env): void {
|
|
111
|
-
if (!envBool("LOG_PERSIST_ENABLED", false, env)) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const missing: string[] = [];
|
|
116
|
-
if (readEnv("LOG_PERSIST_SERVICE", env) == null) {
|
|
117
|
-
missing.push("LOG_PERSIST_SERVICE");
|
|
118
|
-
}
|
|
119
|
-
const registryDir = logPersistRegistryDirFromEnv(env);
|
|
120
|
-
if (registryDir == null) {
|
|
121
|
-
missing.push("LOG_PERSIST_REGISTRY_DIR or RUNTIME_DATA_DIR");
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (missing.length > 0) {
|
|
125
|
-
throw new Error(`[LogPersist] preload env incomplete: ${missing.join(", ")}`);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function evaluateLogPersistReady(
|
|
130
|
-
state: Awaited<ReturnType<typeof readLogPersistRegistry>>,
|
|
131
|
-
expectedProcesses: string[],
|
|
132
|
-
staleMs: number,
|
|
133
|
-
now: number,
|
|
134
|
-
): LogPersistReadySnapshot {
|
|
135
|
-
const missing: string[] = [];
|
|
136
|
-
const stale: string[] = [];
|
|
137
|
-
const registered: string[] = [];
|
|
138
|
-
|
|
139
|
-
for (const processName of expectedProcesses) {
|
|
140
|
-
const record = state.processes[processName];
|
|
141
|
-
if (record == null) {
|
|
142
|
-
missing.push(processName);
|
|
143
|
-
continue;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
const heartbeatAt = Date.parse(record.lastHeartbeatAt);
|
|
147
|
-
if (!Number.isFinite(heartbeatAt) || now - heartbeatAt > staleMs) {
|
|
148
|
-
stale.push(processName);
|
|
149
|
-
continue;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
registered.push(processName);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return {
|
|
156
|
-
ok: missing.length === 0 && stale.length === 0,
|
|
157
|
-
missing,
|
|
158
|
-
stale,
|
|
159
|
-
registered,
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Wait until every expected process has registered in the shared registry with a fresh heartbeat.
|
|
165
|
-
* Call from the service main process after spawning children.
|
|
166
|
-
*/
|
|
167
|
-
export async function waitForLogPersistReady(options: WaitForLogPersistReadyOptions): Promise<LogPersistReadySnapshot> {
|
|
168
|
-
const timeoutMs = options.timeoutMs ?? 60_000;
|
|
169
|
-
const pollIntervalMs = options.pollIntervalMs ?? 500;
|
|
170
|
-
const staleMs = options.staleMs ?? 90_000;
|
|
171
|
-
|
|
172
|
-
let last: LogPersistReadySnapshot = {
|
|
173
|
-
ok: false,
|
|
174
|
-
missing: [...options.expectedProcesses],
|
|
175
|
-
stale: [],
|
|
176
|
-
registered: [],
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
try {
|
|
180
|
-
await pollUntil({
|
|
181
|
-
intervalMs: pollIntervalMs,
|
|
182
|
-
timeoutMs,
|
|
183
|
-
until: async () => {
|
|
184
|
-
const state = await readLogPersistRegistry(options.registryFilePath);
|
|
185
|
-
if (state.service !== options.service) {
|
|
186
|
-
last = {
|
|
187
|
-
ok: false,
|
|
188
|
-
missing: options.expectedProcesses,
|
|
189
|
-
stale: [],
|
|
190
|
-
registered: [],
|
|
191
|
-
};
|
|
192
|
-
return false;
|
|
193
|
-
}
|
|
194
|
-
last = evaluateLogPersistReady(state, options.expectedProcesses, staleMs, Date.now());
|
|
195
|
-
return last.ok;
|
|
196
|
-
},
|
|
197
|
-
});
|
|
198
|
-
} catch {
|
|
199
|
-
persistLogger.warn("waitForLogPersistReady timed out", {
|
|
200
|
-
timeoutMs,
|
|
201
|
-
expectedProcesses: options.expectedProcesses,
|
|
202
|
-
...last,
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return last;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
export async function snapshotLogPersistReady(options: {
|
|
210
|
-
registryFilePath: string;
|
|
211
|
-
service: string;
|
|
212
|
-
expectedProcesses: string[];
|
|
213
|
-
staleMs?: number;
|
|
214
|
-
}): Promise<LogPersistReadySnapshot> {
|
|
215
|
-
const state = await readLogPersistRegistry(options.registryFilePath);
|
|
216
|
-
return evaluateLogPersistReady(state, options.expectedProcesses, options.staleMs ?? 90_000, Date.now());
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
export function resolveLogPersistRegistryPath(registryDir?: string): string {
|
|
220
|
-
const dir = registryDir ?? logPersistRegistryDirFromEnv();
|
|
221
|
-
if (dir == null) {
|
|
222
|
-
requireEnv("LOG_PERSIST_REGISTRY_DIR");
|
|
223
|
-
}
|
|
224
|
-
return defaultLogPersistRegistryPath(resolve(dir ?? ""));
|
|
225
|
-
}
|