litedbmodel 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.
- package/README.md +7 -0
- package/dist/DBConditions.d.ts.map +1 -1
- package/dist/DBConditions.js +16 -1
- package/dist/DBConditions.js.map +1 -1
- package/dist/DBHandler.d.ts.map +1 -1
- package/dist/DBHandler.js +6 -0
- package/dist/DBHandler.js.map +1 -1
- package/dist/DBModel.d.ts +84 -2
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +312 -29
- package/dist/DBModel.js.map +1 -1
- package/dist/decorators.d.ts +52 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +127 -24
- package/dist/decorators.js.map +1 -1
- package/dist/drivers/mysql.d.ts.map +1 -1
- package/dist/drivers/mysql.js +12 -2
- package/dist/drivers/mysql.js.map +1 -1
- package/dist/drivers/postgres.d.ts.map +1 -1
- package/dist/drivers/postgres.js +13 -2
- package/dist/drivers/postgres.js.map +1 -1
- package/dist/drivers/sqlite.d.ts +2 -0
- package/dist/drivers/sqlite.d.ts.map +1 -1
- package/dist/drivers/sqlite.js +49 -4
- package/dist/drivers/sqlite.js.map +1 -1
- package/dist/index.cjs +10741 -0
- package/dist/index.d.cts +1 -0
- package/dist/scp/coltype.d.ts +108 -0
- package/dist/scp/coltype.d.ts.map +1 -1
- package/dist/scp/coltype.js +293 -6
- package/dist/scp/coltype.js.map +1 -1
- package/dist/scp/connection-routing.d.ts +312 -0
- package/dist/scp/connection-routing.d.ts.map +1 -0
- package/dist/scp/connection-routing.js +394 -0
- package/dist/scp/connection-routing.js.map +1 -0
- package/dist/scp/dbmodel-runtime.d.ts +101 -0
- package/dist/scp/dbmodel-runtime.d.ts.map +1 -0
- package/dist/scp/dbmodel-runtime.js +174 -0
- package/dist/scp/dbmodel-runtime.js.map +1 -0
- package/dist/scp/decorator-adapter.d.ts +196 -0
- package/dist/scp/decorator-adapter.d.ts.map +1 -0
- package/dist/scp/decorator-adapter.js +286 -0
- package/dist/scp/decorator-adapter.js.map +1 -0
- package/dist/scp/emit/emitter.d.ts +108 -0
- package/dist/scp/emit/emitter.d.ts.map +1 -0
- package/dist/scp/emit/emitter.js +782 -0
- package/dist/scp/emit/emitter.js.map +1 -0
- package/dist/scp/emit/endpoint.d.ts +248 -0
- package/dist/scp/emit/endpoint.d.ts.map +1 -0
- package/dist/scp/emit/endpoint.js +20 -0
- package/dist/scp/emit/endpoint.js.map +1 -0
- package/dist/scp/emit/index.d.ts +11 -0
- package/dist/scp/emit/index.d.ts.map +1 -0
- package/dist/scp/emit/index.js +13 -0
- package/dist/scp/emit/index.js.map +1 -0
- package/dist/scp/errors.d.ts +45 -1
- package/dist/scp/errors.d.ts.map +1 -1
- package/dist/scp/errors.js +47 -1
- package/dist/scp/errors.js.map +1 -1
- package/dist/scp/exec-context.d.ts +390 -0
- package/dist/scp/exec-context.d.ts.map +1 -0
- package/dist/scp/exec-context.js +540 -0
- package/dist/scp/exec-context.js.map +1 -0
- package/dist/scp/grouping.d.ts +32 -0
- package/dist/scp/grouping.d.ts.map +1 -0
- package/dist/scp/grouping.js +0 -0
- package/dist/scp/grouping.js.map +1 -0
- package/dist/scp/index.cjs +6432 -17579
- package/dist/scp/index.d.cts +1 -0
- package/dist/scp/index.d.mts +1 -0
- package/dist/scp/index.d.ts +51 -52
- package/dist/scp/index.d.ts.map +1 -1
- package/dist/scp/index.js +189 -152
- package/dist/scp/index.js.map +1 -1
- package/dist/scp/index.mjs +6067 -3659
- package/dist/scp/leaf-transport.d.ts +50 -0
- package/dist/scp/leaf-transport.d.ts.map +1 -0
- package/dist/scp/leaf-transport.js +92 -0
- package/dist/scp/leaf-transport.js.map +1 -0
- package/dist/scp/leaves.d.ts +174 -0
- package/dist/scp/leaves.d.ts.map +1 -0
- package/dist/scp/leaves.js +287 -0
- package/dist/scp/leaves.js.map +1 -0
- package/dist/scp/limit-config.d.ts +118 -0
- package/dist/scp/limit-config.d.ts.map +1 -0
- package/dist/scp/limit-config.js +126 -0
- package/dist/scp/limit-config.js.map +1 -0
- package/dist/scp/makesql/compile-relation.d.ts +49 -23
- package/dist/scp/makesql/compile-relation.d.ts.map +1 -1
- package/dist/scp/makesql/compile-relation.js +101 -76
- package/dist/scp/makesql/compile-relation.js.map +1 -1
- package/dist/scp/makesql/compile-select.d.ts +45 -10
- package/dist/scp/makesql/compile-select.d.ts.map +1 -1
- package/dist/scp/makesql/compile-select.js +50 -10
- package/dist/scp/makesql/compile-select.js.map +1 -1
- package/dist/scp/makesql/handler.d.ts +1 -1
- package/dist/scp/makesql/handler.d.ts.map +1 -1
- package/dist/scp/makesql/index.d.ts +7 -10
- package/dist/scp/makesql/index.d.ts.map +1 -1
- package/dist/scp/makesql/index.js +19 -30
- package/dist/scp/makesql/index.js.map +1 -1
- package/dist/scp/makesql/json-array.d.ts +65 -0
- package/dist/scp/makesql/json-array.d.ts.map +1 -1
- package/dist/scp/makesql/json-array.js +99 -10
- package/dist/scp/makesql/json-array.js.map +1 -1
- package/dist/scp/makesql/json-batch.d.ts.map +1 -1
- package/dist/scp/makesql/json-batch.js +21 -19
- package/dist/scp/makesql/json-batch.js.map +1 -1
- package/dist/scp/makesql/makesql.d.ts +1 -1
- package/dist/scp/makesql/makesql.d.ts.map +1 -1
- package/dist/scp/makesql/mysql-returning.d.ts +93 -0
- package/dist/scp/makesql/mysql-returning.d.ts.map +1 -0
- package/dist/scp/makesql/mysql-returning.js +215 -0
- package/dist/scp/makesql/mysql-returning.js.map +1 -0
- package/dist/scp/makesql/outtype.d.ts +75 -34
- package/dist/scp/makesql/outtype.d.ts.map +1 -1
- package/dist/scp/makesql/outtype.js +91 -118
- package/dist/scp/makesql/outtype.js.map +1 -1
- package/dist/scp/makesql/pool-executor.d.ts +135 -13
- package/dist/scp/makesql/pool-executor.d.ts.map +1 -1
- package/dist/scp/makesql/pool-executor.js +229 -21
- package/dist/scp/makesql/pool-executor.js.map +1 -1
- package/dist/scp/makesql/tx.d.ts +107 -22
- package/dist/scp/makesql/tx.d.ts.map +1 -1
- package/dist/scp/makesql/tx.js +451 -97
- package/dist/scp/makesql/tx.js.map +1 -1
- package/dist/scp/makesql/writeouttype.d.ts +7 -8
- package/dist/scp/makesql/writeouttype.d.ts.map +1 -1
- package/dist/scp/makesql/writeouttype.js +8 -7
- package/dist/scp/makesql/writeouttype.js.map +1 -1
- package/dist/scp/middleware.d.ts +287 -0
- package/dist/scp/middleware.d.ts.map +1 -0
- package/dist/scp/middleware.js +358 -0
- package/dist/scp/middleware.js.map +1 -0
- package/dist/scp/relation.d.ts +80 -9
- package/dist/scp/relation.d.ts.map +1 -1
- package/dist/scp/relation.js +198 -78
- package/dist/scp/relation.js.map +1 -1
- package/dist/scp/tx-options.d.ts +136 -0
- package/dist/scp/tx-options.d.ts.map +1 -0
- package/dist/scp/tx-options.js +184 -0
- package/dist/scp/tx-options.js.map +1 -0
- package/dist/scp/write-bundle.d.ts +131 -0
- package/dist/scp/write-bundle.d.ts.map +1 -0
- package/dist/scp/write-bundle.js +160 -0
- package/dist/scp/write-bundle.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/BENCHMARK.md +58 -56
- package/docs/benchmark-chart.svg +166 -166
- package/docs/design/phase-a-execution-context.md +139 -0
- package/package.json +16 -9
- package/dist/scp/authoring-sql.d.ts +0 -134
- package/dist/scp/authoring-sql.d.ts.map +0 -1
- package/dist/scp/authoring-sql.js +0 -191
- package/dist/scp/authoring-sql.js.map +0 -1
- package/dist/scp/authoring.d.ts +0 -155
- package/dist/scp/authoring.d.ts.map +0 -1
- package/dist/scp/authoring.js +0 -162
- package/dist/scp/authoring.js.map +0 -1
- package/dist/scp/catalog.d.ts +0 -94
- package/dist/scp/catalog.d.ts.map +0 -1
- package/dist/scp/catalog.js +0 -234
- package/dist/scp/catalog.js.map +0 -1
- package/dist/scp/codegen.d.ts +0 -189
- package/dist/scp/codegen.d.ts.map +0 -1
- package/dist/scp/codegen.js +0 -421
- package/dist/scp/codegen.js.map +0 -1
- package/dist/scp/find-filter-guard.d.ts +0 -68
- package/dist/scp/find-filter-guard.d.ts.map +0 -1
- package/dist/scp/find-filter-guard.js +0 -88
- package/dist/scp/find-filter-guard.js.map +0 -1
- package/dist/scp/guard.d.ts +0 -43
- package/dist/scp/guard.d.ts.map +0 -1
- package/dist/scp/guard.js +0 -134
- package/dist/scp/guard.js.map +0 -1
- package/dist/scp/makesql/authoring-compile.d.ts +0 -90
- package/dist/scp/makesql/authoring-compile.d.ts.map +0 -1
- package/dist/scp/makesql/authoring-compile.js +0 -494
- package/dist/scp/makesql/authoring-compile.js.map +0 -1
- package/dist/scp/makesql/ir.d.ts +0 -42
- package/dist/scp/makesql/ir.d.ts.map +0 -1
- package/dist/scp/makesql/ir.js +0 -66
- package/dist/scp/makesql/ir.js.map +0 -1
- package/dist/scp/makesql/static-bundle.d.ts +0 -187
- package/dist/scp/makesql/static-bundle.d.ts.map +0 -1
- package/dist/scp/makesql/static-bundle.js +0 -1113
- package/dist/scp/makesql/static-bundle.js.map +0 -1
- package/dist/scp/runtime.d.ts +0 -242
- package/dist/scp/runtime.d.ts.map +0 -1
- package/dist/scp/runtime.js +0 -400
- package/dist/scp/runtime.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/scp/emit/emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* litedbmodel v2 SCP — the DECLARED-ENDPOINT vocabulary (the ORM user's abstract API).
|
|
3
|
+
*
|
|
4
|
+
* This is the surface an application declares its statically-known queries on. It contains NO SQL:
|
|
5
|
+
* a predicate names a MODEL COLUMN and a PARAMETER, a relation names a `@hasMany`/`@belongsTo`/
|
|
6
|
+
* `@hasOne` property, a write names the columns it binds. The dialect SQL is produced by the
|
|
7
|
+
* emitter ({@link import('./emitter').emitBehaviorModule}) from the surviving `makesql` builders,
|
|
8
|
+
* and the parameter TYPES are resolved from the model's `@column` metadata — never hand-written.
|
|
9
|
+
*
|
|
10
|
+
* ```
|
|
11
|
+
* models + endpoints → emitBehaviorModule → SCP-restricted TS (@behavior static methods)
|
|
12
|
+
* → bc generate --from → go / rust / py / php / ts
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* Only a STATICALLY declared endpoint lowers to codegen. A query whose SHAPE is only known per
|
|
16
|
+
* request (an ad-hoc `find({ where })`) has no static SQL and runs the v1 imperative path.
|
|
17
|
+
*/
|
|
18
|
+
import type { ModelClassLike } from '../decorator-adapter';
|
|
19
|
+
/** The comparison operators a declared predicate may use (the v1 `DBConditions` comparison set). */
|
|
20
|
+
export type ComparisonOp = 'eq' | 'ne' | 'lt' | 'le' | 'gt' | 'ge' | 'like';
|
|
21
|
+
/**
|
|
22
|
+
* `<column> <op> <param>`. The parameter's TS type is resolved from the column's declared SQL type.
|
|
23
|
+
*
|
|
24
|
+
* `optional: true` makes the predicate a SKIP member: the parameter is nullable and the fragment is
|
|
25
|
+
* DROPPED when it is null. The emitter lowers that to a conditional over the two STATIC SQL texts
|
|
26
|
+
* (bc's `?:` → a Conditional node), so every branch is still fully static SQL.
|
|
27
|
+
*/
|
|
28
|
+
export interface ComparePredicate {
|
|
29
|
+
readonly kind?: 'compare';
|
|
30
|
+
readonly column: string;
|
|
31
|
+
readonly op: ComparisonOp;
|
|
32
|
+
readonly param: string;
|
|
33
|
+
readonly optional?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* `<column> IN <param>` — a whole key set bound as ONE parameter. The emitted text is the dialect's
|
|
37
|
+
* value-length-INDEPENDENT membership form (PG `= ANY(?)` with no element cast — issue #46; MySQL /
|
|
38
|
+
* SQLite the single-JSON `JSON_TABLE` / `json_each` subquery), so the SQL stays static regardless of
|
|
39
|
+
* how many keys are passed.
|
|
40
|
+
*/
|
|
41
|
+
export interface InPredicate {
|
|
42
|
+
readonly kind: 'in';
|
|
43
|
+
readonly column: string;
|
|
44
|
+
readonly param: string;
|
|
45
|
+
readonly optional?: boolean;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* `(<columns>) IN <param>` — a COMPOSITE key set bound with a CONSTANT number of parameters,
|
|
49
|
+
* whatever the tuple count. The emitted text is the dialect's static composite membership form
|
|
50
|
+
* (`tupleInPredicate`): PostgreSQL `(t.k1, t.k2) IN (SELECT * FROM UNNEST(?::T1, ?::T2))`, MySQL /
|
|
51
|
+
* SQLite ONE JSON array-of-tuples param.
|
|
52
|
+
*
|
|
53
|
+
* The bind SHAPE is the dialect's, as the builder defines it: PostgreSQL takes ONE ARRAY PARAMETER
|
|
54
|
+
* PER KEY COLUMN, named `<param>_<column>`; MySQL / SQLite take the single `<param>` array of tuples.
|
|
55
|
+
* The emitter reports the parameter list it produced, so a caller never guesses.
|
|
56
|
+
*/
|
|
57
|
+
export interface TupleInPredicate {
|
|
58
|
+
readonly kind: 'tupleIn';
|
|
59
|
+
readonly columns: readonly string[];
|
|
60
|
+
readonly param: string;
|
|
61
|
+
}
|
|
62
|
+
/** `<column> IS [NOT] NULL` — no parameter. */
|
|
63
|
+
export interface NullPredicate {
|
|
64
|
+
readonly kind: 'isNull' | 'isNotNull';
|
|
65
|
+
readonly column: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* ONE correlation term of a subquery / EXISTS predicate: the subquery column is matched either
|
|
69
|
+
* against an OUTER-query column (the `parentRef` sugar — a correlated subquery) or against a bound
|
|
70
|
+
* parameter.
|
|
71
|
+
*/
|
|
72
|
+
export type CorrelationTerm = {
|
|
73
|
+
readonly column: string;
|
|
74
|
+
readonly parentColumn: string;
|
|
75
|
+
readonly param?: undefined;
|
|
76
|
+
} | {
|
|
77
|
+
readonly column: string;
|
|
78
|
+
readonly param: string;
|
|
79
|
+
readonly parentColumn?: undefined;
|
|
80
|
+
};
|
|
81
|
+
/** `[NOT] EXISTS (SELECT 1 FROM <model> WHERE …)` — correlated via {@link CorrelationTerm}. */
|
|
82
|
+
export interface ExistsPredicate {
|
|
83
|
+
readonly kind: 'exists';
|
|
84
|
+
readonly not?: boolean;
|
|
85
|
+
/** The subquery's model (its table + column types). */
|
|
86
|
+
readonly model: ModelClassLike;
|
|
87
|
+
readonly match: readonly CorrelationTerm[];
|
|
88
|
+
}
|
|
89
|
+
/** `(<columns>) [NOT] IN (SELECT <select> FROM <model> WHERE …)` — the typed subquery predicate. */
|
|
90
|
+
export interface SubqueryPredicate {
|
|
91
|
+
readonly kind: 'subquery';
|
|
92
|
+
readonly not?: boolean;
|
|
93
|
+
/** The OUTER columns matched against the subquery projection (single or composite). */
|
|
94
|
+
readonly columns: readonly string[];
|
|
95
|
+
readonly model: ModelClassLike;
|
|
96
|
+
/** The subquery projection — same arity as {@link columns}. */
|
|
97
|
+
readonly select: readonly string[];
|
|
98
|
+
readonly match: readonly CorrelationTerm[];
|
|
99
|
+
}
|
|
100
|
+
/** A declared WHERE member. */
|
|
101
|
+
export type Predicate = ComparePredicate | InPredicate | TupleInPredicate | NullPredicate | ExistsPredicate | SubqueryPredicate;
|
|
102
|
+
/**
|
|
103
|
+
* An eagerly-selected relation: the `@hasMany` / `@belongsTo` / `@hasOne` property name, optionally
|
|
104
|
+
* with its OWN nested selections (users → posts → comments). Each level is ONE batched child query
|
|
105
|
+
* (`pluck` → `executeSQL` → `group`), never one query per parent.
|
|
106
|
+
*/
|
|
107
|
+
export type RelationSelection = string | {
|
|
108
|
+
readonly name: string;
|
|
109
|
+
readonly with?: readonly RelationSelection[];
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* A v1 QUERY view-model: the read selects FROM a derived CTE built from `query` instead of from the
|
|
113
|
+
* model's base table (`WITH <alias> AS (<query>) SELECT … FROM <alias>`), and the QUERY's own params
|
|
114
|
+
* bind FIRST (v1's param-prepend order). `columns` types the derived projection; the model supplies
|
|
115
|
+
* the column types under the CTE alias.
|
|
116
|
+
*/
|
|
117
|
+
export interface QueryView {
|
|
118
|
+
/** The derived query — raw SQL text, or a fragment carrying its own bound params. */
|
|
119
|
+
readonly query: string | {
|
|
120
|
+
readonly sql: string;
|
|
121
|
+
readonly params: readonly unknown[];
|
|
122
|
+
};
|
|
123
|
+
/** The CTE alias the read selects from (v1 `getCTEAlias` default `derived`). */
|
|
124
|
+
readonly alias?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* A declared page position (a `LIMIT` or an `OFFSET`).
|
|
128
|
+
*
|
|
129
|
+
* A plain `number` is STATIC: the count is baked into the SQL as a literal (v1's inline form), so the
|
|
130
|
+
* statement carries no extra parameter. `{ param }` makes the position an INPUT — the endpoint gains
|
|
131
|
+
* an `Int` parameter and the SQL binds it (`LIMIT ?`), which is how a runtime-paged read
|
|
132
|
+
* (`page(limit, offset)`) reaches the codegen path at all: a per-call page cannot be a literal.
|
|
133
|
+
*/
|
|
134
|
+
export type PageBound = number | {
|
|
135
|
+
readonly param: string;
|
|
136
|
+
};
|
|
137
|
+
/** A statically declared READ. */
|
|
138
|
+
export interface ReadEndpoint {
|
|
139
|
+
readonly kind: 'read';
|
|
140
|
+
/** The model whose table is read and whose `@column` metadata types the projection + params. */
|
|
141
|
+
readonly model: ModelClassLike;
|
|
142
|
+
/** The projected columns (default: every declared `@column`). */
|
|
143
|
+
readonly select?: readonly string[];
|
|
144
|
+
readonly where?: readonly Predicate[];
|
|
145
|
+
readonly order?: string;
|
|
146
|
+
/** A static row cap (inlined), or `{ param }` for a bound one — see {@link PageBound}. */
|
|
147
|
+
readonly limit?: PageBound;
|
|
148
|
+
/** A static start offset (inlined), or `{ param }` for a bound one — see {@link PageBound}. */
|
|
149
|
+
readonly offset?: PageBound;
|
|
150
|
+
/**
|
|
151
|
+
* Take a ROW LOCK on the selected rows (the SELECT's locking clause): `'update'` ⇒ ` FOR UPDATE`
|
|
152
|
+
* (exclusive — the read-modify-write pattern), `'share'` ⇒ ` FOR SHARE` (shared — concurrent
|
|
153
|
+
* readers coexist, writers block). Rendered by the ONE {@link import('../makesql/compile-select').lockTail}
|
|
154
|
+
* tail the v1 imperative builder also uses, so the declared read and an ad-hoc one lock identically.
|
|
155
|
+
*
|
|
156
|
+
* A locking read only has meaning inside a transaction, and only PostgreSQL / MySQL parse the
|
|
157
|
+
* clause — SQLite has no per-statement row lock (it serializes writers on the connection).
|
|
158
|
+
*/
|
|
159
|
+
readonly lock?: 'update' | 'share';
|
|
160
|
+
/** Eagerly-selected relations (batched, N+1-free). */
|
|
161
|
+
readonly with?: readonly RelationSelection[];
|
|
162
|
+
/** #98 — read from a derived CTE (a QUERY view-model) instead of the base table. */
|
|
163
|
+
readonly view?: QueryView;
|
|
164
|
+
/**
|
|
165
|
+
* Read the row set in EXACT-integer mode (`bigint` port). Set when the projection carries a
|
|
166
|
+
* 64-bit column so the driver hands over exact values rather than rounded doubles.
|
|
167
|
+
*/
|
|
168
|
+
readonly bigint?: boolean;
|
|
169
|
+
}
|
|
170
|
+
/** `column ← param` for a write's VALUES / SET list. */
|
|
171
|
+
export interface ValueBinding {
|
|
172
|
+
readonly column: string;
|
|
173
|
+
readonly param: string;
|
|
174
|
+
}
|
|
175
|
+
/** A statically declared single-row INSERT (optionally an upsert). */
|
|
176
|
+
export interface CreateEndpoint {
|
|
177
|
+
readonly kind: 'create';
|
|
178
|
+
readonly model: ModelClassLike;
|
|
179
|
+
readonly values: readonly ValueBinding[];
|
|
180
|
+
/** RETURNING projection (the emitted method's row type). */
|
|
181
|
+
readonly returning?: readonly string[];
|
|
182
|
+
/** Upsert conflict target columns. */
|
|
183
|
+
readonly onConflict?: readonly string[];
|
|
184
|
+
readonly onConflictAction?: 'update' | 'ignore';
|
|
185
|
+
}
|
|
186
|
+
/** A statically declared UPDATE. */
|
|
187
|
+
export interface UpdateEndpoint {
|
|
188
|
+
readonly kind: 'update';
|
|
189
|
+
readonly model: ModelClassLike;
|
|
190
|
+
readonly set: readonly ValueBinding[];
|
|
191
|
+
readonly where: readonly Predicate[];
|
|
192
|
+
readonly returning?: readonly string[];
|
|
193
|
+
}
|
|
194
|
+
/** A statically declared DELETE. */
|
|
195
|
+
export interface DeleteEndpoint {
|
|
196
|
+
readonly kind: 'delete';
|
|
197
|
+
readonly model: ModelClassLike;
|
|
198
|
+
readonly where: readonly Predicate[];
|
|
199
|
+
readonly returning?: readonly string[];
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* A statically declared BATCH write — ONE statement for N records.
|
|
203
|
+
*
|
|
204
|
+
* The bind SHAPE is the dialect's, exactly as the surviving batch builders define it (there is no
|
|
205
|
+
* second builder): MySQL / SQLite expand ONE JSON param server-side (`JSON_TABLE` / `json_each`), so
|
|
206
|
+
* the endpoint takes ONE record-array parameter; PostgreSQL uses `UNNEST(?::t1[], ?::t2[], …)`, which
|
|
207
|
+
* binds ONE ARRAY PER COLUMN, so the endpoint takes one array parameter per column. The emitter
|
|
208
|
+
* reports the parameter list it produced, so a caller never guesses.
|
|
209
|
+
*/
|
|
210
|
+
export interface CreateManyEndpoint {
|
|
211
|
+
readonly kind: 'createMany';
|
|
212
|
+
readonly model: ModelClassLike;
|
|
213
|
+
/** The inserted columns. */
|
|
214
|
+
readonly columns: readonly string[];
|
|
215
|
+
/** The record-array parameter name (MySQL/SQLite). PG derives one array param per column. */
|
|
216
|
+
readonly param: string;
|
|
217
|
+
readonly onConflict?: readonly string[];
|
|
218
|
+
readonly onConflictAction?: 'update' | 'ignore';
|
|
219
|
+
/** RETURNING projection (the emitted method's row type). Every written row comes back. */
|
|
220
|
+
readonly returning?: readonly string[];
|
|
221
|
+
}
|
|
222
|
+
/** A statically declared batch UPDATE (`updateMany`) — see {@link CreateManyEndpoint} for the bind shape. */
|
|
223
|
+
export interface UpdateManyEndpoint {
|
|
224
|
+
readonly kind: 'updateMany';
|
|
225
|
+
readonly model: ModelClassLike;
|
|
226
|
+
/** The match key columns. */
|
|
227
|
+
readonly keyColumns: readonly string[];
|
|
228
|
+
/** The columns each record sets. */
|
|
229
|
+
readonly columns: readonly string[];
|
|
230
|
+
readonly param: string;
|
|
231
|
+
/** RETURNING projection (the emitted method's row type). Every written row comes back. */
|
|
232
|
+
readonly returning?: readonly string[];
|
|
233
|
+
}
|
|
234
|
+
/** A statically declared batch DELETE (`deleteMany`) — a key-set DELETE bound as ONE key array. */
|
|
235
|
+
export interface DeleteManyEndpoint {
|
|
236
|
+
readonly kind: 'deleteMany';
|
|
237
|
+
readonly model: ModelClassLike;
|
|
238
|
+
/** The key column whose value set is deleted. */
|
|
239
|
+
readonly keyColumn: string;
|
|
240
|
+
readonly param: string;
|
|
241
|
+
/** RETURNING projection (the emitted method's row type). Every written row comes back. */
|
|
242
|
+
readonly returning?: readonly string[];
|
|
243
|
+
}
|
|
244
|
+
/** Every declared endpoint kind. */
|
|
245
|
+
export type Endpoint = ReadEndpoint | CreateEndpoint | UpdateEndpoint | DeleteEndpoint | CreateManyEndpoint | UpdateManyEndpoint | DeleteManyEndpoint;
|
|
246
|
+
/** A named set of declared endpoints — one emitted `@behavior` class. */
|
|
247
|
+
export type EndpointSet = Readonly<Record<string, Endpoint>>;
|
|
248
|
+
//# sourceMappingURL=endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../../src/scp/emit/endpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* litedbmodel v2 SCP — the DECLARED-ENDPOINT vocabulary (the ORM user's abstract API).
|
|
4
|
+
*
|
|
5
|
+
* This is the surface an application declares its statically-known queries on. It contains NO SQL:
|
|
6
|
+
* a predicate names a MODEL COLUMN and a PARAMETER, a relation names a `@hasMany`/`@belongsTo`/
|
|
7
|
+
* `@hasOne` property, a write names the columns it binds. The dialect SQL is produced by the
|
|
8
|
+
* emitter ({@link import('./emitter').emitBehaviorModule}) from the surviving `makesql` builders,
|
|
9
|
+
* and the parameter TYPES are resolved from the model's `@column` metadata — never hand-written.
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* models + endpoints → emitBehaviorModule → SCP-restricted TS (@behavior static methods)
|
|
13
|
+
* → bc generate --from → go / rust / py / php / ts
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Only a STATICALLY declared endpoint lowers to codegen. A query whose SHAPE is only known per
|
|
17
|
+
* request (an ad-hoc `find({ where })`) has no static SQL and runs the v1 imperative path.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
//# sourceMappingURL=endpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/scp/emit/endpoint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* litedbmodel v2 SCP — the decorator → SCP lowering (CLAUDE.md §1's middle step).
|
|
3
|
+
*
|
|
4
|
+
* `./endpoint` is the ORM user's abstract declaration vocabulary (no SQL); `./emitter` lowers a set of
|
|
5
|
+
* those declarations, plus the model's `@column` / `@hasMany` metadata, into the SCP-restricted TS that
|
|
6
|
+
* `bc generate --from` reads.
|
|
7
|
+
*/
|
|
8
|
+
export { emitBehaviorModule } from './emitter';
|
|
9
|
+
export type { EmitSpec, EmitResult, EmittedEndpoint } from './emitter';
|
|
10
|
+
export type { ComparisonOp, ComparePredicate, InPredicate, TupleInPredicate, NullPredicate, CorrelationTerm, ExistsPredicate, SubqueryPredicate, Predicate, RelationSelection, QueryView, PageBound, ReadEndpoint, ValueBinding, CreateEndpoint, UpdateEndpoint, DeleteEndpoint, CreateManyEndpoint, UpdateManyEndpoint, DeleteManyEndpoint, Endpoint, EndpointSet, } from './endpoint';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scp/emit/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACvE,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,SAAS,EACT,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,WAAW,GACZ,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* litedbmodel v2 SCP — the decorator → SCP lowering (CLAUDE.md §1's middle step).
|
|
4
|
+
*
|
|
5
|
+
* `./endpoint` is the ORM user's abstract declaration vocabulary (no SQL); `./emitter` lowers a set of
|
|
6
|
+
* those declarations, plus the model's `@column` / `@hasMany` metadata, into the SCP-restricted TS that
|
|
7
|
+
* `bc generate --from` reads.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.emitBehaviorModule = void 0;
|
|
11
|
+
var emitter_1 = require("./emitter");
|
|
12
|
+
Object.defineProperty(exports, "emitBehaviorModule", { enumerable: true, get: function () { return emitter_1.emitBehaviorModule; } });
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scp/emit/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA"}
|
package/dist/scp/errors.d.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* unrecognized SQLite code maps to `kind: 'driver_error'` with `policy: 'fail'` — loud, and
|
|
12
12
|
* carrying the original code + message for diagnosis.
|
|
13
13
|
*/
|
|
14
|
-
import type { PolicyKind } from 'behavior-contracts';
|
|
14
|
+
import type { PolicyKind } from 'behavior-contracts/runtime';
|
|
15
15
|
/** The SCP failure kinds litedbmodel maps SQL driver errors to (spec §11 item 5). */
|
|
16
16
|
export type SqlFailureKind = 'constraint_violation' | 'foreign_key_violation' | 'retryable' | 'driver_error';
|
|
17
17
|
/**
|
|
@@ -25,6 +25,50 @@ export declare class SqlFailure extends Error {
|
|
|
25
25
|
readonly sqliteCode: string | undefined;
|
|
26
26
|
constructor(kind: SqlFailureKind, policy: PolicyKind, sqliteCode: string | undefined, message: string);
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* The context a {@link LimitExceededError} was raised from (spec §E-2 / v1 `LimitExceededError`).
|
|
30
|
+
* - `'find'` — a top-level read (find/read) exceeded `findHardLimit`. The read injects
|
|
31
|
+
* `LIMIT hardLimit + 1` when the author set no explicit limit, so the reported `count` is the
|
|
32
|
+
* N+1 fetch size: the TOTAL is only known to be MORE than `hardLimit`.
|
|
33
|
+
* - `'relation'` — a hasMany relation batch exceeded `hasManyHardLimit`. The batch is fetched in
|
|
34
|
+
* full (no N+1), so the reported `count` is the EXACT batch total.
|
|
35
|
+
*/
|
|
36
|
+
export type LimitExceededContext = 'find' | 'relation';
|
|
37
|
+
/**
|
|
38
|
+
* The SHARED cross-language runaway-prevention contract (Phase E-2, epic #74; v1 parity —
|
|
39
|
+
* `DBModel` find hard-limit + `_selectForRelation`). Thrown by the TS runtime post-fetch guard when
|
|
40
|
+
* a read / relation batch returns MORE rows than the configured hard limit, so an accidental
|
|
41
|
+
* missing-WHERE / N+1 pattern fails LOUD instead of loading an unbounded result.
|
|
42
|
+
*
|
|
43
|
+
* This is the REFERENCE error shape the rust/go/py/php ports (#100-103) mirror byte-for-byte:
|
|
44
|
+
* - fields: `limit` (the cap), `count` (rows fetched — see {@link LimitExceededContext}),
|
|
45
|
+
* `context` (`'find'` | `'relation'`), `model` (the read/parent model), `relation?`
|
|
46
|
+
* (the relation name, `'relation'` context only);
|
|
47
|
+
* - message: `Query limit exceeded: <where> returned <count-phrase> records, but limit is
|
|
48
|
+
* <limit>. This usually indicates a missing WHERE clause or an N+1 query pattern. Set a higher
|
|
49
|
+
* limit or use pagination.` — `find` reports `more than <limit>` (N+1 fetch), `relation`
|
|
50
|
+
* reports the exact `<count>`.
|
|
51
|
+
*
|
|
52
|
+
* NOT a {@link SqlFailure}: a runaway guard is a litedbmodel-level policy error, not a mapped driver
|
|
53
|
+
* failure, and it carries no `SQLITE_*` code (so `reErrorToSqlFailure` propagates it unchanged).
|
|
54
|
+
*/
|
|
55
|
+
export declare class LimitExceededError extends Error {
|
|
56
|
+
readonly limit: number;
|
|
57
|
+
/**
|
|
58
|
+
* Rows fetched. `find` context: the `LIMIT hardLimit + 1` fetch size (the true total is only
|
|
59
|
+
* known to EXCEED `limit`). `relation` context: the EXACT batch-total row count.
|
|
60
|
+
*/
|
|
61
|
+
readonly count: number;
|
|
62
|
+
readonly context: LimitExceededContext;
|
|
63
|
+
readonly model?: string | undefined;
|
|
64
|
+
readonly relation?: string | undefined;
|
|
65
|
+
constructor(limit: number,
|
|
66
|
+
/**
|
|
67
|
+
* Rows fetched. `find` context: the `LIMIT hardLimit + 1` fetch size (the true total is only
|
|
68
|
+
* known to EXCEED `limit`). `relation` context: the EXACT batch-total row count.
|
|
69
|
+
*/
|
|
70
|
+
count: number, context: LimitExceededContext, model?: string | undefined, relation?: string | undefined);
|
|
71
|
+
}
|
|
28
72
|
/**
|
|
29
73
|
* Map a caught driver error to an {@link SqlFailure}. The `SQLITE_CONSTRAINT_*` family maps
|
|
30
74
|
* to constraint / FK kinds (Policy `fail` — a data conflict is not retryable); the
|
package/dist/scp/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/scp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/scp/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,qFAAqF;AACrF,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,WAAW,GACX,cAAc,CAAC;AAEnB;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IAEjC,QAAQ,CAAC,IAAI,EAAE,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,UAAU;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;gBAF9B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,GAAG,SAAS,EACvC,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAEzC,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM;IACtB,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM;gBARjB,KAAK,EAAE,MAAM;IACtB;;;OAGG;IACM,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,EAC7B,KAAK,CAAC,EAAE,MAAM,YAAA,EACd,QAAQ,CAAC,EAAE,MAAM,YAAA;CAc7B;AAYD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,UAAU,CAqBrD"}
|
package/dist/scp/errors.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* carrying the original code + message for diagnosis.
|
|
14
14
|
*/
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.SqlFailure = void 0;
|
|
16
|
+
exports.LimitExceededError = exports.SqlFailure = void 0;
|
|
17
17
|
exports.mapSqliteError = mapSqliteError;
|
|
18
18
|
/**
|
|
19
19
|
* A mapped SCP failure: the SCP `kind`, the honored bc `PolicyKind`, the original SQLite
|
|
@@ -33,6 +33,52 @@ class SqlFailure extends Error {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
exports.SqlFailure = SqlFailure;
|
|
36
|
+
/**
|
|
37
|
+
* The SHARED cross-language runaway-prevention contract (Phase E-2, epic #74; v1 parity —
|
|
38
|
+
* `DBModel` find hard-limit + `_selectForRelation`). Thrown by the TS runtime post-fetch guard when
|
|
39
|
+
* a read / relation batch returns MORE rows than the configured hard limit, so an accidental
|
|
40
|
+
* missing-WHERE / N+1 pattern fails LOUD instead of loading an unbounded result.
|
|
41
|
+
*
|
|
42
|
+
* This is the REFERENCE error shape the rust/go/py/php ports (#100-103) mirror byte-for-byte:
|
|
43
|
+
* - fields: `limit` (the cap), `count` (rows fetched — see {@link LimitExceededContext}),
|
|
44
|
+
* `context` (`'find'` | `'relation'`), `model` (the read/parent model), `relation?`
|
|
45
|
+
* (the relation name, `'relation'` context only);
|
|
46
|
+
* - message: `Query limit exceeded: <where> returned <count-phrase> records, but limit is
|
|
47
|
+
* <limit>. This usually indicates a missing WHERE clause or an N+1 query pattern. Set a higher
|
|
48
|
+
* limit or use pagination.` — `find` reports `more than <limit>` (N+1 fetch), `relation`
|
|
49
|
+
* reports the exact `<count>`.
|
|
50
|
+
*
|
|
51
|
+
* NOT a {@link SqlFailure}: a runaway guard is a litedbmodel-level policy error, not a mapped driver
|
|
52
|
+
* failure, and it carries no `SQLITE_*` code (so `reErrorToSqlFailure` propagates it unchanged).
|
|
53
|
+
*/
|
|
54
|
+
class LimitExceededError extends Error {
|
|
55
|
+
limit;
|
|
56
|
+
count;
|
|
57
|
+
context;
|
|
58
|
+
model;
|
|
59
|
+
relation;
|
|
60
|
+
constructor(limit,
|
|
61
|
+
/**
|
|
62
|
+
* Rows fetched. `find` context: the `LIMIT hardLimit + 1` fetch size (the true total is only
|
|
63
|
+
* known to EXCEED `limit`). `relation` context: the EXACT batch-total row count.
|
|
64
|
+
*/
|
|
65
|
+
count, context, model, relation) {
|
|
66
|
+
const where = context === 'find'
|
|
67
|
+
? `find() on ${model ?? 'unknown'}`
|
|
68
|
+
: `relation '${relation ?? 'unknown'}' on ${model ?? 'unknown'}`;
|
|
69
|
+
const countPhrase = context === 'find' ? `more than ${limit}` : `${count}`;
|
|
70
|
+
super(`Query limit exceeded: ${where} returned ${countPhrase} records, ` +
|
|
71
|
+
`but limit is ${limit}. This usually indicates a missing WHERE clause or ` +
|
|
72
|
+
`an N+1 query pattern. Set a higher limit or use pagination.`);
|
|
73
|
+
this.limit = limit;
|
|
74
|
+
this.count = count;
|
|
75
|
+
this.context = context;
|
|
76
|
+
this.model = model;
|
|
77
|
+
this.relation = relation;
|
|
78
|
+
this.name = 'LimitExceededError';
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.LimitExceededError = LimitExceededError;
|
|
36
82
|
/** True if `e` looks like a better-sqlite3 `SqliteError` (has a `SQLITE_*` string `code`). */
|
|
37
83
|
function isSqliteError(e) {
|
|
38
84
|
return (typeof e === 'object' &&
|
package/dist/scp/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/scp/errors.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/scp/errors.ts"],"names":[],"mappings":"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"}
|