@proofkit/fmodata 0.1.0-alpha.14 → 0.1.0-alpha.16
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 +4 -165
- package/dist/esm/client/batch-builder.d.ts +2 -3
- package/dist/esm/client/batch-builder.js.map +1 -1
- package/dist/esm/client/builders/expand-builder.d.ts +1 -1
- package/dist/esm/client/builders/expand-builder.js.map +1 -1
- package/dist/esm/client/builders/select-mixin.d.ts +2 -2
- package/dist/esm/client/builders/select-mixin.js.map +1 -1
- package/dist/esm/client/delete-builder.d.ts +2 -5
- package/dist/esm/client/delete-builder.js.map +1 -1
- package/dist/esm/client/entity-set.d.ts +3 -13
- package/dist/esm/client/entity-set.js.map +1 -1
- package/dist/esm/client/error-parser.js.map +1 -1
- package/dist/esm/client/insert-builder.d.ts +2 -3
- package/dist/esm/client/insert-builder.js.map +1 -1
- package/dist/esm/client/query/query-builder.d.ts +11 -19
- package/dist/esm/client/query/query-builder.js +7 -76
- package/dist/esm/client/query/query-builder.js.map +1 -1
- package/dist/esm/client/query/types.d.ts +5 -5
- package/dist/esm/client/query-builder.d.ts +1 -1
- package/dist/esm/client/record-builder.d.ts +8 -9
- package/dist/esm/client/record-builder.js.map +1 -1
- package/dist/esm/client/update-builder.d.ts +2 -5
- package/dist/esm/client/update-builder.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/orm/column.d.ts +21 -4
- package/dist/esm/orm/column.js +5 -2
- package/dist/esm/orm/column.js.map +1 -1
- package/dist/esm/orm/field-builders.d.ts +1 -1
- package/dist/esm/orm/field-builders.js +1 -1
- package/dist/esm/orm/field-builders.js.map +1 -1
- package/dist/esm/orm/operators.d.ts +19 -19
- package/dist/esm/orm/operators.js +31 -12
- package/dist/esm/orm/operators.js.map +1 -1
- package/dist/esm/orm/table.d.ts +10 -9
- package/dist/esm/orm/table.js +5 -3
- package/dist/esm/orm/table.js.map +1 -1
- package/dist/esm/transform.js +1 -5
- package/dist/esm/transform.js.map +1 -1
- package/dist/esm/types.d.ts +26 -2
- package/dist/esm/types.js.map +1 -1
- package/package.json +3 -1
- package/src/client/batch-builder.ts +2 -1
- package/src/client/builders/expand-builder.ts +3 -3
- package/src/client/builders/select-mixin.ts +2 -3
- package/src/client/delete-builder.ts +2 -1
- package/src/client/entity-set.ts +26 -8
- package/src/client/error-parser.ts +3 -0
- package/src/client/insert-builder.ts +2 -1
- package/src/client/query/query-builder.ts +27 -126
- package/src/client/query/types.ts +6 -5
- package/src/client/query-builder.ts +1 -1
- package/src/client/record-builder.ts +22 -9
- package/src/client/update-builder.ts +17 -8
- package/src/index.ts +6 -15
- package/src/orm/column.ts +33 -5
- package/src/orm/field-builders.ts +1 -1
- package/src/orm/operators.ts +105 -51
- package/src/orm/table.ts +21 -13
- package/src/types.ts +33 -6
- package/dist/esm/filter-types.d.ts +0 -76
- package/src/filter-types.ts +0 -97
package/src/filter-types.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import type { StandardSchemaV1 } from "@standard-schema/spec";
|
|
2
|
-
|
|
3
|
-
// Operator types for each value type
|
|
4
|
-
export type StringOperators =
|
|
5
|
-
| { eq: string | null }
|
|
6
|
-
| { ne: string | null }
|
|
7
|
-
| { gt: string }
|
|
8
|
-
| { ge: string }
|
|
9
|
-
| { lt: string }
|
|
10
|
-
| { le: string }
|
|
11
|
-
| { contains: string }
|
|
12
|
-
| { startswith: string }
|
|
13
|
-
| { endswith: string }
|
|
14
|
-
| { in: string[] };
|
|
15
|
-
|
|
16
|
-
export type NumberOperators =
|
|
17
|
-
| { eq: number | null }
|
|
18
|
-
| { ne: number | null }
|
|
19
|
-
| { gt: number }
|
|
20
|
-
| { ge: number }
|
|
21
|
-
| { lt: number }
|
|
22
|
-
| { le: number }
|
|
23
|
-
| { in: number[] };
|
|
24
|
-
|
|
25
|
-
export type BooleanOperators =
|
|
26
|
-
| { eq: boolean | null }
|
|
27
|
-
| { ne: boolean | null };
|
|
28
|
-
|
|
29
|
-
export type DateOperators =
|
|
30
|
-
| { eq: Date | null }
|
|
31
|
-
| { ne: Date | null }
|
|
32
|
-
| { gt: Date }
|
|
33
|
-
| { ge: Date }
|
|
34
|
-
| { lt: Date }
|
|
35
|
-
| { le: Date }
|
|
36
|
-
| { in: Date[] };
|
|
37
|
-
|
|
38
|
-
// Infer output type from StandardSchemaV1
|
|
39
|
-
export type InferOutput<S> = S extends StandardSchemaV1<any, infer Output>
|
|
40
|
-
? Output
|
|
41
|
-
: never;
|
|
42
|
-
|
|
43
|
-
// Map inferred types to their operators
|
|
44
|
-
export type OperatorsForType<T> =
|
|
45
|
-
T extends string | null | undefined ? StringOperators :
|
|
46
|
-
T extends number | null | undefined ? NumberOperators :
|
|
47
|
-
T extends boolean | null | undefined ? BooleanOperators :
|
|
48
|
-
T extends Date | null | undefined ? DateOperators :
|
|
49
|
-
never;
|
|
50
|
-
|
|
51
|
-
// Get operators for a schema field
|
|
52
|
-
export type OperatorsForSchemaField<S extends StandardSchemaV1> =
|
|
53
|
-
OperatorsForType<InferOutput<S>>;
|
|
54
|
-
|
|
55
|
-
// Field filter: shorthand, single operator, or operator array
|
|
56
|
-
export type FieldFilter<S extends StandardSchemaV1> =
|
|
57
|
-
| InferOutput<S> // Shorthand: { name: "John" }
|
|
58
|
-
| OperatorsForSchemaField<S> // Single operator: { age: { gt: 18 } }
|
|
59
|
-
| Array<OperatorsForSchemaField<S>>; // Multiple operators: { age: [{ gt: 18 }, { lt: 65 }] }
|
|
60
|
-
|
|
61
|
-
// Logical operators (recursive)
|
|
62
|
-
export type LogicalFilter<Schema extends Record<string, StandardSchemaV1>> = {
|
|
63
|
-
and?: Array<TypedFilter<Schema>>;
|
|
64
|
-
or?: Array<TypedFilter<Schema>>;
|
|
65
|
-
not?: TypedFilter<Schema>;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
// Helper to check if Schema is exactly Record<string, StandardSchemaV1> (untyped)
|
|
69
|
-
// Uses double extends check to ensure Schema is exactly the generic type, not a more specific type
|
|
70
|
-
type IsUntypedSchema<Schema> =
|
|
71
|
-
[Record<string, StandardSchemaV1>] extends [Schema]
|
|
72
|
-
? [Schema] extends [Record<string, StandardSchemaV1>]
|
|
73
|
-
? true
|
|
74
|
-
: false
|
|
75
|
-
: false;
|
|
76
|
-
|
|
77
|
-
// Main filter type
|
|
78
|
-
export type TypedFilter<Schema extends Record<string, StandardSchemaV1>> =
|
|
79
|
-
| LogicalFilter<Schema>
|
|
80
|
-
| (
|
|
81
|
-
IsUntypedSchema<Schema> extends true
|
|
82
|
-
? {
|
|
83
|
-
// For untyped schemas, allow arbitrary string keys with empty object intersection (preserves autocomplete)
|
|
84
|
-
[key: string]: FieldFilter<any> | any;
|
|
85
|
-
} & {}
|
|
86
|
-
: {
|
|
87
|
-
// For typed schemas, use specific keys (preserves autocomplete)
|
|
88
|
-
[K in keyof Schema]?: FieldFilter<Schema[K]>;
|
|
89
|
-
}
|
|
90
|
-
);
|
|
91
|
-
|
|
92
|
-
// Top-level filter (can be array for implicit AND)
|
|
93
|
-
export type Filter<Schema extends Record<string, StandardSchemaV1>> =
|
|
94
|
-
| TypedFilter<Schema>
|
|
95
|
-
| Array<TypedFilter<Schema>>
|
|
96
|
-
| string; // Escape hatch for raw OData expressions
|
|
97
|
-
|