@vibeorm/runtime 2.1.0 → 2.2.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/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/diagnostics/index.d.ts +3 -1
- package/dist/diagnostics/index.d.ts.map +1 -1
- package/dist/diagnostics/plan.d.ts +36 -0
- package/dist/diagnostics/plan.d.ts.map +1 -1
- package/dist/diagnostics/statement-diagnostics.d.ts +172 -0
- package/dist/diagnostics/statement-diagnostics.d.ts.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +928 -365
- package/dist/index.js.map +13 -12
- package/dist/nested-writes.d.ts.map +1 -1
- package/dist/query-builder.d.ts +11 -0
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/relation-loader.d.ts +12 -0
- package/dist/relation-loader.d.ts.map +1 -1
- package/dist/relation-plan.d.ts +14 -0
- package/dist/relation-plan.d.ts.map +1 -1
- package/dist/rls-readiness.d.ts.map +1 -1
- package/dist/telemetry/statement.d.ts +7 -0
- package/dist/telemetry/statement.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/client.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import type { WriteValidators } from "./validators.ts";
|
|
|
10
10
|
import type { PolicyContextValue } from "./policy.ts";
|
|
11
11
|
import type { ScopedClientConfig } from "./scoped.ts";
|
|
12
12
|
import type { UpsertManyResult } from "./bulk-upsert.ts";
|
|
13
|
+
import type { StatementDiagnosticsOptions } from "./diagnostics/statement-diagnostics.ts";
|
|
13
14
|
import type { TelemetryOptions } from "./telemetry/types.ts";
|
|
14
15
|
/** One executed statement, reported to `ClientOptions.onQuery`. */
|
|
15
16
|
export type QueryEvent = {
|
|
@@ -38,6 +39,21 @@ export type ClientOptions = {
|
|
|
38
39
|
* only). A per-query `relationStrategy` argument overrides it.
|
|
39
40
|
*/
|
|
40
41
|
readonly relationStrategy?: RelationStrategy;
|
|
42
|
+
/**
|
|
43
|
+
* Relation loading for the `"query"` strategy. `concurrency` (default 1) is
|
|
44
|
+
* how many of ONE query's relation statements may be in flight at once:
|
|
45
|
+
* sibling relations of a level, `_count` entries and a relation's key chunks.
|
|
46
|
+
*
|
|
47
|
+
* It is a LATENCY option, worth setting against a remote database with wide
|
|
48
|
+
* include trees — 4 siblings at 5 ms of network each cost 20 ms serially and
|
|
49
|
+
* 5 ms concurrently. It is ignored inside `$transaction` (those statements
|
|
50
|
+
* share one connection and must stay ordered), and it buys nothing on an
|
|
51
|
+
* embedded adapter or when the JavaScript thread is already the ceiling.
|
|
52
|
+
* Above 1 the connection pool must be able to lend that many connections.
|
|
53
|
+
*/
|
|
54
|
+
readonly relationLoading?: {
|
|
55
|
+
readonly concurrency?: number;
|
|
56
|
+
};
|
|
41
57
|
/**
|
|
42
58
|
* Append the primary key to ORDER BY when a find has no explicit orderBy
|
|
43
59
|
* (default false) — deterministic row order at the cost of a sort. v1 parity.
|
|
@@ -64,6 +80,19 @@ export type ClientOptions = {
|
|
|
64
80
|
* but never shuts it down.
|
|
65
81
|
*/
|
|
66
82
|
readonly telemetry?: TelemetryOptions;
|
|
83
|
+
/**
|
|
84
|
+
* Statement diagnostics: a slow-statement log with an automatic `EXPLAIN`.
|
|
85
|
+
* Every statement slower than `slowerThanMs` (default 0 = all) is handed to
|
|
86
|
+
* `sink` (default: one `console.warn` line) with its duration; with
|
|
87
|
+
* `explain: "estimate"` or `"analyze"` a plan summary is attached on
|
|
88
|
+
* PostgreSQL/PGlite for read statements that ran outside a transaction —
|
|
89
|
+
* `"analyze"` EXECUTES the statement again, inside a read-only transaction
|
|
90
|
+
* on its own pooled connection, after the caller's promise has settled.
|
|
91
|
+
* `VIBEORM_DIAGNOSTICS=<explain>[:<slowerThanMs>]` (e.g. `analyze:5`)
|
|
92
|
+
* switches it on for a run; the explicit option wins field by field. Local
|
|
93
|
+
* runs only — never production.
|
|
94
|
+
*/
|
|
95
|
+
readonly diagnostics?: StatementDiagnosticsOptions;
|
|
67
96
|
/**
|
|
68
97
|
* Strict argument handling (EPIC 2), **on by default**: an explicit
|
|
69
98
|
* `undefined` anywhere in ORM argument syntax is refused BEFORE a statement
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAwB/D,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,KAAK,EAAsB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAe,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAMrF,OAAO,KAAK,EAAyC,gBAAgB,EAAa,MAAM,oBAAoB,CAAC;AAO7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAM3D,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAOtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* Module barrel — the package's root barrel re-exports from here.
|
|
6
6
|
*/
|
|
7
7
|
export { parameterTypeTag, previewOperation } from "./preview.ts";
|
|
8
|
-
export { PLAN_DEFAULTS, explainOperation, explainSql, parsePostgresPlan } from "./plan.ts";
|
|
8
|
+
export { PLAN_DEFAULTS, explainOnSession, explainOperation, explainSql, isExecutableRead, parsePostgresPlan } from "./plan.ts";
|
|
9
|
+
export { STATEMENT_DIAGNOSTICS_DEFAULTS, createStatementDiagnostics, formatStatementDiagnostic, parseDiagnosticsEnv, resolveStatementDiagnostics, summarizePlan, } from "./statement-diagnostics.ts";
|
|
10
|
+
export type { ExplainSkipReason, ObservedStatement, ResolvedStatementDiagnostics, StatementDiagnostic, StatementDiagnosticPlan, StatementDiagnosticsHook, StatementDiagnosticsOptions, StatementExplainMode, } from "./statement-diagnostics.ts";
|
|
9
11
|
export { readWorkloadStatistics } from "./workload.ts";
|
|
10
12
|
export { DIAGNOSTIC_THRESHOLDS, analyzeOperationTelemetry, recommendFromPlan } from "./insight.ts";
|
|
11
13
|
export type { DiagnosticFinding, DiagnosticFindingCode, ExplainMode, IndexCandidate, IndexFacts, OperationPreview, ParsedPlan, PlanContext, PlanNode, PreviewLimitation, PreviewLimitationCode, PreviewStatement, QueryPlanReport, SlowOperation, SuspectedPattern, TableFacts, TelemetryDiagnosticReport, WorkloadAvailability, WorkloadReport, WorkloadStatement, } from "./types.ts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/diagnostics/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/H,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,GACd,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnG,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -38,6 +38,15 @@ export declare function parsePostgresPlan(params: {
|
|
|
38
38
|
maxNodes?: number;
|
|
39
39
|
includeLiterals?: boolean;
|
|
40
40
|
}): ParsedPlan;
|
|
41
|
+
/**
|
|
42
|
+
* Is this SQL text one the executing explain mode would accept — a single
|
|
43
|
+
* statement led by `SELECT` / `WITH` / `TABLE` / `VALUES`? The same structural
|
|
44
|
+
* rule `explainSql` enforces for `analyze`, exposed for callers that must skip
|
|
45
|
+
* rather than refuse. Not a safety proof (see {@link executableReadRefusal}).
|
|
46
|
+
*/
|
|
47
|
+
export declare function isExecutableRead(params: {
|
|
48
|
+
text: string;
|
|
49
|
+
}): boolean;
|
|
41
50
|
/**
|
|
42
51
|
* Take a plan for already-rendered SQL.
|
|
43
52
|
*
|
|
@@ -64,6 +73,33 @@ export declare function explainSql(params: {
|
|
|
64
73
|
maxNodes?: number;
|
|
65
74
|
includeLiterals?: boolean;
|
|
66
75
|
}): Promise<QueryPlanReport>;
|
|
76
|
+
/**
|
|
77
|
+
* The plan-taking body of {@link explainSql}, for a caller that ALREADY owns
|
|
78
|
+
* the session: every statement here runs through `executor` on whatever
|
|
79
|
+
* connection it is bound to, and nothing here begins, commits or rolls back.
|
|
80
|
+
*
|
|
81
|
+
* The caller is responsible for the two guarantees the wrapper otherwise
|
|
82
|
+
* provides: a single connection (the context settings and the plan must share
|
|
83
|
+
* one session), and — for `analyze` — a `READ ONLY` transaction plus the
|
|
84
|
+
* read-statement check ({@link isExecutableRead}). The statement-diagnostics
|
|
85
|
+
* hook uses this inside the adapter's own `transaction()` so it never has to
|
|
86
|
+
* drive `BEGIN` through a pooled executor.
|
|
87
|
+
*/
|
|
88
|
+
export declare function explainOnSession(params: {
|
|
89
|
+
executor: SqlExecutor;
|
|
90
|
+
dialect: Dialect;
|
|
91
|
+
sql: {
|
|
92
|
+
readonly text: string;
|
|
93
|
+
readonly values: readonly unknown[];
|
|
94
|
+
};
|
|
95
|
+
mode: ExplainMode;
|
|
96
|
+
/** Warnings the wrapper already collected; the plan's own are appended. */
|
|
97
|
+
warnings?: string[];
|
|
98
|
+
rlsContext?: Readonly<Record<string, unknown>>;
|
|
99
|
+
requireRepresentativeContext?: boolean;
|
|
100
|
+
maxNodes?: number;
|
|
101
|
+
includeLiterals?: boolean;
|
|
102
|
+
}): Promise<QueryPlanReport>;
|
|
67
103
|
/**
|
|
68
104
|
* Take a plan for one ORM operation, built through the same pure planning path
|
|
69
105
|
* `previewOperation` uses. Multi-statement and data-dependent flows are refused
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/diagnostics/plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG/F,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAyB,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlG,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACwB,CAAC;AAyD/D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,UAAU,CA+Eb;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/diagnostics/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Statement diagnostics — the always-on slow-statement log with an automatic
|
|
3
|
+
* `EXPLAIN` (`ClientOptions.diagnostics`, or `VIBEORM_DIAGNOSTICS` for a run).
|
|
4
|
+
*
|
|
5
|
+
* What it is for: an agent or a developer switches ONE option on and every
|
|
6
|
+
* statement over a threshold shows up in the sink with its duration and, on
|
|
7
|
+
* PostgreSQL, a one-line plan summary. No hand replay, no separate CLI run.
|
|
8
|
+
*
|
|
9
|
+
* What it must never do:
|
|
10
|
+
*
|
|
11
|
+
* - delay the caller: the report is built after the statement resolved and
|
|
12
|
+
* the EXPLAIN runs in a macrotask AFTER the caller's promise has settled;
|
|
13
|
+
* - run on the caller's connection: the EXPLAIN takes its own pooled
|
|
14
|
+
* connection through the adapter's `transaction()`; a statement that ran
|
|
15
|
+
* inside `$transaction` is reported with `explainSkipped: "in-transaction"`;
|
|
16
|
+
* - execute a write: `analyze` re-executes the statement, so only single
|
|
17
|
+
* read statements qualify ({@link isExecutableRead}), inside a `READ ONLY`
|
|
18
|
+
* transaction — defence in depth, not a proof of safety;
|
|
19
|
+
* - fail the caller: a failing EXPLAIN or a throwing sink is reported (or
|
|
20
|
+
* swallowed), never propagated;
|
|
21
|
+
* - leave a statement unawaited: outstanding explains are tracked, and
|
|
22
|
+
* `$disconnect()` waits for them — bounded, so a wedged EXPLAIN cannot hang
|
|
23
|
+
* shutdown.
|
|
24
|
+
*/
|
|
25
|
+
import type { DatabaseAdapter } from "../adapter.ts";
|
|
26
|
+
import type { SqlDialect } from "@vibeorm/sql";
|
|
27
|
+
import type { ExplainMode, ParsedPlan } from "./types.ts";
|
|
28
|
+
/** `off` logs duration only; `estimate` adds `EXPLAIN`; `analyze` adds `EXPLAIN (ANALYZE, BUFFERS)` — which EXECUTES the statement again. */
|
|
29
|
+
export type StatementExplainMode = "off" | ExplainMode;
|
|
30
|
+
/** Why a report carries no plan. */
|
|
31
|
+
export type ExplainSkipReason = "not-a-read" | "dialect" | "in-transaction" | "error";
|
|
32
|
+
/** `ClientOptions.diagnostics`. */
|
|
33
|
+
export type StatementDiagnosticsOptions = {
|
|
34
|
+
/** Statements slower than this (ms) are reported. Default 0 = every statement. */
|
|
35
|
+
readonly slowerThanMs?: number;
|
|
36
|
+
/**
|
|
37
|
+
* `"off"` (default) logs duration only; `"estimate"` adds `EXPLAIN (FORMAT
|
|
38
|
+
* JSON)`; `"analyze"` adds `EXPLAIN (ANALYZE, BUFFERS, FORMAT JSON)` — which
|
|
39
|
+
* EXECUTES the statement again. PostgreSQL and PGlite only; read statements
|
|
40
|
+
* only; never inside a transaction.
|
|
41
|
+
*/
|
|
42
|
+
readonly explain?: StatementExplainMode;
|
|
43
|
+
/** Where reports go. Default: `console.warn`, one line per statement. */
|
|
44
|
+
readonly sink?: (report: StatementDiagnostic) => void;
|
|
45
|
+
/** Bound literals in plan text are redacted unless true. */
|
|
46
|
+
readonly showLiterals?: boolean;
|
|
47
|
+
};
|
|
48
|
+
/** The plan half of a report — the one-liner plus the parsed tree it came from. */
|
|
49
|
+
export type StatementDiagnosticPlan = {
|
|
50
|
+
/** Root node, execution ms, the hottest loop and buffers — what an agent reads first. */
|
|
51
|
+
readonly summary: string;
|
|
52
|
+
readonly nodes: ParsedPlan;
|
|
53
|
+
readonly executionMs?: number;
|
|
54
|
+
readonly planningMs?: number;
|
|
55
|
+
/** Shared buffer hits at the root, `analyze` only. */
|
|
56
|
+
readonly buffersShared?: number;
|
|
57
|
+
/** Every node that ran more than once, hottest first. */
|
|
58
|
+
readonly loops?: readonly {
|
|
59
|
+
readonly node: string;
|
|
60
|
+
readonly loops: number;
|
|
61
|
+
readonly rows: number;
|
|
62
|
+
}[];
|
|
63
|
+
};
|
|
64
|
+
/** One reported statement. */
|
|
65
|
+
export type StatementDiagnostic = {
|
|
66
|
+
readonly model: string | null;
|
|
67
|
+
readonly method: string;
|
|
68
|
+
readonly text: string;
|
|
69
|
+
readonly durationMs: number;
|
|
70
|
+
readonly parameterCount: number;
|
|
71
|
+
readonly inTransaction: boolean;
|
|
72
|
+
readonly plan?: StatementDiagnosticPlan;
|
|
73
|
+
readonly explainSkipped?: ExplainSkipReason;
|
|
74
|
+
/** The `VibeError` code when `explainSkipped` is `"error"`. */
|
|
75
|
+
readonly explainError?: string;
|
|
76
|
+
};
|
|
77
|
+
/** Every one of these is a bound or a default, not a preference. */
|
|
78
|
+
export declare const STATEMENT_DIAGNOSTICS_DEFAULTS: {
|
|
79
|
+
readonly slowerThanMs: number;
|
|
80
|
+
readonly explain: StatementExplainMode;
|
|
81
|
+
/** Server-side statement timeout for the EXPLAIN where the adapter can enforce one, and the bound `$disconnect()` waits for outstanding explains. */
|
|
82
|
+
readonly explainTimeoutMs: number;
|
|
83
|
+
/** `analyze` below this threshold re-executes (nearly) every read; the client warns once. */
|
|
84
|
+
readonly analyzeWarnBelowMs: number;
|
|
85
|
+
readonly envVariable: string;
|
|
86
|
+
};
|
|
87
|
+
/** The option with every default applied. */
|
|
88
|
+
export type ResolvedStatementDiagnostics = {
|
|
89
|
+
readonly slowerThanMs: number;
|
|
90
|
+
readonly explain: StatementExplainMode;
|
|
91
|
+
readonly sink: (report: StatementDiagnostic) => void;
|
|
92
|
+
readonly showLiterals: boolean;
|
|
93
|
+
/** True when the configuration came (at least partly) from the environment. */
|
|
94
|
+
readonly fromEnvironment: boolean;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Parse `VIBEORM_DIAGNOSTICS=<explain>[:<slowerThanMs>]` — e.g. `analyze:5`,
|
|
98
|
+
* `estimate`, `off:20`. An empty or unset variable means "not configured".
|
|
99
|
+
*
|
|
100
|
+
* @throws VibeError `VIBE_CONFIG` on anything else — a typo must not silently
|
|
101
|
+
* run a session without the diagnostics the operator thinks are on.
|
|
102
|
+
*/
|
|
103
|
+
export declare function parseDiagnosticsEnv(params: {
|
|
104
|
+
value: string | undefined;
|
|
105
|
+
}): {
|
|
106
|
+
explain: StatementExplainMode;
|
|
107
|
+
slowerThanMs: number;
|
|
108
|
+
} | undefined;
|
|
109
|
+
/** The default sink: one `console.warn` line per statement. */
|
|
110
|
+
export declare function formatStatementDiagnostic(params: {
|
|
111
|
+
report: StatementDiagnostic;
|
|
112
|
+
}): string;
|
|
113
|
+
/**
|
|
114
|
+
* Merge the explicit option over the environment switch. Returns `undefined`
|
|
115
|
+
* when neither is present — the client then installs NO hook at all.
|
|
116
|
+
*
|
|
117
|
+
* @throws VibeError `VIBE_CONFIG` on an invalid mode, threshold or env value.
|
|
118
|
+
*/
|
|
119
|
+
export declare function resolveStatementDiagnostics(params: {
|
|
120
|
+
options: StatementDiagnosticsOptions | undefined;
|
|
121
|
+
env: string | undefined;
|
|
122
|
+
}): ResolvedStatementDiagnostics | undefined;
|
|
123
|
+
/**
|
|
124
|
+
* Turn a parsed plan into the one line an agent needs: root node type,
|
|
125
|
+
* execution ms (or the planner's cost units for an estimate), the node with
|
|
126
|
+
* the most loops and its loops × rows, and shared buffer hits.
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* "Nested Loop Left Join 60.2 ms · Index Scan on OrderItem loops=12000 rows=2 · shared hit 23,647"
|
|
130
|
+
*/
|
|
131
|
+
export declare function summarizePlan(params: {
|
|
132
|
+
plan: ParsedPlan;
|
|
133
|
+
mode: ExplainMode;
|
|
134
|
+
}): StatementDiagnosticPlan;
|
|
135
|
+
/**
|
|
136
|
+
* What `runStatement` hands the hook after the adapter resolved. `values` are
|
|
137
|
+
* the RENDERED values — the same the `onQuery` observers see, before the
|
|
138
|
+
* client bound scalar lists through `adapter.formatArrayParam` — and `raw`
|
|
139
|
+
* says which adapter path ran them, because the two paths serialize a bare JS
|
|
140
|
+
* array differently (LEARNINGS: ORM-path vs raw-path array params).
|
|
141
|
+
*/
|
|
142
|
+
export type ObservedStatement = {
|
|
143
|
+
readonly model: string | null;
|
|
144
|
+
readonly method: string;
|
|
145
|
+
readonly text: string;
|
|
146
|
+
readonly values: readonly unknown[];
|
|
147
|
+
readonly durationMs: number;
|
|
148
|
+
readonly inTransaction: boolean;
|
|
149
|
+
/** True for `$queryRaw*` / `$executeRaw*` statements (the adapter's raw path). */
|
|
150
|
+
readonly raw: boolean;
|
|
151
|
+
};
|
|
152
|
+
/** One client's diagnostics hook; shared by every transaction engine. */
|
|
153
|
+
export type StatementDiagnosticsHook = {
|
|
154
|
+
readonly config: ResolvedStatementDiagnostics;
|
|
155
|
+
/** Synchronous and non-throwing: filters, reports, and schedules the EXPLAIN. */
|
|
156
|
+
readonly observe: (statement: ObservedStatement) => void;
|
|
157
|
+
/** Wait (bounded) for every scheduled EXPLAIN to settle. */
|
|
158
|
+
readonly flush: () => Promise<void>;
|
|
159
|
+
/** Scheduled explains not yet settled — for tests and shutdown accounting. */
|
|
160
|
+
readonly outstanding: () => number;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Build the hook over the POOL adapter. `adapter` must be the client's root
|
|
164
|
+
* adapter — never a transaction's — because the EXPLAIN takes its own
|
|
165
|
+
* connection through `adapter.transaction()`.
|
|
166
|
+
*/
|
|
167
|
+
export declare function createStatementDiagnostics(params: {
|
|
168
|
+
config: ResolvedStatementDiagnostics;
|
|
169
|
+
adapter: DatabaseAdapter;
|
|
170
|
+
dialect: SqlDialect;
|
|
171
|
+
}): StatementDiagnosticsHook;
|
|
172
|
+
//# sourceMappingURL=statement-diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statement-diagnostics.d.ts","sourceRoot":"","sources":["../../src/diagnostics/statement-diagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,8 +21,8 @@ export { DIALECT_CODECS, MYSQL_CODECS, POSTGRES_CODECS, SQLITE_CODECS, decodeAgg
|
|
|
21
21
|
export type { CodecTable, ScalarCodec, WireFidelity } from "./codecs.ts";
|
|
22
22
|
export { COUNT_ALIAS, buildQuery, compileOrderBy, compileSelect, compileWhere, lateralColumnAlias, resolveResultShape, } from "./query-builder.ts";
|
|
23
23
|
export type { AggregateKey, AggregateSelection, AggregateSpec, BuilderClientOptions, QueryMethod, QueryPlan, RelationStrategy, } from "./query-builder.ts";
|
|
24
|
-
export { DIAGNOSTIC_THRESHOLDS, PLAN_DEFAULTS, analyzeOperationTelemetry, explainOperation, explainSql, parameterTypeTag, parsePostgresPlan, previewOperation, readWorkloadStatistics, recommendFromPlan, } from "./diagnostics/index.ts";
|
|
25
|
-
export type { DiagnosticFinding, DiagnosticFindingCode, ExplainMode, IndexCandidate, IndexFacts, OperationPreview, ParsedPlan, PlanContext, PlanNode, PreviewLimitation, PreviewLimitationCode, PreviewStatement, QueryPlanReport, SlowOperation, SuspectedPattern, TableFacts, TelemetryDiagnosticReport, WorkloadAvailability, WorkloadReport, WorkloadStatement, } from "./diagnostics/index.ts";
|
|
24
|
+
export { DIAGNOSTIC_THRESHOLDS, PLAN_DEFAULTS, STATEMENT_DIAGNOSTICS_DEFAULTS, analyzeOperationTelemetry, createStatementDiagnostics, explainOnSession, explainOperation, explainSql, formatStatementDiagnostic, isExecutableRead, parameterTypeTag, parseDiagnosticsEnv, parsePostgresPlan, previewOperation, readWorkloadStatistics, recommendFromPlan, resolveStatementDiagnostics, summarizePlan, } from "./diagnostics/index.ts";
|
|
25
|
+
export type { DiagnosticFinding, DiagnosticFindingCode, ExplainMode, ExplainSkipReason, ObservedStatement, ResolvedStatementDiagnostics, StatementDiagnostic, StatementDiagnosticPlan, StatementDiagnosticsHook, StatementDiagnosticsOptions, StatementExplainMode, IndexCandidate, IndexFacts, OperationPreview, ParsedPlan, PlanContext, PlanNode, PreviewLimitation, PreviewLimitationCode, PreviewStatement, QueryPlanReport, SlowOperation, SuspectedPattern, TableFacts, TelemetryDiagnosticReport, WorkloadAvailability, WorkloadReport, WorkloadStatement, } from "./diagnostics/index.ts";
|
|
26
26
|
export { resolveRelationLink, resolveRelationSelection } from "./relation-plan.ts";
|
|
27
27
|
export type { RelationArgs, RelationKind, RelationLink, RelationSelection, RelationTreeNode, } from "./relation-plan.ts";
|
|
28
28
|
export { attachLateralRelations, attachRelations } from "./relation-loader.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAClF,YAAY,EACV,eAAe,EACf,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAEtB,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,mBAAmB,EACnB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIzE,OAAO,EACL,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,SAAS,EACT,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|