@vibeorm/runtime 2.0.2 → 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.
Files changed (39) hide show
  1. package/dist/advisory-lock.d.ts +68 -0
  2. package/dist/advisory-lock.d.ts.map +1 -0
  3. package/dist/client.d.ts +104 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/codecs.d.ts +3 -3
  6. package/dist/diagnostics/index.d.ts +3 -1
  7. package/dist/diagnostics/index.d.ts.map +1 -1
  8. package/dist/diagnostics/plan.d.ts +36 -0
  9. package/dist/diagnostics/plan.d.ts.map +1 -1
  10. package/dist/diagnostics/statement-diagnostics.d.ts +172 -0
  11. package/dist/diagnostics/statement-diagnostics.d.ts.map +1 -0
  12. package/dist/extensions.d.ts +7 -0
  13. package/dist/extensions.d.ts.map +1 -1
  14. package/dist/index.d.ts +11 -3
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2026 -720
  17. package/dist/index.js.map +23 -17
  18. package/dist/nested-writes.d.ts.map +1 -1
  19. package/dist/policy.d.ts.map +1 -1
  20. package/dist/query-builder.d.ts +11 -0
  21. package/dist/query-builder.d.ts.map +1 -1
  22. package/dist/read-only.d.ts +114 -0
  23. package/dist/read-only.d.ts.map +1 -0
  24. package/dist/relation-loader.d.ts +12 -0
  25. package/dist/relation-loader.d.ts.map +1 -1
  26. package/dist/relation-plan.d.ts +14 -0
  27. package/dist/relation-plan.d.ts.map +1 -1
  28. package/dist/render-cache.d.ts.map +1 -1
  29. package/dist/rls-readiness.d.ts.map +1 -1
  30. package/dist/scoped.d.ts.map +1 -1
  31. package/dist/sql-access.d.ts +8 -0
  32. package/dist/sql-access.d.ts.map +1 -0
  33. package/dist/sql.d.ts +29 -0
  34. package/dist/sql.d.ts.map +1 -0
  35. package/dist/telemetry/statement.d.ts +7 -0
  36. package/dist/telemetry/statement.d.ts.map +1 -1
  37. package/dist/views.d.ts +3 -3
  38. package/dist/views.d.ts.map +1 -1
  39. package/package.json +3 -3
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Advisory locks — locking a resource the APPLICATION defines, including one
3
+ * that has no row to lock.
4
+ *
5
+ * "Nobody else may import this supplier's price list while I am rebuilding it"
6
+ * is not a row lock: the rows do not exist yet, or they are the very rows being
7
+ * replaced. PostgreSQL's advisory locks give that mutual exclusion a name of
8
+ * your choosing (a number in a lock space you own), enforced by the database
9
+ * rather than by hope.
10
+ *
11
+ * Three deliberate limits:
12
+ *
13
+ * 1. **Transaction-scoped only.** Every lock taken here is released by COMMIT
14
+ * and by ROLLBACK, and by `ROLLBACK TO SAVEPOINT` when it was taken after
15
+ * that savepoint. The session-scoped family (`pg_advisory_lock`) is NOT
16
+ * exposed at all: on a pooled connection its lock outlives the caller and
17
+ * the next borrower inherits a lock it never asked for.
18
+ * 2. **Inside a transaction only.** Outside one, PostgreSQL's implicit
19
+ * single-statement transaction releases the lock before the next statement
20
+ * runs — the lock is taken and gone (probe-verified: a second session took
21
+ * the same key immediately afterwards). That is a silent no-op, so the call
22
+ * is refused instead.
23
+ * 3. **Numeric keys only.** No string hashing: a hash collides, and a
24
+ * collision between two unrelated resources is a deadlock or a stall nobody
25
+ * can explain from the code. Own your key space explicitly.
26
+ */
27
+ import type { AdvisoryLockMode } from "@vibeorm/schema";
28
+ import type { AdvisoryLockStatement, SqlDialect } from "@vibeorm/sql";
29
+ /**
30
+ * Which resource to lock, and how.
31
+ *
32
+ * The two key forms are DIFFERENT lock spaces in the database — holding
33
+ * `{ classId: 11, objectId: 22 }` does not block `{ key: 47244640278n }` even
34
+ * though the numbers correspond (probe-verified on PostgreSQL 18.6). Pick one
35
+ * form per resource family and stay in it.
36
+ *
37
+ * `mode` defaults to `"exclusive"` (one holder). `"shared"` lets many holders
38
+ * in at once while still excluding every exclusive holder.
39
+ */
40
+ export type AdvisoryLockOptions = {
41
+ readonly key: bigint | number;
42
+ readonly mode?: AdvisoryLockMode;
43
+ /** Never both forms: checking a union allows any member's properties unless the others forbid them. */
44
+ readonly classId?: never;
45
+ readonly objectId?: never;
46
+ } | {
47
+ readonly classId: number;
48
+ readonly objectId: number;
49
+ readonly mode?: AdvisoryLockMode;
50
+ readonly key?: never;
51
+ };
52
+ /** The two methods, for messages that must name the call the caller made. */
53
+ export type AdvisoryLockMethod = "$advisoryLock" | "$tryAdvisoryLock";
54
+ /**
55
+ * Read the public options into an AST statement, refusing anything the request
56
+ * cannot honestly deliver.
57
+ *
58
+ * Order of refusals is deliberate: what the DIALECT can never do comes first
59
+ * (a permanent property of this client), then what this CALL SITE cannot do
60
+ * (outside a transaction), then the arguments.
61
+ */
62
+ export declare function compileAdvisoryLock(params: {
63
+ dialect: SqlDialect;
64
+ method: AdvisoryLockMethod;
65
+ inTransaction: boolean;
66
+ options: unknown;
67
+ }): AdvisoryLockStatement;
68
+ //# sourceMappingURL=advisory-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisory-lock.d.ts","sourceRoot":"","sources":["../src/advisory-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAmB,qBAAqB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAIvF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,uGAAuG;IACvG,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;CACtB,CAAC;AAEN,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAqDtE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB,GAAG,qBAAqB,CA4DxB"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ import type { SqlFragment, ResultDecoder } from "@vibeorm/sql";
1
2
  import type { SchemaIR } from "@vibeorm/schema";
