@proofkit/fmodata 0.1.0-alpha.4 → 0.1.0-alpha.7

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 (74) hide show
  1. package/README.md +690 -31
  2. package/dist/esm/client/base-table.d.ts +122 -5
  3. package/dist/esm/client/base-table.js +46 -5
  4. package/dist/esm/client/base-table.js.map +1 -1
  5. package/dist/esm/client/batch-builder.d.ts +54 -0
  6. package/dist/esm/client/batch-builder.js +179 -0
  7. package/dist/esm/client/batch-builder.js.map +1 -0
  8. package/dist/esm/client/batch-request.d.ts +61 -0
  9. package/dist/esm/client/batch-request.js +252 -0
  10. package/dist/esm/client/batch-request.js.map +1 -0
  11. package/dist/esm/client/database.d.ts +54 -5
  12. package/dist/esm/client/database.js +118 -15
  13. package/dist/esm/client/database.js.map +1 -1
  14. package/dist/esm/client/delete-builder.d.ts +21 -2
  15. package/dist/esm/client/delete-builder.js +96 -32
  16. package/dist/esm/client/delete-builder.js.map +1 -1
  17. package/dist/esm/client/entity-set.d.ts +22 -8
  18. package/dist/esm/client/entity-set.js +28 -8
  19. package/dist/esm/client/entity-set.js.map +1 -1
  20. package/dist/esm/client/filemaker-odata.d.ts +22 -3
  21. package/dist/esm/client/filemaker-odata.js +122 -27
  22. package/dist/esm/client/filemaker-odata.js.map +1 -1
  23. package/dist/esm/client/insert-builder.d.ts +38 -3
  24. package/dist/esm/client/insert-builder.js +231 -34
  25. package/dist/esm/client/insert-builder.js.map +1 -1
  26. package/dist/esm/client/query-builder.d.ts +26 -5
  27. package/dist/esm/client/query-builder.js +455 -208
  28. package/dist/esm/client/query-builder.js.map +1 -1
  29. package/dist/esm/client/record-builder.d.ts +19 -4
  30. package/dist/esm/client/record-builder.js +132 -40
  31. package/dist/esm/client/record-builder.js.map +1 -1
  32. package/dist/esm/client/response-processor.d.ts +38 -0
  33. package/dist/esm/client/schema-manager.d.ts +57 -0
  34. package/dist/esm/client/schema-manager.js +132 -0
  35. package/dist/esm/client/schema-manager.js.map +1 -0
  36. package/dist/esm/client/table-occurrence.d.ts +66 -2
  37. package/dist/esm/client/table-occurrence.js +36 -1
  38. package/dist/esm/client/table-occurrence.js.map +1 -1
  39. package/dist/esm/client/update-builder.d.ts +34 -11
  40. package/dist/esm/client/update-builder.js +135 -31
  41. package/dist/esm/client/update-builder.js.map +1 -1
  42. package/dist/esm/errors.d.ts +73 -0
  43. package/dist/esm/errors.js +148 -0
  44. package/dist/esm/errors.js.map +1 -0
  45. package/dist/esm/index.d.ts +7 -3
  46. package/dist/esm/index.js +27 -3
  47. package/dist/esm/index.js.map +1 -1
  48. package/dist/esm/transform.d.ts +65 -0
  49. package/dist/esm/transform.js +114 -0
  50. package/dist/esm/transform.js.map +1 -0
  51. package/dist/esm/types.d.ts +89 -5
  52. package/dist/esm/validation.d.ts +6 -3
  53. package/dist/esm/validation.js +104 -33
  54. package/dist/esm/validation.js.map +1 -1
  55. package/package.json +10 -1
  56. package/src/client/base-table.ts +155 -8
  57. package/src/client/batch-builder.ts +265 -0
  58. package/src/client/batch-request.ts +485 -0
  59. package/src/client/database.ts +173 -16
  60. package/src/client/delete-builder.ts +149 -48
  61. package/src/client/entity-set.ts +99 -15
  62. package/src/client/filemaker-odata.ts +178 -34
  63. package/src/client/insert-builder.ts +350 -40
  64. package/src/client/query-builder.ts +609 -236
  65. package/src/client/record-builder.ts +186 -53
  66. package/src/client/response-processor.ts +103 -0
  67. package/src/client/schema-manager.ts +246 -0
  68. package/src/client/table-occurrence.ts +118 -4
  69. package/src/client/update-builder.ts +235 -49
  70. package/src/errors.ts +217 -0
  71. package/src/index.ts +43 -1
  72. package/src/transform.ts +249 -0
  73. package/src/types.ts +201 -35
  74. package/src/validation.ts +120 -36
