@conduit-client/generator-ts 2.0.0

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 (131) hide show
  1. package/dist/main/index.js +6 -0
  2. package/dist/main/index.js.map +1 -0
  3. package/dist/types/index.d.ts +0 -0
  4. package/dist/types/v1/__tests__/api-module-generator-service.spec.d.ts +1 -0
  5. package/dist/types/v1/__tests__/test-utils/additional-properties-api.d.ts +8 -0
  6. package/dist/types/v1/__tests__/test-utils/all-of-api.d.ts +8 -0
  7. package/dist/types/v1/__tests__/test-utils/any-api.d.ts +8 -0
  8. package/dist/types/v1/__tests__/test-utils/array-api.d.ts +8 -0
  9. package/dist/types/v1/__tests__/test-utils/base-api.d.ts +9 -0
  10. package/dist/types/v1/__tests__/test-utils/datetime-api.d.ts +8 -0
  11. package/dist/types/v1/__tests__/test-utils/discriminator-api.d.ts +9 -0
  12. package/dist/types/v1/__tests__/test-utils/enum-api.d.ts +8 -0
  13. package/dist/types/v1/__tests__/test-utils/index.d.ts +31 -0
  14. package/dist/types/v1/__tests__/test-utils/object-api.d.ts +8 -0
  15. package/dist/types/v1/__tests__/test-utils/oneof-api.d.ts +8 -0
  16. package/dist/types/v1/__tests__/test-utils/scalar-api.d.ts +9 -0
  17. package/dist/types/v1/__tests__/utils.spec.d.ts +1 -0
  18. package/dist/types/v1/api-module-generator-service.d.ts +18 -0
  19. package/dist/types/v1/files/__tests__/code.spec.d.ts +1 -0
  20. package/dist/types/v1/files/__tests__/file.spec.d.ts +1 -0
  21. package/dist/types/v1/files/__tests__/write-files.spec.d.ts +1 -0
  22. package/dist/types/v1/files/code.d.ts +86 -0
  23. package/dist/types/v1/files/file.d.ts +79 -0
  24. package/dist/types/v1/files/index.d.ts +3 -0
  25. package/dist/types/v1/files/write-files.d.ts +12 -0
  26. package/dist/types/v1/generators/__tests__/api-family-module-generator.spec.d.ts +1 -0
  27. package/dist/types/v1/generators/__tests__/aura-command-generator.spec.d.ts +1 -0
  28. package/dist/types/v1/generators/__tests__/aura-graphql-normalized-cache-control-command-generator.spec.d.ts +1 -0
  29. package/dist/types/v1/generators/__tests__/aura-normalized-cache-control-command-generator.spec.d.ts +1 -0
  30. package/dist/types/v1/generators/__tests__/aura-resource-cache-control-command-generator.spec.d.ts +1 -0
  31. package/dist/types/v1/generators/__tests__/base-command-generator.spec.d.ts +1 -0
  32. package/dist/types/v1/generators/__tests__/bindings-generator.spec.d.ts +1 -0
  33. package/dist/types/v1/generators/__tests__/built-test-model.d.ts +10 -0
  34. package/dist/types/v1/generators/__tests__/cache-control-generator.spec.d.ts +1 -0
  35. package/dist/types/v1/generators/__tests__/command-config-builder.spec.d.ts +1 -0
  36. package/dist/types/v1/generators/__tests__/http-command-generator.spec.d.ts +1 -0
  37. package/dist/types/v1/generators/__tests__/http-normalized-cache-control-command-generator.spec.d.ts +1 -0
  38. package/dist/types/v1/generators/__tests__/imperative-binding-generator.spec.d.ts +1 -0
  39. package/dist/types/v1/generators/__tests__/imperative-legacy-binding-generator.spec.d.ts +1 -0
  40. package/dist/types/v1/generators/__tests__/normalized-cache-control-generator-mixin.spec.d.ts +1 -0
  41. package/dist/types/v1/generators/__tests__/utils.spec.d.ts +1 -0
  42. package/dist/types/v1/generators/__tests__/wire-binding-generator.spec.d.ts +1 -0
  43. package/dist/types/v1/generators/api-family-module-generator.d.ts +54 -0
  44. package/dist/types/v1/generators/aura-command-generator.d.ts +46 -0
  45. package/dist/types/v1/generators/aura-graphql-normalized-cache-control-command-generator.d.ts +1 -0
  46. package/dist/types/v1/generators/aura-normalized-cache-control-command-generator.d.ts +1 -0
  47. package/dist/types/v1/generators/aura-resource-cache-control-command-generator.d.ts +39 -0
  48. package/dist/types/v1/generators/base-command-generator.d.ts +88 -0
  49. package/dist/types/v1/generators/bindings-generator.d.ts +69 -0
  50. package/dist/types/v1/generators/cache-control-generator.d.ts +2 -0
  51. package/dist/types/v1/generators/command-config-builder.d.ts +28 -0
  52. package/dist/types/v1/generators/graphql-imperative-binding-generator.d.ts +23 -0
  53. package/dist/types/v1/generators/graphql-imperative-legacy-binding-generator.d.ts +18 -0
  54. package/dist/types/v1/generators/graphql-mutation-binding-generator.d.ts +21 -0
  55. package/dist/types/v1/generators/graphql-normalized-cache-control-generator-mixin.d.ts +13 -0
  56. package/dist/types/v1/generators/graphql-root-variable-names.d.ts +2 -0
  57. package/dist/types/v1/generators/graphql-wire-binding-generator.d.ts +18 -0
  58. package/dist/types/v1/generators/http-command-generator.d.ts +67 -0
  59. package/dist/types/v1/generators/http-graphql-normalized-cache-control-command-generator.d.ts +1 -0
  60. package/dist/types/v1/generators/http-normalized-cache-control-command-generator.d.ts +1 -0
  61. package/dist/types/v1/generators/imperative-binding-generator.d.ts +24 -0
  62. package/dist/types/v1/generators/imperative-legacy-binding-generator.d.ts +18 -0
  63. package/dist/types/v1/generators/index.d.ts +9 -0
  64. package/dist/types/v1/generators/normalized-cache-control-generator-mixin.d.ts +15 -0
  65. package/dist/types/v1/generators/utils.d.ts +17 -0
  66. package/dist/types/v1/generators/wire-binding-generator.d.ts +19 -0
  67. package/dist/types/v1/index.d.ts +4 -0
  68. package/dist/types/v1/model/__tests__/aura-command-model.spec.d.ts +1 -0
  69. package/dist/types/v1/model/__tests__/aura-graphql-command-model.spec.d.ts +1 -0
  70. package/dist/types/v1/model/__tests__/aura-normalized-caching-command-model.spec.d.ts +1 -0
  71. package/dist/types/v1/model/__tests__/aura-resource-caching-command-model.spec.d.ts +1 -0
  72. package/dist/types/v1/model/__tests__/base-command-model.spec.d.ts +1 -0
  73. package/dist/types/v1/model/__tests__/graphql-schema-model.spec.d.ts +1 -0
  74. package/dist/types/v1/model/__tests__/graphql-utils.d.ts +17 -0
  75. package/dist/types/v1/model/__tests__/http-command-model.spec.d.ts +1 -0
  76. package/dist/types/v1/model/__tests__/http-normalized-caching-command-model.spec.d.ts +1 -0
  77. package/dist/types/v1/model/aura-command-model.d.ts +34 -0
  78. package/dist/types/v1/model/aura-graphql-command-model.d.ts +10 -0
  79. package/dist/types/v1/model/aura-normalized-caching-command-model.d.ts +8 -0
  80. package/dist/types/v1/model/aura-resource-caching-command-model.d.ts +13 -0
  81. package/dist/types/v1/model/base-command-model.d.ts +186 -0
  82. package/dist/types/v1/model/graphql-command-model-interface.d.ts +12 -0
  83. package/dist/types/v1/model/graphql-schema-model.d.ts +104 -0
  84. package/dist/types/v1/model/http-command-model.d.ts +32 -0
  85. package/dist/types/v1/model/http-graphql-command-model.d.ts +16 -0
  86. package/dist/types/v1/model/http-normalized-caching-command-model.d.ts +14 -0
  87. package/dist/types/v1/normalization/__tests__/graphql-type-generator.spec.d.ts +1 -0
  88. package/dist/types/v1/normalization/__tests__/graphql-type-registry-generator.spec.d.ts +1 -0
  89. package/dist/types/v1/normalization/__tests__/identifiable-type-generator.spec.d.ts +1 -0
  90. package/dist/types/v1/normalization/__tests__/integration.spec.d.ts +1 -0
  91. package/dist/types/v1/normalization/__tests__/normalized-type-generator.spec.d.ts +1 -0
  92. package/dist/types/v1/normalization/__tests__/type-registry-generator.spec.d.ts +1 -0
  93. package/dist/types/v1/normalization/__tests__/unidentifiable-type-generator.spec.d.ts +1 -0
  94. package/dist/types/v1/normalization/__tests__/utils.d.ts +3 -0
  95. package/dist/types/v1/normalization/graphql/__tests__/cursor-connection-type-generator.spec.d.ts +1 -0
  96. package/dist/types/v1/normalization/graphql/__tests__/identifiable-type-generator.spec.d.ts +1 -0
  97. package/dist/types/v1/normalization/graphql/__tests__/interface-type-generator.spec.d.ts +1 -0
  98. package/dist/types/v1/normalization/graphql/__tests__/unidentifiable-type-generator.spec.d.ts +1 -0
  99. package/dist/types/v1/normalization/graphql/base-type-generator.d.ts +76 -0
  100. package/dist/types/v1/normalization/graphql/cursor-connection-type-generator.d.ts +17 -0
  101. package/dist/types/v1/normalization/graphql/document-root-type-generator.d.ts +13 -0
  102. package/dist/types/v1/normalization/graphql/identifiable-type-generator.d.ts +13 -0
  103. package/dist/types/v1/normalization/graphql/interface-type-generator.d.ts +10 -0
  104. package/dist/types/v1/normalization/graphql/unidentifiable-type-generator.d.ts +13 -0
  105. package/dist/types/v1/normalization/graphql/union-type-generator.d.ts +10 -0
  106. package/dist/types/v1/normalization/graphql-type-generator.d.ts +47 -0
  107. package/dist/types/v1/normalization/graphql-type-registry-generator.d.ts +59 -0
  108. package/dist/types/v1/normalization/identifiable-type-generator.d.ts +19 -0
  109. package/dist/types/v1/normalization/index.d.ts +28 -0
  110. package/dist/types/v1/normalization/normalize-code-gen/__tests__/normalize-generator-service.spec.d.ts +1 -0
  111. package/dist/types/v1/normalization/normalize-code-gen/__tests__/utils.d.ts +15 -0
  112. package/dist/types/v1/normalization/normalize-code-gen/normalize-generator-service.d.ts +65 -0
  113. package/dist/types/v1/normalization/normalized-type-generator.d.ts +52 -0
  114. package/dist/types/v1/normalization/type-registry-generator.d.ts +68 -0
  115. package/dist/types/v1/normalization/unidentifiable-type-generator.d.ts +17 -0
  116. package/dist/types/v1/normalization/utils.d.ts +23 -0
  117. package/dist/types/v1/types/__tests__/json-schema-declarations.spec.d.ts +1 -0
  118. package/dist/types/v1/types/__tests__/json-schema.spec.d.ts +3 -0
  119. package/dist/types/v1/types/__tests__/normalized-type-definition.spec.d.ts +1 -0
  120. package/dist/types/v1/types/__tests__/resolve-all-of-type.spec.d.ts +1 -0
  121. package/dist/types/v1/types/__tests__/type-definition.spec.d.ts +1 -0
  122. package/dist/types/v1/types/index.d.ts +4 -0
  123. package/dist/types/v1/types/json-schema-declarations.d.ts +29 -0
  124. package/dist/types/v1/types/json-schema.d.ts +15 -0
  125. package/dist/types/v1/types/normalized-type-definition.d.ts +25 -0
  126. package/dist/types/v1/types/resolve-all-of-type.d.ts +16 -0
  127. package/dist/types/v1/types/type-definition.d.ts +35 -0
  128. package/dist/types/v1/utils.d.ts +30 -0
  129. package/dist/v1/index.js +11074 -0
  130. package/dist/v1/index.js.map +1 -0
  131. package/package.json +46 -0
