@vibeorm/runtime 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advisory-lock.d.ts +68 -0
- package/dist/advisory-lock.d.ts.map +1 -0
- package/dist/client.d.ts +75 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/codecs.d.ts +3 -3
- package/dist/extensions.d.ts +7 -0
- package/dist/extensions.d.ts.map +1 -1
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1174 -431
- package/dist/index.js.map +16 -11
- package/dist/policy.d.ts.map +1 -1
- package/dist/query-builder.d.ts.map +1 -1
- package/dist/read-only.d.ts +114 -0
- package/dist/read-only.d.ts.map +1 -0
- package/dist/render-cache.d.ts.map +1 -1
- package/dist/scoped.d.ts.map +1 -1
- package/dist/sql-access.d.ts +8 -0
- package/dist/sql-access.d.ts.map +1 -0
- package/dist/sql.d.ts +29 -0
- package/dist/sql.d.ts.map +1 -0
- package/dist/views.d.ts +3 -3
- package/dist/views.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/policy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAA0B,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIxF,4EAA4E;AAC5E,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAorB1D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,aAAa,CAAA;KAAE,KAAK,aAAa,CAAC;CAAE,GAAG,IAAI,CAyK9K"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../src/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The read-only client facade (`$readOnly`) and the CENTRAL access
|
|
3
|
+
* classification behind it.
|
|
4
|
+
*
|
|
5
|
+
* The consumer defect this exists to make impossible: a hand-maintained
|
|
6
|
+
* DENYLIST of write method names in the application. Every method the ORM adds
|
|
7
|
+
* is a new hole in such a list — Tripper's missed `upsertMany` and a write
|
|
8
|
+
* reached a handle that promised not to write. So the classification lives
|
|
9
|
+
* HERE, as an ALLOWLIST, and the facade is built from it: a fresh object
|
|
10
|
+
* carrying the members classified as reads, never a proxy or a prototype view
|
|
11
|
+
* over the writable client. A member nobody classified is therefore ABSENT —
|
|
12
|
+
* deny-by-default is structural, not a list someone has to remember to update.
|
|
13
|
+
*
|
|
14
|
+
* What the facade does NOT promise: it is an application-level restriction, not
|
|
15
|
+
* a database privilege. It refuses the calls VibeORM itself would issue; it
|
|
16
|
+
* cannot stop another connection, another process, or a database role with
|
|
17
|
+
* write rights. When you need the database to enforce it, use a read-only role
|
|
18
|
+
* or a read-only transaction — a separate, explicit guarantee.
|
|
19
|
+
*/
|
|
20
|
+
import { ReadOnlyClientError } from "@vibeorm/schema";
|
|
21
|
+
import type { ReadOnlyRefusalReason } from "@vibeorm/schema";
|
|
22
|
+
import type { DynamicClient } from "./client.ts";
|
|
23
|
+
import type { ClientExtensionMount } from "./extensions.ts";
|
|
24
|
+
import type { RuntimeMeta } from "./model-meta.ts";
|
|
25
|
+
/** How a delegate method touches the database. */
|
|
26
|
+
export type DelegateMethodAccess = "read" | "write";
|
|
27
|
+
/**
|
|
28
|
+
* Delegate methods a read-only client FORWARDS. This is the allowlist: a
|
|
29
|
+
* method absent from both lists below never reaches the database through the
|
|
30
|
+
* facade, whether it exists today or is added tomorrow.
|
|
31
|
+
*/
|
|
32
|
+
export declare const READ_DELEGATE_METHODS: readonly string[];
|
|
33
|
+
/**
|
|
34
|
+
* Delegate methods a read-only client REFUSES by name, so the caller gets a
|
|
35
|
+
* typed `VIBE_READ_ONLY` refusal instead of a missing-property `TypeError`.
|
|
36
|
+
* Classified as writes, not merely omitted: `upsertMany` is here because a
|
|
37
|
+
* consumer's hand-written denylist forgot it.
|
|
38
|
+
*/
|
|
39
|
+
export declare const WRITE_DELEGATE_METHODS: readonly string[];
|
|
40
|
+
/** Every classified delegate method. Unlisted ⇒ denied. */
|
|
41
|
+
export declare const DELEGATE_METHOD_ACCESS: Readonly<Record<string, DelegateMethodAccess>>;
|
|
42
|
+
/** Classify one delegate method; `undefined` means nobody classified it (denied). */
|
|
43
|
+
export declare function delegateMethodAccess(params: {
|
|
44
|
+
method: string;
|
|
45
|
+
}): DelegateMethodAccess | undefined;
|
|
46
|
+
/** How a `$`-member of the client behaves on a read-only handle. */
|
|
47
|
+
export type ClientMemberAccess =
|
|
48
|
+
/** Rebuilt by the facade so that whatever it returns is read-only too. */
|
|
49
|
+
"rebuilt"
|
|
50
|
+
/** Forwarded unchanged — it reads or subscribes, and returns no handle. */
|
|
51
|
+
| "forwarded"
|
|
52
|
+
/** A raw-SQL door: refused, because SQL text is not evidence of a read. */
|
|
53
|
+
| "raw"
|
|
54
|
+
/** Connection lifecycle, locks, identity binding: refused as control. */
|
|
55
|
+
| "control";
|
|
56
|
+
/**
|
|
57
|
+
* Every `$`-member of the client surface, classified. Kept in ONE table so a
|
|
58
|
+
* new client method has to be classified before the facade will pass it — and
|
|
59
|
+
* `read-only-classification.test.ts` fails when the runtime grows a member this
|
|
60
|
+
* table does not name.
|
|
61
|
+
*/
|
|
62
|
+
export declare const CLIENT_MEMBER_ACCESS: Readonly<Record<string, ClientMemberAccess>>;
|
|
63
|
+
/** Classify one client member; `undefined` means nobody classified it (denied). */
|
|
64
|
+
export declare function clientMemberAccess(params: {
|
|
65
|
+
member: string;
|
|
66
|
+
}): ClientMemberAccess | undefined;
|
|
67
|
+
/** The refusal a read-only handle throws. Same shape for every reason. */
|
|
68
|
+
export declare function readOnlyRefusal(params: {
|
|
69
|
+
path: string;
|
|
70
|
+
reason: ReadOnlyRefusalReason;
|
|
71
|
+
meta?: Record<string, unknown>;
|
|
72
|
+
}): ReadOnlyClientError;
|
|
73
|
+
/**
|
|
74
|
+
* How the facade inspects the un-dispatched delegate promises of the array
|
|
75
|
+
* `$transaction` form. Supplied BY `client.ts` rather than imported from it, so
|
|
76
|
+
* this module never takes a value dependency on the client (no import cycle).
|
|
77
|
+
*/
|
|
78
|
+
export type LazyOperationBridge = {
|
|
79
|
+
/** Apply the raw-SQL refusal again at actual execution, including batch retargeting. */
|
|
80
|
+
readonly restrictSql?: (params: {
|
|
81
|
+
value: unknown;
|
|
82
|
+
}) => void;
|
|
83
|
+
/** The delegate method this operation would run, or `undefined` if it is not one. */
|
|
84
|
+
readonly methodOf: (params: {
|
|
85
|
+
value: unknown;
|
|
86
|
+
}) => string | undefined;
|
|
87
|
+
/** Settle an un-dispatched operation as refused, without dispatching it. */
|
|
88
|
+
readonly refuse: (params: {
|
|
89
|
+
value: unknown;
|
|
90
|
+
reason: unknown;
|
|
91
|
+
}) => void;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Attach `$readOnly` to a built client. Called once per client build; the
|
|
95
|
+
* facade itself is built lazily on the first call, so it always sees the FINAL
|
|
96
|
+
* delegates (extension mounts, validators, policy guards).
|
|
97
|
+
*/
|
|
98
|
+
export declare function attachReadOnly(params: {
|
|
99
|
+
client: DynamicClient;
|
|
100
|
+
meta: RuntimeMeta;
|
|
101
|
+
mounts?: readonly ClientExtensionMount[];
|
|
102
|
+
operations: LazyOperationBridge;
|
|
103
|
+
}): void;
|
|
104
|
+
/**
|
|
105
|
+
* Give a DERIVED handle ($scoped, $withPolicy, $bypassPolicy, and their
|
|
106
|
+
* transaction forms) its own `$readOnly`. Without this the handle would inherit
|
|
107
|
+
* the base client's method through the prototype chain and hand back a facade
|
|
108
|
+
* over the UNSCOPED client — a scope leak wearing a read-only label.
|
|
109
|
+
*/
|
|
110
|
+
export declare function inheritReadOnly(params: {
|
|
111
|
+
from: DynamicClient;
|
|
112
|
+
to: DynamicClient;
|
|
113
|
+
}): void;
|
|
114
|
+
//# sourceMappingURL=read-only.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-only.d.ts","sourceRoot":"","sources":["../src/read-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAK9D,kDAAkD;AAClD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EASjD,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAWlD,CAAC;AAEH,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAKjF,CAAC;AAEF,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,GAAG,SAAS,CAIjG;AAED,oEAAoE;AACpE,MAAM,MAAM,kBAAkB;AAC5B,0EAA0E;AACxE,SAAS;AACX,2EAA2E;GACzE,WAAW;AACb,2EAA2E;GACzE,KAAK;AACP,yEAAyE;GACvE,SAAS,CAAC;AAEd;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAoB5E,CAAC;AAEH,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,GAAG,SAAS,CAI7F;AAcD,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,mBAAmB,CAQtB;AAID;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,wFAAwF;IACxF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5D,qFAAqF;IACrF,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACtE,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACxE,CAAC;AAwOF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACzC,UAAU,EAAE,mBAAmB,CAAC;CACjC,GAAG,IAAI,CAYP;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CASxF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-cache.d.ts","sourceRoot":"","sources":["../src/render-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"render-cache.d.ts","sourceRoot":"","sources":["../src/render-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAYH,OAAO,KAAK,EAMV,aAAa,EAEb,UAAU,EAEV,YAAY,EAGb,MAAM,cAAc,CAAC;AAItB,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;CACnD,CAAC;AAEF,2EAA2E;AAC3E,KAAK,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC;AAInC;;;;;;;;;;;;;GAaG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAE7D,wDAAwD;IACxD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAMtC;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAQtC;CACF;AAqgBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,YAAY,CAAC;IACxB,KAAK,EAAE,oBAAoB,CAAC;CAC7B,GAAG,aAAa,CAoBhB"}
|
package/dist/scoped.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scoped.d.ts","sourceRoot":"","sources":["../src/scoped.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scoped.d.ts","sourceRoot":"","sources":["../src/scoped.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Detect executable fragment handles without traversing their bound values. */
|
|
2
|
+
export declare function containsSqlFragment(value: unknown, seen?: Set<object>): boolean;
|
|
3
|
+
/** Snapshot restricted arguments so mutation after admission cannot add executable SQL. */
|
|
4
|
+
export declare function restrictedSqlArgs<T>(params: {
|
|
5
|
+
value: T;
|
|
6
|
+
path: string;
|
|
7
|
+
}): T;
|
|
8
|
+
//# sourceMappingURL=sql-access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-access.d.ts","sourceRoot":"","sources":["../src/sql-access.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,OAAO,CAM1F;AAED,2FAA2F;AAC3F,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAoB1E"}
|
package/dist/sql.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SchemaIR } from "@vibeorm/schema";
|
|
2
|
+
import type { Decoded, ResultDecoder, SqlFragment } from "@vibeorm/sql";
|
|
3
|
+
/** A projection expression paired with its explicit result contract. */
|
|
4
|
+
export type SqlColumn<T> = {
|
|
5
|
+
readonly sql: SqlFragment;
|
|
6
|
+
readonly decoder: ResultDecoder<T>;
|
|
7
|
+
};
|
|
8
|
+
/** Dynamic counterpart of the generator's concrete mapped model references. */
|
|
9
|
+
export type SqlModel = {
|
|
10
|
+
readonly table: SqlFragment;
|
|
11
|
+
readonly fields: Readonly<Record<string, SqlColumn<unknown>>>;
|
|
12
|
+
};
|
|
13
|
+
type ProjectionFields = Readonly<Record<string, SqlColumn<unknown>>>;
|
|
14
|
+
/** Infer only the declared projection's keys, never the ORM schema graph. */
|
|
15
|
+
export type SqlProjectionResult<F extends ProjectionFields> = {
|
|
16
|
+
[K in keyof F]: Decoded<F[K]["decoder"]>;
|
|
17
|
+
};
|
|
18
|
+
/** Build an aliased SELECT list and the matching decoder from one declaration. */
|
|
19
|
+
export declare function sqlProjection<F extends ProjectionFields>(params: {
|
|
20
|
+
fields: F;
|
|
21
|
+
}): SqlColumn<SqlProjectionResult<F>>;
|
|
22
|
+
/** Mapped references consumed by generated sqlModels; no adapter or client privileges are captured. */
|
|
23
|
+
export declare function createSqlModel(params: {
|
|
24
|
+
schema: SchemaIR;
|
|
25
|
+
model: string;
|
|
26
|
+
alias?: string;
|
|
27
|
+
}): SqlModel;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAExE,wEAAwE;AACxE,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAC7F,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAEtH,KAAK,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACrE,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,gBAAgB,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;CAAE,CAAC;AAC3G,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,CAAC,SAAS,gBAAgB,EAAE,MAAM,EAAE;IAAE,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAOlH;AAOD,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,QAAQ,CAkBpG"}
|
package/dist/views.d.ts
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* restriction one level down); `omit` on a view query is refused loudly
|
|
27
27
|
* (v1 stripped it silently).
|
|
28
28
|
*/
|
|
29
|
-
import type { ClientRow,
|
|
29
|
+
import type { ClientRow, ReadOnlyModelDelegate } from "./client.ts";
|
|
30
30
|
import type { RuntimeMeta } from "./model-meta.ts";
|
|
31
31
|
/**
|
|
32
32
|
* A view definition: client-name model keys → the set of visible fields.
|
|
@@ -81,7 +81,7 @@ export declare class ViewResult {
|
|
|
81
81
|
*/
|
|
82
82
|
export declare function createView(params: {
|
|
83
83
|
meta: RuntimeMeta;
|
|
84
|
-
models: Readonly<Record<string,
|
|
84
|
+
models: Readonly<Record<string, ReadOnlyModelDelegate>>;
|
|
85
85
|
name: string;
|
|
86
86
|
definition: ViewDefinition;
|
|
87
87
|
}): ViewClientShape;
|
|
@@ -92,6 +92,6 @@ export declare function createView(params: {
|
|
|
92
92
|
export declare function attachDefineView(params: {
|
|
93
93
|
client: object;
|
|
94
94
|
meta: RuntimeMeta;
|
|
95
|
-
models: Readonly<Record<string,
|
|
95
|
+
models: Readonly<Record<string, ReadOnlyModelDelegate>>;
|
|
96
96
|
}): void;
|
|
97
97
|
//# sourceMappingURL=views.d.ts.map
|
package/dist/views.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;
|
|
1
|
+
{"version":3,"file":"views.d.ts","sourceRoot":"","sources":["../src/views.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeorm/runtime",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Driver-agnostic query engine and client runtime for VibeORM v2",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"orm",
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
"bun": ">=1.2.0"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@vibeorm/schema": "2.
|
|
49
|
-
"@vibeorm/sql": "2.0
|
|
48
|
+
"@vibeorm/schema": "2.1.0",
|
|
49
|
+
"@vibeorm/sql": "2.1.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@electric-sql/pglite": "^0.5.4",
|