@@ -1,22 +1,28 @@
1
1
  import { QueryOptions } from 'odata-query';
2
- import { ExecutionContext, WithSystemFields, Result, InferSchemaType, ExecuteOptions, ConditionallyWithODataAnnotations, ExtractSchemaFromOccurrence } from '../types.js';
2
+ import { ExecutionContext, ExecutableBuilder, WithSystemFields, Result, InferSchemaType, ExecuteOptions, ConditionallyWithODataAnnotations, ExtractSchemaFromOccurrence } from '../types.js';
3
3
  import { Filter } from '../filter-types.js';
4
4
  import { TableOccurrence } from './table-occurrence.js';
5
5
  import { BaseTable } from './base-table.js';
6
6
  import { FFetchOptions } from '@fetchkit/ffetch';
7
- import { z } from 'zod/v4';
8
7
  import { StandardSchemaV1 } from '@standard-schema/spec';
9
8
  type ExtractNavigationNames<O extends TableOccurrence<any, any, any, any> | undefined> = O extends TableOccurrence<any, any, infer Nav, any> ? Nav extends Record<string, any> ? keyof Nav & string : never : never;
10
9
  type ResolveNavigationItem<T> = T extends () => infer R ? R : T;
11
- type FindNavigationTarget<O extends TableOccurrence<any, any, any, any> | undefined, Name extends string> = O extends TableOccurrence<any, any, infer Nav, any> ? Nav extends Record<string, any> ? Name extends keyof Nav ? ResolveNavigationItem<Nav[Name]> : TableOccurrence<BaseTable<Record<string, z.ZodTypeAny>, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, z.ZodTypeAny>, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, z.ZodTypeAny>, any>, any, any, any>;
10
+ type FindNavigationTarget<O extends TableOccurrence<any, any, any, any> | undefined, Name extends string> = O extends TableOccurrence<any, any, infer Nav, any> ? Nav extends Record<string, any> ? Name extends keyof Nav ? ResolveNavigationItem<Nav[Name]> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any> : TableOccurrence<BaseTable<Record<string, StandardSchemaV1>, any, any, any>, any, any, any>;
12
11
  type GetTargetSchemaType<O extends TableOccurrence<any, any, any, any> | undefined, Rel extends string> = [FindNavigationTarget<O, Rel>] extends [
13
12
  TableOccurrence<infer BT, any, any, any>
14
13
  ] ? [BT] extends [BaseTable<infer S, any>] ? [S] extends [Record<string, StandardSchemaV1>] ? InferSchemaType<S> : Record<string, any> : Record<string, any> : Record<string, any>;