3
+ import type { AdvisoryLockOptions } from "./advisory-lock.ts";
2
4
  import type { DatabaseAdapter, TransactionOptions } from "./adapter.ts";
3
5
  import type { RelationStrategy } from "./query-builder.ts";
4
6
  import type { ClientComputedOptions } from "./computed.ts";
@@ -8,6 +10,7 @@ import type { WriteValidators } from "./validators.ts";
8
10
  import type { PolicyContextValue } from "./policy.ts";
9
11
  import type { ScopedClientConfig } from "./scoped.ts";
10
12
  import type { UpsertManyResult } from "./bulk-upsert.ts";
13
+ import type { StatementDiagnosticsOptions } from "./diagnostics/statement-diagnostics.ts";
11
14
  import type { TelemetryOptions } from "./telemetry/types.ts";
12
15
  /** One executed statement, reported to `ClientOptions.onQuery`. */
13
16
  export type QueryEvent = {
@@ -36,6 +39,21 @@ export type ClientOptions = {
36
39
  * only). A per-query `relationStrategy` argument overrides it.
37
40
  */
38
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
+ };
39
57
  /**
40
58
  * Append the primary key to ORDER BY when a find has no explicit orderBy
41
59
  * (default false) — deterministic row order at the cost of a sort. v1 parity.
@@ -62,6 +80,19 @@ export type ClientOptions = {
62
80
  * but never shuts it down.
63
81
  */
