@constructive-io/graphql-codegen 2.19.0 → 2.20.1
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 +1818 -113
- package/__tests__/codegen/input-types-generator.test.d.ts +1 -0
- package/__tests__/codegen/input-types-generator.test.js +635 -0
- package/cli/codegen/barrel.d.ts +27 -0
- package/cli/codegen/barrel.js +163 -0
- package/cli/codegen/client.d.ts +4 -0
- package/cli/codegen/client.js +170 -0
- package/cli/codegen/custom-mutations.d.ts +38 -0
- package/cli/codegen/custom-mutations.js +149 -0
- package/cli/codegen/custom-queries.d.ts +38 -0
- package/cli/codegen/custom-queries.js +358 -0
- package/cli/codegen/filters.d.ts +27 -0
- package/cli/codegen/filters.js +357 -0
- package/cli/codegen/gql-ast.d.ts +41 -0
- package/cli/codegen/gql-ast.js +329 -0
- package/cli/codegen/index.d.ts +71 -0
- package/cli/codegen/index.js +147 -0
- package/cli/codegen/mutations.d.ts +30 -0
- package/cli/codegen/mutations.js +410 -0
- package/cli/codegen/orm/barrel.d.ts +18 -0
- package/cli/codegen/orm/barrel.js +48 -0
- package/cli/codegen/orm/client-generator.d.ts +45 -0
- package/cli/codegen/orm/client-generator.js +646 -0
- package/cli/codegen/orm/custom-ops-generator.d.ts +30 -0
- package/cli/codegen/orm/custom-ops-generator.js +350 -0
- package/cli/codegen/orm/index.d.ts +38 -0
- package/cli/codegen/orm/index.js +88 -0
- package/cli/codegen/orm/input-types-generator.d.ts +21 -0
- package/cli/codegen/orm/input-types-generator.js +705 -0
- package/cli/codegen/orm/input-types-generator.test.d.ts +1 -0
- package/cli/codegen/orm/input-types-generator.test.js +75 -0
- package/cli/codegen/orm/model-generator.d.ts +32 -0
- package/cli/codegen/orm/model-generator.js +264 -0
- package/cli/codegen/orm/query-builder.d.ts +161 -0
- package/cli/codegen/orm/query-builder.js +366 -0
- package/cli/codegen/orm/select-types.d.ts +169 -0
- package/cli/codegen/orm/select-types.js +16 -0
- package/cli/codegen/orm/select-types.test.d.ts +11 -0
- package/cli/codegen/orm/select-types.test.js +22 -0
- package/cli/codegen/queries.d.ts +25 -0
- package/cli/codegen/queries.js +438 -0
- package/cli/codegen/scalars.d.ts +12 -0
- package/cli/codegen/scalars.js +71 -0
- package/cli/codegen/schema-gql-ast.d.ts +51 -0
- package/cli/codegen/schema-gql-ast.js +385 -0
- package/cli/codegen/ts-ast.d.ts +122 -0
- package/cli/codegen/ts-ast.js +280 -0
- package/cli/codegen/type-resolver.d.ts +96 -0
- package/cli/codegen/type-resolver.js +246 -0
- package/cli/codegen/types.d.ts +12 -0
- package/cli/codegen/types.js +69 -0
- package/cli/codegen/utils.d.ts +163 -0
- package/cli/codegen/utils.js +326 -0
- package/cli/commands/generate-orm.d.ts +37 -0
- package/cli/commands/generate-orm.js +195 -0
- package/cli/commands/generate.d.ts +39 -0
- package/cli/commands/generate.js +299 -0
- package/cli/commands/index.d.ts +7 -0
- package/cli/commands/index.js +12 -0
- package/cli/commands/init.d.ts +35 -0
- package/cli/commands/init.js +176 -0
- package/cli/index.d.ts +4 -0
- package/cli/index.js +291 -0
- package/cli/introspect/fetch-meta.d.ts +31 -0
- package/cli/introspect/fetch-meta.js +108 -0
- package/cli/introspect/fetch-schema.d.ts +21 -0
- package/cli/introspect/fetch-schema.js +86 -0
- package/cli/introspect/index.d.ts +8 -0
- package/cli/introspect/index.js +16 -0
- package/cli/introspect/meta-query.d.ts +111 -0
- package/cli/introspect/meta-query.js +191 -0
- package/cli/introspect/schema-query.d.ts +20 -0
- package/cli/introspect/schema-query.js +123 -0
- package/cli/introspect/transform-schema.d.ts +74 -0
- package/cli/introspect/transform-schema.js +269 -0
- package/cli/introspect/transform-schema.test.d.ts +1 -0
- package/cli/introspect/transform-schema.test.js +67 -0
- package/cli/introspect/transform.d.ts +21 -0
- package/cli/introspect/transform.js +216 -0
- package/cli/watch/cache.d.ts +45 -0
- package/cli/watch/cache.js +111 -0
- package/cli/watch/debounce.d.ts +19 -0
- package/cli/watch/debounce.js +89 -0
- package/cli/watch/hash.d.ts +17 -0
- package/cli/watch/hash.js +48 -0
- package/cli/watch/index.d.ts +10 -0
- package/cli/watch/index.js +22 -0
- package/cli/watch/orchestrator.d.ts +63 -0
- package/cli/watch/orchestrator.js +228 -0
- package/cli/watch/poller.d.ts +65 -0
- package/cli/watch/poller.js +203 -0
- package/cli/watch/types.d.ts +67 -0
- package/cli/watch/types.js +5 -0
- package/client/error.d.ts +95 -0
- package/client/error.js +255 -0
- package/client/execute.d.ts +57 -0
- package/client/execute.js +124 -0
- package/client/index.d.ts +6 -0
- package/client/index.js +18 -0
- package/client/typed-document.d.ts +31 -0
- package/client/typed-document.js +44 -0
- package/core/ast.d.ts +10 -0
- package/core/ast.js +593 -0
- package/core/custom-ast.d.ts +35 -0
- package/core/custom-ast.js +204 -0
- package/core/index.d.ts +8 -0
- package/core/index.js +33 -0
- package/core/meta-object/convert.d.ts +65 -0
- package/core/meta-object/convert.js +63 -0
- package/core/meta-object/format.json +93 -0
- package/core/meta-object/index.d.ts +2 -0
- package/core/meta-object/index.js +18 -0
- package/core/meta-object/validate.d.ts +9 -0
- package/core/meta-object/validate.js +34 -0
- package/core/query-builder.d.ts +46 -0
- package/core/query-builder.js +412 -0
- package/core/types.d.ts +139 -0
- package/core/types.js +28 -0
- package/esm/__tests__/codegen/input-types-generator.test.d.ts +1 -0
- package/esm/__tests__/codegen/input-types-generator.test.js +633 -0
- package/esm/cli/codegen/barrel.d.ts +27 -0
- package/esm/cli/codegen/barrel.js +156 -0
- package/esm/cli/codegen/client.d.ts +4 -0
- package/esm/cli/codegen/client.js +167 -0
- package/esm/cli/codegen/custom-mutations.d.ts +38 -0
- package/esm/cli/codegen/custom-mutations.js +145 -0
- package/esm/cli/codegen/custom-queries.d.ts +38 -0
- package/esm/cli/codegen/custom-queries.js +354 -0
- package/esm/cli/codegen/filters.d.ts +27 -0
- package/esm/cli/codegen/filters.js +351 -0
- package/esm/cli/codegen/gql-ast.d.ts +41 -0
- package/esm/cli/codegen/gql-ast.js +288 -0
- package/esm/cli/codegen/index.d.ts +71 -0
- package/esm/cli/codegen/index.js +124 -0
- package/esm/cli/codegen/mutations.d.ts +30 -0
- package/esm/cli/codegen/mutations.js +404 -0
- package/esm/cli/codegen/orm/barrel.d.ts +18 -0
- package/esm/cli/codegen/orm/barrel.js +44 -0
- package/esm/cli/codegen/orm/client-generator.d.ts +45 -0
- package/esm/cli/codegen/orm/client-generator.js +640 -0
- package/esm/cli/codegen/orm/custom-ops-generator.d.ts +30 -0
- package/esm/cli/codegen/orm/custom-ops-generator.js +346 -0
- package/esm/cli/codegen/orm/index.d.ts +38 -0
- package/esm/cli/codegen/orm/index.js +75 -0
- package/esm/cli/codegen/orm/input-types-generator.d.ts +21 -0
- package/esm/cli/codegen/orm/input-types-generator.js +700 -0
- package/esm/cli/codegen/orm/input-types-generator.test.d.ts +1 -0
- package/esm/cli/codegen/orm/input-types-generator.test.js +73 -0
- package/esm/cli/codegen/orm/model-generator.d.ts +32 -0
- package/esm/cli/codegen/orm/model-generator.js +260 -0
- package/esm/cli/codegen/orm/query-builder.d.ts +161 -0
- package/esm/cli/codegen/orm/query-builder.js +353 -0
- package/esm/cli/codegen/orm/select-types.d.ts +169 -0
- package/esm/cli/codegen/orm/select-types.js +15 -0
- package/esm/cli/codegen/orm/select-types.test.d.ts +11 -0
- package/esm/cli/codegen/orm/select-types.test.js +21 -0
- package/esm/cli/codegen/queries.d.ts +25 -0
- package/esm/cli/codegen/queries.js +433 -0
- package/esm/cli/codegen/scalars.d.ts +12 -0
- package/esm/cli/codegen/scalars.js +66 -0
- package/esm/cli/codegen/schema-gql-ast.d.ts +51 -0
- package/esm/cli/codegen/schema-gql-ast.js +343 -0
- package/esm/cli/codegen/ts-ast.d.ts +122 -0
- package/esm/cli/codegen/ts-ast.js +260 -0
- package/esm/cli/codegen/type-resolver.d.ts +96 -0
- package/esm/cli/codegen/type-resolver.js +224 -0
- package/esm/cli/codegen/types.d.ts +12 -0
- package/esm/cli/codegen/types.js +65 -0
- package/esm/cli/codegen/utils.d.ts +163 -0
- package/esm/cli/codegen/utils.js +288 -0
- package/esm/cli/commands/generate-orm.d.ts +37 -0
- package/esm/cli/commands/generate-orm.js +192 -0
- package/esm/cli/commands/generate.d.ts +39 -0
- package/esm/cli/commands/generate.js +262 -0
- package/esm/cli/commands/index.d.ts +7 -0
- package/esm/cli/commands/index.js +5 -0
- package/esm/cli/commands/init.d.ts +35 -0
- package/esm/cli/commands/init.js +138 -0
- package/esm/cli/index.d.ts +4 -0
- package/esm/cli/index.js +256 -0
- package/esm/cli/introspect/fetch-meta.d.ts +31 -0
- package/esm/cli/introspect/fetch-meta.js +104 -0
- package/esm/cli/introspect/fetch-schema.d.ts +21 -0
- package/esm/cli/introspect/fetch-schema.js +83 -0
- package/esm/cli/introspect/index.d.ts +8 -0
- package/esm/cli/introspect/index.js +6 -0
- package/esm/cli/introspect/meta-query.d.ts +111 -0
- package/esm/cli/introspect/meta-query.js +188 -0
- package/esm/cli/introspect/schema-query.d.ts +20 -0
- package/esm/cli/introspect/schema-query.js +120 -0
- package/esm/cli/introspect/transform-schema.d.ts +74 -0
- package/esm/cli/introspect/transform-schema.js +259 -0
- package/esm/cli/introspect/transform-schema.test.d.ts +1 -0
- package/esm/cli/introspect/transform-schema.test.js +65 -0
- package/esm/cli/introspect/transform.d.ts +21 -0
- package/esm/cli/introspect/transform.js +210 -0
- package/esm/cli/watch/cache.d.ts +45 -0
- package/esm/cli/watch/cache.js +73 -0
- package/esm/cli/watch/debounce.d.ts +19 -0
- package/esm/cli/watch/debounce.js +85 -0
- package/esm/cli/watch/hash.d.ts +17 -0
- package/esm/cli/watch/hash.js +43 -0
- package/esm/cli/watch/index.d.ts +10 -0
- package/esm/cli/watch/index.js +8 -0
- package/esm/cli/watch/orchestrator.d.ts +63 -0
- package/esm/cli/watch/orchestrator.js +223 -0
- package/esm/cli/watch/poller.d.ts +65 -0
- package/esm/cli/watch/poller.js +198 -0
- package/esm/cli/watch/types.d.ts +67 -0
- package/esm/cli/watch/types.js +4 -0
- package/esm/client/error.d.ts +95 -0
- package/esm/client/error.js +249 -0
- package/esm/client/execute.d.ts +57 -0
- package/esm/client/execute.js +120 -0
- package/esm/client/index.d.ts +6 -0
- package/esm/client/index.js +6 -0
- package/esm/client/typed-document.d.ts +31 -0
- package/esm/client/typed-document.js +40 -0
- package/esm/core/ast.d.ts +10 -0
- package/esm/core/ast.js +549 -0
- package/esm/core/custom-ast.d.ts +35 -0
- package/esm/core/custom-ast.js +161 -0
- package/esm/core/index.d.ts +8 -0
- package/esm/core/index.js +12 -0
- package/esm/core/meta-object/convert.d.ts +65 -0
- package/esm/core/meta-object/convert.js +60 -0
- package/esm/core/meta-object/format.json +93 -0
- package/esm/core/meta-object/index.d.ts +2 -0
- package/esm/core/meta-object/index.js +2 -0
- package/esm/core/meta-object/validate.d.ts +9 -0
- package/esm/core/meta-object/validate.js +28 -0
- package/esm/core/query-builder.d.ts +46 -0
- package/esm/core/query-builder.js +375 -0
- package/esm/core/types.d.ts +139 -0
- package/esm/core/types.js +24 -0
- package/esm/generators/field-selector.d.ts +30 -0
- package/esm/generators/field-selector.js +355 -0
- package/esm/generators/index.d.ts +6 -0
- package/esm/generators/index.js +9 -0
- package/esm/generators/mutations.d.ts +31 -0
- package/esm/generators/mutations.js +197 -0
- package/esm/generators/select.d.ts +50 -0
- package/esm/generators/select.js +636 -0
- package/esm/index.d.ts +12 -0
- package/esm/index.js +17 -3
- package/esm/react/index.d.ts +5 -0
- package/esm/react/index.js +6 -0
- package/esm/types/config.d.ts +199 -0
- package/esm/types/config.js +106 -0
- package/esm/types/index.d.ts +9 -0
- package/esm/types/index.js +4 -0
- package/esm/types/introspection.d.ts +121 -0
- package/esm/types/introspection.js +54 -0
- package/esm/types/mutation.d.ts +45 -0
- package/esm/types/mutation.js +4 -0
- package/esm/types/query.d.ts +82 -0
- package/esm/types/query.js +4 -0
- package/esm/types/schema.d.ts +253 -0
- package/esm/types/schema.js +5 -0
- package/esm/types/selection.d.ts +43 -0
- package/esm/types/selection.js +4 -0
- package/esm/utils/index.d.ts +4 -0
- package/esm/utils/index.js +4 -0
- package/generators/field-selector.d.ts +30 -0
- package/generators/field-selector.js +361 -0
- package/generators/index.d.ts +6 -0
- package/generators/index.js +27 -0
- package/generators/mutations.d.ts +31 -0
- package/generators/mutations.js +235 -0
- package/generators/select.d.ts +50 -0
- package/generators/select.js +679 -0
- package/index.d.ts +12 -3
- package/index.js +19 -3
- package/package.json +59 -38
- package/react/index.d.ts +5 -0
- package/react/index.js +9 -0
- package/types/config.d.ts +199 -0
- package/types/config.js +111 -0
- package/types/index.d.ts +9 -0
- package/types/index.js +10 -0
- package/types/introspection.d.ts +121 -0
- package/types/introspection.js +62 -0
- package/types/mutation.d.ts +45 -0
- package/types/mutation.js +5 -0
- package/types/query.d.ts +82 -0
- package/types/query.js +5 -0
- package/types/schema.d.ts +253 -0
- package/types/schema.js +6 -0
- package/types/selection.d.ts +43 -0
- package/types/selection.js +5 -0
- package/utils/index.d.ts +4 -0
- package/utils/index.js +7 -0
- package/codegen.d.ts +0 -13
- package/codegen.js +0 -293
- package/esm/codegen.js +0 -253
- package/esm/gql.js +0 -939
- package/esm/options.js +0 -27
- package/gql.d.ts +0 -188
- package/gql.js +0 -992
- package/options.d.ts +0 -45
- package/options.js +0 -31
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Configuration types
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Main configuration for graphql-codegen
|
|
6
|
+
*/
|
|
7
|
+
export interface GraphQLSDKConfig {
|
|
8
|
+
/**
|
|
9
|
+
* GraphQL endpoint URL (must expose _meta query)
|
|
10
|
+
*/
|
|
11
|
+
endpoint: string;
|
|
12
|
+
/**
|
|
13
|
+
* Headers to include in introspection requests
|
|
14
|
+
*/
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
/**
|
|
17
|
+
* Output directory for generated code
|
|
18
|
+
* @default './generated/graphql'
|
|
19
|
+
*/
|
|
20
|
+
output?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Table filtering options (for table-based CRUD operations from _meta)
|
|
23
|
+
*/
|
|
24
|
+
tables?: {
|
|
25
|
+
/** Tables to include (glob patterns supported) */
|
|
26
|
+
include?: string[];
|
|
27
|
+
/** Tables to exclude (glob patterns supported) */
|
|
28
|
+
exclude?: string[];
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Query operation filtering (for ALL queries from __schema introspection)
|
|
32
|
+
* Glob patterns supported (e.g., 'current*', '*ByUsername')
|
|
33
|
+
*/
|
|
34
|
+
queries?: {
|
|
35
|
+
/** Query names to include - defaults to ['*'] */
|
|
36
|
+
include?: string[];
|
|
37
|
+
/** Query names to exclude - defaults to ['_meta', 'query'] */
|
|
38
|
+
exclude?: string[];
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Mutation operation filtering (for ALL mutations from __schema introspection)
|
|
42
|
+
* Glob patterns supported (e.g., 'create*', 'login', 'register')
|
|
43
|
+
*/
|
|
44
|
+
mutations?: {
|
|
45
|
+
/** Mutation names to include - defaults to ['*'] */
|
|
46
|
+
include?: string[];
|
|
47
|
+
/** Mutation names to exclude */
|
|
48
|
+
exclude?: string[];
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Fields to exclude globally from all tables
|
|
52
|
+
*/
|
|
53
|
+
excludeFields?: string[];
|
|
54
|
+
/**
|
|
55
|
+
* Hook generation options
|
|
56
|
+
*/
|
|
57
|
+
hooks?: {
|
|
58
|
+
/** Generate query hooks */
|
|
59
|
+
queries?: boolean;
|
|
60
|
+
/** Generate mutation hooks */
|
|
61
|
+
mutations?: boolean;
|
|
62
|
+
/** Prefix for query keys */
|
|
63
|
+
queryKeyPrefix?: string;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* PostGraphile-specific options
|
|
67
|
+
*/
|
|
68
|
+
postgraphile?: {
|
|
69
|
+
/** PostgreSQL schema to introspect */
|
|
70
|
+
schema?: string;
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* Code generation options
|
|
74
|
+
*/
|
|
75
|
+
codegen?: {
|
|
76
|
+
/** Max depth for nested object field selection (default: 2) */
|
|
77
|
+
maxFieldDepth?: number;
|
|
78
|
+
/** Skip 'query' field on mutation payloads (default: true) */
|
|
79
|
+
skipQueryField?: boolean;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* ORM client generation options
|
|
83
|
+
* When set, generates a Prisma-like ORM client in addition to or instead of React Query hooks
|
|
84
|
+
*/
|
|
85
|
+
orm?: {
|
|
86
|
+
/**
|
|
87
|
+
* Output directory for generated ORM client
|
|
88
|
+
* @default './generated/orm'
|
|
89
|
+
*/
|
|
90
|
+
output?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Whether to import shared types from hooks output or generate standalone
|
|
93
|
+
* When true, ORM types.ts will re-export from ../graphql/types
|
|
94
|
+
* @default true
|
|
95
|
+
*/
|
|
96
|
+
useSharedTypes?: boolean;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Watch mode configuration (dev-only feature)
|
|
100
|
+
* When enabled via CLI --watch flag, the CLI will poll the endpoint for schema changes
|
|
101
|
+
*/
|
|
102
|
+
watch?: WatchConfig;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Watch mode configuration options
|
|
106
|
+
*
|
|
107
|
+
* Watch mode uses in-memory caching for efficiency - no file I/O during polling.
|
|
108
|
+
*/
|
|
109
|
+
export interface WatchConfig {
|
|
110
|
+
/**
|
|
111
|
+
* Polling interval in milliseconds
|
|
112
|
+
* @default 3000
|
|
113
|
+
*/
|
|
114
|
+
pollInterval?: number;
|
|
115
|
+
/**
|
|
116
|
+
* Debounce delay in milliseconds before regenerating
|
|
117
|
+
* Prevents rapid regeneration during schema migrations
|
|
118
|
+
* @default 800
|
|
119
|
+
*/
|
|
120
|
+
debounce?: number;
|
|
121
|
+
/**
|
|
122
|
+
* File to touch on schema change (useful for triggering external tools like tsc/webpack)
|
|
123
|
+
* This is the only file I/O in watch mode.
|
|
124
|
+
* @example '.trigger'
|
|
125
|
+
*/
|
|
126
|
+
touchFile?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Clear terminal on regeneration
|
|
129
|
+
* @default true
|
|
130
|
+
*/
|
|
131
|
+
clearScreen?: boolean;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolved watch configuration with defaults applied
|
|
135
|
+
*/
|
|
136
|
+
export interface ResolvedWatchConfig {
|
|
137
|
+
pollInterval: number;
|
|
138
|
+
debounce: number;
|
|
139
|
+
touchFile: string | null;
|
|
140
|
+
clearScreen: boolean;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Resolved configuration with defaults applied
|
|
144
|
+
*/
|
|
145
|
+
export interface ResolvedConfig extends Required<Omit<GraphQLSDKConfig, 'headers' | 'tables' | 'queries' | 'mutations' | 'hooks' | 'postgraphile' | 'codegen' | 'orm' | 'watch'>> {
|
|
146
|
+
headers: Record<string, string>;
|
|
147
|
+
tables: {
|
|
148
|
+
include: string[];
|
|
149
|
+
exclude: string[];
|
|
150
|
+
};
|
|
151
|
+
queries: {
|
|
152
|
+
include: string[];
|
|
153
|
+
exclude: string[];
|
|
154
|
+
};
|
|
155
|
+
mutations: {
|
|
156
|
+
include: string[];
|
|
157
|
+
exclude: string[];
|
|
158
|
+
};
|
|
159
|
+
hooks: {
|
|
160
|
+
queries: boolean;
|
|
161
|
+
mutations: boolean;
|
|
162
|
+
queryKeyPrefix: string;
|
|
163
|
+
};
|
|
164
|
+
postgraphile: {
|
|
165
|
+
schema: string;
|
|
166
|
+
};
|
|
167
|
+
codegen: {
|
|
168
|
+
maxFieldDepth: number;
|
|
169
|
+
skipQueryField: boolean;
|
|
170
|
+
};
|
|
171
|
+
orm: {
|
|
172
|
+
output: string;
|
|
173
|
+
useSharedTypes: boolean;
|
|
174
|
+
} | null;
|
|
175
|
+
watch: ResolvedWatchConfig;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Default watch configuration values
|
|
179
|
+
*/
|
|
180
|
+
export declare const DEFAULT_WATCH_CONFIG: ResolvedWatchConfig;
|
|
181
|
+
/**
|
|
182
|
+
* Default configuration values
|
|
183
|
+
*/
|
|
184
|
+
export declare const DEFAULT_CONFIG: Omit<ResolvedConfig, 'endpoint'>;
|
|
185
|
+
/**
|
|
186
|
+
* Default ORM configuration values
|
|
187
|
+
*/
|
|
188
|
+
export declare const DEFAULT_ORM_CONFIG: {
|
|
189
|
+
output: string;
|
|
190
|
+
useSharedTypes: boolean;
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Helper function to define configuration with type checking
|
|
194
|
+
*/
|
|
195
|
+
export declare function defineConfig(config: GraphQLSDKConfig): GraphQLSDKConfig;
|
|
196
|
+
/**
|
|
197
|
+
* Resolve configuration by applying defaults
|
|
198
|
+
*/
|
|
199
|
+
export declare function resolveConfig(config: GraphQLSDKConfig): ResolvedConfig;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK Configuration types
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Default watch configuration values
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_WATCH_CONFIG = {
|
|
8
|
+
pollInterval: 3000,
|
|
9
|
+
debounce: 800,
|
|
10
|
+
touchFile: null,
|
|
11
|
+
clearScreen: true,
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Default configuration values
|
|
15
|
+
*/
|
|
16
|
+
export const DEFAULT_CONFIG = {
|
|
17
|
+
headers: {},
|
|
18
|
+
output: './generated/graphql',
|
|
19
|
+
tables: {
|
|
20
|
+
include: ['*'],
|
|
21
|
+
exclude: [],
|
|
22
|
+
},
|
|
23
|
+
queries: {
|
|
24
|
+
include: ['*'],
|
|
25
|
+
exclude: ['_meta', 'query'], // Internal PostGraphile queries
|
|
26
|
+
},
|
|
27
|
+
mutations: {
|
|
28
|
+
include: ['*'],
|
|
29
|
+
exclude: [],
|
|
30
|
+
},
|
|
31
|
+
excludeFields: [],
|
|
32
|
+
hooks: {
|
|
33
|
+
queries: true,
|
|
34
|
+
mutations: true,
|
|
35
|
+
queryKeyPrefix: 'graphql',
|
|
36
|
+
},
|
|
37
|
+
postgraphile: {
|
|
38
|
+
schema: 'public',
|
|
39
|
+
},
|
|
40
|
+
codegen: {
|
|
41
|
+
maxFieldDepth: 2,
|
|
42
|
+
skipQueryField: true,
|
|
43
|
+
},
|
|
44
|
+
orm: null, // ORM generation disabled by default
|
|
45
|
+
watch: DEFAULT_WATCH_CONFIG,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Default ORM configuration values
|
|
49
|
+
*/
|
|
50
|
+
export const DEFAULT_ORM_CONFIG = {
|
|
51
|
+
output: './generated/orm',
|
|
52
|
+
useSharedTypes: true,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Helper function to define configuration with type checking
|
|
56
|
+
*/
|
|
57
|
+
export function defineConfig(config) {
|
|
58
|
+
return config;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Resolve configuration by applying defaults
|
|
62
|
+
*/
|
|
63
|
+
export function resolveConfig(config) {
|
|
64
|
+
return {
|
|
65
|
+
endpoint: config.endpoint,
|
|
66
|
+
headers: config.headers ?? DEFAULT_CONFIG.headers,
|
|
67
|
+
output: config.output ?? DEFAULT_CONFIG.output,
|
|
68
|
+
tables: {
|
|
69
|
+
include: config.tables?.include ?? DEFAULT_CONFIG.tables.include,
|
|
70
|
+
exclude: config.tables?.exclude ?? DEFAULT_CONFIG.tables.exclude,
|
|
71
|
+
},
|
|
72
|
+
queries: {
|
|
73
|
+
include: config.queries?.include ?? DEFAULT_CONFIG.queries.include,
|
|
74
|
+
exclude: config.queries?.exclude ?? DEFAULT_CONFIG.queries.exclude,
|
|
75
|
+
},
|
|
76
|
+
mutations: {
|
|
77
|
+
include: config.mutations?.include ?? DEFAULT_CONFIG.mutations.include,
|
|
78
|
+
exclude: config.mutations?.exclude ?? DEFAULT_CONFIG.mutations.exclude,
|
|
79
|
+
},
|
|
80
|
+
excludeFields: config.excludeFields ?? DEFAULT_CONFIG.excludeFields,
|
|
81
|
+
hooks: {
|
|
82
|
+
queries: config.hooks?.queries ?? DEFAULT_CONFIG.hooks.queries,
|
|
83
|
+
mutations: config.hooks?.mutations ?? DEFAULT_CONFIG.hooks.mutations,
|
|
84
|
+
queryKeyPrefix: config.hooks?.queryKeyPrefix ?? DEFAULT_CONFIG.hooks.queryKeyPrefix,
|
|
85
|
+
},
|
|
86
|
+
postgraphile: {
|
|
87
|
+
schema: config.postgraphile?.schema ?? DEFAULT_CONFIG.postgraphile.schema,
|
|
88
|
+
},
|
|
89
|
+
codegen: {
|
|
90
|
+
maxFieldDepth: config.codegen?.maxFieldDepth ?? DEFAULT_CONFIG.codegen.maxFieldDepth,
|
|
91
|
+
skipQueryField: config.codegen?.skipQueryField ?? DEFAULT_CONFIG.codegen.skipQueryField,
|
|
92
|
+
},
|
|
93
|
+
orm: config.orm
|
|
94
|
+
? {
|
|
95
|
+
output: config.orm.output ?? DEFAULT_ORM_CONFIG.output,
|
|
96
|
+
useSharedTypes: config.orm.useSharedTypes ?? DEFAULT_ORM_CONFIG.useSharedTypes,
|
|
97
|
+
}
|
|
98
|
+
: null,
|
|
99
|
+
watch: {
|
|
100
|
+
pollInterval: config.watch?.pollInterval ?? DEFAULT_WATCH_CONFIG.pollInterval,
|
|
101
|
+
debounce: config.watch?.debounce ?? DEFAULT_WATCH_CONFIG.debounce,
|
|
102
|
+
touchFile: config.watch?.touchFile ?? DEFAULT_WATCH_CONFIG.touchFile,
|
|
103
|
+
clearScreen: config.watch?.clearScreen ?? DEFAULT_WATCH_CONFIG.clearScreen,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type exports for @constructive-io/graphql-codegen
|
|
3
|
+
*/
|
|
4
|
+
export type { CleanTable, CleanField, CleanFieldType, CleanRelations, CleanBelongsToRelation, CleanHasOneRelation, CleanHasManyRelation, CleanManyToManyRelation, TableInflection, TableQueryNames, TableConstraints, ConstraintInfo, ForeignKeyConstraint, } from './schema';
|
|
5
|
+
export type { PageInfo, ConnectionResult, QueryOptions, OrderByItem, FilterOperator, FieldFilter, RelationalFilter, Filter, } from './query';
|
|
6
|
+
export type { MutationOptions, CreateInput, UpdateInput, DeleteInput, MutationResult, } from './mutation';
|
|
7
|
+
export type { SimpleFieldSelection, FieldSelectionPreset, FieldSelection, SelectionOptions, } from './selection';
|
|
8
|
+
export type { GraphQLSDKConfig, ResolvedConfig, } from './config';
|
|
9
|
+
export { defineConfig, resolveConfig, DEFAULT_CONFIG } from './config';
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphQL Introspection Types
|
|
3
|
+
*
|
|
4
|
+
* Standard types for GraphQL schema introspection via __schema query.
|
|
5
|
+
* These mirror the GraphQL introspection spec.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Reference to a GraphQL type - can be nested for wrappers like NON_NULL and LIST
|
|
9
|
+
*/
|
|
10
|
+
export interface IntrospectionTypeRef {
|
|
11
|
+
kind: IntrospectionTypeKind;
|
|
12
|
+
name: string | null;
|
|
13
|
+
ofType: IntrospectionTypeRef | null;
|
|
14
|
+
}
|
|
15
|
+
export type IntrospectionTypeKind = 'SCALAR' | 'OBJECT' | 'INPUT_OBJECT' | 'ENUM' | 'LIST' | 'NON_NULL' | 'INTERFACE' | 'UNION';
|
|
16
|
+
/**
|
|
17
|
+
* Input value - used for both field arguments and INPUT_OBJECT fields
|
|
18
|
+
*/
|
|
19
|
+
export interface IntrospectionInputValue {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string | null;
|
|
22
|
+
type: IntrospectionTypeRef;
|
|
23
|
+
defaultValue: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Field on an OBJECT or INTERFACE type
|
|
27
|
+
*/
|
|
28
|
+
export interface IntrospectionField {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string | null;
|
|
31
|
+
args: IntrospectionInputValue[];
|
|
32
|
+
type: IntrospectionTypeRef;
|
|
33
|
+
isDeprecated: boolean;
|
|
34
|
+
deprecationReason: string | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Enum value definition
|
|
38
|
+
*/
|
|
39
|
+
export interface IntrospectionEnumValue {
|
|
40
|
+
name: string;
|
|
41
|
+
description: string | null;
|
|
42
|
+
isDeprecated: boolean;
|
|
43
|
+
deprecationReason: string | null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Complete type definition from introspection
|
|
47
|
+
*/
|
|
48
|
+
export interface IntrospectionType {
|
|
49
|
+
kind: IntrospectionTypeKind;
|
|
50
|
+
name: string;
|
|
51
|
+
description: string | null;
|
|
52
|
+
/** Fields for OBJECT and INTERFACE types */
|
|
53
|
+
fields: IntrospectionField[] | null;
|
|
54
|
+
/** Input fields for INPUT_OBJECT types */
|
|
55
|
+
inputFields: IntrospectionInputValue[] | null;
|
|
56
|
+
/** Possible types for INTERFACE and UNION types */
|
|
57
|
+
possibleTypes: Array<{
|
|
58
|
+
name: string;
|
|
59
|
+
}> | null;
|
|
60
|
+
/** Enum values for ENUM types */
|
|
61
|
+
enumValues: IntrospectionEnumValue[] | null;
|
|
62
|
+
/** Interfaces implemented by OBJECT types */
|
|
63
|
+
interfaces: Array<{
|
|
64
|
+
name: string;
|
|
65
|
+
}> | null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Root type references in schema
|
|
69
|
+
*/
|
|
70
|
+
export interface IntrospectionRootType {
|
|
71
|
+
name: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Full schema introspection result
|
|
75
|
+
*/
|
|
76
|
+
export interface IntrospectionSchema {
|
|
77
|
+
queryType: IntrospectionRootType;
|
|
78
|
+
mutationType: IntrospectionRootType | null;
|
|
79
|
+
subscriptionType: IntrospectionRootType | null;
|
|
80
|
+
types: IntrospectionType[];
|
|
81
|
+
directives: IntrospectionDirective[];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Directive definition
|
|
85
|
+
*/
|
|
86
|
+
export interface IntrospectionDirective {
|
|
87
|
+
name: string;
|
|
88
|
+
description: string | null;
|
|
89
|
+
locations: string[];
|
|
90
|
+
args: IntrospectionInputValue[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Response from introspection query
|
|
94
|
+
*/
|
|
95
|
+
export interface IntrospectionQueryResponse {
|
|
96
|
+
__schema: IntrospectionSchema;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if type kind is a wrapper (LIST or NON_NULL)
|
|
100
|
+
*/
|
|
101
|
+
export declare function isWrapperType(kind: IntrospectionTypeKind): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Check if type kind is a named type (has a name)
|
|
104
|
+
*/
|
|
105
|
+
export declare function isNamedType(kind: IntrospectionTypeKind): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Unwrap a type reference to get the base named type
|
|
108
|
+
*/
|
|
109
|
+
export declare function unwrapType(typeRef: IntrospectionTypeRef): IntrospectionTypeRef;
|
|
110
|
+
/**
|
|
111
|
+
* Get the base type name from a possibly wrapped type
|
|
112
|
+
*/
|
|
113
|
+
export declare function getBaseTypeName(typeRef: IntrospectionTypeRef): string | null;
|
|
114
|
+
/**
|
|
115
|
+
* Check if a type reference is non-null (required)
|
|
116
|
+
*/
|
|
117
|
+
export declare function isNonNull(typeRef: IntrospectionTypeRef): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a type reference is a list
|
|
120
|
+
*/
|
|
121
|
+
export declare function isList(typeRef: IntrospectionTypeRef): boolean;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphQL Introspection Types
|
|
3
|
+
*
|
|
4
|
+
* Standard types for GraphQL schema introspection via __schema query.
|
|
5
|
+
* These mirror the GraphQL introspection spec.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Type Guards
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Check if type kind is a wrapper (LIST or NON_NULL)
|
|
12
|
+
*/
|
|
13
|
+
export function isWrapperType(kind) {
|
|
14
|
+
return kind === 'LIST' || kind === 'NON_NULL';
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Check if type kind is a named type (has a name)
|
|
18
|
+
*/
|
|
19
|
+
export function isNamedType(kind) {
|
|
20
|
+
return !isWrapperType(kind);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unwrap a type reference to get the base named type
|
|
24
|
+
*/
|
|
25
|
+
export function unwrapType(typeRef) {
|
|
26
|
+
let current = typeRef;
|
|
27
|
+
while (current.ofType) {
|
|
28
|
+
current = current.ofType;
|
|
29
|
+
}
|
|
30
|
+
return current;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the base type name from a possibly wrapped type
|
|
34
|
+
*/
|
|
35
|
+
export function getBaseTypeName(typeRef) {
|
|
36
|
+
return unwrapType(typeRef).name;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a type reference is non-null (required)
|
|
40
|
+
*/
|
|
41
|
+
export function isNonNull(typeRef) {
|
|
42
|
+
return typeRef.kind === 'NON_NULL';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if a type reference is a list
|
|
46
|
+
*/
|
|
47
|
+
export function isList(typeRef) {
|
|
48
|
+
if (typeRef.kind === 'LIST')
|
|
49
|
+
return true;
|
|
50
|
+
if (typeRef.kind === 'NON_NULL' && typeRef.ofType) {
|
|
51
|
+
return typeRef.ofType.kind === 'LIST';
|
|
52
|
+
}
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mutation-related types
|
|
3
|
+
*/
|
|
4
|
+
import type { FieldSelection } from './selection';
|
|
5
|
+
/**
|
|
6
|
+
* Options for mutation operations
|
|
7
|
+
*/
|
|
8
|
+
export interface MutationOptions {
|
|
9
|
+
/** Fields to return after mutation */
|
|
10
|
+
returning?: string[];
|
|
11
|
+
/** Field selection for returned data */
|
|
12
|
+
fieldSelection?: FieldSelection;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Input for create mutations
|
|
16
|
+
* Wraps the actual data in PostGraphile's expected format
|
|
17
|
+
*/
|
|
18
|
+
export interface CreateInput<T = Record<string, unknown>> {
|
|
19
|
+
[tableName: string]: T;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Input for update mutations
|
|
23
|
+
*/
|
|
24
|
+
export interface UpdateInput<T = Record<string, unknown>> {
|
|
25
|
+
/** Primary key value */
|
|
26
|
+
id: string | number;
|
|
27
|
+
/** Fields to update */
|
|
28
|
+
patch: T;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Input for delete mutations
|
|
32
|
+
*/
|
|
33
|
+
export interface DeleteInput {
|
|
34
|
+
/** Primary key value */
|
|
35
|
+
id: string | number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Standard mutation result
|
|
39
|
+
*/
|
|
40
|
+
export interface MutationResult<T = unknown> {
|
|
41
|
+
/** The affected record */
|
|
42
|
+
data?: T;
|
|
43
|
+
/** Client mutation ID (PostGraphile) */
|
|
44
|
+
clientMutationId?: string;
|
|
45
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query-related types for building GraphQL operations
|
|
3
|
+
*/
|
|
4
|
+
import type { FieldSelection } from './selection';
|
|
5
|
+
/**
|
|
6
|
+
* Relay-style pagination info
|
|
7
|
+
*/
|
|
8
|
+
export interface PageInfo {
|
|
9
|
+
hasNextPage: boolean;
|
|
10
|
+
hasPreviousPage: boolean;
|
|
11
|
+
startCursor?: string | null;
|
|
12
|
+
endCursor?: string | null;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Relay-style connection result
|
|
16
|
+
*/
|
|
17
|
+
export interface ConnectionResult<T = unknown> {
|
|
18
|
+
nodes: T[];
|
|
19
|
+
totalCount: number;
|
|
20
|
+
pageInfo: PageInfo;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Options for building SELECT queries
|
|
24
|
+
*/
|
|
25
|
+
export interface QueryOptions {
|
|
26
|
+
/** Number of records to fetch (alias for first) */
|
|
27
|
+
first?: number;
|
|
28
|
+
/** Alias for first */
|
|
29
|
+
limit?: number;
|
|
30
|
+
/** Offset for pagination */
|
|
31
|
+
offset?: number;
|
|
32
|
+
/** Cursor for forward pagination */
|
|
33
|
+
after?: string;
|
|
34
|
+
/** Cursor for backward pagination */
|
|
35
|
+
before?: string;
|
|
36
|
+
/** Filter conditions */
|
|
37
|
+
where?: Filter;
|
|
38
|
+
/** Sort order */
|
|
39
|
+
orderBy?: OrderByItem[];
|
|
40
|
+
/** Field selection options */
|
|
41
|
+
fieldSelection?: FieldSelection;
|
|
42
|
+
/** Include pageInfo in response */
|
|
43
|
+
includePageInfo?: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Single order by specification
|
|
47
|
+
*/
|
|
48
|
+
export interface OrderByItem {
|
|
49
|
+
field: string;
|
|
50
|
+
direction: 'asc' | 'desc';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* All supported filter operators
|
|
54
|
+
*/
|
|
55
|
+
export type FilterOperator = 'isNull' | 'equalTo' | 'notEqualTo' | 'distinctFrom' | 'notDistinctFrom' | 'in' | 'notIn' | 'lessThan' | 'lessThanOrEqualTo' | 'greaterThan' | 'greaterThanOrEqualTo' | 'includes' | 'notIncludes' | 'includesInsensitive' | 'notIncludesInsensitive' | 'startsWith' | 'notStartsWith' | 'startsWithInsensitive' | 'notStartsWithInsensitive' | 'endsWith' | 'notEndsWith' | 'endsWithInsensitive' | 'notEndsWithInsensitive' | 'like' | 'notLike' | 'likeInsensitive' | 'notLikeInsensitive' | 'equalToInsensitive' | 'notEqualToInsensitive' | 'distinctFromInsensitive' | 'notDistinctFromInsensitive' | 'inInsensitive' | 'notInInsensitive' | 'contains' | 'containedBy' | 'overlaps' | 'intersects' | 'intersects3D' | 'containsProperly' | 'coveredBy' | 'covers' | 'crosses' | 'disjoint' | 'orderingEquals' | 'touches' | 'within' | 'bboxIntersects2D' | 'bboxIntersects3D' | 'bboxOverlapsOrLeftOf' | 'bboxOverlapsOrRightOf' | 'bboxOverlapsOrBelow' | 'bboxOverlapsOrAbove' | 'bboxLeftOf' | 'bboxRightOf' | 'bboxBelow' | 'bboxAbove' | 'bboxContains' | 'bboxEquals';
|
|
56
|
+
/**
|
|
57
|
+
* Filter on a single field
|
|
58
|
+
*/
|
|
59
|
+
export type FieldFilter = {
|
|
60
|
+
[K in FilterOperator]?: unknown;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Filter on related records
|
|
64
|
+
*/
|
|
65
|
+
export interface RelationalFilter {
|
|
66
|
+
/** All related records must match */
|
|
67
|
+
every?: Filter;
|
|
68
|
+
/** At least one related record must match */
|
|
69
|
+
some?: Filter;
|
|
70
|
+
/** No related records match */
|
|
71
|
+
none?: Filter;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Main filter type - can be nested
|
|
75
|
+
*/
|
|
76
|
+
export type Filter = {
|
|
77
|
+
[field: string]: FieldFilter | RelationalFilter | Filter;
|
|
78
|
+
} & {
|
|
79
|
+
and?: Filter[];
|
|
80
|
+
or?: Filter[];
|
|
81
|
+
not?: Filter;
|
|
82
|
+
};
|