15
- type ExpandedRelations = Record<string, {
14
+ export type ExpandedRelations = Record<string, {
16
15
  schema: any;
17
16
  selected: any;
18
17
  }>;
19
- export declare class QueryBuilder<T extends Record<string, any>, Selected extends keyof T = keyof T, SingleMode extends "exact" | "maybe" | false = false, IsCount extends boolean = false, Occ extends TableOccurrence<any, any, any, any> | undefined = undefined, Expands extends ExpandedRelations = {}> {
18
+ export type QueryReturnType<T extends Record<string, any>, Selected extends keyof T, SingleMode extends "exact" | "maybe" | false, IsCount extends boolean, Expands extends ExpandedRelations> = IsCount extends true ? number : SingleMode extends "exact" ? Pick<T, Selected> & {
19
+ [K in keyof Expands]: Pick<Expands[K]["schema"], Expands[K]["selected"]>[];
20
+ } : SingleMode extends "maybe" ? (Pick<T, Selected> & {
21
+ [K in keyof Expands]: Pick<Expands[K]["schema"], Expands[K]["selected"]>[];
22
+ }) | null : (Pick<T, Selected> & {
23
+ [K in keyof Expands]: Pick<Expands[K]["schema"], Expands[K]["selected"]>[];
24
+ })[];
25
+ export declare class QueryBuilder<T extends Record<string, any>, Selected extends keyof T = keyof T, SingleMode extends "exact" | "maybe" | false = false, IsCount extends boolean = false, Occ extends TableOccurrence<any, any, any, any> | undefined = undefined, Expands extends ExpandedRelations = {}> implements ExecutableBuilder<QueryReturnType<T, Selected, SingleMode, IsCount, Expands>> {
20
26
  private queryOptions;
21
27
  private expandConfigs;
22
28
  private singleMode;
@@ -30,16 +36,27 @@ export declare class QueryBuilder<T extends Record<string, any>, Selected extend
30
36
  private navigateRelation?;
31
37
  private navigateSourceTableName?;
32
38
  private navigateBaseRelation?;
39
+ private databaseUseEntityIds;
33
40
  constructor(config: {
34
41
  occurrence?: Occ;
35
42
  tableName: string;
36
43
  databaseName: string;
37
44
  context: ExecutionContext;
45
+ databaseUseEntityIds?: boolean;
38
46
  });
47
+ /**
48
+ * Helper to merge database-level useEntityIds with per-request options
49
+ */
50
+ private mergeExecuteOptions;
39
51
  /**
40
52
  * Helper to conditionally strip OData annotations based on options
41
53
  */
42
54
  private stripODataAnnotationsIfNeeded;
55
+ /**
56
+ * Gets the table ID (FMTID) if using entity IDs, otherwise returns the table name
57
+ * @param useEntityIds - Optional override for entity ID usage
58
+ */
59
+ private getTableId;
43
60
  select<K extends keyof T>(...fields: K[]): QueryBuilder<T, K, SingleMode, IsCount, Occ, Expands>;
44
61
  /**
45
62
  * Transforms our filter format to odata-query's expected format
@@ -54,6 +71,7 @@ export declare class QueryBuilder<T extends Record<string, any>, Selected extend
54
71
  skip(count: number): QueryBuilder<T, Selected, SingleMode, IsCount, Occ, Expands>;
55
72
  /**
56
73
  * Formats select fields for use in query strings.
74
+ * - Transforms field names to FMFIDs if using entity IDs
57
75
  * - Wraps "id" fields in double quotes
58
76
  * - URL-encodes special characters but preserves spaces
59
77
  */
@@ -66,6 +84,7 @@ export declare class QueryBuilder<T extends Record<string, any>, Selected extend
66
84
  /**
67
85
  * Builds OData expand query string from expand configurations.
68
86
  * Handles nested expands recursively.
87
+ * Transforms relation names to FMTIDs if using entity IDs.
69
88
  */
70
89
  private buildExpandString;
71
90
  expand<Rel extends ExtractNavigationNames<Occ> | (string & {}), TargetOcc extends FindNavigationTarget<Occ, Rel> = FindNavigationTarget<Occ, Rel>, TargetSchema extends GetTargetSchemaType<Occ, Rel> = GetTargetSchemaType<Occ, Rel>, TargetSelected extends keyof TargetSchema = keyof TargetSchema>(relation: Rel, callback?: (builder: QueryBuilder<TargetSchema, keyof TargetSchema, false, false, TargetOcc extends TableOccurrence<any, any, any, any> ? TargetOcc : undefined>) => QueryBuilder<WithSystemFields<TargetSchema>, TargetSelected, any, any, any>): QueryBuilder<T, Selected, SingleMode, IsCount, Occ, Expands & {
@@ -90,5 +109,7 @@ export declare class QueryBuilder<T extends Record<string, any>, Selected extend
90
109
  url: string;
91
110
  body?: any;
92
111
  };
112
+ toRequest(baseUrl: string): Request;
113
+ processResponse(response: Response, options?: ExecuteOptions): Promise<Result<QueryReturnType<T, Selected, SingleMode, IsCount, Expands>>>;
93
114
  }
94
115
  export {};