64
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;
65
96
  /**
66
97
  * Strict argument handling (EPIC 2), **on by default**: an explicit
67
98
  * `undefined` anywhere in ORM argument syntax is refused BEFORE a statement
@@ -116,6 +147,49 @@ export type ModelDelegate = {
116
147
  readonly aggregate: (args: ClientRow) => Promise<ClientRow>;
117
148
  readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;
118
149
  };
150
+ /**
151
+ * The read half of a model's methods — the shape a `$readOnly` handle exposes,
152
+ * and the shape `$defineView` needs (a view reads and never writes).
153
+ *
154
+ * Written out rather than derived from `ModelDelegate` with `Omit`: the
155
+ * generated `.d.ts` mirrors this member list per model, and a pre-resolved
156
+ * object type costs the consumer's tsserver nothing (constitution rule 2).
157
+ */
158
+ export type ReadOnlyModelDelegate = {
159
+ readonly findMany: (args?: ClientRow) => Promise<ClientRow[]>;
160
+ readonly findFirst: (args?: ClientRow) => Promise<ClientRow | null>;
161
+ readonly findFirstOrThrow: (args?: ClientRow) => Promise<ClientRow>;
162
+ readonly findUnique: (args: ClientRow) => Promise<ClientRow | null>;
163
+ readonly findUniqueOrThrow: (args: ClientRow) => Promise<ClientRow>;
164
+ readonly count: (args?: ClientRow) => Promise<number | Record<string, number>>;
165
+ readonly aggregate: (args: ClientRow) => Promise<ClientRow>;
166
+ readonly groupBy: (args: ClientRow) => Promise<ClientRow[]>;
167
+ };
168
+ /**
169
+ * A read-only client handle (`$readOnly`). CLOSED under every handle it can
170
+ * produce: transactions, views, scoped and policy handles built from it are
171
+ * read-only too, so no route recovers a writable client.
172
+ *
173
+ * Raw SQL, connection lifecycle and advisory locks are absent by design, and
174
+ * so is anything the access table in `read-only.ts` does not classify.
175
+ */
176
+ export type ReadOnlyClient = {
177
+ readonly $models: Readonly<Record<string, ReadOnlyModelDelegate>>;
178
+ readonly $on: (event: "query", listener: (event: QueryEvent) => void) => () => void;
179
+ /** One transaction of reads. The callback's handle is read-only; the array form takes read operations only. */
180
+ readonly $transaction: {
181
+ <T>(fn: (tx: ReadOnlyClient) => Promise<T>, options?: TransactionOptions): Promise<T>;
182
+ <T extends readonly unknown[]>(operations: readonly [...T], options?: TransactionOptions): Promise<{
183
+ -readonly [K in keyof T]: Awaited<T[K]>;
184
+ }>;
185
+ };
186
+ readonly $defineView?: DefineViewFn;
187
+ readonly $scoped?: (config: ScopedClientConfig) => ReadOnlyClient;
188
+ readonly $withPolicy?: (context: Readonly<Record<string, PolicyContextValue>>) => ReadOnlyClient;
189
+ readonly $bypassPolicy?: () => ReadOnlyClient;
190
+ /** Idempotent: restricting an already-restricted handle returns the same handle. */
191
+ readonly $readOnly: () => ReadOnlyClient;
192
+ };
119
193
  /**
120
194
  * The client. Delegates are also attached as own properties under their
121
195
  * camelCase names (`client.user.findMany()`); the type surfaces them through
@@ -148,11 +222,34 @@ export type DynamicClient = {
148
222
  }>;
149
223
  };
150
224
  /** Tagged template — interpolations become bound parameters, never text. */
225
+ readonly $querySql: <T>(params: {
226
+ query: SqlFragment;
227
+ decoder: ResultDecoder<T>;
228
+ }) => Promise<T[]>;
229
+ readonly $executeSql: (params: {
230
+ query: SqlFragment;
231
+ }) => Promise<number>;
151
232
  readonly $queryRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<ClientRow[]>;
152
233
  /** Tagged template returning the affected-row count. */
153
234
  readonly $executeRaw: (strings: TemplateStringsArray, ...values: unknown[]) => Promise<number>;
154
235
  readonly $queryRawUnsafe: (text: string, ...values: unknown[]) => Promise<ClientRow[]>;
155
236
  readonly $executeRawUnsafe: (text: string, ...values: unknown[]) => Promise<number>;
