@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.
Files changed (61) hide show
  1. package/README.md +4 -165
  2. package/dist/esm/client/batch-builder.d.ts +2 -3
  3. package/dist/esm/client/batch-builder.js.map +1 -1
  4. package/dist/esm/client/builders/expand-builder.d.ts +1 -1
  5. package/dist/esm/client/builders/expand-builder.js.map +1 -1
  6. package/dist/esm/client/builders/select-mixin.d.ts +2 -2
  7. package/dist/esm/client/builders/select-mixin.js.map +1 -1
  8. package/dist/esm/client/delete-builder.d.ts +2 -5
  9. package/dist/esm/client/delete-builder.js.map +1 -1
  10. package/dist/esm/client/entity-set.d.ts +3 -13
  11. package/dist/esm/client/entity-set.js.map +1 -1
  12. package/dist/esm/client/error-parser.js.map +1 -1
  13. package/dist/esm/client/insert-builder.d.ts +2 -3
  14. package/dist/esm/client/insert-builder.js.map +1 -1
  15. package/dist/esm/client/query/query-builder.d.ts +11 -19
  16. package/dist/esm/client/query/query-builder.js +7 -76
  17. package/dist/esm/client/query/query-builder.js.map +1 -1
  18. package/dist/esm/client/query/types.d.ts +5 -5
  19. package/dist/esm/client/query-builder.d.ts +1 -1
  20. package/dist/esm/client/record-builder.d.ts +8 -9
  21. package/dist/esm/client/record-builder.js.map +1 -1
  22. package/dist/esm/client/update-builder.d.ts +2 -5
  23. package/dist/esm/client/update-builder.js.map +1 -1
  24. package/dist/esm/index.d.ts +2 -2
  25. package/dist/esm/orm/column.d.ts +21 -4
  26. package/dist/esm/orm/column.js +5 -2
  27. package/dist/esm/orm/column.js.map +1 -1
  28. package/dist/esm/orm/field-builders.d.ts +1 -1
  29. package/dist/esm/orm/field-builders.js +1 -1
  30. package/dist/esm/orm/field-builders.js.map +1 -1
  31. package/dist/esm/orm/operators.d.ts +19 -19
  32. package/dist/esm/orm/operators.js +31 -12
  33. package/dist/esm/orm/operators.js.map +1 -1
  34. package/dist/esm/orm/table.d.ts +10 -9
  35. package/dist/esm/orm/table.js +5 -3
  36. package/dist/esm/orm/table.js.map +1 -1
  37. package/dist/esm/transform.js +1 -5
  38. package/dist/esm/transform.js.map +1 -1
  39. package/dist/esm/types.d.ts +26 -2
  40. package/dist/esm/types.js.map +1 -1
  41. package/package.json +3 -1
  42. package/src/client/batch-builder.ts +2 -1
  43. package/src/client/builders/expand-builder.ts +3 -3
  44. package/src/client/builders/select-mixin.ts +2 -3
  45. package/src/client/delete-builder.ts +2 -1
  46. package/src/client/entity-set.ts +26 -8
  47. package/src/client/error-parser.ts +3 -0
  48. package/src/client/insert-builder.ts +2 -1
  49. package/src/client/query/query-builder.ts +27 -126
  50. package/src/client/query/types.ts +6 -5
  51. package/src/client/query-builder.ts +1 -1
  52. package/src/client/record-builder.ts +22 -9
  53. package/src/client/update-builder.ts +17 -8
  54. package/src/index.ts +6 -15
  55. package/src/orm/column.ts +33 -5
  56. package/src/orm/field-builders.ts +1 -1
  57. package/src/orm/operators.ts +105 -51
  58. package/src/orm/table.ts +21 -13
  59. package/src/types.ts +33 -6
  60. package/dist/esm/filter-types.d.ts +0 -76
  61. package/src/filter-types.ts +0 -97
@@ -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
-