@gettersethya/mira-collection 0.1.0-alpha.2 → 0.1.0-alpha.21
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 +173 -0
- package/dist/src/collection/auth.d.ts +4 -34
- package/dist/src/collection/auth.d.ts.map +1 -1
- package/dist/src/collection/auth.js +19 -22
- package/dist/src/collection/auth.js.map +1 -1
- package/dist/src/collection/base.d.ts +7 -31
- package/dist/src/collection/base.d.ts.map +1 -1
- package/dist/src/collection/base.js +12 -15
- package/dist/src/collection/base.js.map +1 -1
- package/dist/src/collection/field.d.ts +35 -1
- package/dist/src/collection/field.d.ts.map +1 -1
- package/dist/src/collection/field.js +26 -1
- package/dist/src/collection/field.js.map +1 -1
- package/dist/src/collection/index.d.ts +5 -1
- package/dist/src/collection/index.d.ts.map +1 -1
- package/dist/src/collection/index.js.map +1 -1
- package/dist/src/collection/infer.d.ts +183 -0
- package/dist/src/collection/infer.d.ts.map +1 -0
- package/dist/src/collection/infer.js +2 -0
- package/dist/src/collection/infer.js.map +1 -0
- package/dist/src/collection/serialize.d.ts +0 -2
- package/dist/src/collection/serialize.d.ts.map +1 -1
- package/dist/src/collection/serialize.js +14 -5
- package/dist/src/collection/serialize.js.map +1 -1
- package/dist/src/collection/types.d.ts +13 -4
- package/dist/src/collection/types.d.ts.map +1 -1
- package/dist/src/collection/view.d.ts +4 -11
- package/dist/src/collection/view.d.ts.map +1 -1
- package/dist/src/collection/view.js +10 -10
- package/dist/src/collection/view.js.map +1 -1
- package/dist/src/filter/builder.d.ts.map +1 -1
- package/dist/src/filter/builder.js.map +1 -1
- package/dist/src/filter/compiler.d.ts +1 -1
- package/dist/src/filter/compiler.d.ts.map +1 -1
- package/dist/src/filter/compiler.js.map +1 -1
- package/dist/src/filter/index.d.ts +2 -2
- package/dist/src/filter/index.d.ts.map +1 -1
- package/dist/src/filter/index.js.map +1 -1
- package/dist/src/filter/types.d.ts +3 -3
- package/dist/src/filter/types.d.ts.map +1 -1
- package/dist/src/filter/types.js +32 -26
- package/dist/src/filter/types.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/rule/builder.d.ts +32 -36
- package/dist/src/rule/builder.d.ts.map +1 -1
- package/dist/src/rule/builder.js +21 -8
- package/dist/src/rule/builder.js.map +1 -1
- package/dist/src/rule/index.d.ts +1 -1
- package/dist/src/rule/index.d.ts.map +1 -1
- package/dist/src/rule/index.js +1 -1
- package/dist/src/rule/index.js.map +1 -1
- package/dist/src/rule/types.d.ts +11 -0
- package/dist/src/rule/types.d.ts.map +1 -1
- package/dist/tests/collection/auth.test.js +5 -5
- package/dist/tests/collection/auth.test.js.map +1 -1
- package/dist/tests/collection/base.test.js +4 -21
- package/dist/tests/collection/base.test.js.map +1 -1
- package/dist/tests/collection/field.test.js +25 -0
- package/dist/tests/collection/field.test.js.map +1 -1
- package/dist/tests/collection/index-type.test.js +1 -1
- package/dist/tests/collection/index-type.test.js.map +1 -1
- package/dist/tests/collection/serialize.test.js +30 -19
- package/dist/tests/collection/serialize.test.js.map +1 -1
- package/dist/tests/collection/view.test.js +1 -1
- package/dist/tests/collection/view.test.js.map +1 -1
- package/dist/tests/filter/compiler.test.js +10 -11
- package/dist/tests/filter/compiler.test.js.map +1 -1
- package/dist/tests/rule/builder.test.js +52 -0
- package/dist/tests/rule/builder.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import type { AnyCollectionDef, FieldDef, FieldsMap, InferFieldValue } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Narrows `AnyCollectionDef` to auth collections only.
|
|
4
|
+
* Used to constrain the typed `me()` overload on the Mira client so that only
|
|
5
|
+
* auth collection definitions are accepted at compile time.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // Only auth collections satisfy this constraint:
|
|
9
|
+
* const mira = createMiraClient("/")
|
|
10
|
+
* const result = await mira.me(MyAuthCollection).raw()
|
|
11
|
+
*/
|
|
12
|
+
export type AnyAuthCollectionDef = AnyCollectionDef & {
|
|
13
|
+
schema: {
|
|
14
|
+
"x-collection-kind": "auth";
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/** Resolves the mutation value type for a field: File | Blob for file fields, InferFieldValue for everything else. */
|
|
18
|
+
type MutationFieldValue<F extends FieldDef> = F["kind"] extends "file" ? File | Blob : InferFieldValue<F>;
|
|
19
|
+
/**
|
|
20
|
+
* The input type for creating/updating records when file uploads are involved.
|
|
21
|
+
* Same structure as `InferCreateInput` but file fields accept `File | Blob`
|
|
22
|
+
* instead of the server-returned URL string.
|
|
23
|
+
*
|
|
24
|
+
* When the input contains any `Blob` values, the client SDK automatically
|
|
25
|
+
* dispatches a `multipart/form-data` request instead of JSON.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // For a collection with { avatar: Field.file() }
|
|
29
|
+
* // InferMutationInput resolves avatar to: File | Blob
|
|
30
|
+
*
|
|
31
|
+
* @see InferCreateInput — create input without file upload support
|
|
32
|
+
* @see InferRecord — the corresponding output type
|
|
33
|
+
*/
|
|
34
|
+
export type InferMutationInput<F extends FieldsMap> = {
|
|
35
|
+
[K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? K : never]?: MutationFieldValue<F[K]> | null;
|
|
36
|
+
} & {
|
|
37
|
+
[K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? never : K]: MutationFieldValue<F[K]>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* The full record type returned from the server for a collection.
|
|
41
|
+
* Includes the system-managed `id`, `created`, and `updated` fields plus all
|
|
42
|
+
* user-defined fields with their correct TypeScript types.
|
|
43
|
+
*
|
|
44
|
+
* Optional fields (`required: false`) are typed as `T | null`.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* interface Post { title: Field.text(); body: Field.text({ required: false }) }
|
|
48
|
+
* // InferRecord<Post> resolves to:
|
|
49
|
+
* // { id: string; created: string; updated: string } & {
|
|
50
|
+
* // title: string;
|
|
51
|
+
* // body: string | null;
|
|
52
|
+
* // }
|
|
53
|
+
*
|
|
54
|
+
* @see InferCreateInput — input type for creating records
|
|
55
|
+
* @see InferMutationInput — mutation input type (file fields use File | Blob)
|
|
56
|
+
*/
|
|
57
|
+
export type InferRecord<F extends FieldsMap> = {
|
|
58
|
+
id: string;
|
|
59
|
+
created: string;
|
|
60
|
+
updated: string;
|
|
61
|
+
} & {
|
|
62
|
+
[K in keyof F as F[K]["kind"] extends "seqId" ? never : K]: F[K]["required"] extends false ? InferFieldValue<F[K]> | null : InferFieldValue<F[K]>;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* The input type for creating a new record.
|
|
66
|
+
* Excludes system-managed fields (`seqId`) and view-only fields.
|
|
67
|
+
* Optional fields (`required: false`) are typed as `T | null` and are
|
|
68
|
+
* themselves optional (`K?`)
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* // InferCreateInput<Post> resolves to:
|
|
72
|
+
* // { title: string; body?: string | null }
|
|
73
|
+
*
|
|
74
|
+
* @see InferRecord — the corresponding output type
|
|
75
|
+
* @see InferMutationInput — mutation variant that uses File | Blob for file fields
|
|
76
|
+
*/
|
|
77
|
+
export type InferCreateInput<F extends FieldsMap> = {
|
|
78
|
+
[K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? K : never]?: InferFieldValue<F[K]> | null;
|
|
79
|
+
} & {
|
|
80
|
+
[K in keyof F as F[K]["kind"] extends "seqId" ? never : F[K]["viewOnly"] extends true ? never : F[K]["required"] extends false ? never : K]: InferFieldValue<F[K]>;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Extracts the field names of type `relation` from a FieldsMap.
|
|
84
|
+
* Used to constrain the `expand` option in collection queries.
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* // For { author: Field.relation(Users), title: Field.text() }
|
|
88
|
+
* // RelationKeys resolves to: "author"
|
|
89
|
+
*
|
|
90
|
+
* @see WithExpand — uses RelationKeys to type the expand parameter
|
|
91
|
+
*/
|
|
92
|
+
export type RelationKeys<F extends FieldsMap> = {
|
|
93
|
+
[K in keyof F]: F[K]["kind"] extends "relation" ? K : never;
|
|
94
|
+
}[keyof F] & string;
|
|
95
|
+
/**
|
|
96
|
+
* Extracts the field names of type `file` from a FieldsMap.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* // For { avatar: Field.file(), name: Field.text() }
|
|
100
|
+
* // FileKeys resolves to: "avatar"
|
|
101
|
+
*/
|
|
102
|
+
export type FileKeys<F extends FieldsMap> = {
|
|
103
|
+
[K in keyof F]: F[K]["kind"] extends "file" ? K : never;
|
|
104
|
+
}[keyof F] & string;
|
|
105
|
+
/**
|
|
106
|
+
* Augments `InferRecord<F>` with an `expand` property containing the resolved
|
|
107
|
+
* related records for the requested relation field names.
|
|
108
|
+
*
|
|
109
|
+
* When `E` is an empty tuple (no expand requested), the result is just
|
|
110
|
+
* `InferRecord<F>` without the `expand` property.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* // WithExpand<PostFields, ["author"]> resolves to:
|
|
114
|
+
* // InferRecord<Post> & {
|
|
115
|
+
* // expand: { author: InferRecord<UserFields> }
|
|
116
|
+
* // }
|
|
117
|
+
*
|
|
118
|
+
* @see InferRecord — the base record type
|
|
119
|
+
* @see RelationKeys — used to constrain E to relation fields
|
|
120
|
+
*/
|
|
121
|
+
export type WithExpand<F extends FieldsMap, E extends ReadonlyArray<string>> = InferRecord<F> & ([
|
|
122
|
+
E
|
|
123
|
+
] extends [[]] ? {} : {
|
|
124
|
+
expand: {
|
|
125
|
+
[K in E[number] & RelationKeys<F>]: F[K] extends {
|
|
126
|
+
_target: infer Target extends AnyCollectionDef;
|
|
127
|
+
} ? InferRecord<Target["fields"]> : Record<string, unknown>;
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
/** The collection kinds understood by the client. Mirrors `CollectionSchema["x-collection-kind"]`. */
|
|
131
|
+
export type CollectionKind = "base" | "auth" | "view";
|
|
132
|
+
/** Credential fields accepted when creating an auth-collection record. */
|
|
133
|
+
export type AuthCreateExtras = {
|
|
134
|
+
password: string;
|
|
135
|
+
passwordConfirm: string;
|
|
136
|
+
emailVerified?: boolean;
|
|
137
|
+
};
|
|
138
|
+
/** Credential fields accepted when updating an auth-collection record (all optional). */
|
|
139
|
+
export type AuthUpdateCreds = {
|
|
140
|
+
password?: string;
|
|
141
|
+
passwordConfirm?: string;
|
|
142
|
+
oldPassword?: string;
|
|
143
|
+
emailVerified?: boolean;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* The create-record input, kind-aware. For auth collections it adds the credential
|
|
147
|
+
* fields (`password` + matching `passwordConfirm`) and makes `emailVerified` optional
|
|
148
|
+
* (server-controlled for non-manage callers).
|
|
149
|
+
*
|
|
150
|
+
* `password`/`passwordConfirm` never appear on `InferRecord`/`InferCreateInput`.
|
|
151
|
+
*
|
|
152
|
+
* @see AuthCreateInput — auth-specific alias
|
|
153
|
+
* @see RegisterInput — the ergonomic self-signup variant
|
|
154
|
+
*/
|
|
155
|
+
export type CreateInput<F extends FieldsMap, K extends CollectionKind = "base"> = Omit<InferMutationInput<F>, "emailVerified"> & (K extends "auth" ? AuthCreateExtras : {});
|
|
156
|
+
/**
|
|
157
|
+
* The update-record input, kind-aware. For auth collections every credential field is
|
|
158
|
+
* optional because the server enforces which are required: changing the password needs
|
|
159
|
+
* `passwordConfirm` (+ `oldPassword` unless manager/admin); changing email needs `oldPassword`.
|
|
160
|
+
*
|
|
161
|
+
* @see AuthUpdateInput — auth-specific alias
|
|
162
|
+
*/
|
|
163
|
+
export type UpdateInput<F extends FieldsMap, K extends CollectionKind = "base"> = {
|
|
164
|
+
id: string;
|
|
165
|
+
data: Partial<InferMutationInput<F>> & (K extends "auth" ? AuthUpdateCreds : {});
|
|
166
|
+
};
|
|
167
|
+
/** The create-record input for auth collections. */
|
|
168
|
+
export type AuthCreateInput<F extends FieldsMap> = CreateInput<F, "auth">;
|
|
169
|
+
/** The update-record input for auth collections. */
|
|
170
|
+
export type AuthUpdateInput<F extends FieldsMap> = UpdateInput<F, "auth">;
|
|
171
|
+
/**
|
|
172
|
+
* The input for `register()` — self-service signup on an auth collection.
|
|
173
|
+
* Requires `email`, `password`, and a matching `passwordConfirm`; all user-defined
|
|
174
|
+
* extra fields are accepted; `emailVerified` is server-controlled.
|
|
175
|
+
*/
|
|
176
|
+
export type RegisterInput<F extends FieldsMap> = Omit<InferMutationInput<F>, "email" | "emailVerified"> & {
|
|
177
|
+
email: string;
|
|
178
|
+
password: string;
|
|
179
|
+
passwordConfirm: string;
|
|
180
|
+
emailVerified?: boolean;
|
|
181
|
+
};
|
|
182
|
+
export {};
|
|
183
|
+
//# sourceMappingURL=infer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer.d.ts","sourceRoot":"","sources":["../../../src/collection/infer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infer.js","sourceRoot":"","sources":["../../../src/collection/infer.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { RuleMap } from "../rule/types.js";
|
|
2
1
|
import type { IndexEntry } from "./index-builder.js";
|
|
3
2
|
import type { CollectionSchema, FieldsMap, JsonSchemaProperty } from "./types.js";
|
|
4
3
|
/**
|
|
@@ -15,7 +14,6 @@ import type { CollectionSchema, FieldsMap, JsonSchemaProperty } from "./types.js
|
|
|
15
14
|
*/
|
|
16
15
|
export declare function toJSONSchema<K extends "base" | "auth" | "view">(kind: K, _name: string, fields: FieldsMap, options: {
|
|
17
16
|
indexes?: Array<IndexEntry<string>>;
|
|
18
|
-
rules?: RuleMap;
|
|
19
17
|
viewQuery?: string;
|
|
20
18
|
systemFields?: Record<string, JsonSchemaProperty>;
|
|
21
19
|
}): CollectionSchema & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/collection/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../../../src/collection/serialize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAY,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AA4B3F;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,EAC7D,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;CAClD,GACA,gBAAgB,GAAG;IAAE,mBAAmB,EAAE,CAAC,CAAA;CAAE,CAiD/C"}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
const ID_PROPERTY = {
|
|
2
2
|
type: "string",
|
|
3
|
-
"x-system": true
|
|
3
|
+
"x-system": true,
|
|
4
|
+
"x-generated": true
|
|
4
5
|
};
|
|
5
6
|
const SEQID_PROPERTY = {
|
|
6
7
|
type: "integer",
|
|
7
8
|
"x-kind": "seqId",
|
|
8
9
|
"x-system": true,
|
|
9
|
-
"x-hidden": true
|
|
10
|
+
"x-hidden": true,
|
|
11
|
+
"x-generated": true
|
|
10
12
|
};
|
|
11
13
|
const CREATED_PROPERTY = {
|
|
12
14
|
type: "string",
|
|
13
|
-
"x-system": true
|
|
15
|
+
"x-system": true,
|
|
16
|
+
"x-generated": true
|
|
14
17
|
};
|
|
15
18
|
const UPDATED_PROPERTY = {
|
|
16
19
|
type: "string",
|
|
17
|
-
"x-system": true
|
|
20
|
+
"x-system": true,
|
|
21
|
+
"x-generated": true
|
|
18
22
|
};
|
|
19
23
|
/**
|
|
20
24
|
* Converts a user-facing field definition map into a JSON Schema `CollectionSchema`.
|
|
@@ -57,7 +61,6 @@ export function toJSONSchema(kind, _name, fields, options) {
|
|
|
57
61
|
const result = {
|
|
58
62
|
"x-collection-kind": kind,
|
|
59
63
|
...(xIndexes.length > 0 ? { "x-indexes": xIndexes } : {}),
|
|
60
|
-
...(options.rules !== undefined ? { "x-rules": options.rules } : {}),
|
|
61
64
|
...(options.viewQuery !== undefined ? { "x-view-query": options.viewQuery } : {}),
|
|
62
65
|
type: "object",
|
|
63
66
|
properties: {
|
|
@@ -80,6 +83,12 @@ function fieldToProperty(field) {
|
|
|
80
83
|
...(field.minLength !== undefined ? { minLength: field.minLength } : {}),
|
|
81
84
|
...(field.maxLength !== undefined ? { maxLength: field.maxLength } : {})
|
|
82
85
|
};
|
|
86
|
+
case "literalText":
|
|
87
|
+
return {
|
|
88
|
+
type: "string",
|
|
89
|
+
"x-kind": "literalText",
|
|
90
|
+
...(field.literal !== undefined ? { "x-literal": field.literal } : {})
|
|
91
|
+
};
|
|
83
92
|
case "number":
|
|
84
93
|
return {
|
|
85
94
|
type: "number",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/collection/serialize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../../src/collection/serialize.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Passed to the `error` callback on `FieldDef` so callers can return
|
|
4
4
|
* a per-constraint custom message.
|
|
5
5
|
*/
|
|
6
|
-
export type ConstraintKind = "type" | "required" | "minLength" | "maxLength" | "email" | "minimum" | "maximum" | "int";
|
|
6
|
+
export type ConstraintKind = "type" | "required" | "minLength" | "maxLength" | "email" | "minimum" | "maximum" | "int" | "literal";
|
|
7
7
|
/** Constraint kinds that can fire on a `Field.text()` field. */
|
|
8
8
|
export type TextConstraintKind = "type" | "required" | "minLength" | "maxLength";
|
|
9
9
|
/** Constraint kinds that can fire on a `Field.email()` field. */
|
|
@@ -12,10 +12,12 @@ export type EmailConstraintKind = "type" | "required" | "email";
|
|
|
12
12
|
export type NumberConstraintKind = "type" | "required" | "minimum" | "maximum";
|
|
13
13
|
/** Constraint kinds that can fire on a `Field.integer()` field. */
|
|
14
14
|
export type IntegerConstraintKind = "type" | "required" | "int" | "minimum" | "maximum";
|
|
15
|
+
/** Constraint kinds that can fire on a `Field.literalText()` field. */
|
|
16
|
+
export type LiteralTextConstraintKind = "type" | "required" | "literal";
|
|
15
17
|
/** Constraint kinds that can fire on simple fields (boolean, date, json, file, relation). */
|
|
16
18
|
export type SimpleConstraintKind = "type" | "required";
|
|
17
19
|
/** Supported field kinds that define the data type of a collection field. */
|
|
18
|
-
export type FieldKind = "text" | "number" | "integer" | "boolean" | "email" | "date" | "json" | "relation" | "file" | "seqId";
|
|
20
|
+
export type FieldKind = "text" | "literalText" | "number" | "integer" | "boolean" | "email" | "date" | "json" | "relation" | "file" | "seqId";
|
|
19
21
|
/**
|
|
20
22
|
* Describes a single field in a collection definition.
|
|
21
23
|
* Created via `Field.*()` builders — never constructed directly.
|
|
@@ -42,6 +44,8 @@ export type FieldDef = {
|
|
|
42
44
|
mimeTypes?: Array<string>;
|
|
43
45
|
viewOnly?: boolean;
|
|
44
46
|
protected?: boolean;
|
|
47
|
+
literal?: ReadonlyArray<string>;
|
|
48
|
+
_literal?: ReadonlyArray<string>;
|
|
45
49
|
_target?: AnyCollectionDef;
|
|
46
50
|
error?(kind: ConstraintKind): string | undefined;
|
|
47
51
|
};
|
|
@@ -74,7 +78,7 @@ export type JsonSchemaProperty = {
|
|
|
74
78
|
maximum?: number;
|
|
75
79
|
minLength?: number;
|
|
76
80
|
maxLength?: number;
|
|
77
|
-
"x-kind"?: "date" | "json" | "relation" | "file" | "seqId";
|
|
81
|
+
"x-kind"?: "date" | "json" | "relation" | "file" | "seqId" | "literalText" | "password";
|
|
78
82
|
"x-collection"?: string;
|
|
79
83
|
"x-field"?: string;
|
|
80
84
|
"x-maxSize"?: number;
|
|
@@ -83,6 +87,8 @@ export type JsonSchemaProperty = {
|
|
|
83
87
|
"x-system"?: boolean;
|
|
84
88
|
"x-hidden"?: boolean;
|
|
85
89
|
"x-view-only"?: boolean;
|
|
90
|
+
"x-generated"?: boolean;
|
|
91
|
+
"x-literal"?: ReadonlyArray<string>;
|
|
86
92
|
};
|
|
87
93
|
/**
|
|
88
94
|
* A record mapping field names to their `FieldDef` definitions.
|
|
@@ -104,6 +110,7 @@ export type AnyCollectionDef = {
|
|
|
104
110
|
/** Maps each FieldKind to its corresponding TypeScript scalar type. */
|
|
105
111
|
export type FieldKindToType = {
|
|
106
112
|
text: string;
|
|
113
|
+
literalText: string;
|
|
107
114
|
number: number;
|
|
108
115
|
integer: number;
|
|
109
116
|
boolean: boolean;
|
|
@@ -115,5 +122,7 @@ export type FieldKindToType = {
|
|
|
115
122
|
seqId: number;
|
|
116
123
|
};
|
|
117
124
|
/** Infers the TypeScript value type for a given FieldDef. */
|
|
118
|
-
export type InferFieldValue<T extends FieldDef> =
|
|
125
|
+
export type InferFieldValue<T extends FieldDef> = T["kind"] extends "literalText" ? T extends {
|
|
126
|
+
_literal: ReadonlyArray<infer V>;
|
|
127
|
+
} ? V : string : FieldKindToType[T["kind"]];
|
|
119
128
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/collection/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,OAAO,GACP,SAAS,GACT,SAAS,GACT,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/collection/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,UAAU,GACV,WAAW,GACX,WAAW,GACX,OAAO,GACP,SAAS,GACT,SAAS,GACT,KAAK,GACL,SAAS,CAAA;AAEb,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAA;AAEhF,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAA;AAE/D,kEAAkE;AAClE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAE9E,mEAAmE;AACnE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;AAEvF,uEAAuE;AACvE,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;AAEvE,6FAA6F;AAC7F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEtD,6EAA6E;AAC7E,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,aAAa,GACb,QAAQ,GACR,SAAS,GACT,SAAS,GACT,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,OAAO,CAAA;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAC1B,KAAK,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAAA;CACjD,CAAA;AAED,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAC7C,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,QAAQ,CAAA;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAA;IAC9C,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACzB,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAA;IAClD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,GAAG,UAAU,CAAA;IACvF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CACpC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAEhD;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,EAAE,gBAAgB,CAAA;CACzB,CAAA;AAED,uEAAuE;AACvE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAM,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAI,MAAM,CAAA;IAChB,OAAO,EAAG,MAAM,CAAA;IAChB,OAAO,EAAG,OAAO,CAAA;IACjB,KAAK,EAAK,MAAM,CAAA;IAChB,IAAI,EAAM,MAAM,CAAA;IAChB,IAAI,EAAM,OAAO,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAM,MAAM,CAAA;IAChB,KAAK,EAAK,MAAM,CAAA;CACjB,CAAA;AAED,6DAA6D;AAC7D,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,IAC5C,CAAC,CAAC,MAAM,CAAC,SAAS,aAAa,GAC3B,CAAC,SAAS;IAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,MAAM,GAC3D,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { RuleBuilder } from "../rule/builder.js";
|
|
2
|
-
import type { RuleMap } from "../rule/types.js";
|
|
3
1
|
import type { CollectionSchema, FieldDef, FieldsMap } from "./types.js";
|
|
4
2
|
type ViewFields = {
|
|
5
3
|
id: FieldDef & {
|
|
@@ -9,22 +7,18 @@ type ViewFields = {
|
|
|
9
7
|
viewOnly: true;
|
|
10
8
|
};
|
|
11
9
|
};
|
|
12
|
-
type RuleCb<F extends FieldsMap> = (R: RuleBuilder<F>) => RuleMap;
|
|
13
10
|
/**
|
|
14
11
|
* Builder returned by `ViewCollection.define()`.
|
|
15
12
|
* Immediately satisfies `AnyCollectionDef` — no terminal `.build()` needed.
|
|
16
|
-
*
|
|
13
|
+
* Views have no `.indexes()` — they are not physical tables.
|
|
17
14
|
* Each chained method returns a new builder; the original is unchanged.
|
|
18
15
|
*/
|
|
19
16
|
export type ViewCollectionBuilder<F extends FieldsMap> = {
|
|
20
17
|
name: string;
|
|
21
18
|
fields: F;
|
|
22
|
-
schema: CollectionSchema
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* Pass a callback to get a typed rule builder with auto-completion over field names.
|
|
26
|
-
*/
|
|
27
|
-
rules(cb: RuleCb<F>): ViewCollectionBuilder<F>;
|
|
19
|
+
schema: CollectionSchema & {
|
|
20
|
+
"x-collection-kind": "view";
|
|
21
|
+
};
|
|
28
22
|
};
|
|
29
23
|
/** @internal Exported for testing only. */
|
|
30
24
|
export declare function validateViewFields(name: string, fields: Record<string, {
|
|
@@ -48,7 +42,6 @@ export declare function validateViewFields(name: string, fields: Record<string,
|
|
|
48
42
|
* title: Field.text().view()
|
|
49
43
|
* }
|
|
50
44
|
* )
|
|
51
|
-
* .rules((R) => ({ list: R.public(), view: R.public() }))
|
|
52
45
|
*/
|
|
53
46
|
export declare const ViewCollection: {
|
|
54
47
|
define<F extends ViewFields & FieldsMap>(name: string, query: string, fields: F): ViewCollectionBuilder<F>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/collection/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../src/collection/view.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAEvE,KAAK,UAAU,GAAG;IAChB,EAAE,EAAK,QAAQ,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAA;IACpC,KAAK,EAAE,QAAQ,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAA;CACrC,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,SAAS,IAAI;IACvD,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,CAAA;IACT,MAAM,EAAE,gBAAgB,GAAG;QAAE,mBAAmB,EAAE,MAAM,CAAA;KAAE,CAAA;CAC3D,CAAA;AAED,2CAA2C;AAC3C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAKrG;AAsBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,cAAc;WAClB,CAAC,SAAS,UAAU,GAAG,SAAS,QAC/B,MAAM,SACL,MAAM,UACL,CAAC,GACR,qBAAqB,CAAC,CAAC,CAAC;CAI5B,CAAA"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { makeRuleBuilder } from "../rule/builder.js";
|
|
2
1
|
import { toJSONSchema } from "./serialize.js";
|
|
3
2
|
/** @internal Exported for testing only. */
|
|
4
3
|
export function validateViewFields(name, fields) {
|
|
@@ -7,17 +6,19 @@ export function validateViewFields(name, fields) {
|
|
|
7
6
|
if (!fields.seqId || fields.seqId.viewOnly !== true)
|
|
8
7
|
throw new Error(`ViewCollection "${name}": "seqId" must be declared with .view()`);
|
|
9
8
|
}
|
|
10
|
-
function makeViewBuilder(name, query, fields
|
|
11
|
-
|
|
12
|
-
const schema = toJSONSchema("view", name, fields, {
|
|
13
|
-
viewQuery: query,
|
|
14
|
-
...(rules !== undefined ? { rules } : {})
|
|
15
|
-
});
|
|
9
|
+
function makeViewBuilder(name, query, fields) {
|
|
10
|
+
let _schema;
|
|
16
11
|
return {
|
|
17
12
|
name,
|
|
18
13
|
fields,
|
|
19
|
-
schema
|
|
20
|
-
|
|
14
|
+
get schema() {
|
|
15
|
+
if (_schema === undefined) {
|
|
16
|
+
_schema = toJSONSchema("view", name, fields, {
|
|
17
|
+
viewQuery: query,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return _schema;
|
|
21
|
+
},
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
/**
|
|
@@ -38,7 +39,6 @@ function makeViewBuilder(name, query, fields, rulesCb) {
|
|
|
38
39
|
* title: Field.text().view()
|
|
39
40
|
* }
|
|
40
41
|
* )
|
|
41
|
-
* .rules((R) => ({ list: R.public(), view: R.public() }))
|
|
42
42
|
*/
|
|
43
43
|
export const ViewCollection = {
|
|
44
44
|
define(name, query, fields) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/collection/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../../src/collection/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAoB7C,2CAA2C;AAC3C,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAA8C;IAC7F,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,KAAK,IAAI;QAC3C,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,uCAAuC,CAAC,CAAA;IACjF,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI;QACjD,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,0CAA0C,CAAC,CAAA;AACtF,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,KAAa,EACb,MAAS;IAET,IAAI,OAAyE,CAAA;IAC7E,OAAO;QACL,IAAI;QACJ,MAAM;QACN,IAAI,MAAM;YACR,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC3C,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,OAAQ,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,MAAM,CACJ,IAAY,EACZ,KAAa,EACb,MAAS;QAET,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAChC,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;CACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/filter/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/filter/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACxB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACxB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACxB,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,UAAU,CAAA;IACzB,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;IACxC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;IAC/B,IAAI,IAAI,UAAU,CAAA;IAClB,OAAO,IAAI,UAAU,CAAA;IACrB,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,CAAA;CAClC,CAAA;AAkBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI;IAC3D,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACrF,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAAA;IACpD,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAAA;IACnD,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAA;CAClC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,eAAO,MAAM,MAAM;IACjB,wGAAwG;YAChG,CAAC,SAAS,MAAM,QAAQ,CAAC,KAAG,kBAAkB,CAAC,OAAO,CAAC;IAG/D,uFAAuF;gBAC3E,UAAU,SAAS,UAAU,KAAG,UAAU;IAGtD,qFAAqF;eAC1E,UAAU,SAAS,UAAU,KAAG,UAAU;IAGrD,2EAA2E;gBAC/D,UAAU,KAAG,UAAU;CAEpC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/filter/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/filter/builder.ts"],"names":[],"mappings":"AAgDA,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO;QACL,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACtD,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACtD,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACpD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACtD,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACtD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAe,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACxD,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAe,EAAE,KAAK,EAAE,CAAC;QAC5C,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,UAAmB,EAAE,KAAK,EAAE,CAAC;QACnD,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC;KAC/I,CAAA;AACH,CAAC;AA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,wGAAwG;IACxG,KAAK,EAAE,CAAmB,IAAO,EAA+B,EAAE,CAChE,cAAc,CAAC,IAAI,CAAC;IAEtB,uFAAuF;IACvF,GAAG,EAAE,CAAC,IAAgB,EAAE,KAAiB,EAAc,EAAE,CACvD,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAEvC,qFAAqF;IACrF,EAAE,EAAE,CAAC,IAAgB,EAAE,KAAiB,EAAc,EAAE,CACtD,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAEtC,2EAA2E;IAC3E,GAAG,EAAE,CAAC,IAAgB,EAAc,EAAE,CACpC,CAAC,EAAE,EAAE,EAAE,KAAc,EAAE,IAAI,EAAE,CAAC;CACjC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect } from "effect";
|
|
2
|
-
import type { CollectionSchema } from "../collection/types.js";
|
|
3
2
|
import { ValidationError } from "../collection/errors.js";
|
|
3
|
+
import type { CollectionSchema } from "../collection/types.js";
|
|
4
4
|
import type { FilterNode, WhereClause } from "./types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Compile a `FilterNode` AST into a `WhereClause` (`{ sql, params }`) suitable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/filter/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/filter/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,MAAM,GACrB,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAE7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/filter/compiler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/filter/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
export type { FieldFilterOperand, FilterBuilder } from "./builder.js";
|
|
1
2
|
export { Filter } from "./builder.js";
|
|
2
3
|
export { filterNodeToWhereClause } from "./compiler.js";
|
|
3
|
-
export { FilterNodeSchema } from "./types.js";
|
|
4
|
-
export type { FilterBuilder, FieldFilterOperand } from "./builder.js";
|
|
5
4
|
export type { FilterNode, WhereClause } from "./types.js";
|
|
5
|
+
export { FilterNodeSchema } from "./types.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filter/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filter/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAC,aAAa,EAAE,MAAM,cAAc,CAAA;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/filter/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/filter/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -74,14 +74,14 @@ export type FilterNode = {
|
|
|
74
74
|
op: "not";
|
|
75
75
|
node: FilterNode;
|
|
76
76
|
};
|
|
77
|
-
declare
|
|
77
|
+
declare const _filterNodeSchema: Schema.Codec<FilterNode>;
|
|
78
78
|
/**
|
|
79
79
|
* Effect Schema for `FilterNode`. Used to decode filter query parameters
|
|
80
80
|
* from HTTP request JSON bodies.
|
|
81
81
|
*
|
|
82
82
|
* The schema is self-referential (recursive via `Schema.suspend`) to handle
|
|
83
|
-
* nested `and`/`or`/`not` nodes
|
|
84
|
-
*
|
|
83
|
+
* nested `and`/`or`/`not` nodes — the recursive `suspend` closures forward
|
|
84
|
+
* reference the `const` binding.
|
|
85
85
|
*
|
|
86
86
|
* @example
|
|
87
87
|
* import { Schema } from "effect"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjF;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACzD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAEnC,QAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAC/B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjF;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,GACzD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAA;AAEnC,QAAA,MAAM,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CA6B9C,CAAA;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAA"}
|