@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
package/dist/src/filter/types.js
CHANGED
|
@@ -1,35 +1,41 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
}),
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
2
|
+
const _filterNodeSchema = Schema.Union([
|
|
3
|
+
Schema.Struct({
|
|
4
|
+
op: Schema.Literals(["eq", "neq", "gt", "gte", "lt", "lte"]),
|
|
5
|
+
field: Schema.String,
|
|
6
|
+
value: Schema.Unknown
|
|
7
|
+
}),
|
|
8
|
+
Schema.Struct({
|
|
9
|
+
op: Schema.Literal("in"),
|
|
10
|
+
field: Schema.String,
|
|
11
|
+
values: Schema.Array(Schema.Unknown)
|
|
12
|
+
}),
|
|
13
|
+
Schema.Struct({
|
|
14
|
+
op: Schema.Literal("like"),
|
|
15
|
+
field: Schema.String,
|
|
16
|
+
value: Schema.String
|
|
17
|
+
}),
|
|
18
|
+
Schema.Struct({
|
|
19
|
+
op: Schema.Literals(["null", "not_null"]),
|
|
20
|
+
field: Schema.String
|
|
21
|
+
}),
|
|
22
|
+
Schema.Struct({
|
|
23
|
+
op: Schema.Literals(["and", "or"]),
|
|
24
|
+
left: Schema.suspend(() => _filterNodeSchema),
|
|
25
|
+
right: Schema.suspend(() => _filterNodeSchema)
|
|
26
|
+
}),
|
|
27
|
+
Schema.Struct({
|
|
28
|
+
op: Schema.Literal("not"),
|
|
29
|
+
node: Schema.suspend(() => _filterNodeSchema)
|
|
30
|
+
})
|
|
31
|
+
]);
|
|
26
32
|
/**
|
|
27
33
|
* Effect Schema for `FilterNode`. Used to decode filter query parameters
|
|
28
34
|
* from HTTP request JSON bodies.
|
|
29
35
|
*
|
|
30
36
|
* The schema is self-referential (recursive via `Schema.suspend`) to handle
|
|
31
|
-
* nested `and`/`or`/`not` nodes
|
|
32
|
-
*
|
|
37
|
+
* nested `and`/`or`/`not` nodes — the recursive `suspend` closures forward
|
|
38
|
+
* reference the `const` binding.
|
|
33
39
|
*
|
|
34
40
|
* @example
|
|
35
41
|
* import { Schema } from "effect"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA+D/B,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/filter/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AA+D/B,MAAM,iBAAiB,GAA6B,MAAM,CAAC,KAAK,CAAC;IAC/D,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC5D,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,KAAK,EAAE,MAAM,CAAC,OAAO;KACtB,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;KACrC,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,KAAK,EAAE,MAAM,CAAC,MAAM;KACrB,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACzC,KAAK,EAAE,MAAM,CAAC,MAAM;KACrB,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;QAC7C,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;KAC/C,CAAC;IACF,MAAM,CAAC,MAAM,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC;KAC9C,CAAC;CACH,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,mBAAmB,uBAAuB,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AAErC,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA"}
|
|
@@ -13,14 +13,35 @@ type FieldOperandMethods<K extends string, V = unknown> = {
|
|
|
13
13
|
};
|
|
14
14
|
/** An operand node with fluent comparison methods attached. */
|
|
15
15
|
export type FieldOperand<K extends string, V = unknown> = OperandNode<K, V> & FieldOperandMethods<K, V>;
|
|
16
|
+
/** Base rule methods shared by Rule and RuleBuilder (excludes field and subquery). */
|
|
17
|
+
type RuleBase = {
|
|
18
|
+
request: (source: "header" | "query" | "body", key: string) => FieldOperand<string, string>;
|
|
19
|
+
auth: <C extends AnyCollectionDef, K extends keyof C["fields"] & string>(_collection: C, field: K) => FieldOperand<string, string>;
|
|
20
|
+
authId: <C extends AnyCollectionDef>(_collection: C) => FieldOperand<any, string>;
|
|
21
|
+
/** The collection name of the authenticated user. Use to restrict access to a specific auth collection. */
|
|
22
|
+
authCollection: () => FieldOperand<any, string>;
|
|
23
|
+
literal: <V>(value: V) => OperandNode<any, V>;
|
|
24
|
+
now: () => OperandNode<any, string>;
|
|
25
|
+
dateAdd: (operand: OperandNode<any>, amount: number, unit: "day" | "hour" | "minute") => OperandNode<any, string>;
|
|
26
|
+
dateDiff: (left: OperandNode<any>, right: OperandNode<any>, unit: "day" | "hour" | "minute") => OperandNode<any, number>;
|
|
27
|
+
and: <K extends string = string>(...exprs: Array<ExprNode<K>>) => ExprNode<K>;
|
|
28
|
+
or: <K extends string = string>(...exprs: Array<ExprNode<K>>) => ExprNode<K>;
|
|
29
|
+
not: <K extends string = string>(expr: ExprNode<K>) => ExprNode<K>;
|
|
30
|
+
public: <K extends string = string>() => ExprNode<K>;
|
|
31
|
+
};
|
|
16
32
|
/**
|
|
17
33
|
* A narrowed version of the Rule builder where `field()` is constrained to field
|
|
18
34
|
* names defined in `F` and comparison operands are typed to match each field's value type.
|
|
19
35
|
* Used as the argument type for the `rules` callback in collection definers.
|
|
20
36
|
*/
|
|
21
|
-
export type RuleBuilder<F extends FieldsMap> =
|
|
37
|
+
export type RuleBuilder<F extends FieldsMap> = RuleBase & {
|
|
22
38
|
field<K extends keyof F & string>(name: K): FieldOperand<K, InferFieldValue<F[K]>>;
|
|
39
|
+
subquery: <C extends AnyCollectionDef, K extends keyof C["fields"] & string>(_collection: C, field: K) => {
|
|
40
|
+
where: (expr: ExprNode<any> | ((R: RuleBuilder<C["fields"]>) => ExprNode<any>)) => OperandNode<any, string>;
|
|
41
|
+
};
|
|
23
42
|
};
|
|
43
|
+
/** Attaches fluent comparison methods to a raw operand node. */
|
|
44
|
+
export declare function toChainable<K extends string, V>(operand: OperandNode<K, V>): FieldOperand<K, V>;
|
|
24
45
|
/**
|
|
25
46
|
* Rule builder API.
|
|
26
47
|
*
|
|
@@ -46,51 +67,26 @@ export type RuleBuilder<F extends FieldsMap> = Omit<typeof Rule, "field"> & {
|
|
|
46
67
|
* )
|
|
47
68
|
* Rule.field("teamId").in(memberTeams)
|
|
48
69
|
*
|
|
70
|
+
* // Subquery with typed callback
|
|
71
|
+
* Rule.field("id").in(
|
|
72
|
+
* Rule.subquery(Members, "teamId").where(
|
|
73
|
+
* (Q) => Q.field("userId").eq(Rule.authId(Users))
|
|
74
|
+
* )
|
|
75
|
+
* )
|
|
76
|
+
*
|
|
49
77
|
* // Always allow
|
|
50
78
|
* Rule.public()
|
|
51
79
|
*/
|
|
52
|
-
export declare const Rule: {
|
|
53
|
-
/** Reference a record field by name. Returns a chainable operand. Value type is unknown; use via RuleBuilder for typed comparisons. */
|
|
80
|
+
export declare const Rule: RuleBase & {
|
|
54
81
|
field: <const K extends string>(name: K) => FieldOperand<K, unknown>;
|
|
55
|
-
/** Reference a value from the incoming request (header, query param, or body field). */
|
|
56
|
-
request: (source: "header" | "query" | "body", key: string) => FieldOperand<string, string>;
|
|
57
|
-
/** Reference a field from the authenticated user's record. */
|
|
58
|
-
auth: <C extends AnyCollectionDef, K extends keyof C["fields"] & string>(_collection: C, field: K) => FieldOperand<string, string>;
|
|
59
|
-
/** Reference the ID of the currently authenticated user. */
|
|
60
|
-
authId: <C extends AnyCollectionDef>(_collection: C) => OperandNode<any, string>;
|
|
61
|
-
/** A literal value for comparison. The value type `V` is inferred from the argument. */
|
|
62
|
-
literal: <V>(value: V) => OperandNode<any, V>;
|
|
63
|
-
/**
|
|
64
|
-
* Create a subquery operand into another collection.
|
|
65
|
-
* Call `.where()` on the result to finish the subquery.
|
|
66
|
-
*
|
|
67
|
-
* @example
|
|
68
|
-
* Rule.subquery(Members, "teamId").where(
|
|
69
|
-
* Rule.field("userId").eq(Rule.authId(Users))
|
|
70
|
-
* )
|
|
71
|
-
*/
|
|
72
82
|
subquery: <C extends AnyCollectionDef, K extends keyof C["fields"] & string>(_collection: C, field: K) => {
|
|
73
|
-
where: (expr: ExprNode<any>) => OperandNode<any, string>;
|
|
83
|
+
where: (expr: ExprNode<any> | ((R: RuleBuilder<C["fields"]>) => ExprNode<any>)) => OperandNode<any, string>;
|
|
74
84
|
};
|
|
75
|
-
/** Current timestamp operand. Compiles to `datetime('now')` in SQLite. */
|
|
76
|
-
now: () => OperandNode<any, string>;
|
|
77
|
-
/** Add a duration to a date operand for date arithmetic. */
|
|
78
|
-
dateAdd: (operand: OperandNode<any>, amount: number, unit: "day" | "hour" | "minute") => OperandNode<any, string>;
|
|
79
|
-
/** Compute the difference between two date operands. */
|
|
80
|
-
dateDiff: (left: OperandNode<any>, right: OperandNode<any>, unit: "day" | "hour" | "minute") => OperandNode<any, number>;
|
|
81
|
-
/** Logical AND of expressions. */
|
|
82
|
-
and: <K extends string = string>(...exprs: Array<ExprNode<K>>) => ExprNode<K>;
|
|
83
|
-
/** Logical OR of expressions. */
|
|
84
|
-
or: <K extends string = string>(...exprs: Array<ExprNode<K>>) => ExprNode<K>;
|
|
85
|
-
/** Logical negation of a sub-expression. */
|
|
86
|
-
not: <K extends string = string>(expr: ExprNode<K>) => ExprNode<K>;
|
|
87
|
-
/** Always-true rule that allows all access. */
|
|
88
|
-
public: <K extends string = string>() => ExprNode<K>;
|
|
89
85
|
};
|
|
90
86
|
/**
|
|
91
87
|
* Creates a typed `RuleBuilder<F>` that constrains `field()` to names in `F`
|
|
92
88
|
* and types each comparison operand to the field's value type.
|
|
93
|
-
* Used internally by collection definers.
|
|
89
|
+
* Used internally by collection definers and subquery typed callbacks.
|
|
94
90
|
*/
|
|
95
91
|
export declare function makeRuleBuilder<F extends FieldsMap>(): RuleBuilder<F>;
|
|
96
92
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/rule/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/rule/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/src/rule/builder.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/** Attaches fluent comparison methods to a raw operand node. */
|
|
2
|
+
export function toChainable(operand) {
|
|
2
3
|
const methods = {
|
|
3
4
|
eq(right) { return { op: "eq", left: operand, right }; },
|
|
4
5
|
neq(right) { return { op: "neq", left: operand, right }; },
|
|
@@ -10,7 +11,7 @@ function toChainable(operand) {
|
|
|
10
11
|
startsWith(right) { return { op: "startsWith", left: operand, right }; },
|
|
11
12
|
contains(right) { return { op: "contains", left: operand, right }; }
|
|
12
13
|
};
|
|
13
|
-
return Object.assign(
|
|
14
|
+
return Object.assign(Object.create(methods), operand);
|
|
14
15
|
}
|
|
15
16
|
/**
|
|
16
17
|
* Rule builder API.
|
|
@@ -37,6 +38,13 @@ function toChainable(operand) {
|
|
|
37
38
|
* )
|
|
38
39
|
* Rule.field("teamId").in(memberTeams)
|
|
39
40
|
*
|
|
41
|
+
* // Subquery with typed callback
|
|
42
|
+
* Rule.field("id").in(
|
|
43
|
+
* Rule.subquery(Members, "teamId").where(
|
|
44
|
+
* (Q) => Q.field("userId").eq(Rule.authId(Users))
|
|
45
|
+
* )
|
|
46
|
+
* )
|
|
47
|
+
*
|
|
40
48
|
* // Always allow
|
|
41
49
|
* Rule.public()
|
|
42
50
|
*/
|
|
@@ -48,10 +56,9 @@ export const Rule = {
|
|
|
48
56
|
/** Reference a field from the authenticated user's record. */
|
|
49
57
|
auth: (_collection, field) => toChainable({ kind: "auth", collection: _collection.name, field }),
|
|
50
58
|
/** Reference the ID of the currently authenticated user. */
|
|
51
|
-
authId: (_collection) => ({
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}),
|
|
59
|
+
authId: (_collection) => toChainable({ kind: "authId", collection: _collection.name }),
|
|
60
|
+
/** Reference the collection name of the currently authenticated user. */
|
|
61
|
+
authCollection: () => toChainable({ kind: "authCollection" }),
|
|
55
62
|
/** A literal value for comparison. The value type `V` is inferred from the argument. */
|
|
56
63
|
literal: (value) => ({
|
|
57
64
|
kind: "literal",
|
|
@@ -62,16 +69,22 @@ export const Rule = {
|
|
|
62
69
|
* Call `.where()` on the result to finish the subquery.
|
|
63
70
|
*
|
|
64
71
|
* @example
|
|
72
|
+
* // Bare expression (backward compatible)
|
|
65
73
|
* Rule.subquery(Members, "teamId").where(
|
|
66
74
|
* Rule.field("userId").eq(Rule.authId(Users))
|
|
67
75
|
* )
|
|
76
|
+
*
|
|
77
|
+
* // Typed callback — Q.field() is scoped to the subquery collection
|
|
78
|
+
* Rule.subquery(Members, "teamId").where(
|
|
79
|
+
* (Q) => Q.field("userId").eq(Rule.authId(Users))
|
|
80
|
+
* )
|
|
68
81
|
*/
|
|
69
82
|
subquery: (_collection, field) => ({
|
|
70
83
|
where: (expr) => ({
|
|
71
84
|
kind: "subquery",
|
|
72
85
|
collection: _collection.name,
|
|
73
86
|
field,
|
|
74
|
-
where: expr
|
|
87
|
+
where: typeof expr === "function" ? expr(makeRuleBuilder()) : expr
|
|
75
88
|
})
|
|
76
89
|
}),
|
|
77
90
|
/** Current timestamp operand. Compiles to `datetime('now')` in SQLite. */
|
|
@@ -114,7 +127,7 @@ export const Rule = {
|
|
|
114
127
|
/**
|
|
115
128
|
* Creates a typed `RuleBuilder<F>` that constrains `field()` to names in `F`
|
|
116
129
|
* and types each comparison operand to the field's value type.
|
|
117
|
-
* Used internally by collection definers.
|
|
130
|
+
* Used internally by collection definers and subquery typed callbacks.
|
|
118
131
|
*/
|
|
119
132
|
export function makeRuleBuilder() {
|
|
120
133
|
function field(name) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/rule/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/rule/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/src/rule/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rule/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/rule/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/dist/src/rule/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rule/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rule/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/dist/src/rule/types.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - `now` — current timestamp (e.g., `Rule.now()`)
|
|
11
11
|
* - `dateAdd` — date arithmetic (e.g., `Rule.dateAdd(Rule.now(), 7, "day")`)
|
|
12
12
|
* - `dateDiff` — difference between two dates (e.g., `Rule.dateDiff(Rule.field("created"), Rule.now(), "day")`)
|
|
13
|
+
* - `authCollection` — the collection name of the authenticated user (e.g., `Rule.authCollection()`)
|
|
13
14
|
*/
|
|
14
15
|
export type OperandNode<K extends string = string, V = unknown> = {
|
|
15
16
|
kind: "field";
|
|
@@ -25,6 +26,8 @@ export type OperandNode<K extends string = string, V = unknown> = {
|
|
|
25
26
|
} | {
|
|
26
27
|
kind: "authId";
|
|
27
28
|
collection: string;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "authCollection";
|
|
28
31
|
} | {
|
|
29
32
|
kind: "subquery";
|
|
30
33
|
collection: string;
|
|
@@ -125,5 +128,13 @@ export type RuleMap<K extends string = string> = {
|
|
|
125
128
|
create?: ExprNode<K>;
|
|
126
129
|
update?: ExprNode<K>;
|
|
127
130
|
delete?: ExprNode<K>;
|
|
131
|
+
/**
|
|
132
|
+
* Auth-collections-only "manage" rule. Evaluated **in addition to** the
|
|
133
|
+
* create/update rules. When it matches (and the caller is authenticated) it
|
|
134
|
+
* grants manager access: directly setting `email`, `emailVerified`, and
|
|
135
|
+
* changing the password without `oldPassword`. It never bypasses the base
|
|
136
|
+
* create/update rules and has no effect on list/view/delete.
|
|
137
|
+
*/
|
|
138
|
+
manage?: ExprNode<K>;
|
|
128
139
|
};
|
|
129
140
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/rule/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/rule/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { describe, expect, it } from "vitest";
|
|
2
2
|
import { AuthCollection } from "../../src/collection/auth.js";
|
|
3
3
|
import { Field } from "../../src/collection/field.js";
|
|
4
|
-
const ID_PROPERTY = { type: "string", "x-system": true };
|
|
5
|
-
const SEQID_PROPERTY = { type: "integer", "x-kind": "seqId", "x-system": true, "x-hidden": true };
|
|
6
|
-
const CREATED_PROPERTY = { type: "string", "x-system": true };
|
|
7
|
-
const UPDATED_PROPERTY = { type: "string", "x-system": true };
|
|
4
|
+
const ID_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
5
|
+
const SEQID_PROPERTY = { type: "integer", "x-kind": "seqId", "x-system": true, "x-hidden": true, "x-generated": true };
|
|
6
|
+
const CREATED_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
7
|
+
const UPDATED_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
8
8
|
describe("AuthCollection", () => {
|
|
9
9
|
it("auth collection injects system fields", () => {
|
|
10
10
|
const Users = AuthCollection.define("users", { displayName: Field.text({ required: true }) });
|
|
@@ -16,7 +16,7 @@ describe("AuthCollection", () => {
|
|
|
16
16
|
id: ID_PROPERTY,
|
|
17
17
|
seqId: SEQID_PROPERTY,
|
|
18
18
|
email: { type: "string", format: "email", "x-system": true },
|
|
19
|
-
password: { type: "string", "x-system": true, "x-hidden": true },
|
|
19
|
+
password: { type: "string", "x-system": true, "x-hidden": true, "x-kind": "password" },
|
|
20
20
|
emailVerified: { type: "boolean", "x-system": true, default: false },
|
|
21
21
|
displayName: { type: "string" },
|
|
22
22
|
created: CREATED_PROPERTY,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../tests/collection/auth.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../tests/collection/auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import { describe, expect, it } from "vitest";
|
|
|
2
2
|
import { BaseCollection } from "../../src/collection/base.js";
|
|
3
3
|
import { Bytes } from "../../src/collection/bytes.js";
|
|
4
4
|
import { Field } from "../../src/collection/field.js";
|
|
5
|
-
const ID_PROPERTY = { type: "string", "x-system": true };
|
|
6
|
-
const SEQID_PROPERTY = { type: "integer", "x-kind": "seqId", "x-system": true, "x-hidden": true };
|
|
7
|
-
const CREATED_PROPERTY = { type: "string", "x-system": true };
|
|
8
|
-
const UPDATED_PROPERTY = { type: "string", "x-system": true };
|
|
5
|
+
const ID_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
6
|
+
const SEQID_PROPERTY = { type: "integer", "x-kind": "seqId", "x-system": true, "x-hidden": true, "x-generated": true };
|
|
7
|
+
const CREATED_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
8
|
+
const UPDATED_PROPERTY = { type: "string", "x-system": true, "x-generated": true };
|
|
9
9
|
describe("BaseCollection", () => {
|
|
10
10
|
it("full base collection schema matches expected", () => {
|
|
11
11
|
const Users = BaseCollection.define("users", { email: Field.email() });
|
|
@@ -49,22 +49,5 @@ describe("BaseCollection", () => {
|
|
|
49
49
|
const Col = BaseCollection.define("simple", { title: Field.text() });
|
|
50
50
|
expect(Col.schema).not.toHaveProperty("x-indexes");
|
|
51
51
|
});
|
|
52
|
-
it("base collection with rules", () => {
|
|
53
|
-
const Users = {
|
|
54
|
-
name: "users",
|
|
55
|
-
fields: {},
|
|
56
|
-
schema: {
|
|
57
|
-
"x-collection-kind": "auth",
|
|
58
|
-
type: "object",
|
|
59
|
-
properties: {}
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
const Col = BaseCollection.define("posts", { title: Field.text(), ownerId: Field.text() })
|
|
63
|
-
.rules((R) => ({
|
|
64
|
-
create: R.field("ownerId").eq(R.authId(Users))
|
|
65
|
-
}));
|
|
66
|
-
expect(Col.schema["x-rules"]).toBeDefined();
|
|
67
|
-
expect(Col.schema["x-rules"].create).toBeDefined();
|
|
68
|
-
});
|
|
69
52
|
});
|
|
70
53
|
//# sourceMappingURL=base.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../../tests/collection/base.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"base.test.js","sourceRoot":"","sources":["../../../tests/collection/base.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -67,6 +67,31 @@ describe("Field.json", () => {
|
|
|
67
67
|
expect(f).toMatchObject({ _tag: "FieldDef", kind: "json" });
|
|
68
68
|
});
|
|
69
69
|
});
|
|
70
|
+
describe("Field.literalText", () => {
|
|
71
|
+
it("stores literal values and kind", () => {
|
|
72
|
+
const f = Field.literalText({ literal: ["a", "b"] });
|
|
73
|
+
expect(f).toMatchObject({ _tag: "FieldDef", kind: "literalText", literal: ["a", "b"], _literal: ["a", "b"] });
|
|
74
|
+
});
|
|
75
|
+
it("returns ViewableFieldDef (has .view())", () => {
|
|
76
|
+
const f = Field.literalText({ literal: ["x"] });
|
|
77
|
+
expect(typeof f.view).toBe("function");
|
|
78
|
+
const viewed = f.view();
|
|
79
|
+
expect(viewed.viewOnly).toBe(true);
|
|
80
|
+
});
|
|
81
|
+
it("preserves required: false", () => {
|
|
82
|
+
const f = Field.literalText({ literal: ["a", "b"], required: false });
|
|
83
|
+
expect(f.required).toBe(false);
|
|
84
|
+
});
|
|
85
|
+
it("error callback is preserved", () => {
|
|
86
|
+
const f = Field.literalText({
|
|
87
|
+
literal: ["a", "b"],
|
|
88
|
+
error: (k) => k === "literal" ? "invalid role" : undefined
|
|
89
|
+
});
|
|
90
|
+
expect(typeof f.error).toBe("function");
|
|
91
|
+
expect(f.error("literal")).toBe("invalid role");
|
|
92
|
+
expect(f.error("type")).toBeUndefined();
|
|
93
|
+
});
|
|
94
|
+
});
|
|
70
95
|
describe("Field.file", () => {
|
|
71
96
|
it("defaults", () => {
|
|
72
97
|
const f = Field.file();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.test.js","sourceRoot":"","sources":["../../../tests/collection/field.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAG7C,SAAS,cAAc,CAAC,IAAY,EAAE,MAAiB;IACrD,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE;YACN,mBAAmB,EAAE,MAAM;YAC3B,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;QAClC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;QACxB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACjE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/C,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACpD,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAA;QACpI,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACjD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;QACvC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QACnD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"field.test.js","sourceRoot":"","sources":["../../../tests/collection/field.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAG7C,SAAS,cAAc,CAAC,IAAY,EAAE,MAAiB;IACrD,OAAO;QACL,IAAI;QACJ,MAAM;QACN,MAAM,EAAE;YACN,mBAAmB,EAAE,MAAM;YAC3B,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC3D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;QAClC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;IAClC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAA;QACxB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;QAC5C,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;QACzB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1C,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACpD,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;IAC/G,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;QACrE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;YAC1B,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;SAC3D,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACvC,MAAM,CAAC,CAAC,CAAC,KAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAChD,MAAM,CAAC,CAAC,CAAC,KAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACtB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;QACjE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAClB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5D,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/C,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACpD,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAA;QACpI,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QACpC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;QACjD,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC5B,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAE,CAAS,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,CAAA;QACvC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAA;QACrC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7F,CAAC,CAAC,CAAA;IACF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;QACnD,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
1
2
|
import { AuthCollection } from "../../src/collection/auth.js";
|
|
2
3
|
import { BaseCollection } from "../../src/collection/base.js";
|
|
3
4
|
import { Field } from "../../src/collection/field.js";
|
|
4
|
-
import { describe, expect, it } from "vitest";
|
|
5
5
|
describe("Index type safety", () => {
|
|
6
6
|
it("BaseCollection: supports callback pattern", () => {
|
|
7
7
|
const Col = BaseCollection.define("posts", { title: Field.text() })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-type.test.js","sourceRoot":"","sources":["../../../tests/collection/index-type.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index-type.test.js","sourceRoot":"","sources":["../../../tests/collection/index-type.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAE7C,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;aAChE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEtC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;aACjE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QAEvD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACnF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACrF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;aACrE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAEzC,gDAAgD;QAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,iCAAiC;QACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,gEAAgE;QAChE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|