@relkit/observability-local 0.0.0-stage → 0.1.0
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/LICENSE +21 -0
- package/README.md +4 -2
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/local/duckdb-batch-cursors.d.ts +10 -0
- package/dist/local/duckdb-batch-cursors.d.ts.map +1 -0
- package/dist/local/duckdb-batch-cursors.js +30 -0
- package/dist/local/duckdb-batch-cursors.js.map +1 -0
- package/dist/local/duckdb-batch-insert.d.ts +8 -0
- package/dist/local/duckdb-batch-insert.d.ts.map +1 -0
- package/dist/local/duckdb-batch-insert.js +29 -0
- package/dist/local/duckdb-batch-insert.js.map +1 -0
- package/dist/local/duckdb-batch-prepare.d.ts +7 -0
- package/dist/local/duckdb-batch-prepare.d.ts.map +1 -0
- package/dist/local/duckdb-batch-prepare.js +29 -0
- package/dist/local/duckdb-batch-prepare.js.map +1 -0
- package/dist/local/duckdb-batch-receipts.d.ts +7 -0
- package/dist/local/duckdb-batch-receipts.d.ts.map +1 -0
- package/dist/local/duckdb-batch-receipts.js +24 -0
- package/dist/local/duckdb-batch-receipts.js.map +1 -0
- package/dist/local/duckdb-batch.d.ts +8 -0
- package/dist/local/duckdb-batch.d.ts.map +1 -0
- package/dist/local/duckdb-batch.js +19 -0
- package/dist/local/duckdb-batch.js.map +1 -0
- package/dist/local/duckdb-batch.types.d.ts +19 -0
- package/dist/local/duckdb-batch.types.d.ts.map +1 -0
- package/dist/local/duckdb-batch.types.js +2 -0
- package/dist/local/duckdb-batch.types.js.map +1 -0
- package/dist/local/duckdb-database-effect.d.ts +88 -0
- package/dist/local/duckdb-database-effect.d.ts.map +1 -0
- package/dist/local/duckdb-database-effect.js +81 -0
- package/dist/local/duckdb-database-effect.js.map +1 -0
- package/dist/local/duckdb-database.d.ts +101 -0
- package/dist/local/duckdb-database.d.ts.map +1 -0
- package/dist/local/duckdb-database.js +61 -0
- package/dist/local/duckdb-database.js.map +1 -0
- package/dist/local/duckdb-database.types.d.ts +19 -0
- package/dist/local/duckdb-database.types.d.ts.map +1 -0
- package/dist/local/duckdb-database.types.js +2 -0
- package/dist/local/duckdb-database.types.js.map +1 -0
- package/dist/local/duckdb-driver.d.ts +25 -0
- package/dist/local/duckdb-driver.d.ts.map +1 -0
- package/dist/local/duckdb-driver.js +34 -0
- package/dist/local/duckdb-driver.js.map +1 -0
- package/dist/local/duckdb-driver.types.d.ts +96 -0
- package/dist/local/duckdb-driver.types.d.ts.map +1 -0
- package/dist/local/duckdb-driver.types.js +2 -0
- package/dist/local/duckdb-driver.types.js.map +1 -0
- package/dist/local/duckdb-error.d.ts +32 -0
- package/dist/local/duckdb-error.d.ts.map +1 -0
- package/dist/local/duckdb-error.js +36 -0
- package/dist/local/duckdb-error.js.map +1 -0
- package/dist/local/duckdb-metrics.d.ts +17 -0
- package/dist/local/duckdb-metrics.d.ts.map +1 -0
- package/dist/local/duckdb-metrics.js +30 -0
- package/dist/local/duckdb-metrics.js.map +1 -0
- package/dist/local/duckdb-query-detail.d.ts +40 -0
- package/dist/local/duckdb-query-detail.d.ts.map +1 -0
- package/dist/local/duckdb-query-detail.js +43 -0
- package/dist/local/duckdb-query-detail.js.map +1 -0
- package/dist/local/duckdb-query-effect.d.ts +42 -0
- package/dist/local/duckdb-query-effect.d.ts.map +1 -0
- package/dist/local/duckdb-query-effect.js +10 -0
- package/dist/local/duckdb-query-effect.js.map +1 -0
- package/dist/local/duckdb-query-error.d.ts +32 -0
- package/dist/local/duckdb-query-error.d.ts.map +1 -0
- package/dist/local/duckdb-query-error.js +35 -0
- package/dist/local/duckdb-query-error.js.map +1 -0
- package/dist/local/duckdb-query-filters.d.ts +9 -0
- package/dist/local/duckdb-query-filters.d.ts.map +1 -0
- package/dist/local/duckdb-query-filters.js +51 -0
- package/dist/local/duckdb-query-filters.js.map +1 -0
- package/dist/local/duckdb-query-list.d.ts +7 -0
- package/dist/local/duckdb-query-list.d.ts.map +1 -0
- package/dist/local/duckdb-query-list.js +26 -0
- package/dist/local/duckdb-query-list.js.map +1 -0
- package/dist/local/duckdb-query-plan.d.ts +8 -0
- package/dist/local/duckdb-query-plan.d.ts.map +1 -0
- package/dist/local/duckdb-query-plan.js +49 -0
- package/dist/local/duckdb-query-plan.js.map +1 -0
- package/dist/local/duckdb-query-rows.d.ts +8 -0
- package/dist/local/duckdb-query-rows.d.ts.map +1 -0
- package/dist/local/duckdb-query-rows.js +23 -0
- package/dist/local/duckdb-query-rows.js.map +1 -0
- package/dist/local/duckdb-query-rows.types.d.ts +8 -0
- package/dist/local/duckdb-query-rows.types.d.ts.map +1 -0
- package/dist/local/duckdb-query-rows.types.js +2 -0
- package/dist/local/duckdb-query-rows.types.js.map +1 -0
- package/dist/local/duckdb-query.d.ts +49 -0
- package/dist/local/duckdb-query.d.ts.map +1 -0
- package/dist/local/duckdb-query.js +29 -0
- package/dist/local/duckdb-query.js.map +1 -0
- package/dist/local/duckdb-retention.d.ts +6 -0
- package/dist/local/duckdb-retention.d.ts.map +1 -0
- package/dist/local/duckdb-retention.js +22 -0
- package/dist/local/duckdb-retention.js.map +1 -0
- package/dist/local/duckdb-schema.d.ts +17 -0
- package/dist/local/duckdb-schema.d.ts.map +1 -0
- package/dist/local/duckdb-schema.js +39 -0
- package/dist/local/duckdb-schema.js.map +1 -0
- package/dist/local/duckdb-sql.d.ts +35 -0
- package/dist/local/duckdb-sql.d.ts.map +1 -0
- package/dist/local/duckdb-sql.js +35 -0
- package/dist/local/duckdb-sql.js.map +1 -0
- package/dist/local/duckdb-storage-state.types.d.ts +12 -0
- package/dist/local/duckdb-storage-state.types.d.ts.map +1 -0
- package/dist/local/duckdb-storage-state.types.js +2 -0
- package/dist/local/duckdb-storage-state.types.js.map +1 -0
- package/dist/local/duckdb-storage.d.ts +8 -0
- package/dist/local/duckdb-storage.d.ts.map +1 -0
- package/dist/local/duckdb-storage.js +33 -0
- package/dist/local/duckdb-storage.js.map +1 -0
- package/dist/local/duckdb-storage.types.d.ts +44 -0
- package/dist/local/duckdb-storage.types.d.ts.map +1 -0
- package/dist/local/duckdb-storage.types.js +2 -0
- package/dist/local/duckdb-storage.types.js.map +1 -0
- package/dist/local/duckdb-transaction.d.ts +7 -0
- package/dist/local/duckdb-transaction.d.ts.map +1 -0
- package/dist/local/duckdb-transaction.js +25 -0
- package/dist/local/duckdb-transaction.js.map +1 -0
- package/dist/local/duckdb-worker-database.d.ts +25 -0
- package/dist/local/duckdb-worker-database.d.ts.map +1 -0
- package/dist/local/duckdb-worker-database.js +53 -0
- package/dist/local/duckdb-worker-database.js.map +1 -0
- package/dist/local/duckdb-worker-effect.d.ts +26 -0
- package/dist/local/duckdb-worker-effect.d.ts.map +1 -0
- package/dist/local/duckdb-worker-effect.js +29 -0
- package/dist/local/duckdb-worker-effect.js.map +1 -0
- package/dist/local/duckdb-worker-ipc.d.ts +7 -0
- package/dist/local/duckdb-worker-ipc.d.ts.map +1 -0
- package/dist/local/duckdb-worker-ipc.js +40 -0
- package/dist/local/duckdb-worker-ipc.js.map +1 -0
- package/dist/local/duckdb-worker-maintenance.d.ts +7 -0
- package/dist/local/duckdb-worker-maintenance.d.ts.map +1 -0
- package/dist/local/duckdb-worker-maintenance.js +25 -0
- package/dist/local/duckdb-worker-maintenance.js.map +1 -0
- package/dist/local/duckdb-worker-process.d.ts +5 -0
- package/dist/local/duckdb-worker-process.d.ts.map +1 -0
- package/dist/local/duckdb-worker-process.js +19 -0
- package/dist/local/duckdb-worker-process.js.map +1 -0
- package/dist/local/duckdb-worker-process.types.d.ts +21 -0
- package/dist/local/duckdb-worker-process.types.d.ts.map +1 -0
- package/dist/local/duckdb-worker-process.types.js +2 -0
- package/dist/local/duckdb-worker-process.types.js.map +1 -0
- package/dist/local/duckdb-worker-signals.d.ts +5 -0
- package/dist/local/duckdb-worker-signals.d.ts.map +1 -0
- package/dist/local/duckdb-worker-signals.js +22 -0
- package/dist/local/duckdb-worker-signals.js.map +1 -0
- package/dist/local/duckdb-worker-state.types.d.ts +12 -0
- package/dist/local/duckdb-worker-state.types.d.ts.map +1 -0
- package/dist/local/duckdb-worker-state.types.js +2 -0
- package/dist/local/duckdb-worker-state.types.js.map +1 -0
- package/dist/local/duckdb-worker.d.ts +2 -0
- package/dist/local/duckdb-worker.d.ts.map +1 -0
- package/dist/local/duckdb-worker.js +18 -0
- package/dist/local/duckdb-worker.js.map +1 -0
- package/dist/local/duckdb-worker.types.d.ts +38 -0
- package/dist/local/duckdb-worker.types.d.ts.map +1 -0
- package/dist/local/duckdb-worker.types.js +2 -0
- package/dist/local/duckdb-worker.types.js.map +1 -0
- package/dist/local/import-history-effect.d.ts +9 -0
- package/dist/local/import-history-effect.d.ts.map +1 -0
- package/dist/local/import-history-effect.js +32 -0
- package/dist/local/import-history-effect.js.map +1 -0
- package/dist/local/import-history-files.d.ts +5 -0
- package/dist/local/import-history-files.d.ts.map +1 -0
- package/dist/local/import-history-files.js +37 -0
- package/dist/local/import-history-files.js.map +1 -0
- package/dist/local/import-history-line.d.ts +6 -0
- package/dist/local/import-history-line.d.ts.map +1 -0
- package/dist/local/import-history-line.js +51 -0
- package/dist/local/import-history-line.js.map +1 -0
- package/dist/local/import-history-lines.d.ts +8 -0
- package/dist/local/import-history-lines.d.ts.map +1 -0
- package/dist/local/import-history-lines.js +27 -0
- package/dist/local/import-history-lines.js.map +1 -0
- package/dist/local/import-history-lines.types.d.ts +11 -0
- package/dist/local/import-history-lines.types.d.ts.map +1 -0
- package/dist/local/import-history-lines.types.js +2 -0
- package/dist/local/import-history-lines.types.js.map +1 -0
- package/dist/local/import-history.d.ts +18 -0
- package/dist/local/import-history.d.ts.map +1 -0
- package/dist/local/import-history.js +26 -0
- package/dist/local/import-history.js.map +1 -0
- package/dist/local/import-history.types.d.ts +28 -0
- package/dist/local/import-history.types.d.ts.map +1 -0
- package/dist/local/import-history.types.js +2 -0
- package/dist/local/import-history.types.js.map +1 -0
- package/dist/local/worker-client-effect.d.ts +9 -0
- package/dist/local/worker-client-effect.d.ts.map +1 -0
- package/dist/local/worker-client-effect.js +54 -0
- package/dist/local/worker-client-effect.js.map +1 -0
- package/dist/local/worker-client-send.d.ts +13 -0
- package/dist/local/worker-client-send.d.ts.map +1 -0
- package/dist/local/worker-client-send.js +82 -0
- package/dist/local/worker-client-send.js.map +1 -0
- package/dist/local/worker-client-service.d.ts +33 -0
- package/dist/local/worker-client-service.d.ts.map +1 -0
- package/dist/local/worker-client-service.js +31 -0
- package/dist/local/worker-client-service.js.map +1 -0
- package/dist/local/worker-client-state.d.ts +9 -0
- package/dist/local/worker-client-state.d.ts.map +1 -0
- package/dist/local/worker-client-state.js +96 -0
- package/dist/local/worker-client-state.js.map +1 -0
- package/dist/local/worker-client-state.types.d.ts +24 -0
- package/dist/local/worker-client-state.types.d.ts.map +1 -0
- package/dist/local/worker-client-state.types.js +2 -0
- package/dist/local/worker-client-state.types.js.map +1 -0
- package/dist/local/worker-client.d.ts +21 -0
- package/dist/local/worker-client.d.ts.map +1 -0
- package/dist/local/worker-client.js +35 -0
- package/dist/local/worker-client.js.map +1 -0
- package/dist/local/worker.d.ts +15 -0
- package/dist/local/worker.d.ts.map +1 -0
- package/dist/local/worker.js +12 -0
- package/dist/local/worker.js.map +1 -0
- package/package.json +54 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-database.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-database.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAI3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,6BAAkC,EAC9C,SAAS,CAAC,EAAE,eAAe;;;;;sBAkBL,UAAU,4MAAwB,CAAC,CAAC,CAAC;iBAE/C,UAAU,mUAAsB,CAAC,CAAC,CAAC,UACjC,UAAU,mUAAsB,CAAC,CAAC,CAAC;mBAE9B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sFAAwB,CAAC,CAAC,CAAC,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAE7C,6BAA6B,kBAAkB,eAAe;;;GAiBtF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb database for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Effect, Exit, Scope } from "effect";
|
|
7
|
+
import { openDuckdbDatabaseEffect } from "./duckdb-database-effect.js";
|
|
8
|
+
import { duckdbDriverLayer } from "./duckdb-driver.js";
|
|
9
|
+
import { duckdbError } from "./duckdb-error.js";
|
|
10
|
+
import { DuckdbQueryError } from "./duckdb-query-error.js";
|
|
11
|
+
import { ObservabilityQueryError } from "@relkit/observability";
|
|
12
|
+
/**
|
|
13
|
+
* Opens a private DuckDB database and owns its Effect Scope until close.
|
|
14
|
+
* The scoped Effect implementation contains acquisition and operation logic.
|
|
15
|
+
*
|
|
16
|
+
* @param root - Directory containing the local database file.
|
|
17
|
+
* @param configured - Initial retention policy.
|
|
18
|
+
* @param redaction - Initial redaction policy.
|
|
19
|
+
* @returns A live Promise API with append, query, configure, flush, and close.
|
|
20
|
+
* @throws {DuckdbError} If acquisition, storage, or import fails.
|
|
21
|
+
* @example
|
|
22
|
+
* const database = await openDuckdbDatabase(root);
|
|
23
|
+
* await database.close();
|
|
24
|
+
*/
|
|
25
|
+
export async function openDuckdbDatabase(root, configured = {}, redaction) {
|
|
26
|
+
const scope = Effect.runSync(Scope.make());
|
|
27
|
+
try {
|
|
28
|
+
const database = await Effect.runPromise(openDuckdbDatabaseEffect(root, configured, redaction).pipe(Scope.provide(scope), Effect.provide(duckdbDriverLayer)));
|
|
29
|
+
let closing = false;
|
|
30
|
+
const run = (operation) => closing
|
|
31
|
+
? Promise.reject(duckdbError("closed", new Error("Telemetry database is closed")))
|
|
32
|
+
: runDirect(operation);
|
|
33
|
+
let closePromise;
|
|
34
|
+
return {
|
|
35
|
+
imported: database.imported,
|
|
36
|
+
append: (records) => run(database.append(records)),
|
|
37
|
+
list: (kind, input) => run(database.list(kind, input)),
|
|
38
|
+
detail: (kind, id) => run(database.detail(kind, id)),
|
|
39
|
+
configure: (value, nextRedaction) => run(database.configure(value, nextRedaction)),
|
|
40
|
+
flush: () => run(database.flush()),
|
|
41
|
+
close: () => (closePromise ??= (async () => {
|
|
42
|
+
closing = true;
|
|
43
|
+
try {
|
|
44
|
+
await runDirect(database.flush());
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
await Effect.runPromise(Scope.close(scope, Exit.void));
|
|
48
|
+
}
|
|
49
|
+
})()),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
await Effect.runPromise(Scope.close(scope, Exit.fail(error))).catch(() => undefined);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** @typeParam A - Native success value. @typeParam E - Native failure. @param operation - Lazy database operation. @returns Promise preserving public query error identity. */
|
|
58
|
+
const runDirect = (operation) => Effect.runPromise(operation.pipe(Effect.mapError((error) => error instanceof DuckdbQueryError
|
|
59
|
+
? new ObservabilityQueryError(error.code, error.message)
|
|
60
|
+
: error)));
|
|
61
|
+
//# sourceMappingURL=duckdb-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-database.js","sourceRoot":"","sources":["../../src/local/duckdb-database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb database.types for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import type { makeDuckdbQueryEffect } from "./duckdb-query-effect.js";
|
|
7
|
+
import type { DuckdbStorageEffects } from "./duckdb-storage.types.js";
|
|
8
|
+
import type { LegacyImportSummary } from "./import-history.types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Scoped local database operations; the owning Scope releases native handles.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const database = yield* openDuckdbDatabaseEffect(root);
|
|
14
|
+
* const page = yield* database.list("logs");
|
|
15
|
+
*/
|
|
16
|
+
export type DuckdbDatabaseEffects = DuckdbStorageEffects & ReturnType<typeof makeDuckdbQueryEffect> & {
|
|
17
|
+
readonly imported: LegacyImportSummary;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=duckdb-database.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-database.types.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-database.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GACtD,UAAU,CAAC,OAAO,qBAAqB,CAAC,GAAG;IACzC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;CACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-database.types.js","sourceRoot":"","sources":["../../src/local/duckdb-database.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import type { DuckdbDriver } from "./duckdb-driver.types.js";
|
|
3
|
+
declare const DuckdbDriverService_base: Context.ServiceClass<DuckdbDriverService, "@relkit/observability/DuckdbDriver", DuckdbDriver> & {
|
|
4
|
+
readonly make: Effect.Effect<DuckdbDriver, never, never>;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Injectable native DuckDB instance factory.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const driver = yield* DuckdbDriverService;
|
|
11
|
+
* const instance = yield* driver.create(path);
|
|
12
|
+
*/
|
|
13
|
+
export declare class DuckdbDriverService extends DuckdbDriverService_base {
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Live native driver for local observability storage.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const database = yield* openDuckdbDatabaseEffect(root).pipe(
|
|
20
|
+
* Effect.provide(duckdbDriverLayer),
|
|
21
|
+
* );
|
|
22
|
+
*/
|
|
23
|
+
export declare const duckdbDriverLayer: Layer.Layer<DuckdbDriverService, never, never>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=duckdb-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-driver.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-driver.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;;;;AAC7D;;;;;;GAMG;AACH,qBAAa,mBAAoB,SAAQ,wBAYxC;CAAG;AACJ;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,gDAA8D,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb driver for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { DuckDBInstance } from "@duckdb/node-api";
|
|
7
|
+
import { Context, Effect, Layer } from "effect";
|
|
8
|
+
import { duckdbError } from "./duckdb-error.js";
|
|
9
|
+
/**
|
|
10
|
+
* Injectable native DuckDB instance factory.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const driver = yield* DuckdbDriverService;
|
|
14
|
+
* const instance = yield* driver.create(path);
|
|
15
|
+
*/
|
|
16
|
+
export class DuckdbDriverService extends Context.Service()("@relkit/observability/DuckdbDriver", {
|
|
17
|
+
make: Effect.sync(() => ({
|
|
18
|
+
create: Effect.fn("ObservabilityDuckdb.driver.create")((path) => Effect.tryPromise({
|
|
19
|
+
try: () => DuckDBInstance.create(path),
|
|
20
|
+
catch: (cause) => duckdbError("create", cause),
|
|
21
|
+
})),
|
|
22
|
+
})),
|
|
23
|
+
}) {
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Live native driver for local observability storage.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const database = yield* openDuckdbDatabaseEffect(root).pipe(
|
|
30
|
+
* Effect.provide(duckdbDriverLayer),
|
|
31
|
+
* );
|
|
32
|
+
*/
|
|
33
|
+
export const duckdbDriverLayer = Layer.effect(DuckdbDriverService, DuckdbDriverService.make);
|
|
34
|
+
//# sourceMappingURL=duckdb-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-driver.js","sourceRoot":"","sources":["../../src/local/duckdb-driver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,OAAO,mBAAoB,SAAQ,OAAO,CAAC,OAAO,EAAqC,CAC3F,oCAAoC,EACpC;IACE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAiB,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAY,EAAE,EAAE,CACtE,MAAM,CAAC,UAAU,CAAC;YAChB,GAAG,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;SAC/C,CAAC,CACH;KACF,CAAC,CAAC;CACJ,CACF;CAAG;AACJ;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb driver.types for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import type { DuckDBValue, Json, DuckDBMaterializedResult } from "@duckdb/node-api";
|
|
7
|
+
import type { Effect } from "effect";
|
|
8
|
+
import type { DuckdbError } from "./duckdb-error.js";
|
|
9
|
+
/**
|
|
10
|
+
* SQL result shape used by the local observability store.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const rows = result.getRowObjectsJson();
|
|
14
|
+
*/
|
|
15
|
+
export interface DuckdbRows {
|
|
16
|
+
/**
|
|
17
|
+
* Returns JSON-compatible rows from a completed statement.
|
|
18
|
+
* @returns Row objects decoded by the native driver.
|
|
19
|
+
* @example
|
|
20
|
+
* const rows = result.getRowObjectsJson();
|
|
21
|
+
*/
|
|
22
|
+
readonly getRowObjectsJson: () => Record<string, Json>[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Substitutable DuckDB connection with the operations used by this package.
|
|
26
|
+
* The owning Effect Scope calls `closeSync` after all operations settle.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const result = await connection.runAndReadAll("SELECT 1");
|
|
30
|
+
*/
|
|
31
|
+
export interface DuckdbConnectionPort {
|
|
32
|
+
/**
|
|
33
|
+
* Runs a statement or transaction command.
|
|
34
|
+
* @param sql - SQL statement.
|
|
35
|
+
* @param values - Bound parameters.
|
|
36
|
+
* @returns Native completion result.
|
|
37
|
+
* @example
|
|
38
|
+
* await connection.run("CHECKPOINT");
|
|
39
|
+
*/
|
|
40
|
+
readonly run: (sql: string, values?: DuckDBValue[]) => Promise<DuckDBMaterializedResult | void>;
|
|
41
|
+
/**
|
|
42
|
+
* Reads all rows from a completed statement.
|
|
43
|
+
* @param sql - SQL query.
|
|
44
|
+
* @param values - Bound parameters.
|
|
45
|
+
* @returns A Promise containing a row reader.
|
|
46
|
+
* @example
|
|
47
|
+
* const rows = await connection.runAndReadAll("SELECT 1");
|
|
48
|
+
*/
|
|
49
|
+
readonly runAndReadAll: (sql: string, values?: DuckDBValue[]) => Promise<DuckdbRows>;
|
|
50
|
+
/**
|
|
51
|
+
* Releases the native connection from its Scope finalizer.
|
|
52
|
+
* @returns Nothing after release.
|
|
53
|
+
* @example
|
|
54
|
+
* connection.closeSync();
|
|
55
|
+
*/
|
|
56
|
+
readonly closeSync: () => void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Native database instance owned by the acquiring Effect Scope.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const connection = await instance.connect();
|
|
63
|
+
*/
|
|
64
|
+
export interface DuckdbInstancePort {
|
|
65
|
+
/**
|
|
66
|
+
* Opens a connection owned by the same Scope.
|
|
67
|
+
* @returns A Promise containing the live connection.
|
|
68
|
+
* @example
|
|
69
|
+
* const connection = await instance.connect();
|
|
70
|
+
*/
|
|
71
|
+
readonly connect: () => Promise<DuckdbConnectionPort>;
|
|
72
|
+
/**
|
|
73
|
+
* Releases the native instance after its connection closes.
|
|
74
|
+
* @returns Nothing after release.
|
|
75
|
+
* @example
|
|
76
|
+
* instance.closeSync();
|
|
77
|
+
*/
|
|
78
|
+
readonly closeSync: () => void;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a native instance; tests can supply deterministic handles.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* const instance = yield* driver.create(path);
|
|
85
|
+
*/
|
|
86
|
+
export interface DuckdbDriver {
|
|
87
|
+
/**
|
|
88
|
+
* Creates an instance at the requested database path.
|
|
89
|
+
* @param path - Private DuckDB database path.
|
|
90
|
+
* @returns An Effect yielding an instance or a tagged IO error.
|
|
91
|
+
* @example
|
|
92
|
+
* const instance = yield* driver.create(path);
|
|
93
|
+
*/
|
|
94
|
+
readonly create: (path: string) => Effect.Effect<DuckdbInstancePort, DuckdbError>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=duckdb-driver.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-driver.types.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-driver.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;CAC1D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;OAOG;IACH,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAAC;IAChG;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACrF;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;CACnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-driver.types.js","sourceRoot":"","sources":["../../src/local/duckdb-driver.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb error for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "effect";
|
|
7
|
+
declare const DuckdbError_base: Schema.Class<DuckdbError, Schema.TaggedStruct<"DuckdbError", {
|
|
8
|
+
readonly operation: Schema.String;
|
|
9
|
+
readonly message: Schema.String;
|
|
10
|
+
readonly cause: Schema.Defect;
|
|
11
|
+
}>, import("effect/Cause").YieldableError>;
|
|
12
|
+
/**
|
|
13
|
+
* Expected local DuckDB IO or schema failure with a stable operation label.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const failure = new DuckdbError({ operation: "connect", message: "failed", cause });
|
|
17
|
+
*/
|
|
18
|
+
export declare class DuckdbError extends DuckdbError_base {
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Converts a native DuckDB failure to the local storage error channel.
|
|
22
|
+
*
|
|
23
|
+
* @typeParam Cause - Native rejection type retained in the error cause.
|
|
24
|
+
* @param operation - Stable operation name without SQL or user values.
|
|
25
|
+
* @param cause - Native failure value.
|
|
26
|
+
* @returns A tagged storage failure preserving the cause.
|
|
27
|
+
* @example
|
|
28
|
+
* const error = duckdbError("connect", cause);
|
|
29
|
+
*/
|
|
30
|
+
export declare function duckdbError<Cause>(operation: string, cause: Cause): DuckdbError;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=duckdb-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-error.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;;AAEhC;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,gBAI/B;CAAG;AAEL;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,WAAW,CAM/E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb error for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "effect";
|
|
7
|
+
/**
|
|
8
|
+
* Expected local DuckDB IO or schema failure with a stable operation label.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const failure = new DuckdbError({ operation: "connect", message: "failed", cause });
|
|
12
|
+
*/
|
|
13
|
+
export class DuckdbError extends Schema.TaggedError()("DuckdbError", {
|
|
14
|
+
operation: Schema.String,
|
|
15
|
+
message: Schema.String,
|
|
16
|
+
cause: Schema.Defect(),
|
|
17
|
+
}) {
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Converts a native DuckDB failure to the local storage error channel.
|
|
21
|
+
*
|
|
22
|
+
* @typeParam Cause - Native rejection type retained in the error cause.
|
|
23
|
+
* @param operation - Stable operation name without SQL or user values.
|
|
24
|
+
* @param cause - Native failure value.
|
|
25
|
+
* @returns A tagged storage failure preserving the cause.
|
|
26
|
+
* @example
|
|
27
|
+
* const error = duckdbError("connect", cause);
|
|
28
|
+
*/
|
|
29
|
+
export function duckdbError(operation, cause) {
|
|
30
|
+
return new DuckdbError({
|
|
31
|
+
operation,
|
|
32
|
+
message: cause instanceof Error ? cause.message : String(cause),
|
|
33
|
+
cause,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=duckdb-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-error.js","sourceRoot":"","sources":["../../src/local/duckdb-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAM,CAAC,WAAW,EAAe,CAAC,aAAa,EAAE;IAChF,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;CACvB,CAAC;CAAG;AAEL;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAQ,SAAiB,EAAE,KAAY;IAChE,OAAO,IAAI,WAAW,CAAC;QACrB,SAAS;QACT,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb metrics for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Effect } from "effect";
|
|
7
|
+
/**
|
|
8
|
+
* Records bounded operation, duration, and outcome telemetry for DuckDB work.
|
|
9
|
+
*
|
|
10
|
+
* @param operation - Static operation label.
|
|
11
|
+
* @param effect - Operation to observe.
|
|
12
|
+
* @returns The same Effect with metrics updated on every exit.
|
|
13
|
+
* @example
|
|
14
|
+
* yield* observeDuckdb("append", appendBatch);
|
|
15
|
+
*/
|
|
16
|
+
export declare function observeDuckdb<A, E, R>(operation: string, effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R>;
|
|
17
|
+
//# sourceMappingURL=duckdb-metrics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-metrics.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAmB,MAAM,EAAgB,MAAM,QAAQ,CAAC;AAC/D;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAqBxB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb metrics for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Clock, Duration, Effect, Exit, Metric } from "effect";
|
|
7
|
+
/**
|
|
8
|
+
* Records bounded operation, duration, and outcome telemetry for DuckDB work.
|
|
9
|
+
*
|
|
10
|
+
* @param operation - Static operation label.
|
|
11
|
+
* @param effect - Operation to observe.
|
|
12
|
+
* @returns The same Effect with metrics updated on every exit.
|
|
13
|
+
* @example
|
|
14
|
+
* yield* observeDuckdb("append", appendBatch);
|
|
15
|
+
*/
|
|
16
|
+
export function observeDuckdb(operation, effect) {
|
|
17
|
+
return Effect.gen(function* () {
|
|
18
|
+
const started = yield* Clock.currentTimeMillis;
|
|
19
|
+
return yield* Effect.onExit(effect, (exit) => Effect.gen(function* () {
|
|
20
|
+
const elapsed = (yield* Clock.currentTimeMillis) - started;
|
|
21
|
+
yield* Metric.update(Metric.counter("relkit_observability_duckdb_operations_total", {
|
|
22
|
+
attributes: { operation, outcome: Exit.isSuccess(exit) ? "success" : "failure" },
|
|
23
|
+
}), 1);
|
|
24
|
+
yield* Metric.update(Metric.timer("relkit_observability_duckdb_duration", {
|
|
25
|
+
attributes: { operation },
|
|
26
|
+
}), Duration.millis(elapsed));
|
|
27
|
+
}));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=duckdb-metrics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-metrics.js","sourceRoot":"","sources":["../../src/local/duckdb-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC/D;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,MAA8B;IAE9B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC/C,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAC3C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC;YAC3D,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,OAAO,CAAC,8CAA8C,EAAE;gBAC7D,UAAU,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;aACjF,CAAC,EACF,CAAC,CACF,CAAC;YACF,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACnD,UAAU,EAAE,EAAE,SAAS,EAAE;aAC1B,CAAC,EACF,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CACzB,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Assembles request/log/trace detail from bounded serialized history reads. */
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
import type { DuckdbReadRows } from "./duckdb-query-rows.types.js";
|
|
4
|
+
import type { makeDuckdbList } from "./duckdb-query-list.js";
|
|
5
|
+
/** @param rows - Serialized row reader. @param list - Validated trace list operation. @returns Lazy bounded detail operations. */
|
|
6
|
+
export declare function makeDuckdbDetail(rows: DuckdbReadRows, list: ReturnType<typeof makeDuckdbList>): (kind: "trace" | "request" | "log", id: string) => Effect.Effect<{
|
|
7
|
+
log: import("@relkit/observability/local/record").StoredLocalRecord;
|
|
8
|
+
items: readonly never[];
|
|
9
|
+
nextCursor?: string;
|
|
10
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
11
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
12
|
+
} | {
|
|
13
|
+
request: import("@relkit/observability").RequestRecord;
|
|
14
|
+
spans: readonly import("@relkit/observability").SpanRecord[];
|
|
15
|
+
roots: readonly import("@relkit/observability").SpanNode[];
|
|
16
|
+
continuations: readonly {
|
|
17
|
+
readonly traceId: string;
|
|
18
|
+
readonly active: boolean;
|
|
19
|
+
}[];
|
|
20
|
+
records: readonly import("@relkit/observability").ObservabilityRecord[];
|
|
21
|
+
counts: {
|
|
22
|
+
readonly records: number;
|
|
23
|
+
readonly spans: number;
|
|
24
|
+
readonly continuations: number;
|
|
25
|
+
};
|
|
26
|
+
incomplete: readonly string[];
|
|
27
|
+
items: readonly never[];
|
|
28
|
+
nextCursor?: string;
|
|
29
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
30
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
31
|
+
} | {
|
|
32
|
+
trace: import("@relkit/observability/local/record").StoredLocalRecord | undefined;
|
|
33
|
+
spans: import("@relkit/observability").SpanRecord[];
|
|
34
|
+
records: readonly import("@relkit/observability/local/record").StoredLocalRecord[];
|
|
35
|
+
items: readonly import("@relkit/observability/local/record").StoredLocalRecord[];
|
|
36
|
+
nextCursor?: string;
|
|
37
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
38
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
39
|
+
} | undefined, import("./duckdb-query-error.js").DuckdbQueryError | import("./duckdb-error.js").DuckdbError, never>;
|
|
40
|
+
//# sourceMappingURL=duckdb-query-detail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-query-detail.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-query-detail.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAWhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,kIAAkI;AAClI,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oHA4C7F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Assembles request/log/trace detail from bounded serialized history reads. */
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
import { ObservabilityQueryError, assembleRequestExecution, coalesceSpans, MAX_EXECUTION_RECORDS, } from "@relkit/observability";
|
|
4
|
+
import { response, validate } from "@relkit/observability/internal/query";
|
|
5
|
+
import { duckdbError } from "./duckdb-error.js";
|
|
6
|
+
import { duckdbQueryError } from "./duckdb-query-error.js";
|
|
7
|
+
import { observeDuckdb } from "./duckdb-metrics.js";
|
|
8
|
+
const select = "SELECT id::VARCHAR AS cursor, payload::VARCHAR AS payload, origin FROM records";
|
|
9
|
+
/** @param rows - Serialized row reader. @param list - Validated trace list operation. @returns Lazy bounded detail operations. */
|
|
10
|
+
export function makeDuckdbDetail(rows, list) {
|
|
11
|
+
return Effect.fn("ObservabilityDuckdb.query.detail")(function* (kind, id) {
|
|
12
|
+
return yield* observeDuckdb("detail", Effect.gen(function* () {
|
|
13
|
+
if (kind === "log") {
|
|
14
|
+
yield* Effect.try({
|
|
15
|
+
try: () => validate({ cursor: id }, 100),
|
|
16
|
+
catch: (cause) => cause instanceof ObservabilityQueryError
|
|
17
|
+
? duckdbQueryError(cause)
|
|
18
|
+
: duckdbError("validate", cause),
|
|
19
|
+
});
|
|
20
|
+
const log = (yield* rows(`${select} WHERE id = ? AND signal = 'log'`, [BigInt(id)]))[0];
|
|
21
|
+
return log ? { ...response([]), log } : undefined;
|
|
22
|
+
}
|
|
23
|
+
if (kind === "request") {
|
|
24
|
+
const records = yield* rows(`${select} WHERE request_id = ? OR origin_request_id = ? OR trace_id IN
|
|
25
|
+
(SELECT trace_id FROM records WHERE signal = 'request' AND request_id = ?)
|
|
26
|
+
ORDER BY id DESC LIMIT ?`, [id, id, id, MAX_EXECUTION_RECORDS + 1]);
|
|
27
|
+
const execution = assembleRequestExecution(records, id);
|
|
28
|
+
return execution ? { ...response([]), ...execution } : undefined;
|
|
29
|
+
}
|
|
30
|
+
const page = yield* list("traces", { traceId: id, limit: 100 });
|
|
31
|
+
if (page.items.length === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
const trace = (yield* rows(`${select} WHERE signal = 'trace' AND trace_id = ? ORDER BY id DESC LIMIT 1`, [id]))[0];
|
|
34
|
+
return {
|
|
35
|
+
...page,
|
|
36
|
+
trace,
|
|
37
|
+
spans: coalesceSpans(page.items.filter((item) => item.signal === "span")),
|
|
38
|
+
records: page.items,
|
|
39
|
+
};
|
|
40
|
+
}));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=duckdb-query-detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-query-detail.js","sourceRoot":"","sources":["../../src/local/duckdb-query-detail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Composes native history rows, versioned pages and execution detail under one serialization permit. */
|
|
2
|
+
import type { Semaphore } from "effect";
|
|
3
|
+
import type { DuckdbConnectionPort } from "./duckdb-driver.types.js";
|
|
4
|
+
/** @param connection - Scoped database connection. @param permit - Shared write/read permit. @returns List and detail Effects. */
|
|
5
|
+
export declare function makeDuckdbQueryEffect(connection: DuckdbConnectionPort, permit: Semaphore.Semaphore): {
|
|
6
|
+
list: (kind: "logs" | "requests" | "traces", input?: import("@relkit/observability").ObservabilityQueryRequest | undefined) => import("effect/Effect").Effect<import("@relkit/observability").ObservabilityQueryPage<import("@relkit/observability/local/record").StoredLocalRecord>, import("./duckdb-query-error.js").DuckdbQueryError | import("./duckdb-error.js").DuckdbError, never>;
|
|
7
|
+
detail: (kind: "trace" | "request" | "log", id: string) => import("effect/Effect").Effect<{
|
|
8
|
+
log: import("@relkit/observability/local/record").StoredLocalRecord;
|
|
9
|
+
items: readonly never[];
|
|
10
|
+
nextCursor?: string;
|
|
11
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
12
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
13
|
+
} | {
|
|
14
|
+
request: import("@relkit/observability").RequestRecord;
|
|
15
|
+
spans: readonly import("@relkit/observability").SpanRecord[];
|
|
16
|
+
roots: readonly import("@relkit/observability").SpanNode[];
|
|
17
|
+
continuations: readonly {
|
|
18
|
+
readonly traceId: string;
|
|
19
|
+
readonly active: boolean;
|
|
20
|
+
}[];
|
|
21
|
+
records: readonly import("@relkit/observability").ObservabilityRecord[];
|
|
22
|
+
counts: {
|
|
23
|
+
readonly records: number;
|
|
24
|
+
readonly spans: number;
|
|
25
|
+
readonly continuations: number;
|
|
26
|
+
};
|
|
27
|
+
incomplete: readonly string[];
|
|
28
|
+
items: readonly never[];
|
|
29
|
+
nextCursor?: string;
|
|
30
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
31
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
32
|
+
} | {
|
|
33
|
+
trace: import("@relkit/observability/local/record").StoredLocalRecord | undefined;
|
|
34
|
+
spans: import("@relkit/observability").SpanRecord[];
|
|
35
|
+
records: readonly import("@relkit/observability/local/record").StoredLocalRecord[];
|
|
36
|
+
items: readonly import("@relkit/observability/local/record").StoredLocalRecord[];
|
|
37
|
+
nextCursor?: string;
|
|
38
|
+
protocol: typeof import("@relkit/observability").OBSERVABILITY_QUERY_PROTOCOL;
|
|
39
|
+
version: typeof import("@relkit/observability").OBSERVABILITY_QUERY_VERSION;
|
|
40
|
+
} | undefined, import("./duckdb-query-error.js").DuckdbQueryError | import("./duckdb-error.js").DuckdbError, never>;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=duckdb-query-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-query-effect.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-query-effect.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAIrE,kIAAkI;AAClI,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,oBAAoB,EAChC,MAAM,EAAE,SAAS,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK5B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { makeDuckdbRows } from "./duckdb-query-rows.js";
|
|
2
|
+
import { makeDuckdbList } from "./duckdb-query-list.js";
|
|
3
|
+
import { makeDuckdbDetail } from "./duckdb-query-detail.js";
|
|
4
|
+
/** @param connection - Scoped database connection. @param permit - Shared write/read permit. @returns List and detail Effects. */
|
|
5
|
+
export function makeDuckdbQueryEffect(connection, permit) {
|
|
6
|
+
const rows = makeDuckdbRows(connection, permit);
|
|
7
|
+
const list = makeDuckdbList(rows);
|
|
8
|
+
return { list, detail: makeDuckdbDetail(rows, list) };
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=duckdb-query-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-query-effect.js","sourceRoot":"","sources":["../../src/local/duckdb-query-effect.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,kIAAkI;AAClI,MAAM,UAAU,qBAAqB,CACnC,UAAgC,EAChC,MAA2B;IAE3B,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owns duckdb query error for the optional local history store.
|
|
3
|
+
* Shared records and query contracts come from lightweight observability; native
|
|
4
|
+
* handles and worker lifetimes remain owned by this storage package.
|
|
5
|
+
*/
|
|
6
|
+
import { Schema } from "effect";
|
|
7
|
+
import { ObservabilityQueryError } from "@relkit/observability";
|
|
8
|
+
declare const DuckdbQueryError_base: Schema.Class<DuckdbQueryError, Schema.TaggedStruct<"DuckdbQueryError", {
|
|
9
|
+
readonly code: Schema.Literals<readonly ["RELKIT_OBSERVABILITY_QUERY_INVALID", "RELKIT_OBSERVABILITY_QUERY_PROTOCOL_MISMATCH"]>;
|
|
10
|
+
readonly message: Schema.String;
|
|
11
|
+
}>, import("effect/Cause").YieldableError>;
|
|
12
|
+
/**
|
|
13
|
+
* Invalid local query input reported through the Effect error channel.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const failure = new DuckdbQueryError({
|
|
17
|
+
* code: "RELKIT_OBSERVABILITY_QUERY_INVALID", message: "Invalid cursor",
|
|
18
|
+
* });
|
|
19
|
+
*/
|
|
20
|
+
export declare class DuckdbQueryError extends DuckdbQueryError_base {
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Converts a query validation exception to a tagged Effect error.
|
|
24
|
+
*
|
|
25
|
+
* @param error - Compatibility query exception.
|
|
26
|
+
* @returns Tagged query failure with its stable public code.
|
|
27
|
+
* @example
|
|
28
|
+
* const failure = duckdbQueryError(error);
|
|
29
|
+
*/
|
|
30
|
+
export declare function duckdbQueryError(error: ObservabilityQueryError): DuckdbQueryError;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=duckdb-query-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckdb-query-error.d.ts","sourceRoot":"","sources":["../../src/local/duckdb-query-error.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;;;;;AAChE;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,qBAMpC;CAAG;AACL;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB,CAEjF"}
|