237
+ /**
238
+ * Take a transaction-scoped advisory lock on an application-defined key,
239
+ * BLOCKING until it is held. Released by commit and by rollback — there is no
240
+ * unlock call, so nothing can leak onto a pooled connection.
241
+ *
242
+ * Only inside `$transaction` (outside one the lock would be released before
243
+ * the next statement), and only on PostgreSQL/PGlite; every other dialect
244
+ * refuses with `VIBE_UNSUPPORTED_CAPABILITY`.
245
+ */
246
+ readonly $advisoryLock: (options: AdvisoryLockOptions) => Promise<void>;
247
+ /**
248
+ * Take the same lock WITHOUT waiting: `true` when it was acquired, `false`
249
+ * when someone else holds it. The transaction stays usable either way — a
250
+ * refusal here is a verdict, not an error.
251
+ */
252
+ readonly $tryAdvisoryLock: (options: AdvisoryLockOptions) => Promise<boolean>;
156
253
  readonly $connect: () => Promise<void>;
157
254
  readonly $disconnect: () => Promise<void>;
158
255
  /**
@@ -176,6 +273,13 @@ export type DynamicClient = {
176
273
  * tenant (raw SQL refused). Always attached; refuses on @@policy schemas.
177
274
  */
178
275
  readonly $scoped?: (config: ScopedClientConfig) => DynamicClient;
276
+ /**
277
+ * A read-only handle over this one, built from the runtime's ALLOWLIST of
278
+ * read methods (`read-only.ts`). Attached after construction (hence optional
279
+ * in the type); absent only on the unbound native-RLS root, which cannot
280
+ * query until `$withContext` binds an identity.
281
+ */
282
+ readonly $readOnly?: () => ReadOnlyClient;
179
283
  };
180
284
  /**
181
285
  * Build a client for a schema over an adapter.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/codecs.d.ts CHANGED
@@ -92,9 +92,9 @@ export declare function fieldEncoder(params: {
92
92
  *
93
93
  * With a `wire` declaration (board #30 — the ADAPTER's promise about what its
94
94
  * driver delivers), decoders that are provably no-ops for that wire are pruned
95
- * too ({@link decodeIsNoop}): non-list DateTime/Json/Int/Float columns on
96
- * drivers that already deliver native forms. Without a declaration the full
97
- * idempotency-guarded decoder set applies — exactly the pre-#30 behaviour.
95
+ * too ({@link decodeIsNoop}): non-list Json/Int/Float columns on drivers that
96
+ * already deliver native forms. DateTime retains finite-value validation.
97
+ * Without a declaration the full idempotency-guarded decoder set applies.
98
98
  */