@@ -0,0 +1,186 @@
1
+ import { type ServiceVersion } from '@conduit-client/utils';
2
+ import type { ImportableReference } from '../files';
3
+ import type { Operation, Parameter, Type, QueryParameter, TypeOfParameter, HttpMethod, Binding, ResolvedOperationServices } from '@conduit-client/model/v1';
4
+ import type { InvalidateConfig } from '@conduit-client/utils';
5
+ export type ServiceDependency = {
6
+ version: ServiceVersion;
7
+ descriptor: ImportableReference;
8
+ namedService: ImportableReference;
9
+ localName: string;
10
+ serviceName: string;
11
+ tags?: Record<string, string>;
12
+ optional?: boolean;
13
+ };
14
+ export type CommandServiceDependencies = {
15
+ baseClass: ServiceDependency;
16
+ inherited: ServiceDependency[];
17
+ extra: ServiceDependency[];
18
+ overrides: ResolvedOperationServices;
19
+ defaultOverrides: ResolvedOperationServices;
20
+ };
21
+ export type OperationType = 'query' | 'mutation' | 'graphql';
22
+ export type ContentModel = {
23
+ 'application/json'?: Type;
24
+ };
25
+ export type CacheStrategy = {
26
+ type: 'none';
27
+ } | {
28
+ type: 'resource';
29
+ config: {
30
+ 'max-age': number;
31
+ };
32
+ } | {
33
+ type: 'normalized';
34
+ 'cache-control': {
35
+ type: 'no-cache';
36
+ } | {
37
+ type: 'max-age';
38
+ 'max-age': number;
39
+ };
40
+ key?: Record<string, string>;
41
+ };
42
+ export type ErrorStrategy = {
43
+ type: 'stringified';
44
+ } | {
45
+ type: 'fetchResponse';
46
+ };
47
+ export type ConfigSchemaType = 'default' | 'flattened';
48
+ export type InvalidationConfig = {
49
+ statusCode: string;
50
+ invalidation: InvalidateConfig[];
51
+ };
52
+ export type NetworkPreference = 'aura' | 'http';
53
+ export type ICommandModel = {
54
+ readonly transportType: 'aura' | 'http';
55
+ readonly className: string;
56
+ readonly commandName: string;
57
+ readonly filePath: string;
58
+ readonly bindings: Binding[];
59
+ readonly configType: Type;
60
+ readonly responseType: ({
61
+ default: ContentModel;
62
+ } & {
63
+ [statusCode: number]: ContentModel;
64
+ }) | undefined;
65
+ readonly uriParameters: {
66
+ name: string;
67
+ type: TypeOfParameter<Parameter>;
68
+ required: boolean;
69
+ explode?: boolean;
70
+ }[];
71
+ readonly queryParameters: {
72
+ name: string;
73
+ type: TypeOfParameter<QueryParameter>;
74
+ required: boolean;
75
+ explode?: boolean;
76
+ }[];
77
+ readonly headers: {
78
+ name: string;
79
+ type: TypeOfParameter<Parameter>;
80
+ required: boolean;
81
+ explode?: boolean;
82
+ defaultValue?: TypeOfParameter<Parameter>;
83
+ }[];
84
+ readonly body?: {
85
+ content: ContentModel;
86
+ parameterName: string;
87
+ };
88
+ getAllParams(): {
89
+ name: string;
90
+ type: TypeOfParameter<Parameter<Type>>;
91
+ required: boolean;
92
+ explode?: boolean;
93
+ defaultValue?: TypeOfParameter<Parameter<Type>>;
94
+ }[];
95
+ readonly serviceDependencies: CommandServiceDependencies;
96
+ readonly configSchemaType: ConfigSchemaType;
97
+ readonly exposeRefresh: boolean;
98
+ readonly operationType: OperationType;
99
+ aura?: {
100
+ controller: string;
101
+ method: string;
102
+ bodyParam?: string;
103
+ };
104
+ networkPreference?: NetworkPreference;
105
+ errorStrategy: ErrorStrategy;
106
+ cacheStrategy: CacheStrategy;
107
+ method: HttpMethod;
108
+ serverUrlPath: string;
109
+ endpointUrlPath: string;
110
+ invalidationConfigs: InvalidationConfig[];
111
+ };
112
+ /**
113
+ * Base abstract class for command models that encapsulates the common functionality required by all command models.
114
+ * It provides a structure for mapping API operations to the necessary command-specific metadata to be used for code generation.
115
+ */
116
+ export declare abstract class BaseCommandModel implements ICommandModel {
117
+ protected operation: Operation;
118
+ constructor(operation: Operation);
119
+ abstract get serviceDependencies(): CommandServiceDependencies;
120
+ getAllParams(): {
121
+ name: string;
122
+ type: TypeOfParameter<Parameter<Type>>;
123
+ required: boolean;
124
+ explode?: boolean;
125
+ }[];
126
+ get transportType(): "aura" | "http";
127
+ /**
128
+ * Defaulted in {@link ../../../../model/src/v1/amf/endpoints/amf-operation.ts#L54}
129
+ * */
130
+ get bindings(): Binding[];
131
+ get body(): {
132
+ content: ContentModel;
133
+ parameterName: string;
134
+ } | undefined;
135
+ get configType(): Type;
136
+ get responseType(): {
137
+ default: {
138
+ 'application/json': Type;
139
+ };
140
+ } | undefined;
141
+ get uriParameters(): {
142
+ name: string;
143
+ type: import("@conduit-client/model/v1").BooleanType | import("@conduit-client/model/v1").DoubleType | import("@conduit-client/model/v1").IntegerType | import("@conduit-client/model/v1").NumberType | import("@conduit-client/model/v1").StringType | import("@conduit-client/model/v1").DateType | import("@conduit-client/model/v1").TimeType | import("@conduit-client/model/v1").DateTimeOnlyType | import("@conduit-client/model/v1").DateTimeType;
144
+ required: boolean;
145
+ explode?: boolean;
146
+ }[];
147
+ get queryParameters(): {
148
+ name: string;
149
+ type: import("@conduit-client/model/v1").ScalarType | ({
150
+ type: "array";
151
+ items: Type;
152
+ } & import("@conduit-client/model/v1").BaseType & {
153
+ items?: import("@conduit-client/model/v1").ScalarType;
154
+ });
155
+ required: boolean;
156
+ explode?: boolean;
157
+ }[];
158
+ get headers(): {
159
+ name: string;
160
+ type: import("@conduit-client/model/v1").ScalarType;
161
+ required: boolean;
162
+ explode?: boolean;
163
+ }[];
164
+ get commandName(): string;
165
+ get className(): string;
166
+ get filePath(): string;
167
+ get configSchemaType(): import("@conduit-client/model/v1").ConfigSchemaType;
168
+ get exposeRefresh(): boolean;
169
+ get operationType(): import("@conduit-client/model/v1").OperationType;
170
+ get errorStrategy(): import("@conduit-client/model/v1").ErrorStrategy;
171
+ get cacheStrategy(): import("@conduit-client/model/v1").CacheStrategy;
172
+ get method(): HttpMethod;
173
+ get serverUrlPath(): string;
174
+ get endpointUrlPath(): string;
175
+ get request(): import("@conduit-client/model/v1").Request<Type>;
176
+ get invalidationConfigs(): InvalidationConfig[];
177
+ protected buildBody(): {
178
+ content: ContentModel;
179
+ parameterName: string;
180
+ } | undefined;
181
+ protected buildResponseType(): {
182
+ default: {
183
+ 'application/json': Type;
184
+ };
185
+ } | undefined;
186
+ }
@@ -0,0 +1,12 @@
1
+ import type { ICommandModel } from './base-command-model';
2
+ import type { GraphQLSchemaModel } from './graphql-schema-model';
3
+ /**
4
+ * Interface for GraphQL command models that extends the base command model
5
+ * with GraphQL-specific functionality, particularly schema access.
6
+ */
7
+ export interface IGraphQLCommandModel extends ICommandModel {
8
+ /**
9
+ * The GraphQL schema model containing type information and metadata
10
+ */
11
+ readonly schema: GraphQLSchemaModel;
12
+ }
@@ -0,0 +1,104 @@
1
+ import { TypeCacheControlExtension } from '@conduit-client/model/v1';
2
+ import { GraphQLSchema, GraphQLType, GraphQLObjectType, GraphQLInterfaceType, GraphQLInputObjectType, GraphQLField, GraphQLInputField } from 'graphql';
3
+ export type BaseGraphQLTypeMetadata = {
4
+ typename: string;
5
+ };
6
+ export type IdentifiableGraphQLTypeMetadata = BaseGraphQLTypeMetadata & {
7
+ 'cache-control': TypeCacheControlExtension;
8
+ };
9
+ export type RootGraphQLTypeMetadata = BaseGraphQLTypeMetadata & {
10
+ 'cache-control': TypeCacheControlExtension;
11
+ };
12
+ export type UnidentifiableGraphQLTypeMetadata = BaseGraphQLTypeMetadata;
13
+ export type CursorConnectionGraphQLTypeMetadata = BaseGraphQLTypeMetadata;
14
+ export type GraphQLTypeMetadata = IdentifiableGraphQLTypeMetadata | UnidentifiableGraphQLTypeMetadata | CursorConnectionGraphQLTypeMetadata | RootGraphQLTypeMetadata;
15
+ export type GraphQLTypeCategory = 'unidentifiable' | 'identifiable' | 'cursor-connection' | 'root';
16
+ export type GraphQLSingleFieldType = {
17
+ kind: 'single';
18
+ name: string;
19
+ typename: string;
20
+ nullable: boolean;
21
+ };
22
+ export type GraphQLListFieldType = {
23
+ kind: 'list';
24
+ nullable: boolean;
25
+ items: GraphQLSingleFieldType | GraphQLListFieldType;
26
+ };
27
+ export type GraphQLFieldType = {
28
+ type: GraphQLSingleFieldType | GraphQLListFieldType;
29
+ args?: Record<string, GraphQLArgumentType>;
30
+ description?: string | null;
31
+ };
32
+ type GraphQLArgumentType = {
33
+ type: GraphQLSingleFieldType | GraphQLListFieldType;
34
+ defaultValue?: any;
35
+ description?: string | null;
36
+ };
37
+ export type GraphQLBaseTypeModel = {
38
+ name: string;
39
+ category: 'unidentifiable';
40
+ metadata?: UnidentifiableGraphQLTypeMetadata;
41
+ } | {
42
+ name: string;
43
+ category: 'cursor-connection';
44
+ metadata?: CursorConnectionGraphQLTypeMetadata;
45
+ } | {
46
+ name: string;
47
+ category: 'identifiable';
48
+ metadata: IdentifiableGraphQLTypeMetadata;
49
+ idField: string;
50
+ } | {
51
+ name: string;
52
+ category: 'root';
53
+ metadata: RootGraphQLTypeMetadata;
54
+ };
55
+ export type GraphQLObjectTypeModel = {
56
+ kind: 'object';
57
+ fields: Record<string, GraphQLFieldType>;
58
+ interfaces?: string[];
59
+ } & GraphQLBaseTypeModel;
60
+ export type GraphQLUnionTypeModel = {
61
+ kind: 'union';
62
+ fields: Record<string, GraphQLFieldType>;
63
+ possibleTypes: GraphQLTypeModel[];
64
+ } & GraphQLBaseTypeModel;
65
+ type GraphQLEnumValueModel = {
66
+ name: string;
67
+ value: number;
68
+ description?: string | null;
69
+ };
70
+ export type GraphQLEnumTypeModel = {
71
+ kind: 'enum';
72
+ values: Record<string, GraphQLEnumValueModel>;
73
+ } & GraphQLBaseTypeModel;
74
+ type GraphQLInputObjectTypeModel = {
75
+ kind: 'input';
76
+ fields: Record<string, GraphQLFieldType>;
77
+ } & GraphQLBaseTypeModel;
78
+ export type GraphQLInterfaceTypeModel = {
79
+ kind: 'interface';
80
+ fields: Record<string, GraphQLFieldType>;
81
+ possibleTypes: GraphQLTypeModel[];
82
+ } & GraphQLBaseTypeModel;
83
+ export type GraphQLTypeModel = GraphQLObjectTypeModel | GraphQLUnionTypeModel | GraphQLEnumTypeModel | GraphQLInputObjectTypeModel | GraphQLInterfaceTypeModel;
84
+ export interface GraphQLSchemaModel {
85
+ types: GraphQLTypeModel[];
86
+ queryTypeName: string;
87
+ mutationTypeName?: string;
88
+ }
89
+ /**
90
+ * Validates that the provided type metadata is valid for the given GraphQL schema.
91
+ * Ensures that:
92
+ * - All identifiable types have cache-control metadata
93
+ * - All referenced typenames exist in the schema
94
+ * - Metadata matches the expected category for each type
95
+ */
96
+ export declare function validateGraphQLSchemaModel(typeMap: Record<string, GraphQLType>, metadataByTypename: Map<string, GraphQLTypeMetadata>, rootTypeNames: string[], defaults?: Partial<TypeCacheControlExtension>): void;
97
+ export declare function isRelayConnectionType(type: GraphQLObjectType): boolean;
98
+ export declare function unwrapFieldType(type: GraphQLType): GraphQLSingleFieldType | GraphQLListFieldType;
99
+ export declare function getFieldInfo(field: GraphQLField<any, any>): GraphQLFieldType;
100
+ export declare function getInputFieldInfo(field: GraphQLInputField): GraphQLFieldType;
101
+ export declare function getOutputIdField(type: GraphQLObjectType | GraphQLInterfaceType): string | undefined;
102
+ export declare function getInputIdField(type: GraphQLInputObjectType): string | undefined;
103
+ export declare function buildGraphQLSchemaModel(schema: GraphQLSchema, typeMetadata?: GraphQLTypeMetadata[], defaults?: Partial<TypeCacheControlExtension>): GraphQLSchemaModel;
104
+ export {};
@@ -0,0 +1,32 @@
1
+ import { BaseCommandModel, type ServiceDependency } from './base-command-model';
2
+ export declare const INPUT_PAYLOAD_MEMBER_NAME = "inputPayload";
3
+ /**
4
+ * Represents an HTTP command model that extends BaseCommandModel to handle HTTP-specific commands.
5
+ * This model specifically manages the input payload and service dependencies for HTTP operations.
6
+ */
7
+ export declare class HttpCommandModel extends BaseCommandModel {
8
+ getInputPayloadParameterName(): string;
9
+ getAllParams(): {
10
+ name: string;
11
+ type: import("@conduit-client/model/v1").ScalarType | ({
12
+ type: "array";
13
+ items: import("@conduit-client/model/v1").Type;
14
+ } & import("@conduit-client/model/v1").BaseType & {
15
+ items?: import("@conduit-client/model/v1").ScalarType;
16
+ });
17
+ required: boolean;
18
+ explode?: boolean;
19
+ }[];
20
+ /**
21
+ * Defines and retrieves the service dependencies for the HTTP command model,
22
+ * including any adjustments based on the server URL indicating specific service requirements.
23
+ * @returns {CommandServiceDependencies} An object detailing the service dependencies.
24
+ */
25
+ get serviceDependencies(): {
26
+ baseClass: ServiceDependency;
27
+ inherited: ServiceDependency[];
28
+ extra: never[];
29
+ overrides: import("@conduit-client/model/v1").ResolvedOperationServices;
30
+ defaultOverrides: import("@conduit-client/model/v1").ResolvedOperationServices;
31
+ };
32
+ }
@@ -0,0 +1,16 @@
1
+ import { GraphQLSchemaModel } from './graphql-schema-model';
2
+ import { HttpNormalizedCachingCommandModel } from './http-normalized-caching-command-model';
3
+ import { HttpGraphQLOperation } from '@conduit-client/model/v1';
4
+ import type { IGraphQLCommandModel } from './graphql-command-model-interface';
5
+ export declare class HttpGraphQLCommandModel extends HttpNormalizedCachingCommandModel implements IGraphQLCommandModel {
6
+ private schemaModel?;
7
+ constructor(operation: HttpGraphQLOperation);
8
+ get serviceDependencies(): {
9
+ baseClass: import("./base-command-model").ServiceDependency;
10
+ inherited: import("./base-command-model").ServiceDependency[];
11
+ extra: never[];
12
+ overrides: import("@conduit-client/model/v1").ResolvedOperationServices;
13
+ defaultOverrides: import("@conduit-client/model/v1").ResolvedOperationServices;
14
+ };
15
+ get schema(): GraphQLSchemaModel;
16
+ }
@@ -0,0 +1,14 @@
1
+ import { HttpCommandModel } from './http-command-model';
2
+ /**
3
+ * Represents a command model specifically designed for handling normalized caching for HTTP transport adapters.
4
+ * This model extends `HttpCommandModel` and overrides the service dependencies to include cache control services.
5
+ */
6
+ export declare class HttpNormalizedCachingCommandModel extends HttpCommandModel {
7
+ get serviceDependencies(): {
8
+ baseClass: import("./base-command-model").ServiceDependency;
9
+ inherited: import("./base-command-model").ServiceDependency[];
10
+ extra: never[];
11
+ overrides: import("@conduit-client/model/v1").ResolvedOperationServices;
12
+ defaultOverrides: import("@conduit-client/model/v1").ResolvedOperationServices;
13
+ };
14
+ }
@@ -0,0 +1,3 @@
1
+ export declare function expectRegistryHasType(registryContent: string, typeName: string): void;
2
+ export declare function expectRegistryHasInstantiation(registryContent: string, typeName: string): void;
3
+ export declare function expectRepoFiles(serviceFileCache: Map<string, any>, typeNames: string[]): void;
@@ -0,0 +1,76 @@
1
+ import { Code } from '../../files';
2
+ import type { ImportableReference, NamedFileService } from '../../files';
3
+ import type { GraphQLFieldType, GraphQLSchemaModel, GraphQLTypeModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ export declare const BASE_SCALAR_FIELD_DEF: ImportableReference;
6
+ export declare const BASE_OBJECT_FIELD_DEF: ImportableReference;
7
+ export declare const BASE_ARRAY_FIELD_DEF: ImportableReference;
8
+ export declare const FIELD_DEFS: ImportableReference;
9
+ export declare const GRAPHQL_INPUT_EXTENSION: ImportableReference;
10
+ export declare const GRAPHQL_DATA: ImportableReference;
11
+ export declare const GRAPHQL_TYPE_SERVICES: ImportableReference;
12
+ export declare const GRAPHQL_PUBSUB_SERVICE: ImportableReference;
13
+ export type GenerationOptions = {
14
+ namespace: string;
15
+ name: string;
16
+ className: string;
17
+ };
18
+ export declare abstract class BaseGraphQLTypeGenerator<T extends GraphQLTypeModel & {
19
+ fields?: Record<string, GraphQLFieldType>;
20
+ interfaces?: string[];
21
+ }> {
22
+ protected services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService;
23
+ constructor(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService);
24
+ /**
25
+ * Determine if a GraphQL type should be treated as an object-like type
26
+ * that needs a repository in the type registry
27
+ */
28
+ private isObjectLikeType;
29
+ /**
30
+ * Ensure a referenced type is built and return the appropriate registry reference
31
+ */
32
+ protected ensureTypeBuiltAndGetReference(referencedType: GraphQLTypeModel, schemaModel: GraphQLSchemaModel): Code;
33
+ /**
34
+ * Generate a field definition for a single field type (recursive helper)
35
+ */
36
+ private generateSingleFieldDef;
37
+ /**
38
+ * Generate field definitions for a GraphQL type
39
+ */
40
+ protected generateFieldDefinitions(type: T, dataTypeAnnotation: string | ImportableReference, normalizedDataTypeAnnotation: string | ImportableReference, schemaModel: GraphQLSchemaModel, namespace: string): Code[];
41
+ /**
42
+ * Generate complete fields property as a getter method to avoid circular dependencies
43
+ */
44
+ protected generateFieldsProperty(type: T, dataTypeAnnotation: string | ImportableReference, normalizedDataTypeAnnotation: string | ImportableReference, schemaModel: GraphQLSchemaModel, namespace: string): Code;
45
+ /**
46
+ * Get the ImportableReference for the GraphQLTypeRegistry
47
+ */
48
+ protected getGraphQLTypeRegistryReference(): {
49
+ filename: string;
50
+ exportedSymbol: string;
51
+ isType: false;
52
+ };
53
+ /**
54
+ * Generate constructor that accepts services and type registry
55
+ */
56
+ protected generateConstructor(): Code;
57
+ /**
58
+ * Generate common properties shared by all GraphQL type repositories
59
+ */
60
+ protected generateCommonProperties(type: T, options: GenerationOptions): Code;
61
+ /**
62
+ * Generate a standard GraphQL type class with common structure
63
+ */
64
+ protected generateStandardClass(type: T, schemaModel: GraphQLSchemaModel, options: GenerationOptions, baseClass: ImportableReference, genericTypes: {
65
+ data: string | ImportableReference;
66
+ normalized: string | ImportableReference;
67
+ }, additionalMethods?: Code[]): Code;
68
+ /**
69
+ * Generate a standard GraphQL type class for identifiable types with key params
70
+ */
71
+ protected generateIdentifiableClass(type: T, schemaModel: GraphQLSchemaModel, options: GenerationOptions, baseClass: ImportableReference, dataTypeAnnotation: string | ImportableReference, normalizedDataTypeAnnotation: string | ImportableReference, keyParamsType: string, additionalMethods?: Code[]): Code;
72
+ /**
73
+ * Abstract method to be implemented by specific type generators
74
+ */
75
+ abstract generate(type: T, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
76
+ }
@@ -0,0 +1,17 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLObjectTypeModel, GraphQLSchemaModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
6
+ export type CursorConnectionGraphQLObjectType = GraphQLObjectTypeModel & {
7
+ category: 'cursor-connection';
8
+ defaultPageSize?: number;
9
+ };
10
+ /**
11
+ * Cursor Connection Type MUST be an Object Type according to the Cursor Connection spec.
12
+ * https://relay.dev/graphql/connections.htm#sec-Connection-Types
13
+ */
14
+ export declare class CursorConnectionGraphQLTypeGenerator extends BaseGraphQLTypeGenerator<CursorConnectionGraphQLObjectType> {
15
+ generate(type: CursorConnectionGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
16
+ }
17
+ export declare function generateCursorConnectionGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: CursorConnectionGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,13 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLObjectTypeModel, GraphQLSchemaModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
6
+ /**
7
+ * Query Type MUST be an Object Type according to the GraphQL spec.
8
+ * https://spec.graphql.org/October2021/#sec-Query
9
+ */
10
+ export declare class DocumentRootTypeGenerator extends BaseGraphQLTypeGenerator<GraphQLObjectTypeModel> {
11
+ generate(type: GraphQLObjectTypeModel, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
12
+ }
13
+ export declare function generateDocumentRootGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: GraphQLObjectTypeModel, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,13 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLObjectTypeModel, GraphQLSchemaModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
6
+ export type IdentifiableGraphQLObjectType = GraphQLObjectTypeModel & {
7
+ category: 'identifiable';
8
+ idField: string;
9
+ };
10
+ export declare class IdentifiableGraphQLTypeGenerator extends BaseGraphQLTypeGenerator<IdentifiableGraphQLObjectType> {
11
+ generate(type: IdentifiableGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
12
+ }
13
+ export declare function generateIdentifiableGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: IdentifiableGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,10 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLSchemaModel, GraphQLInterfaceTypeModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
6
+ export type InterfaceGraphQLObjectType = GraphQLInterfaceTypeModel;
7
+ export declare class InterfaceGraphQLTypeGenerator extends BaseGraphQLTypeGenerator<InterfaceGraphQLObjectType> {
8
+ generate(type: InterfaceGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
9
+ }
10
+ export declare function generateInterfaceGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: InterfaceGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,13 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLSchemaModel, GraphQLTypeModel } from '../../model/graphql-schema-model';
4
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
5
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
6
+ export type UnidentifiableGraphQLObjectType = GraphQLTypeModel & {
7
+ kind: 'object';
8
+ category: 'unidentifiable';
9
+ };
10
+ export declare class UnidentifiableGraphQLTypeGenerator extends BaseGraphQLTypeGenerator<UnidentifiableGraphQLObjectType> {
11
+ generate(type: UnidentifiableGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
12
+ }
13
+ export declare function generateUnidentifiableGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: UnidentifiableGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,10 @@
1
+ import { Code } from '../../files';
2
+ import type { NamedFileService } from '../../files';
3
+ import type { GraphQLSchemaModel, GraphQLUnionTypeModel } from '../../model/graphql-schema-model';
4
+ import { BaseGraphQLTypeGenerator, GenerationOptions } from './base-type-generator';
5
+ import { NamedGraphQLTypeRegistryGeneratorService } from '../graphql-type-registry-generator';
6
+ export type UnionGraphQLObjectType = GraphQLUnionTypeModel;
7
+ export declare class UnionGraphQLTypeGenerator extends BaseGraphQLTypeGenerator<UnionGraphQLObjectType> {
8
+ generate(type: UnionGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
9
+ }
10
+ export declare function generateUnionGraphQLType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: UnionGraphQLObjectType, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
@@ -0,0 +1,47 @@
1
+ import { IdentifiableGraphQLObjectType } from './graphql/identifiable-type-generator';
2
+ import { UnidentifiableGraphQLObjectType } from './graphql/unidentifiable-type-generator';
3
+ import { CursorConnectionGraphQLObjectType } from './graphql/cursor-connection-type-generator';
4
+ import { InterfaceGraphQLObjectType } from './graphql/interface-type-generator';
5
+ import { UnionGraphQLObjectType } from './graphql/union-type-generator';
6
+ import type { ImportableValueReference, NamedFileService, Code } from '../files';
7
+ import type { GraphQLSchemaModel, GraphQLTypeModel } from '../model/graphql-schema-model';
8
+ import type { GenerationOptions } from './graphql/base-type-generator';
9
+ import { NamedGraphQLTypeRegistryGeneratorService } from './graphql-type-registry-generator';
10
+ export declare const FILE_PER_GRAPHQL_TYPE: (typename: string) => string;
11
+ export interface IGraphQLTypeGenerator {
12
+ build(options: {
13
+ namespace: string;
14
+ name: string;
15
+ schemaModel: GraphQLSchemaModel;
16
+ }): ImportableValueReference;
17
+ buildRef(options: {
18
+ namespace: string;
19
+ name: string;
20
+ }): ImportableValueReference;
21
+ }
22
+ declare function defaultGenerateType(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, type: GraphQLTypeModel, schemaModel: GraphQLSchemaModel, options: GenerationOptions): Code;
23
+ export type GraphQLObjectType = IdentifiableGraphQLObjectType | UnidentifiableGraphQLObjectType | CursorConnectionGraphQLObjectType | InterfaceGraphQLObjectType | UnionGraphQLObjectType;
24
+ /**
25
+ * A class for building GraphQL type repository implementations
26
+ */
27
+ export declare class GraphQLTypeGenerator implements IGraphQLTypeGenerator {
28
+ protected services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService;
29
+ private fileFor;
30
+ private generateType;
31
+ private cache;
32
+ constructor(services: NamedFileService & NamedGraphQLTypeRegistryGeneratorService, fileFor?: (typename: string) => string, generateType?: typeof defaultGenerateType);
33
+ /**
34
+ * Build a GraphQL type repository class, starting from the specified type name
35
+ * and spidering out to referenced types as needed
36
+ */
37
+ build(options: {
38
+ namespace: string;
39
+ name: string;
40
+ schemaModel: GraphQLSchemaModel;
41
+ }): ImportableValueReference;
42
+ buildRef(options: {
43
+ namespace: string;
44
+ name: string;
45
+ }): ImportableValueReference;
46
+ }
47
+ export {};