99
99
  export declare function fieldDecoder(params: {
100
100
  dialect: Dialect;
@@ -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;AAC3F,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"}
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;AA4ED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;KAAE,CAAC;IACpE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gEAAgE;IAChE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yFAAyF;IACzF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,uEAAuE;IACvE,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,eAAe,CAAC,CAuG3B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,eAAe,CAAC,CAkC3B"}
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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"}
@@ -52,6 +52,13 @@ export type ClientExtensionMount = {
52
52
  /** Model name (IR name) — required for scope "model". */
53
53
  readonly model?: string;
54
54
  readonly property: string;
55
+ /**
56
+ * What a READ-ONLY client (`$readOnly`) may call here — baked from the
57
+ * extension's own classification. `true` = the mounted METHOD only reads; a
58
+ * list = the NAMESPACE members that only read. Absent means denied: an
59
+ * extension surface nobody classified never appears on a read-only client.
60
+ */
61
+ readonly readOnly?: true | readonly string[];
55
62
  readonly create: (ctx: ExtensionMountContext) => unknown;
56
63
  };
57
64
  /** Extension wiring accepted by `createClient`. */
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,9 +4,15 @@
4
4
  * the query builder and the dynamic client. The typed generated client wraps
5
5
  * this surface in P2 proper.
6
6
  */
7
+ export { sql, decode } from "@vibeorm/sql";
8
+ export type { SqlFragment, ResultDecoder, Decoded, ExtendedDateTime } from "@vibeorm/sql";
9
+ export { createSqlModel, sqlProjection } from "./sql.ts";
10
+ export type { SqlColumn, SqlModel, SqlProjectionResult } from "./sql.ts";
7
11
  export { toSqlExecutor } from "./adapter.ts";
8
12
  export { dbNow, isDbNow } from "./db-now.ts";
9
13
  export type { DbNow } from "./db-now.ts";
14
+ export { compileAdvisoryLock } from "./advisory-lock.ts";
15
+ export type { AdvisoryLockMethod, AdvisoryLockOptions } from "./advisory-lock.ts";
10
16
  export type { DatabaseAdapter, IsolationLevel, QueryResult, SqlExecutor, TransactionOptions, } from "./adapter.ts";
11
17
  export type { AdapterBudgetSupport, StatementTimeoutSupport, TransactionDeadline, TransactionDeadlineEnforcement, TransactionDeadlineSupport, } from "./adapter.ts";
12
18
  export { buildRuntimeMeta, generateCuid, generateDefaultValue, generateNanoid, generateUlid, generateUuid, getFieldMeta, getModelMeta, toClientName, } from "./model-meta.ts";
@@ -15,8 +21,8 @@ export { DIALECT_CODECS, MYSQL_CODECS, POSTGRES_CODECS, SQLITE_CODECS, decodeAgg
15
21
  export type { CodecTable, ScalarCodec, WireFidelity } from "./codecs.ts";
16
22
  export { COUNT_ALIAS, buildQuery, compileOrderBy, compileSelect, compileWhere, lateralColumnAlias, resolveResultShape, } from "./query-builder.ts";
17
23
  export type { AggregateKey, AggregateSelection, AggregateSpec, BuilderClientOptions, QueryMethod, QueryPlan, RelationStrategy, } from "./query-builder.ts";
18
- export { DIAGNOSTIC_THRESHOLDS, PLAN_DEFAULTS, analyzeOperationTelemetry, explainOperation, explainSql, parameterTypeTag, parsePostgresPlan, previewOperation, readWorkloadStatistics, recommendFromPlan, } from "./diagnostics/index.ts";
19
- 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";
20
26
  export { resolveRelationLink, resolveRelationSelection } from "./relation-plan.ts";
21
27
  export type { RelationArgs, RelationKind, RelationLink, RelationSelection, RelationTreeNode, } from "./relation-plan.ts";
22
28
  export { attachLateralRelations, attachRelations } from "./relation-loader.ts";
@@ -38,7 +44,9 @@ export type { DefineViewFn, ViewClientShape, ViewDefinition, ViewModelDelegate }
38
44
  export { assertNativeRlsReady, formatNativeRlsReport, inspectNativeRls, inspectNativeRlsTransaction } from "./rls-readiness.ts";
39
45
  export type { NativeRlsCheck, NativeRlsCheckName, NativeRlsCheckStatus, NativeRlsReport, NativeRlsUnsafeObject } from "./rls-readiness.ts";
40
46
  export { createClient } from "./client.ts";
41
- export type { BatchResult, ClientOptions, ClientRow, DynamicClient, ModelDelegate, QueryEvent, } from "./client.ts";
47
+ export type { BatchResult, ClientOptions, ClientRow, DynamicClient, ModelDelegate, QueryEvent, ReadOnlyClient, ReadOnlyModelDelegate, } from "./client.ts";
48
+ export { CLIENT_MEMBER_ACCESS, DELEGATE_METHOD_ACCESS, READ_DELEGATE_METHODS, WRITE_DELEGATE_METHODS, attachReadOnly, clientMemberAccess, delegateMethodAccess, inheritReadOnly, readOnlyRefusal, } from "./read-only.ts";
49
+ export type { ClientMemberAccess, DelegateMethodAccess, LazyOperationBridge, } from "./read-only.ts";
42
50
  export { KEYSET_MAX_PAGE_SIZE, KEYSET_TOKEN_PREFIX, KEYSET_TOKEN_VERSION, compileKeysetOrderPlan, decodeKeysetToken, encodeKeysetToken, keysetRowIsAfter, keysetRowValues, } from "./keyset.ts";
43
51
  export type { KeysetDirection, KeysetNulls, KeysetOrderInput, KeysetOrderKey, KeysetOrderPlan, KeysetTimestampPrecision, KeysetValueTag, } from "./keyset.ts";
44
52
  export { iterateKeyset } from "./keyset-iterator.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}