@baeta/plugin-graphql 2.0.0-next.14 → 2.0.0-next.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,94 +1,55 @@
1
1
  # @baeta/plugin-graphql
2
2
 
3
- ## 2.0.0-next.14
3
+ ## 2.0.0-next.16
4
4
 
5
- ## 2.0.0-next.13
6
-
7
- ### Patch Changes
8
-
9
- - [#389](https://github.com/andreisergiu98/baeta/pull/389) [`3e7a4d7`](https://github.com/andreisergiu98/baeta/commit/3e7a4d71a59543b8a506938f788aec8b5d907776) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Extract graphql utilities into @baeta/util-graphql
10
-
11
- - Updated dependencies [[`3e7a4d7`](https://github.com/andreisergiu98/baeta/commit/3e7a4d71a59543b8a506938f788aec8b5d907776), [`3e7a4d7`](https://github.com/andreisergiu98/baeta/commit/3e7a4d71a59543b8a506938f788aec8b5d907776), [`53322ca`](https://github.com/andreisergiu98/baeta/commit/53322ca8ad0c10bce70e49692d5d15023ec3a5e8), [`3e7a4d7`](https://github.com/andreisergiu98/baeta/commit/3e7a4d71a59543b8a506938f788aec8b5d907776)]:
12
- - @baeta/util-path@2.0.0-next.4
13
- - @baeta/generator-sdk@2.0.0-next.5
14
- - @baeta/util-graphql@2.0.0-next.2
15
-
16
- ## 2.0.0-next.12
17
-
18
- ## 2.0.0-next.11
19
-
20
- ### Patch Changes
21
-
22
- - [`ed81033`](https://github.com/andreisergiu98/baeta/commit/ed81033dc30b5a57f2358e4645ff3f717856cc21) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Generate starter index.ts file for new modules
23
-
24
- ## 2.0.0-next.10
25
-
26
- ## 2.0.0-next.9
27
-
28
- ### Patch Changes
29
-
30
- - Updated dependencies [[`831cfa2`](https://github.com/andreisergiu98/baeta/commit/831cfa2a11445aaf7f2d1a1d7ddf073db9bb8008), [`831cfa2`](https://github.com/andreisergiu98/baeta/commit/831cfa2a11445aaf7f2d1a1d7ddf073db9bb8008)]:
31
- - @baeta/generator-sdk@2.0.0-next.4
32
- - @baeta/util-path@2.0.0-next.3
33
-
34
- ## 2.0.0-next.8
35
-
36
- ## 2.0.0-next.7
37
-
38
- ### Patch Changes
39
-
40
- - [#214](https://github.com/andreisergiu98/baeta/pull/214) [`c47665a`](https://github.com/andreisergiu98/baeta/commit/c47665a76a0f88bae07f42983b380361e4f0843a) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Improve typesafety by type checking the exported module
41
-
42
- ## 2.0.0-next.3
43
-
44
- ### Patch Changes
45
-
46
- - [#214](https://github.com/andreisergiu98/baeta/pull/214) [`6de5d15`](https://github.com/andreisergiu98/baeta/commit/6de5d15484d341a1717a1b2f3f45272912e6a886) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Fix generated import paths with custom config
47
-
48
- - Update generator-sdk package
5
+ ### Major Changes
49
6
 
50
- - Updated dependencies [[`6de5d15`](https://github.com/andreisergiu98/baeta/commit/6de5d15484d341a1717a1b2f3f45272912e6a886)]:
51
- - @baeta/generator-sdk@2.0.0-next.3
7
+ - Drop support for Node.js v23 and v25. Baeta now targets the active LTS releases — Node.js `^22.20.0`, `^24.0.0`, or `>=26.0.0`. by [@andreisergiu98](https://github.com/andreisergiu98) in [#290](https://github.com/andreisergiu98/baeta/pull/290)
52
8
 
53
- ## 2.0.0-next.2
9
+ - The whole generator was rewritten to emit the new side-effect-free builder API (the resolver API itself is documented under `@baeta/core`). by [@andreisergiu98](https://github.com/andreisergiu98) in [#290](https://github.com/andreisergiu98/baeta/pull/290)
54
10
 
55
- ### Patch Changes
11
+ **v1 (generated accessor, side-effect registration):**
56
12
 
57
- - Fix broken types
13
+ ```typescript
14
+ import { getUserModule } from "./typedef";
58
15
 
59
- - Updated dependencies []:
60
- - @baeta/generator-sdk@2.0.0-next.2
61
- - @baeta/util-path@2.0.0-next.2
16
+ const { Query } = getUserModule();
62
17
 
63
- ## 2.0.0-next.1
18
+ Query.user(async (params) => {
19
+ return { id: params.args.id ?? "id", name: "John Doe" };
20
+ });
21
+ ```
64
22
 
65
- ### Patch Changes
23
+ **v2 (generated module builder + starter `index.ts`):**
66
24
 
67
- - Fix release version
25
+ ```typescript
26
+ import { UserModule } from "./typedef.ts";
68
27
 
69
- - Updated dependencies []:
70
- - @baeta/generator-sdk@2.0.0-next.1
71
- - @baeta/util-path@2.0.0-next.1
72
-
73
- ## 2.0.0-next.0
28
+ const { Query, User } = UserModule;
74
29
 
75
- ### Major Changes
30
+ export default UserModule.$schema({
31
+ User: User.$fields({
32
+ id: User.id.key("id"),
33
+ name: User.name.resolve((params) => {
34
+ // Implement resolver logic here
35
+ }),
36
+ }),
37
+ Query: Query.$fields({
38
+ user: Query.user.resolve((params) => {
39
+ // Implement resolver logic here
40
+ }),
41
+ }),
42
+ });
43
+ ```
76
44
 
77
- - [#214](https://github.com/andreisergiu98/baeta/pull/214) [`31d1a50`](https://github.com/andreisergiu98/baeta/commit/31d1a509f96535b43ae85d19c770eb1a5f09dc94) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - Baeta v2 – major refactor
78
- - **Side-effect-free type generation & resolver definitions.**
79
- The types generator and resolver definitions were reworked to be side-effect free, improving type safety.
80
- - **Stricter type safety.**
81
- You must now **explicitly define resolvers for every field** during development—breakages that used to surface at runtime are now caught at compile time.
82
- - **Removed `@baeta/compiler`.**
83
- Since modern runtimes can execute TypeScript natively, the separate compiler package is no longer needed. Use your runtime’s native TS support or your existing build setup.
84
- - **Subscriptions update.**
85
- `@baeta/subscriptions-pubsub` now targets **`graphql-subscriptions` v3**.
45
+ The full set of field/middleware/builder helpers is documented in the `@baeta/core` changelog entry.
86
46
 
87
47
  ### Patch Changes
88
48
 
89
- - Updated dependencies [[`31d1a50`](https://github.com/andreisergiu98/baeta/commit/31d1a509f96535b43ae85d19c770eb1a5f09dc94)]:
90
- - @baeta/generator-sdk@2.0.0-next.0
91
- - @baeta/util-path@2.0.0-next.0
49
+ - Updated dependencies [[`046dc5c`](https://github.com/andreisergiu98/baeta/commit/046dc5c29a8ec0f613b9430caa659c08d41a678c), [`046dc5c`](https://github.com/andreisergiu98/baeta/commit/046dc5c29a8ec0f613b9430caa659c08d41a678c), [`046dc5c`](https://github.com/andreisergiu98/baeta/commit/046dc5c29a8ec0f613b9430caa659c08d41a678c), [`046dc5c`](https://github.com/andreisergiu98/baeta/commit/046dc5c29a8ec0f613b9430caa659c08d41a678c)]:
50
+ - @baeta/generator-sdk@2.0.0-next.7
51
+ - @baeta/util-graphql@2.0.0-next.4
52
+ - @baeta/util-path@2.0.0-next.6
92
53
 
93
54
  ## 1.0.11
94
55
 
package/README.md CHANGED
@@ -5,9 +5,10 @@
5
5
  <div align="center">
6
6
  <h1>Baeta</h1>
7
7
  <a href="https://www.npmjs.com/package/@baeta/cli"><img src="https://img.shields.io/npm/v/@baeta/cli.svg?style=flat" /></a>
8
- <a href="https://github.com/andreisergiu98/baeta/actions/workflows/checks.yml"><img src="https://img.shields.io/github/actions/workflow/status/andreisergiu98/baeta/checks.yml" /></a>
8
+ <a href="https://github.com/andreisergiu98/baeta/actions/workflows/build.yml"><img src="https://img.shields.io/github/actions/workflow/status/andreisergiu98/baeta/build.yml" /></a>
9
9
  <a href="https://github.com/andreisergiu98/baeta/pulls"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" /></a>
10
10
  <a href="https://github.com/andreisergiu98/baeta/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" /></a>
11
+ <img alt="nycrc config on GitHub" src="https://img.shields.io/nycrc/andreisergiu98/baeta?config=.nycrc.json&preferredThreshold=branches&color=green">
11
12
  <br />
12
13
  <br />
13
14
  <a href="https://baeta.io/docs/getting-started/installation">Getting Started</a>
@@ -35,10 +36,11 @@ Building GraphQL APIs shouldn't be complicated. **Baeta** is a modern, modular,
35
36
  - **Middleware & Directives**: Easy integration of custom behaviors
36
37
  - **High Performance**: Built for scalability and efficiency
37
38
 
38
- #### And optional extensions and plugins
39
+ #### And optional app plugins and libraries
39
40
 
40
- - **@baeta/extension-auth**: Add powerful scope-based authorization
41
- - **@baeta/extension-cache**: Implement automatic caching with simple update patterns
41
+ - **@baeta/auth**: Add powerful scope-based authorization
42
+ - **@baeta/complexity**: Reject resource-exhausting queries with depth, breadth and complexity limits
43
+ - **@baeta/cache**: Type-safe caching with declarative queries and automatic reconciliation
42
44
  - ... and more!
43
45
 
44
46
  ## Why use Baeta?
@@ -89,7 +91,7 @@ const usersQuery = Query.users.resolve(() => {
89
91
  return dataSource.user.findMany();
90
92
  });
91
93
 
92
- Query.$fields({
94
+ export default Query.$fields({
93
95
  user: userQuery,
94
96
  users: usersQuery,
95
97
  });
@@ -98,17 +100,13 @@ Query.$fields({
98
100
  #### 3. Add authorization
99
101
 
100
102
  ```typescript
103
+ import { auth, rule, scope } from "./lib/auth.ts";
101
104
  import { UserModule } from "./typedef.ts";
102
105
 
103
106
  const { Query } = UserModule;
104
107
 
105
108
  const userQuery = Query.user
106
- .$auth({
107
- $or: {
108
- isPublic: true,
109
- isLoggedIn: true,
110
- },
111
- })
109
+ .$use(auth(rule.or(scope.isPublic, scope.isLoggedIn)))
112
110
  .resolve(async ({ args }) => {
113
111
  // ...
114
112
  });
@@ -117,23 +115,33 @@ const userQuery = Query.user
117
115
  #### 4. Add caching
118
116
 
119
117
  ```typescript
120
- const { Query, Mutation, User } = UserModule;
121
-
122
- export const userCache = User.$createCache();
123
-
124
- const userQuery = Query.user
125
- .$auth({
126
- // ...
118
+ import { createCache, defineQuery } from "@baeta/cache";
119
+ import { redisClient } from "./lib/redis.ts";
120
+
121
+ const { Query, Mutation } = UserModule;
122
+
123
+ export const userCache = createCache(redisClient, {
124
+ name: "UserCache",
125
+ parse: JSON.parse,
126
+ serialize: JSON.stringify,
127
+ })
128
+ .withQueries({
129
+ findUser: defineQuery({
130
+ resolve: async (args: { id: string }) => {
131
+ return dataSource.user.findUnique({ where: args });
132
+ },
133
+ }),
127
134
  })
128
- .$useCache(userCache)
129
- .resolve(async ({ args }) => {
130
- // ...
131
- });
135
+ .build();
136
+
137
+ const userQuery = Query.user.map(({ args }) =>
138
+ userCache.queries.findUser({ id: args.where.id }),
139
+ );
132
140
 
133
141
  const updateUserMutation = Mutation.updateUser
134
142
  .$use(async (next) => {
135
143
  const user = await next();
136
- await userCache.save(user);
144
+ if (user) await userCache.update(user);
137
145
  return user;
138
146
  })
139
147
  .resolve(async ({ args }) => {
package/dist/index.d.ts CHANGED
@@ -1,7 +1,5 @@
1
- import * as _$_baeta_generator_sdk0 from "@baeta/generator-sdk";
2
-
3
1
  //#region index.d.ts
4
- declare function graphqlPlugin(): _$_baeta_generator_sdk0.GeneratorPluginV1<unknown>;
2
+ declare function graphqlPlugin(): import("@baeta/generator-sdk").GeneratorPluginV1<unknown>;
5
3
  //#endregion
6
4
  export { graphqlPlugin };
7
5
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -2,7 +2,15 @@ import { createPluginV1, isMatch } from "@baeta/generator-sdk";
2
2
  import { createDefinitionsMapFromDocument, createDefinitionsMapFromSources, createModuleRegistry, getSourcesFromSchema, groupSourcesByModule, isScalarType, loadSchema } from "@baeta/util-graphql";
3
3
  import { join, posixPath, relative } from "@baeta/util-path";
4
4
  import { Kind, concatAST } from "graphql";
5
- import { camelCase, pascalCase } from "change-case-all";
5
+ import { camelCase, pascalCase } from "change-case";
6
+ //#region lib/namespace.ts
7
+ const namespace = {
8
+ sdk: "BaetaSdk",
9
+ graphql: "BaetaGraphql",
10
+ globalTypes: "BaetaTypes",
11
+ userTypes: "BaetaUserTypes"
12
+ };
13
+ //#endregion
6
14
  //#region lib/field-info.ts
7
15
  function createFieldInfoMap(definitionsMap, defaultScalars) {
8
16
  const map = /* @__PURE__ */ new Map();
@@ -26,8 +34,8 @@ function printNamedType$1(definitionsMap, defaultScalars, type, nullable = true)
26
34
  const withNullable = nullable ? " | null" : "";
27
35
  switch (type.kind) {
28
36
  case Kind.NAMED_TYPE:
29
- if (isScalarType(definitionsMap, defaultScalars, type)) return `Types.Scalars["${type.name.value}"]${withNullable}`;
30
- return `Types.${type.name.value}${withNullable}`;
37
+ if (isScalarType(definitionsMap, defaultScalars, type)) return `${namespace.globalTypes}.Scalars["${type.name.value}"]${withNullable}`;
38
+ return `${namespace.globalTypes}.${type.name.value}${withNullable}`;
31
39
  case Kind.LIST_TYPE: return `Array<${printNamedType$1(definitionsMap, defaultScalars, type.type)}>${withNullable}`;
32
40
  case Kind.NON_NULL_TYPE: return printNamedType$1(definitionsMap, defaultScalars, type.type, false);
33
41
  default: return type;
@@ -64,6 +72,7 @@ function buildBlock({ name, lines }) {
64
72
  ].join("\n");
65
73
  }
66
74
  function buildCodeBlock({ name, lines }) {
75
+ if (lines.length === 0) return `${name} {}`;
67
76
  const linesWithSep = lines.filter(Boolean).map(indent(2)).join(",\n");
68
77
  return [
69
78
  `${name} {`,
@@ -97,22 +106,18 @@ function printModuleIndexStarter(config, moduleName) {
97
106
  }
98
107
  function printModuleImports(config, moduleName) {
99
108
  const typesDir = makeRelativePathForImport(join(config.modulesDir, moduleName), config.typesDir);
109
+ const hasTypes = config.registry.defined.objects.length > 0;
100
110
  return [
101
- "import type { DocumentNode, GraphQLScalarType } from \"graphql\";",
102
- "import * as Baeta from \"@baeta/core/sdk\";",
103
- `import extensions from "../extensions${config.importExtension}";`,
104
- `import type {Ctx, Info} from "../types${config.importExtension}";`,
105
- `import type * as Types from "${typesDir}/types${config.importExtension}";`
106
- ].join("\n");
111
+ `import * as ${namespace.sdk} from "@baeta/core/sdk";`,
112
+ `import type * as ${namespace.graphql} from "graphql";`,
113
+ hasTypes ? `import type * as ${namespace.globalTypes} from "${typesDir}/types${config.importExtension}";` : null,
114
+ `import type * as ${namespace.userTypes} from "../types${config.importExtension}";`
115
+ ].filter((el) => el != null).join("\n");
107
116
  }
108
117
  function printModuleMetadata(name, doc) {
109
118
  return buildCodeBlock({
110
119
  name: "const moduleMetadata =",
111
- lines: [
112
- `id: '${name}'`,
113
- `dirname: './${name}'`,
114
- `typedef: ${JSON.stringify(doc)} as unknown as DocumentNode`
115
- ]
120
+ lines: [`id: '${name}'`, `typedef: ${JSON.stringify(doc)} as unknown as ${namespace.graphql}.DocumentNode`]
116
121
  });
117
122
  }
118
123
  function printBaetaModuleTypes(config) {
@@ -168,16 +173,18 @@ function printObjectTypeModuleType(typeName, objects, isFactory) {
168
173
  const parentType = getParentType(typeName);
169
174
  const contextType = getContextType();
170
175
  const infoType = getInfoType();
171
- if (isFactory) return `${typeName}: Baeta.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;
172
- return `${typeName}: Baeta.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;
176
+ if (isFactory) return `${typeName}: ${namespace.sdk}.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;
177
+ return `${typeName}: ${namespace.sdk}.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;
173
178
  }
174
179
  function printBaetaModuleTypesScalars(config) {
175
- return config.registry.defined.scalars.map((scalar) => `${scalar}: GraphQLScalarType`);
180
+ return config.registry.defined.scalars.map((scalar) => `${scalar}: ${namespace.graphql}.GraphQLScalarType`);
176
181
  }
177
182
  function printModuleObjectTypeFields(config) {
183
+ const objects = config.registry.defined.objects.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects)).filter(Boolean);
184
+ if (objects.length === 0) return "";
178
185
  return buildBlock({
179
186
  name: "interface BaetaModuleObjectTypeFields",
180
- lines: config.registry.defined.objects.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects)).filter(Boolean)
187
+ lines: objects
181
188
  });
182
189
  }
183
190
  function printObjectTypeFields(config, typeName, objects) {
@@ -202,7 +209,8 @@ function printObjectTypeFieldBuilders(config, typeName, field) {
202
209
  const argumentsType = getArgsType(config, typeName, field);
203
210
  const contextType = getContextType();
204
211
  const infoType = getInfoType();
205
- return `${field}: Baeta.${typeName === "Subscription" ? "SubscriptionMethods" : "FieldMethods"}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;
212
+ const fieldType = typeName === "Subscription" ? "SubscriptionMethods" : "FieldMethods";
213
+ return `${field}: ${namespace.sdk}.${fieldType}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;
206
214
  }
207
215
  function printObjectTypeFieldFactories(config, typeName, field) {
208
216
  const parentType = getParentType(typeName);
@@ -210,7 +218,8 @@ function printObjectTypeFieldFactories(config, typeName, field) {
210
218
  const argumentsType = getArgsType(config, typeName, field);
211
219
  const contextType = getContextType();
212
220
  const infoType = getInfoType();
213
- return `${field}: Baeta.${typeName === "Subscription" ? "SubscriptionField" : "Field"}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;
221
+ const fieldType = typeName === "Subscription" ? "SubscriptionField" : "Field";
222
+ return `${field}: ${namespace.sdk}.${fieldType}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;
214
223
  }
215
224
  function printModuleBuilder(config, moduleName) {
216
225
  const builders = buildCodeBlock({
@@ -224,20 +233,21 @@ function printModuleBuilder(config, moduleName) {
224
233
  const infoType = getInfoType();
225
234
  const contextType = getContextType();
226
235
  return [
227
- `export const ${pascalCase(moduleName)}Module = Baeta.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,
236
+ `export const ${pascalCase(moduleName)}Module = ${namespace.sdk}.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,
228
237
  builders,
229
238
  ",",
230
239
  typeNameResolvers,
231
- `, ${getExtensionsVar()});`
240
+ `);`
232
241
  ].join("");
233
242
  }
234
243
  function printObjectTypeBuilder(typeName, objects) {
235
244
  const fields = objects[typeName]?.map((field) => printObjectTypeFieldBuilder(typeName, field));
236
245
  if (fields == null || fields.length === 0) return "";
237
- return `${typeName}: Baeta.createTypeBuilder("${typeName}",${buildCodeBlock({
246
+ const content = buildCodeBlock({
238
247
  name: "",
239
248
  lines: fields
240
- })}, ${getExtensionsVar()})`;
249
+ });
250
+ return `${typeName}: ${namespace.sdk}.createTypeBuilder("${typeName}",${content})`;
241
251
  }
242
252
  function printTypeNameResolver() {
243
253
  return "{ __resolveType: (source: {__typename: string}) => { return source.__typename; }}";
@@ -248,7 +258,7 @@ function getParentType(type) {
248
258
  "Mutation",
249
259
  "Subscription"
250
260
  ].includes(type)) return "{}";
251
- return `Types.${type}`;
261
+ return `${namespace.globalTypes}.${type}`;
252
262
  }
253
263
  function getResultType(config, type, field) {
254
264
  const fieldType = config.fieldInfo.get(type)?.get(field)?.type;
@@ -257,20 +267,18 @@ function getResultType(config, type, field) {
257
267
  }
258
268
  function getArgsType(config, type, field) {
259
269
  if (!(config.fieldInfo.get(type)?.get(field)?.hasArguments ?? false)) return "{}";
260
- return `Types.${type}${pascalCase(field)}Args`;
270
+ const fieldUpper = pascalCase(field);
271
+ return `${namespace.globalTypes}.${type}${fieldUpper}Args`;
261
272
  }
262
273
  function printObjectTypeFieldBuilder(typeName, field) {
263
- if (typeName === "Subscription") return `${field}: Baeta.createSubscriptionBuilder("${field}", ${getExtensionsVar()})`;
264
- return `${field}: Baeta.createFieldBuilder("${typeName}", "${field}", ${getExtensionsVar()})`;
274
+ if (typeName === "Subscription") return `${field}: ${namespace.sdk}.createSubscriptionBuilder("${field}")`;
275
+ return `${field}: ${namespace.sdk}.createFieldBuilder("${typeName}", "${field}")`;
265
276
  }
266
277
  function getContextType() {
267
- return "Ctx";
278
+ return `${namespace.userTypes}.Ctx`;
268
279
  }
269
280
  function getInfoType() {
270
- return "Info";
271
- }
272
- function getExtensionsVar() {
273
- return "extensions";
281
+ return `${namespace.userTypes}.Info`;
274
282
  }
275
283
  //#endregion
276
284
  //#region lib/printer-templates.ts
@@ -287,12 +295,6 @@ export type Ctx = {};
287
295
  export type Info = GraphQLResolveInfo;
288
296
  `;
289
297
  }
290
- function printExtensionsTemplate() {
291
- return `import { createExtensions } from '@baeta/core';
292
-
293
- export default createExtensions({});
294
- `;
295
- }
296
298
  //#endregion
297
299
  //#region lib/printer-types.ts
298
300
  function printUtilityTypes() {
@@ -502,20 +504,7 @@ async function generate(options, currentFiles) {
502
504
  }),
503
505
  options: {
504
506
  disableOverwrite: true,
505
- disableBiomeV1Header: true,
506
- disableBiomeV2Header: true,
507
- disableEslintHeader: true,
508
- disableGenerationNoticeHeader: true
509
- }
510
- },
511
- {
512
- filename: join(options.modulesDir, "extensions.ts"),
513
- content: printExtensionsTemplate(),
514
- options: {
515
- disableOverwrite: true,
516
- disableBiomeV1Header: true,
517
- disableBiomeV2Header: true,
518
- disableEslintHeader: true,
507
+ enableLintHeaders: false,
519
508
  disableGenerationNoticeHeader: true
520
509
  }
521
510
  }
@@ -548,9 +537,7 @@ async function generate(options, currentFiles) {
548
537
  content: printModuleIndexStarter(config, module),
549
538
  options: {
550
539
  disableOverwrite: true,
551
- disableBiomeV1Header: true,
552
- disableBiomeV2Header: true,
553
- disableEslintHeader: true,
540
+ enableLintHeaders: false,
554
541
  disableGenerationNoticeHeader: true
555
542
  }
556
543
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["printNamedType"],"sources":["../lib/field-info.ts","../lib/printer-autoload.ts","../lib/printer-utils.ts","../lib/printer-module.ts","../lib/printer-templates.ts","../lib/printer-types.ts","../lib/codegen.ts","../index.ts"],"sourcesContent":["import { type DefinitionsMap, isScalarType } from '@baeta/util-graphql';\nimport { Kind, type TypeNode } from 'graphql';\n\nexport type FieldInfoMap = Map<string, Map<string, { type: string; hasArguments: boolean }>>;\n\nexport function createFieldInfoMap(definitionsMap: DefinitionsMap, defaultScalars: string[]) {\n\tconst map: FieldInfoMap = new Map();\n\tfor (const objectType of definitionsMap.objectTypeMap.values()) {\n\t\tconst objectName = objectType.name.value;\n\t\tfor (const field of objectType.fields ?? []) {\n\t\t\tconst fieldName = field.name.value;\n\t\t\tconst type = printNamedType(definitionsMap, defaultScalars, field.type);\n\t\t\tconst hasArguments = field.arguments != null && field.arguments.length > 0;\n\t\t\tconst fieldMap = map.get(objectName) ?? new Map();\n\t\t\tfieldMap.set(fieldName, { type, hasArguments });\n\t\t\tmap.set(objectName, fieldMap);\n\t\t}\n\t}\n\treturn map;\n}\n\nfunction printNamedType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: TypeNode,\n\tnullable = true,\n): string {\n\tconst withNullable = nullable ? ' | null' : '';\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\tif (isScalarType(definitionsMap, defaultScalars, type)) {\n\t\t\t\treturn `Types.Scalars[\"${type.name.value}\"]${withNullable}`;\n\t\t\t}\n\t\t\treturn `Types.${type.name.value}${withNullable}`;\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn `Array<${printNamedType(definitionsMap, defaultScalars, type.type)}>${withNullable}`;\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printNamedType(definitionsMap, defaultScalars, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n","import { camelCase, pascalCase } from 'change-case-all';\n\ninterface AutoloadPrinterConfig {\n\tmoduleDefinitionName: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printAutoload(config: AutoloadPrinterConfig, modules: string[]) {\n\treturn [printImports(config, modules), printExport(modules)].join('\\n\\n');\n}\n\nfunction printImports(config: AutoloadPrinterConfig, modules: string[]) {\n\tconst dependencyImports = [\n\t\t'import type { ModuleCompilerFactory } from \"@baeta/core/sdk\";',\n\t\t`import type { Ctx, Info } from \"./types${config.importExtension}\"`,\n\t];\n\tconst moduleTypeImports = modules.map(\n\t\t(module) =>\n\t\t\t`import type { BaetaModuleTypes as ${pascalCase(module)}ModuleTypes } from \"./${module}/${config.moduleDefinitionName}${config.importExtension}\"`,\n\t);\n\tconst moduleImports = modules.flatMap(\n\t\t(module) => `import ${camelCase(module)} from \"./${module}/index${config.importExtension}\"`,\n\t);\n\treturn [...dependencyImports, ...moduleTypeImports, ...moduleImports].join('\\n');\n}\n\nfunction printExport(modules: string[]) {\n\treturn `export default [\\n${modules.map(printModuleWithSatisfies).join(',\\n')}\\n];`;\n}\n\nfunction printModuleWithSatisfies(module: string) {\n\treturn ` ${camelCase(module)} satisfies ModuleCompilerFactory<Ctx, Info, ${pascalCase(module)}ModuleTypes[\"Factories\"]>`;\n}\n","import { posixPath, relative } from '@baeta/util-path';\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n\treturn [`${name} {`, ...lines.filter(Boolean).map(indent(2)), '};'].join('\\n');\n}\n\nexport function buildCodeBlock({ name, lines }: { name: string; lines: string[] }) {\n\tconst linesWithSep = lines.filter(Boolean).map(indent(2)).join(',\\n');\n\treturn [`${name} {`, linesWithSep, '}'].join('\\n');\n}\n\nexport function indent(size: number) {\n\tconst space = new Array(size).fill(' ').join('');\n\tfunction indentInner(val: string): string {\n\t\treturn val\n\t\t\t.split('\\n')\n\t\t\t.map((line) => `${space}${line}`)\n\t\t\t.join('\\n');\n\t}\n\treturn indentInner;\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n\treturn i === all.indexOf(val);\n}\n\nexport function makeRelativePathForImport(from: string, to: string) {\n\tconst res = posixPath(relative(from, to));\n\tif (res.startsWith('.') || res.startsWith('/')) {\n\t\treturn res;\n\t}\n\treturn `./${res}`;\n}\n","import type { ModuleRegistry } from '@baeta/util-graphql';\nimport { join } from '@baeta/util-path';\nimport { pascalCase } from 'change-case-all';\nimport type { DocumentNode } from 'graphql';\nimport type { FieldInfoMap } from './field-info.ts';\nimport { buildBlock, buildCodeBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface ModulePrinterConfig {\n\tregistry: ModuleRegistry;\n\tfieldInfo: FieldInfoMap;\n\ttypesDir: string;\n\tmodulesDir: string;\n\tmoduleDefinitionName: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printModuleIndexStarter(config: ModulePrinterConfig, moduleName: string): string {\n\tconst typeEntries = Object.entries(config.registry.picks.objects);\n\tconst types = typeEntries.map(([typeName]) => typeName);\n\n\treturn [\n\t\tprintModuleIndexImports(config, moduleName),\n\t\tprintModuleIndexDestructuredTypes(moduleName, types),\n\t\t...typeEntries.map(([typeName, fields]) => printModuleIndexType(typeName, fields)),\n\t\tprintModuleIndexSchema(moduleName, types, config.registry.defined.scalars),\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n\\n');\n}\n\nexport function printModuleImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst typesDir = makeRelativePathForImport(join(config.modulesDir, moduleName), config.typesDir);\n\treturn [\n\t\t'import type { DocumentNode, GraphQLScalarType } from \"graphql\";',\n\t\t'import * as Baeta from \"@baeta/core/sdk\";',\n\t\t`import extensions from \"../extensions${config.importExtension}\";`,\n\t\t`import type {Ctx, Info} from \"../types${config.importExtension}\";`,\n\t\t`import type * as Types from \"${typesDir}/types${config.importExtension}\";`,\n\t].join('\\n');\n}\n\nexport function printModuleMetadata(name: string, doc: DocumentNode) {\n\treturn buildCodeBlock({\n\t\tname: 'const moduleMetadata =',\n\t\tlines: [\n\t\t\t`id: '${name}'`,\n\t\t\t`dirname: './${name}'`,\n\t\t\t`typedef: ${JSON.stringify(doc)} as unknown as DocumentNode`,\n\t\t],\n\t});\n}\n\nexport function printBaetaModuleTypes(config: ModulePrinterConfig) {\n\treturn buildBlock({\n\t\tname: 'export interface BaetaModuleTypes',\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builders:',\n\t\t\t\tlines: printBaetaModuleTypesForFields(config, false),\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factories:',\n\t\t\t\tlines: [\n\t\t\t\t\t...printBaetaModuleTypesForFields(config, true),\n\t\t\t\t\t...printBaetaModuleTypesScalars(config),\n\t\t\t\t],\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printModuleIndexDestructuredTypes(moduleName: string, types: string[]) {\n\treturn `const { ${types.join(', ')} } = ${pascalCase(moduleName)}Module;`;\n}\n\nfunction printModuleIndexImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst hasScalars = config.registry.defined.scalars.length > 0;\n\tconst moduleImport = `import { ${pascalCase(moduleName)}Module } from \"./${config.moduleDefinitionName}${config.importExtension}\";`;\n\tif (!hasScalars) {\n\t\treturn moduleImport;\n\t}\n\treturn [`import { GraphQLScalarType } from \"graphql\";`, moduleImport].join('\\n');\n}\n\nfunction printModuleIndexSchema(moduleName: string, types: string[], scalars: string[]) {\n\tconst printedTypes = [\n\t\t...types.map((typeName) => `${typeName}: ${typeName}Resolver,`),\n\t\t...scalars.map(\n\t\t\t(scalarName) => `${scalarName}: new GraphQLScalarType({ name: '${scalarName}' }),`,\n\t\t),\n\t]\n\t\t.map(indent(2))\n\t\t.join('\\n');\n\n\treturn `export default ${pascalCase(moduleName)}Module.$schema({\n${printedTypes}\n});`;\n}\n\nfunction printModuleIndexType(typeName: string, fields: string[]) {\n\tconst printedFields = fields\n\t\t.map((fieldName) => printModuleIndexTypeField(typeName, fieldName))\n\t\t.map(indent(2))\n\t\t.join('\\n');\n\n\treturn `const ${typeName}Resolver = ${typeName}.$fields({\n${printedFields}\n});`;\n}\n\nfunction printModuleIndexTypeField(typeName: string, fieldName: string) {\n\tif (typeName === 'Query' || typeName === 'Mutation') {\n\t\treturn `${fieldName}: ${typeName}.${fieldName}.resolve((params) => {\n // Implement resolver logic here\n}),`;\n\t}\n\n\tif (typeName === 'Subscription') {\n\t\treturn `${fieldName}: ${typeName}.${fieldName}\n .subscribe((params) => {\n // Implement subscribe logic here\n })\n .resolve((params) => {\n // Implement resolver logic here\n }),`;\n\t}\n\n\treturn `${fieldName}: ${typeName}.${fieldName}.key('${fieldName}'),`;\n}\n\nfunction printBaetaModuleTypesForFields(config: ModulePrinterConfig, isFactory: boolean) {\n\treturn config.registry.defined.objects\n\t\t.map((typeName) =>\n\t\t\tprintObjectTypeModuleType(typeName, config.registry.picks.objects, isFactory),\n\t\t)\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeModuleType(\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n\tisFactory: boolean,\n) {\n\tconst object = objects[typeName];\n\tif (!object) {\n\t\treturn '';\n\t}\n\tconst parentType = getParentType(typeName);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tif (isFactory) {\n\t\treturn `${typeName}: Baeta.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n\t}\n\treturn `${typeName}: Baeta.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n}\n\nfunction printBaetaModuleTypesScalars(config: ModulePrinterConfig) {\n\treturn config.registry.defined.scalars.map((scalar) => `${scalar}: GraphQLScalarType`);\n}\n\nexport function printModuleObjectTypeFields(config: ModulePrinterConfig) {\n\tconst objects = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\treturn buildBlock({\n\t\tname: 'interface BaetaModuleObjectTypeFields',\n\t\tlines: objects,\n\t});\n}\n\nfunction printObjectTypeFields(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n) {\n\tconst fields = objects[typeName];\n\tif (!fields || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst fieldsBuilders = fields.map((field) =>\n\t\tprintObjectTypeFieldBuilders(config, typeName, field),\n\t);\n\tconst fieldsFactories = fields.map((field) =>\n\t\tprintObjectTypeFieldFactories(config, typeName, field),\n\t);\n\treturn buildBlock({\n\t\tname: `${typeName}:`,\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builder:',\n\t\t\t\tlines: fieldsBuilders,\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factory:',\n\t\t\t\tlines: fieldsFactories,\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printObjectTypeFieldBuilders(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionMethods' : 'FieldMethods';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nfunction printObjectTypeFieldFactories(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst namespace = typeName === 'Subscription' ? 'SubscriptionField' : 'Field';\n\treturn `${field}: Baeta.${namespace}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nexport function printModuleBuilder(config: ModulePrinterConfig, moduleName: string) {\n\tconst objectTypes = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeBuilder(typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\tconst builders = buildCodeBlock({\n\t\tname: '',\n\t\tlines: objectTypes,\n\t});\n\tconst typeNameResolvers = buildCodeBlock({\n\t\tname: '',\n\t\tlines: [...config.registry.defined.unions, ...config.registry.defined.interfaces].map(\n\t\t\t(name) => `${name}: ${printTypeNameResolver()}`,\n\t\t),\n\t});\n\tconst infoType = getInfoType();\n\tconst contextType = getContextType();\n\treturn [\n\t\t`export const ${pascalCase(moduleName)}Module = Baeta.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,\n\t\tbuilders,\n\t\t',',\n\t\ttypeNameResolvers,\n\t\t`, ${getExtensionsVar()});`,\n\t].join('');\n}\n\nfunction printObjectTypeBuilder(typeName: string, objects: Record<string, string[] | undefined>) {\n\tconst fields = objects[typeName]?.map((field) => printObjectTypeFieldBuilder(typeName, field));\n\tif (fields == null || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst content = buildCodeBlock({\n\t\tname: '',\n\t\tlines: fields,\n\t});\n\treturn `${typeName}: Baeta.createTypeBuilder(\"${typeName}\",${content}, ${getExtensionsVar()})`;\n}\n\nfunction printTypeNameResolver() {\n\treturn '{ __resolveType: (source: {__typename: string}) => { return source.__typename; }}';\n}\n\nfunction getParentType(type: string) {\n\tif (['Query', 'Mutation', 'Subscription'].includes(type)) {\n\t\treturn '{}';\n\t}\n\treturn `Types.${type}`;\n}\n\nfunction getResultType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst fieldType = config.fieldInfo.get(type)?.get(field)?.type;\n\tif (fieldType == null) {\n\t\treturn '{}';\n\t}\n\treturn fieldType;\n}\n\nfunction getArgsType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst hasArgs = config.fieldInfo.get(type)?.get(field)?.hasArguments ?? false;\n\tif (!hasArgs) {\n\t\treturn '{}';\n\t}\n\tconst fieldUpper = pascalCase(field);\n\treturn `Types.${type}${fieldUpper}Args`;\n}\n\nfunction printObjectTypeFieldBuilder(typeName: string, field: string) {\n\tif (typeName === 'Subscription') {\n\t\treturn `${field}: Baeta.createSubscriptionBuilder(\"${field}\", ${getExtensionsVar()})`;\n\t}\n\treturn `${field}: Baeta.createFieldBuilder(\"${typeName}\", \"${field}\", ${getExtensionsVar()})`;\n}\n\nfunction getContextType() {\n\treturn 'Ctx';\n}\n\nfunction getInfoType() {\n\treturn 'Info';\n}\n\nfunction getExtensionsVar() {\n\treturn 'extensions';\n}\n","import { makeRelativePathForImport } from './printer-utils.ts';\n\nexport function printTypesTemplate(options: {\n\timportExtension: '.js' | '.ts' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}) {\n\tconst importDir = makeRelativePathForImport(options.modulesDir, options.typesDir);\n\n\treturn `import type { GraphQLResolveInfo } from 'graphql';\nimport type { BaseObjectTypes, BaseScalars } from '${importDir}/utility${options.importExtension}';\n\nexport interface Scalars extends BaseScalars {}\n\nexport interface ObjectTypes extends BaseObjectTypes {}\n\nexport type Ctx = {};\n\nexport type Info = GraphQLResolveInfo;\n`;\n}\n\nexport function printExtensionsTemplate() {\n\treturn `import { createExtensions } from '@baeta/core';\n\nexport default createExtensions({});\n`;\n}\n","import { type DefinitionsMap, isScalarType } from '@baeta/util-graphql';\nimport { pascalCase } from 'change-case-all';\nimport {\n\ttype EnumTypeDefinitionNode,\n\ttype FieldDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputValueDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\tKind,\n\ttype ListTypeNode,\n\ttype NamedTypeNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype TypeNode,\n\ttype UnionTypeDefinitionNode,\n} from 'graphql';\nimport { buildBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface PrinterConfig {\n\tglobalDefinitions: DefinitionsMap;\n\twithMaybe: boolean;\n\twithOptional: boolean;\n\tdefaultScalars: string[];\n\timportExtension: '.ts' | '.js' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}\n\nexport function printUtilityTypes(): string {\n\treturn [\n\t\t'export type Or<A, B> = void extends A ? B : A;',\n\t\t'export type Maybe<T> = T | null;',\n\t].join('\\n\\n');\n}\n\nconst defaultScalarTypes: Record<string, string | undefined> = {\n\tID: 'string',\n\tString: 'string',\n\tBoolean: 'boolean',\n\tInt: 'number',\n\tFloat: 'number',\n};\n\nexport function printBaseScalars(config: PrinterConfig): string {\n\tconst defaultScalars = config.defaultScalars\n\t\t.map((scalar) => {\n\t\t\tconst type = defaultScalarTypes[scalar];\n\t\t\tif (type == null) return null;\n\t\t\treturn `${scalar}: ${type};`;\n\t\t})\n\t\t.filter((el) => el != null);\n\tconst customScalars = [...config.globalDefinitions.scalarTypeMap.values()].map(\n\t\t(scalar) => `${scalar.name.value}: unknown;`,\n\t);\n\n\treturn buildBlock({\n\t\tname: 'export type BaseScalars =',\n\t\tlines: [...defaultScalars, ...customScalars],\n\t});\n}\n\nexport function printBaseObjectTypes(config: PrinterConfig): string {\n\tconst objectTypes = [...config.globalDefinitions.objectTypeMap.values()].map((t) => t.name.value);\n\treturn buildBlock({\n\t\tname: 'export interface BaseObjectTypes',\n\t\tlines: objectTypes.map((t) => `${t}: unknown;`),\n\t});\n}\n\nexport function printTypesHeaders(config: PrinterConfig): string {\n\tconst overridesDir = makeRelativePathForImport(config.typesDir, config.modulesDir);\n\treturn [\n\t\t`import type * as BaetaUtility from \"./utility${config.importExtension}\";`,\n\t\t`import type * as BaetaOverrides from \"${overridesDir}/types${config.importExtension}\";`,\n\t\t'',\n\t\t'export type Scalars = BaetaOverrides.Scalars;',\n\t].join('\\n');\n}\n\nexport function printRootTypesFromMap(\n\tconfig: PrinterConfig,\n\trootTypes: string[],\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()]\n\t\t.filter((type) => rootTypes.includes(type.name.value))\n\t\t.map((type) => printObjectType(config, type))\n\t\t.join('\\n\\n');\n}\n\nexport function printObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printObjectType(config, type));\n}\n\nfunction printObjectType(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printObjectTypeField(config, field));\n\treturn `export type ${type.name.value} = ${printOrObjectType(type, fields)}`;\n}\n\nfunction printObjectTypeField(config: PrinterConfig, field: FieldDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printEnumTypesFromMap(map: Map<string, EnumTypeDefinitionNode>) {\n\treturn [...map.values()].map(printEnumType);\n}\n\nfunction printEnumType(type: EnumTypeDefinitionNode) {\n\tconst values = type.values?.map((value) => `'${value.name.value}'`);\n\treturn `export type ${type.name.value} = ${values?.join(' | ') || 'never'}`;\n}\n\nexport function printInterfaceTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InterfaceTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInterfaceType(config, type));\n}\n\nfunction printInterfaceType(config: PrinterConfig, type: InterfaceTypeDefinitionNode) {\n\tconst objectTypes = Array.from(config.globalDefinitions.objectTypeMap.values());\n\tconst implementingTypes = objectTypes.filter((t) =>\n\t\tt.interfaces?.some((i) => i.name.value === type.name.value),\n\t);\n\tconst types = implementingTypes.map((t) => printNamedTypeForInterface(t.name.value));\n\treturn `export type ${type.name.value} = ${types.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForInterface(name: string) {\n\treturn `${name} & {__typename: \"${name}\"}`;\n}\n\nexport function printUnionTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, UnionTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printUnionType(config, type));\n}\n\nfunction printUnionType(config: PrinterConfig, type: UnionTypeDefinitionNode) {\n\tconst types = type.types?.map((type) => printNamedTypeForUnion(config, type));\n\treturn `export type ${type.name.value} = ${types?.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForUnion(config: PrinterConfig, type: NamedTypeNode) {\n\treturn `${printNamedType(config, type, false)} & {__typename: \"${type.name.value}\"}`;\n}\n\nexport function printInputObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InputObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInputObjectType(config, type));\n}\n\nfunction printInputObjectType(config: PrinterConfig, type: InputObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printInputObjectTypeField(config, field));\n\treturn buildBlock({\n\t\tname: `export type ${type.name.value} =`,\n\t\tlines: fields ?? [],\n\t});\n}\n\nfunction printInputObjectTypeField(config: PrinterConfig, field: InputValueDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printObjectTypeFieldsArgsFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].flatMap((type) => printObjectTypeArgs(config, type));\n}\n\nfunction printObjectTypeArgs(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tif (type.fields == null) {\n\t\treturn [];\n\t}\n\treturn type.fields\n\t\t.map((field) => printObjectTypeFieldArgs(config, type.name.value, field))\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeFieldArgs(\n\tconfig: PrinterConfig,\n\ttypeName: string,\n\tfield: FieldDefinitionNode,\n) {\n\tconst name = `${typeName + pascalCase(field.name.value)}Args`;\n\treturn buildBlock({\n\t\tname: `export type ${name} =`,\n\t\tlines: field.arguments?.map((arg) => printObjectTypeFieldArg(config, arg)) ?? [],\n\t});\n}\n\nfunction printObjectTypeFieldArg(config: PrinterConfig, arg: InputValueDefinitionNode) {\n\treturn `${arg.name.value}: ${printType(config, arg.type)}`;\n}\n\nfunction printType(config: PrinterConfig, type: TypeNode, nullable = true): string {\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\treturn printNamedType(config, type, nullable);\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn printListType(config, type, nullable);\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printType(config, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n\nfunction printListType(config: PrinterConfig, type: ListTypeNode, nullable = true): string {\n\treturn printValue(config, `Array<${printType(config, type.type)}>`, nullable);\n}\n\nfunction printNamedType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\tif (isScalarType(config.globalDefinitions, config.defaultScalars, type)) {\n\t\treturn printScalarType(config, type, nullable);\n\t}\n\treturn printValue(config, type.name.value, nullable);\n}\n\nfunction printScalarType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\treturn printValue(config, `Scalars[\"${type.name.value}\"]`, nullable);\n}\n\nfunction printValue(config: PrinterConfig, value: string, nullable: boolean): string {\n\tif (!nullable) {\n\t\treturn value;\n\t}\n\tif (config.withMaybe) {\n\t\treturn `BaetaUtility.Maybe<${value}>`;\n\t}\n\treturn `${value} | null`;\n}\n\nfunction printOptionalMarker(config: PrinterConfig, type: TypeNode) {\n\treturn config.withOptional && type.kind !== Kind.NON_NULL_TYPE ? '?' : '';\n}\n\nfunction printOrObjectType(type: ObjectTypeDefinitionNode, fields?: string[]): string {\n\treturn `BaetaUtility.Or<BaetaOverrides.ObjectTypes[\"${type.name.value}\"], {\\n${fields?.map(indent(2)).join('\\n') ?? ''}\\n}>`;\n}\n","import type { File, FileOptions, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport {\n\tcreateDefinitionsMapFromDocument,\n\tcreateDefinitionsMapFromSources,\n\tcreateModuleRegistry,\n\tgetSourcesFromSchema,\n\tgroupSourcesByModule,\n\tloadSchema,\n} from '@baeta/util-graphql';\nimport { join } from '@baeta/util-path';\nimport { concatAST } from 'graphql';\nimport { createFieldInfoMap } from './field-info.ts';\nimport { printAutoload } from './printer-autoload.ts';\nimport {\n\ttype ModulePrinterConfig,\n\tprintBaetaModuleTypes,\n\tprintModuleBuilder,\n\tprintModuleImports,\n\tprintModuleIndexStarter,\n\tprintModuleMetadata,\n\tprintModuleObjectTypeFields,\n} from './printer-module.ts';\nimport { printExtensionsTemplate, printTypesTemplate } from './printer-templates.ts';\nimport {\n\ttype PrinterConfig,\n\tprintBaseObjectTypes,\n\tprintBaseScalars,\n\tprintEnumTypesFromMap,\n\tprintInputObjectTypeTypesFromMap,\n\tprintInterfaceTypesFromMap,\n\tprintObjectTypeFieldsArgsFromMap,\n\tprintObjectTypeTypesFromMap,\n\tprintRootTypesFromMap,\n\tprintTypesHeaders,\n\tprintUnionTypesFromMap,\n\tprintUtilityTypes,\n} from './printer-types.ts';\n\ntype GeneratedFile = {\n\tfilename: string;\n\tcontent: string;\n\toptions?: FileOptions;\n};\n\nexport async function generate(\n\toptions: NormalizedGeneratorOptions,\n\tcurrentFiles: File[],\n): Promise<GeneratedFile[]> {\n\tconst { outputSchema, outputSchemaAst } = await loadSchema(\n\t\toptions.schemas,\n\t\toptions.cwd,\n\t\toptions.loaders,\n\t);\n\tconst sources = getSourcesFromSchema(outputSchemaAst);\n\tconst sourcesByModule = groupSourcesByModule(sources, options.modulesDir);\n\tconst modules = Array.from(sourcesByModule.keys());\n\tconst globalDefinitions = createDefinitionsMapFromDocument(outputSchema);\n\tconst modulesDefinitions = createDefinitionsMapFromSources(sources);\n\n\tconst defaultScalars = ['ID', 'Int', 'Float', 'String', 'Boolean'];\n\n\tconst config: PrinterConfig = {\n\t\tglobalDefinitions,\n\t\twithMaybe: false,\n\t\twithOptional: false,\n\t\tdefaultScalars,\n\t\timportExtension: options.importExtension,\n\t\ttypesDir: options.typesDir,\n\t\tmodulesDir: options.modulesDir,\n\t};\n\n\tconst fieldInfo = createFieldInfoMap(globalDefinitions, defaultScalars);\n\n\tconst typesContent = [\n\t\tprintTypesHeaders(config),\n\t\tprintRootTypesFromMap(\n\t\t\tconfig,\n\t\t\t['Query', 'Mutation', 'Subscription'],\n\t\t\tglobalDefinitions.objectTypeMap,\n\t\t),\n\t\t...printEnumTypesFromMap(globalDefinitions.enumTypeMap),\n\t\t...printObjectTypeTypesFromMap(config, modulesDefinitions.objectTypeMap),\n\t\t...printObjectTypeFieldsArgsFromMap(config, globalDefinitions.objectTypeMap),\n\t\t...printInputObjectTypeTypesFromMap(config, globalDefinitions.inputObjectTypeMap),\n\t\t...printInterfaceTypesFromMap(config, globalDefinitions.interfaceTypeMap),\n\t\t...printUnionTypesFromMap(config, globalDefinitions.unionTypeMap),\n\t].join('\\n\\n');\n\n\tconst utilityContent = [\n\t\tprintUtilityTypes(),\n\t\tprintBaseScalars(config),\n\t\tprintBaseObjectTypes(config),\n\t].join('\\n\\n');\n\n\tconst files: GeneratedFile[] = [\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'types.ts'),\n\t\t\tcontent: typesContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'utility.ts'),\n\t\t\tcontent: utilityContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'index.ts'),\n\t\t\tcontent: printAutoload(\n\t\t\t\t{\n\t\t\t\t\timportExtension: options.importExtension,\n\t\t\t\t\tmoduleDefinitionName: options.moduleDefinitionName,\n\t\t\t\t},\n\t\t\t\tmodules,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'types.ts'),\n\t\t\tcontent: printTypesTemplate({\n\t\t\t\timportExtension: options.importExtension,\n\t\t\t\ttypesDir: options.typesDir,\n\t\t\t\tmodulesDir: options.modulesDir,\n\t\t\t}),\n\t\t\toptions: {\n\t\t\t\tdisableOverwrite: true,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'extensions.ts'),\n\t\t\tcontent: printExtensionsTemplate(),\n\t\t\toptions: {\n\t\t\t\tdisableOverwrite: true,\n\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\tdisableEslintHeader: true,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t];\n\n\tfor (const module of modules) {\n\t\tconst sources = sourcesByModule.get(module);\n\t\tconst documents = sources?.map((s) => s.document).filter((el) => el != null) ?? [];\n\t\tif (documents.length === 0) continue;\n\t\tconst document = concatAST(documents);\n\t\tconst config: ModulePrinterConfig = {\n\t\t\ttypesDir: options.typesDir,\n\t\t\tfieldInfo,\n\t\t\timportExtension: options.importExtension,\n\t\t\tmodulesDir: options.modulesDir,\n\t\t\tregistry: createModuleRegistry(document),\n\t\t\tmoduleDefinitionName: options.moduleDefinitionName,\n\t\t};\n\t\tfiles.push({\n\t\t\tfilename: join(options.modulesDir, `/${module}/${options.moduleDefinitionName}.ts`),\n\t\t\tcontent: [\n\t\t\t\tprintModuleImports(config, module),\n\t\t\t\tprintModuleMetadata(module, document),\n\t\t\t\tprintBaetaModuleTypes(config),\n\t\t\t\tprintModuleObjectTypeFields(config),\n\t\t\t\tprintModuleBuilder(config, module),\n\t\t\t].join('\\n\\n'),\n\t\t});\n\n\t\tconst moduleStarterPath = join(options.modulesDir, `/${module}/index.ts`);\n\t\tconst moduleStarterExists = currentFiles.some((file) => file.filename === moduleStarterPath);\n\t\tif (!moduleStarterExists) {\n\t\t\tfiles.push({\n\t\t\t\tfilename: join(options.modulesDir, `/${module}/index.ts`),\n\t\t\t\tcontent: printModuleIndexStarter(config, module),\n\t\t\t\toptions: {\n\t\t\t\t\tdisableOverwrite: true,\n\t\t\t\t\tdisableBiomeV1Header: true,\n\t\t\t\t\tdisableBiomeV2Header: true,\n\t\t\t\t\tdisableEslintHeader: true,\n\t\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn files;\n}\n","import { createPluginV1, isMatch, type WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen.ts';\n\nexport function graphqlPlugin() {\n\treturn createPluginV1({\n\t\tname: 'graphql',\n\t\tactionName: 'GraphQL modules',\n\t\twatch: (options, watcher, reload) => {\n\t\t\tconst handleChange = (file: WatcherFile) => {\n\t\t\t\tif (isMatch(file.relativePath, options.schemas)) {\n\t\t\t\t\treload(file);\n\t\t\t\t}\n\t\t\t};\n\t\t\twatcher.on('update', handleChange);\n\t\t\twatcher.on('delete', handleChange);\n\t\t},\n\t\tgenerate: async (ctx, next) => {\n\t\t\tconst items = await generate(ctx.generatorOptions, ctx.fileManager.files);\n\t\t\tfor (const item of items) {\n\t\t\t\tctx.fileManager.createAndAdd(item.filename, item.content, 'graphql', item.options);\n\t\t\t}\n\t\t\treturn await next();\n\t\t},\n\t});\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["printNamedType"],"sources":["../lib/namespace.ts","../lib/field-info.ts","../lib/printer-autoload.ts","../lib/printer-utils.ts","../lib/printer-module.ts","../lib/printer-templates.ts","../lib/printer-types.ts","../lib/codegen.ts","../index.ts"],"sourcesContent":["export const namespace = {\n\tsdk: 'BaetaSdk',\n\tgraphql: 'BaetaGraphql',\n\tglobalTypes: 'BaetaTypes',\n\tuserTypes: 'BaetaUserTypes',\n};\n","import { type DefinitionsMap, isScalarType } from '@baeta/util-graphql';\nimport { Kind, type TypeNode } from 'graphql';\nimport { namespace } from './namespace.ts';\n\nexport type FieldInfoMap = Map<string, Map<string, { type: string; hasArguments: boolean }>>;\n\nexport function createFieldInfoMap(definitionsMap: DefinitionsMap, defaultScalars: string[]) {\n\tconst map: FieldInfoMap = new Map();\n\tfor (const objectType of definitionsMap.objectTypeMap.values()) {\n\t\tconst objectName = objectType.name.value;\n\t\tfor (const field of objectType.fields ?? []) {\n\t\t\tconst fieldName = field.name.value;\n\t\t\tconst type = printNamedType(definitionsMap, defaultScalars, field.type);\n\t\t\tconst hasArguments = field.arguments != null && field.arguments.length > 0;\n\t\t\tconst fieldMap = map.get(objectName) ?? new Map();\n\t\t\tfieldMap.set(fieldName, { type, hasArguments });\n\t\t\tmap.set(objectName, fieldMap);\n\t\t}\n\t}\n\treturn map;\n}\n\nfunction printNamedType(\n\tdefinitionsMap: DefinitionsMap,\n\tdefaultScalars: string[],\n\ttype: TypeNode,\n\tnullable = true,\n): string {\n\tconst withNullable = nullable ? ' | null' : '';\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\tif (isScalarType(definitionsMap, defaultScalars, type)) {\n\t\t\t\treturn `${namespace.globalTypes}.Scalars[\"${type.name.value}\"]${withNullable}`;\n\t\t\t}\n\t\t\treturn `${namespace.globalTypes}.${type.name.value}${withNullable}`;\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn `Array<${printNamedType(definitionsMap, defaultScalars, type.type)}>${withNullable}`;\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printNamedType(definitionsMap, defaultScalars, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n","import { camelCase, pascalCase } from 'change-case';\n\ninterface AutoloadPrinterConfig {\n\tmoduleDefinitionName: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printAutoload(config: AutoloadPrinterConfig, modules: string[]) {\n\treturn [printImports(config, modules), printExport(modules)].join('\\n\\n');\n}\n\nfunction printImports(config: AutoloadPrinterConfig, modules: string[]) {\n\tconst dependencyImports = [\n\t\t'import type { ModuleCompilerFactory } from \"@baeta/core/sdk\";',\n\t\t`import type { Ctx, Info } from \"./types${config.importExtension}\"`,\n\t];\n\tconst moduleTypeImports = modules.map(\n\t\t(module) =>\n\t\t\t`import type { BaetaModuleTypes as ${pascalCase(module)}ModuleTypes } from \"./${module}/${config.moduleDefinitionName}${config.importExtension}\"`,\n\t);\n\tconst moduleImports = modules.flatMap(\n\t\t(module) => `import ${camelCase(module)} from \"./${module}/index${config.importExtension}\"`,\n\t);\n\treturn [...dependencyImports, ...moduleTypeImports, ...moduleImports].join('\\n');\n}\n\nfunction printExport(modules: string[]) {\n\treturn `export default [\\n${modules.map(printModuleWithSatisfies).join(',\\n')}\\n];`;\n}\n\nfunction printModuleWithSatisfies(module: string) {\n\treturn ` ${camelCase(module)} satisfies ModuleCompilerFactory<Ctx, Info, ${pascalCase(module)}ModuleTypes[\"Factories\"]>`;\n}\n","import { posixPath, relative } from '@baeta/util-path';\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n\treturn [`${name} {`, ...lines.filter(Boolean).map(indent(2)), '};'].join('\\n');\n}\n\nexport function buildCodeBlock({ name, lines }: { name: string; lines: string[] }) {\n\tif (lines.length === 0) {\n\t\treturn `${name} {}`;\n\t}\n\tconst linesWithSep = lines.filter(Boolean).map(indent(2)).join(',\\n');\n\treturn [`${name} {`, linesWithSep, '}'].join('\\n');\n}\n\nexport function indent(size: number) {\n\tconst space = new Array(size).fill(' ').join('');\n\tfunction indentInner(val: string): string {\n\t\treturn val\n\t\t\t.split('\\n')\n\t\t\t.map((line) => `${space}${line}`)\n\t\t\t.join('\\n');\n\t}\n\treturn indentInner;\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n\treturn i === all.indexOf(val);\n}\n\nexport function makeRelativePathForImport(from: string, to: string) {\n\tconst res = posixPath(relative(from, to));\n\tif (res.startsWith('.') || res.startsWith('/')) {\n\t\treturn res;\n\t}\n\treturn `./${res}`;\n}\n","import type { ModuleRegistry } from '@baeta/util-graphql';\nimport { join } from '@baeta/util-path';\nimport { pascalCase } from 'change-case';\nimport type { DocumentNode } from 'graphql';\nimport type { FieldInfoMap } from './field-info.ts';\nimport { namespace } from './namespace.ts';\nimport { buildBlock, buildCodeBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface ModulePrinterConfig {\n\tregistry: ModuleRegistry;\n\tfieldInfo: FieldInfoMap;\n\ttypesDir: string;\n\tmodulesDir: string;\n\tmoduleDefinitionName: string;\n\timportExtension: '.ts' | '.js' | '';\n}\n\nexport function printModuleIndexStarter(config: ModulePrinterConfig, moduleName: string): string {\n\tconst typeEntries = Object.entries(config.registry.picks.objects);\n\tconst types = typeEntries.map(([typeName]) => typeName);\n\n\treturn [\n\t\tprintModuleIndexImports(config, moduleName),\n\t\tprintModuleIndexDestructuredTypes(moduleName, types),\n\t\t...typeEntries.map(([typeName, fields]) => printModuleIndexType(typeName, fields)),\n\t\tprintModuleIndexSchema(moduleName, types, config.registry.defined.scalars),\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n\\n');\n}\n\nexport function printModuleImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst typesDir = makeRelativePathForImport(join(config.modulesDir, moduleName), config.typesDir);\n\tconst hasTypes = config.registry.defined.objects.length > 0;\n\treturn [\n\t\t`import * as ${namespace.sdk} from \"@baeta/core/sdk\";`,\n\t\t`import type * as ${namespace.graphql} from \"graphql\";`,\n\t\thasTypes\n\t\t\t? `import type * as ${namespace.globalTypes} from \"${typesDir}/types${config.importExtension}\";`\n\t\t\t: null,\n\t\t`import type * as ${namespace.userTypes} from \"../types${config.importExtension}\";`,\n\t]\n\t\t.filter((el) => el != null)\n\t\t.join('\\n');\n}\n\nexport function printModuleMetadata(name: string, doc: DocumentNode) {\n\treturn buildCodeBlock({\n\t\tname: 'const moduleMetadata =',\n\t\tlines: [\n\t\t\t`id: '${name}'`,\n\t\t\t`typedef: ${JSON.stringify(doc)} as unknown as ${namespace.graphql}.DocumentNode`,\n\t\t],\n\t});\n}\n\nexport function printBaetaModuleTypes(config: ModulePrinterConfig) {\n\treturn buildBlock({\n\t\tname: 'export interface BaetaModuleTypes',\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builders:',\n\t\t\t\tlines: printBaetaModuleTypesForFields(config, false),\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factories:',\n\t\t\t\tlines: [\n\t\t\t\t\t...printBaetaModuleTypesForFields(config, true),\n\t\t\t\t\t...printBaetaModuleTypesScalars(config),\n\t\t\t\t],\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printModuleIndexDestructuredTypes(moduleName: string, types: string[]) {\n\treturn `const { ${types.join(', ')} } = ${pascalCase(moduleName)}Module;`;\n}\n\nfunction printModuleIndexImports(config: ModulePrinterConfig, moduleName: string) {\n\tconst hasScalars = config.registry.defined.scalars.length > 0;\n\tconst moduleImport = `import { ${pascalCase(moduleName)}Module } from \"./${config.moduleDefinitionName}${config.importExtension}\";`;\n\tif (!hasScalars) {\n\t\treturn moduleImport;\n\t}\n\treturn [`import { GraphQLScalarType } from \"graphql\";`, moduleImport].join('\\n');\n}\n\nfunction printModuleIndexSchema(moduleName: string, types: string[], scalars: string[]) {\n\tconst printedTypes = [\n\t\t...types.map((typeName) => `${typeName}: ${typeName}Resolver,`),\n\t\t...scalars.map(\n\t\t\t(scalarName) => `${scalarName}: new GraphQLScalarType({ name: '${scalarName}' }),`,\n\t\t),\n\t]\n\t\t.map(indent(2))\n\t\t.join('\\n');\n\n\treturn `export default ${pascalCase(moduleName)}Module.$schema({\n${printedTypes}\n});`;\n}\n\nfunction printModuleIndexType(typeName: string, fields: string[]) {\n\tconst printedFields = fields\n\t\t.map((fieldName) => printModuleIndexTypeField(typeName, fieldName))\n\t\t.map(indent(2))\n\t\t.join('\\n');\n\n\treturn `const ${typeName}Resolver = ${typeName}.$fields({\n${printedFields}\n});`;\n}\n\nfunction printModuleIndexTypeField(typeName: string, fieldName: string) {\n\tif (typeName === 'Query' || typeName === 'Mutation') {\n\t\treturn `${fieldName}: ${typeName}.${fieldName}.resolve((params) => {\n // Implement resolver logic here\n}),`;\n\t}\n\n\tif (typeName === 'Subscription') {\n\t\treturn `${fieldName}: ${typeName}.${fieldName}\n .subscribe((params) => {\n // Implement subscribe logic here\n })\n .resolve((params) => {\n // Implement resolver logic here\n }),`;\n\t}\n\n\treturn `${fieldName}: ${typeName}.${fieldName}.key('${fieldName}'),`;\n}\n\nfunction printBaetaModuleTypesForFields(config: ModulePrinterConfig, isFactory: boolean) {\n\treturn config.registry.defined.objects\n\t\t.map((typeName) =>\n\t\t\tprintObjectTypeModuleType(typeName, config.registry.picks.objects, isFactory),\n\t\t)\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeModuleType(\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n\tisFactory: boolean,\n) {\n\tconst object = objects[typeName];\n\tif (!object) {\n\t\treturn '';\n\t}\n\tconst parentType = getParentType(typeName);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tif (isFactory) {\n\t\treturn `${typeName}: ${namespace.sdk}.TypeCompilerFactory<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n\t}\n\treturn `${typeName}: ${namespace.sdk}.TypeMethods<${parentType}, ${contextType}, ${infoType}, BaetaModuleObjectTypeFields['${typeName}']['Builder'], BaetaModuleObjectTypeFields['${typeName}']['Factory']>`;\n}\n\nfunction printBaetaModuleTypesScalars(config: ModulePrinterConfig) {\n\treturn config.registry.defined.scalars.map(\n\t\t(scalar) => `${scalar}: ${namespace.graphql}.GraphQLScalarType`,\n\t);\n}\n\nexport function printModuleObjectTypeFields(config: ModulePrinterConfig) {\n\tconst objects = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeFields(config, typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\tif (objects.length === 0) {\n\t\treturn '';\n\t}\n\treturn buildBlock({\n\t\tname: 'interface BaetaModuleObjectTypeFields',\n\t\tlines: objects,\n\t});\n}\n\nfunction printObjectTypeFields(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tobjects: Record<string, string[] | undefined>,\n) {\n\tconst fields = objects[typeName];\n\tif (!fields || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst fieldsBuilders = fields.map((field) =>\n\t\tprintObjectTypeFieldBuilders(config, typeName, field),\n\t);\n\tconst fieldsFactories = fields.map((field) =>\n\t\tprintObjectTypeFieldFactories(config, typeName, field),\n\t);\n\treturn buildBlock({\n\t\tname: `${typeName}:`,\n\t\tlines: [\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Builder:',\n\t\t\t\tlines: fieldsBuilders,\n\t\t\t}),\n\t\t\tbuildBlock({\n\t\t\t\tname: 'Factory:',\n\t\t\t\tlines: fieldsFactories,\n\t\t\t}),\n\t\t],\n\t});\n}\n\nfunction printObjectTypeFieldBuilders(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst fieldType = typeName === 'Subscription' ? 'SubscriptionMethods' : 'FieldMethods';\n\treturn `${field}: ${namespace.sdk}.${fieldType}<${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nfunction printObjectTypeFieldFactories(\n\tconfig: ModulePrinterConfig,\n\ttypeName: string,\n\tfield: string,\n) {\n\tconst parentType = getParentType(typeName);\n\tconst resultType = getResultType(config, typeName, field);\n\tconst argumentsType = getArgsType(config, typeName, field);\n\tconst contextType = getContextType();\n\tconst infoType = getInfoType();\n\tconst fieldType = typeName === 'Subscription' ? 'SubscriptionField' : 'Field';\n\treturn `${field}: ${namespace.sdk}.${fieldType}<${resultType}, ${resultType}, ${parentType}, ${contextType}, ${argumentsType}, ${infoType}>`;\n}\n\nexport function printModuleBuilder(config: ModulePrinterConfig, moduleName: string) {\n\tconst objectTypes = config.registry.defined.objects\n\t\t.map((typeName) => printObjectTypeBuilder(typeName, config.registry.picks.objects))\n\t\t.filter(Boolean);\n\tconst builders = buildCodeBlock({\n\t\tname: '',\n\t\tlines: objectTypes,\n\t});\n\tconst typeNameResolvers = buildCodeBlock({\n\t\tname: '',\n\t\tlines: [...config.registry.defined.unions, ...config.registry.defined.interfaces].map(\n\t\t\t(name) => `${name}: ${printTypeNameResolver()}`,\n\t\t),\n\t});\n\tconst infoType = getInfoType();\n\tconst contextType = getContextType();\n\treturn [\n\t\t`export const ${pascalCase(moduleName)}Module = ${namespace.sdk}.createModuleBuilder<${contextType}, ${infoType}, BaetaModuleTypes['Builders'], BaetaModuleTypes['Factories']>(moduleMetadata.id, moduleMetadata.typedef,`,\n\t\tbuilders,\n\t\t',',\n\t\ttypeNameResolvers,\n\t\t`);`,\n\t].join('');\n}\n\nfunction printObjectTypeBuilder(typeName: string, objects: Record<string, string[] | undefined>) {\n\tconst fields = objects[typeName]?.map((field) => printObjectTypeFieldBuilder(typeName, field));\n\tif (fields == null || fields.length === 0) {\n\t\treturn '';\n\t}\n\tconst content = buildCodeBlock({\n\t\tname: '',\n\t\tlines: fields,\n\t});\n\treturn `${typeName}: ${namespace.sdk}.createTypeBuilder(\"${typeName}\",${content})`;\n}\n\nfunction printTypeNameResolver() {\n\treturn '{ __resolveType: (source: {__typename: string}) => { return source.__typename; }}';\n}\n\nfunction getParentType(type: string) {\n\tif (['Query', 'Mutation', 'Subscription'].includes(type)) {\n\t\treturn '{}';\n\t}\n\treturn `${namespace.globalTypes}.${type}`;\n}\n\nfunction getResultType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst fieldType = config.fieldInfo.get(type)?.get(field)?.type;\n\tif (fieldType == null) {\n\t\treturn '{}';\n\t}\n\treturn fieldType;\n}\n\nfunction getArgsType(config: ModulePrinterConfig, type: string, field: string) {\n\tconst hasArgs = config.fieldInfo.get(type)?.get(field)?.hasArguments ?? false;\n\tif (!hasArgs) {\n\t\treturn '{}';\n\t}\n\tconst fieldUpper = pascalCase(field);\n\treturn `${namespace.globalTypes}.${type}${fieldUpper}Args`;\n}\n\nfunction printObjectTypeFieldBuilder(typeName: string, field: string) {\n\tif (typeName === 'Subscription') {\n\t\treturn `${field}: ${namespace.sdk}.createSubscriptionBuilder(\"${field}\")`;\n\t}\n\treturn `${field}: ${namespace.sdk}.createFieldBuilder(\"${typeName}\", \"${field}\")`;\n}\n\nfunction getContextType() {\n\treturn `${namespace.userTypes}.Ctx`;\n}\n\nfunction getInfoType() {\n\treturn `${namespace.userTypes}.Info`;\n}\n","import { makeRelativePathForImport } from './printer-utils.ts';\n\nexport function printTypesTemplate(options: {\n\timportExtension: '.js' | '.ts' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}) {\n\tconst importDir = makeRelativePathForImport(options.modulesDir, options.typesDir);\n\n\treturn `import type { GraphQLResolveInfo } from 'graphql';\nimport type { BaseObjectTypes, BaseScalars } from '${importDir}/utility${options.importExtension}';\n\nexport interface Scalars extends BaseScalars {}\n\nexport interface ObjectTypes extends BaseObjectTypes {}\n\nexport type Ctx = {};\n\nexport type Info = GraphQLResolveInfo;\n`;\n}\n","import { type DefinitionsMap, isScalarType } from '@baeta/util-graphql';\nimport { pascalCase } from 'change-case';\nimport {\n\ttype EnumTypeDefinitionNode,\n\ttype FieldDefinitionNode,\n\ttype InputObjectTypeDefinitionNode,\n\ttype InputValueDefinitionNode,\n\ttype InterfaceTypeDefinitionNode,\n\tKind,\n\ttype ListTypeNode,\n\ttype NamedTypeNode,\n\ttype ObjectTypeDefinitionNode,\n\ttype TypeNode,\n\ttype UnionTypeDefinitionNode,\n} from 'graphql';\nimport { buildBlock, indent, makeRelativePathForImport } from './printer-utils.ts';\n\nexport interface PrinterConfig {\n\tglobalDefinitions: DefinitionsMap;\n\twithMaybe: boolean;\n\twithOptional: boolean;\n\tdefaultScalars: string[];\n\timportExtension: '.ts' | '.js' | '';\n\ttypesDir: string;\n\tmodulesDir: string;\n}\n\nexport function printUtilityTypes(): string {\n\treturn [\n\t\t'export type Or<A, B> = void extends A ? B : A;',\n\t\t'export type Maybe<T> = T | null;',\n\t].join('\\n\\n');\n}\n\nconst defaultScalarTypes: Record<string, string | undefined> = {\n\tID: 'string',\n\tString: 'string',\n\tBoolean: 'boolean',\n\tInt: 'number',\n\tFloat: 'number',\n};\n\nexport function printBaseScalars(config: PrinterConfig): string {\n\tconst defaultScalars = config.defaultScalars\n\t\t.map((scalar) => {\n\t\t\tconst type = defaultScalarTypes[scalar];\n\t\t\tif (type == null) return null;\n\t\t\treturn `${scalar}: ${type};`;\n\t\t})\n\t\t.filter((el) => el != null);\n\tconst customScalars = [...config.globalDefinitions.scalarTypeMap.values()].map(\n\t\t(scalar) => `${scalar.name.value}: unknown;`,\n\t);\n\n\treturn buildBlock({\n\t\tname: 'export type BaseScalars =',\n\t\tlines: [...defaultScalars, ...customScalars],\n\t});\n}\n\nexport function printBaseObjectTypes(config: PrinterConfig): string {\n\tconst objectTypes = [...config.globalDefinitions.objectTypeMap.values()].map((t) => t.name.value);\n\treturn buildBlock({\n\t\tname: 'export interface BaseObjectTypes',\n\t\tlines: objectTypes.map((t) => `${t}: unknown;`),\n\t});\n}\n\nexport function printTypesHeaders(config: PrinterConfig): string {\n\tconst overridesDir = makeRelativePathForImport(config.typesDir, config.modulesDir);\n\treturn [\n\t\t`import type * as BaetaUtility from \"./utility${config.importExtension}\";`,\n\t\t`import type * as BaetaOverrides from \"${overridesDir}/types${config.importExtension}\";`,\n\t\t'',\n\t\t'export type Scalars = BaetaOverrides.Scalars;',\n\t].join('\\n');\n}\n\nexport function printRootTypesFromMap(\n\tconfig: PrinterConfig,\n\trootTypes: string[],\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()]\n\t\t.filter((type) => rootTypes.includes(type.name.value))\n\t\t.map((type) => printObjectType(config, type))\n\t\t.join('\\n\\n');\n}\n\nexport function printObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printObjectType(config, type));\n}\n\nfunction printObjectType(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printObjectTypeField(config, field));\n\treturn `export type ${type.name.value} = ${printOrObjectType(type, fields)}`;\n}\n\nfunction printObjectTypeField(config: PrinterConfig, field: FieldDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printEnumTypesFromMap(map: Map<string, EnumTypeDefinitionNode>) {\n\treturn [...map.values()].map(printEnumType);\n}\n\nfunction printEnumType(type: EnumTypeDefinitionNode) {\n\tconst values = type.values?.map((value) => `'${value.name.value}'`);\n\treturn `export type ${type.name.value} = ${values?.join(' | ') || 'never'}`;\n}\n\nexport function printInterfaceTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InterfaceTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInterfaceType(config, type));\n}\n\nfunction printInterfaceType(config: PrinterConfig, type: InterfaceTypeDefinitionNode) {\n\tconst objectTypes = Array.from(config.globalDefinitions.objectTypeMap.values());\n\tconst implementingTypes = objectTypes.filter((t) =>\n\t\tt.interfaces?.some((i) => i.name.value === type.name.value),\n\t);\n\tconst types = implementingTypes.map((t) => printNamedTypeForInterface(t.name.value));\n\treturn `export type ${type.name.value} = ${types.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForInterface(name: string) {\n\treturn `${name} & {__typename: \"${name}\"}`;\n}\n\nexport function printUnionTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, UnionTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printUnionType(config, type));\n}\n\nfunction printUnionType(config: PrinterConfig, type: UnionTypeDefinitionNode) {\n\tconst types = type.types?.map((type) => printNamedTypeForUnion(config, type));\n\treturn `export type ${type.name.value} = ${types?.join(' | ') || 'never'}`;\n}\n\nfunction printNamedTypeForUnion(config: PrinterConfig, type: NamedTypeNode) {\n\treturn `${printNamedType(config, type, false)} & {__typename: \"${type.name.value}\"}`;\n}\n\nexport function printInputObjectTypeTypesFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, InputObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].map((type) => printInputObjectType(config, type));\n}\n\nfunction printInputObjectType(config: PrinterConfig, type: InputObjectTypeDefinitionNode) {\n\tconst fields = type.fields?.map((field) => printInputObjectTypeField(config, field));\n\treturn buildBlock({\n\t\tname: `export type ${type.name.value} =`,\n\t\tlines: fields ?? [],\n\t});\n}\n\nfunction printInputObjectTypeField(config: PrinterConfig, field: InputValueDefinitionNode) {\n\tconst optionalMarker = printOptionalMarker(config, field.type);\n\treturn `${field.name.value}${optionalMarker}: ${printType(config, field.type)}`;\n}\n\nexport function printObjectTypeFieldsArgsFromMap(\n\tconfig: PrinterConfig,\n\tmap: Map<string, ObjectTypeDefinitionNode>,\n) {\n\treturn [...map.values()].flatMap((type) => printObjectTypeArgs(config, type));\n}\n\nfunction printObjectTypeArgs(config: PrinterConfig, type: ObjectTypeDefinitionNode) {\n\tif (type.fields == null) {\n\t\treturn [];\n\t}\n\treturn type.fields\n\t\t.map((field) => printObjectTypeFieldArgs(config, type.name.value, field))\n\t\t.filter(Boolean);\n}\n\nfunction printObjectTypeFieldArgs(\n\tconfig: PrinterConfig,\n\ttypeName: string,\n\tfield: FieldDefinitionNode,\n) {\n\tconst name = `${typeName + pascalCase(field.name.value)}Args`;\n\treturn buildBlock({\n\t\tname: `export type ${name} =`,\n\t\tlines: field.arguments?.map((arg) => printObjectTypeFieldArg(config, arg)) ?? [],\n\t});\n}\n\nfunction printObjectTypeFieldArg(config: PrinterConfig, arg: InputValueDefinitionNode) {\n\treturn `${arg.name.value}: ${printType(config, arg.type)}`;\n}\n\nfunction printType(config: PrinterConfig, type: TypeNode, nullable = true): string {\n\tswitch (type.kind) {\n\t\tcase Kind.NAMED_TYPE:\n\t\t\treturn printNamedType(config, type, nullable);\n\t\tcase Kind.LIST_TYPE:\n\t\t\treturn printListType(config, type, nullable);\n\t\tcase Kind.NON_NULL_TYPE:\n\t\t\treturn printType(config, type.type, false);\n\t\tdefault:\n\t\t\treturn type satisfies never;\n\t}\n}\n\nfunction printListType(config: PrinterConfig, type: ListTypeNode, nullable = true): string {\n\treturn printValue(config, `Array<${printType(config, type.type)}>`, nullable);\n}\n\nfunction printNamedType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\tif (isScalarType(config.globalDefinitions, config.defaultScalars, type)) {\n\t\treturn printScalarType(config, type, nullable);\n\t}\n\treturn printValue(config, type.name.value, nullable);\n}\n\nfunction printScalarType(config: PrinterConfig, type: NamedTypeNode, nullable = true): string {\n\treturn printValue(config, `Scalars[\"${type.name.value}\"]`, nullable);\n}\n\nfunction printValue(config: PrinterConfig, value: string, nullable: boolean): string {\n\tif (!nullable) {\n\t\treturn value;\n\t}\n\tif (config.withMaybe) {\n\t\treturn `BaetaUtility.Maybe<${value}>`;\n\t}\n\treturn `${value} | null`;\n}\n\nfunction printOptionalMarker(config: PrinterConfig, type: TypeNode) {\n\treturn config.withOptional && type.kind !== Kind.NON_NULL_TYPE ? '?' : '';\n}\n\nfunction printOrObjectType(type: ObjectTypeDefinitionNode, fields?: string[]): string {\n\treturn `BaetaUtility.Or<BaetaOverrides.ObjectTypes[\"${type.name.value}\"], {\\n${fields?.map(indent(2)).join('\\n') ?? ''}\\n}>`;\n}\n","import type { File, FileOptions, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport {\n\tcreateDefinitionsMapFromDocument,\n\tcreateDefinitionsMapFromSources,\n\tcreateModuleRegistry,\n\tgetSourcesFromSchema,\n\tgroupSourcesByModule,\n\tloadSchema,\n} from '@baeta/util-graphql';\nimport { join } from '@baeta/util-path';\nimport { concatAST } from 'graphql';\nimport { createFieldInfoMap } from './field-info.ts';\nimport { printAutoload } from './printer-autoload.ts';\nimport {\n\ttype ModulePrinterConfig,\n\tprintBaetaModuleTypes,\n\tprintModuleBuilder,\n\tprintModuleImports,\n\tprintModuleIndexStarter,\n\tprintModuleMetadata,\n\tprintModuleObjectTypeFields,\n} from './printer-module.ts';\nimport { printTypesTemplate } from './printer-templates.ts';\nimport {\n\ttype PrinterConfig,\n\tprintBaseObjectTypes,\n\tprintBaseScalars,\n\tprintEnumTypesFromMap,\n\tprintInputObjectTypeTypesFromMap,\n\tprintInterfaceTypesFromMap,\n\tprintObjectTypeFieldsArgsFromMap,\n\tprintObjectTypeTypesFromMap,\n\tprintRootTypesFromMap,\n\tprintTypesHeaders,\n\tprintUnionTypesFromMap,\n\tprintUtilityTypes,\n} from './printer-types.ts';\n\ntype GeneratedFile = {\n\tfilename: string;\n\tcontent: string;\n\toptions?: FileOptions;\n};\n\nexport async function generate(\n\toptions: NormalizedGeneratorOptions,\n\tcurrentFiles: File[],\n): Promise<GeneratedFile[]> {\n\tconst { outputSchema, outputSchemaAst } = await loadSchema(\n\t\toptions.schemas,\n\t\toptions.cwd,\n\t\toptions.loaders,\n\t);\n\tconst sources = getSourcesFromSchema(outputSchemaAst);\n\tconst sourcesByModule = groupSourcesByModule(sources, options.modulesDir);\n\tconst modules = Array.from(sourcesByModule.keys());\n\tconst globalDefinitions = createDefinitionsMapFromDocument(outputSchema);\n\tconst modulesDefinitions = createDefinitionsMapFromSources(sources);\n\n\tconst defaultScalars = ['ID', 'Int', 'Float', 'String', 'Boolean'];\n\n\tconst config: PrinterConfig = {\n\t\tglobalDefinitions,\n\t\twithMaybe: false,\n\t\twithOptional: false,\n\t\tdefaultScalars,\n\t\timportExtension: options.importExtension,\n\t\ttypesDir: options.typesDir,\n\t\tmodulesDir: options.modulesDir,\n\t};\n\n\tconst fieldInfo = createFieldInfoMap(globalDefinitions, defaultScalars);\n\n\tconst typesContent = [\n\t\tprintTypesHeaders(config),\n\t\tprintRootTypesFromMap(\n\t\t\tconfig,\n\t\t\t['Query', 'Mutation', 'Subscription'],\n\t\t\tglobalDefinitions.objectTypeMap,\n\t\t),\n\t\t...printEnumTypesFromMap(globalDefinitions.enumTypeMap),\n\t\t...printObjectTypeTypesFromMap(config, modulesDefinitions.objectTypeMap),\n\t\t...printObjectTypeFieldsArgsFromMap(config, globalDefinitions.objectTypeMap),\n\t\t...printInputObjectTypeTypesFromMap(config, globalDefinitions.inputObjectTypeMap),\n\t\t...printInterfaceTypesFromMap(config, globalDefinitions.interfaceTypeMap),\n\t\t...printUnionTypesFromMap(config, globalDefinitions.unionTypeMap),\n\t].join('\\n\\n');\n\n\tconst utilityContent = [\n\t\tprintUtilityTypes(),\n\t\tprintBaseScalars(config),\n\t\tprintBaseObjectTypes(config),\n\t].join('\\n\\n');\n\n\tconst files: GeneratedFile[] = [\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'types.ts'),\n\t\t\tcontent: typesContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.typesDir, 'utility.ts'),\n\t\t\tcontent: utilityContent,\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'index.ts'),\n\t\t\tcontent: printAutoload(\n\t\t\t\t{\n\t\t\t\t\timportExtension: options.importExtension,\n\t\t\t\t\tmoduleDefinitionName: options.moduleDefinitionName,\n\t\t\t\t},\n\t\t\t\tmodules,\n\t\t\t),\n\t\t},\n\t\t{\n\t\t\tfilename: join(options.modulesDir, 'types.ts'),\n\t\t\tcontent: printTypesTemplate({\n\t\t\t\timportExtension: options.importExtension,\n\t\t\t\ttypesDir: options.typesDir,\n\t\t\t\tmodulesDir: options.modulesDir,\n\t\t\t}),\n\t\t\toptions: {\n\t\t\t\tdisableOverwrite: true,\n\t\t\t\tenableLintHeaders: false,\n\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t},\n\t\t},\n\t];\n\n\tfor (const module of modules) {\n\t\tconst sources = sourcesByModule.get(module);\n\t\tconst documents = sources?.map((s) => s.document).filter((el) => el != null) ?? [];\n\t\tif (documents.length === 0) continue;\n\t\tconst document = concatAST(documents);\n\t\tconst config: ModulePrinterConfig = {\n\t\t\ttypesDir: options.typesDir,\n\t\t\tfieldInfo,\n\t\t\timportExtension: options.importExtension,\n\t\t\tmodulesDir: options.modulesDir,\n\t\t\tregistry: createModuleRegistry(document),\n\t\t\tmoduleDefinitionName: options.moduleDefinitionName,\n\t\t};\n\t\tfiles.push({\n\t\t\tfilename: join(options.modulesDir, `/${module}/${options.moduleDefinitionName}.ts`),\n\t\t\tcontent: [\n\t\t\t\tprintModuleImports(config, module),\n\t\t\t\tprintModuleMetadata(module, document),\n\t\t\t\tprintBaetaModuleTypes(config),\n\t\t\t\tprintModuleObjectTypeFields(config),\n\t\t\t\tprintModuleBuilder(config, module),\n\t\t\t].join('\\n\\n'),\n\t\t});\n\n\t\tconst moduleStarterPath = join(options.modulesDir, `/${module}/index.ts`);\n\t\tconst moduleStarterExists = currentFiles.some((file) => file.filename === moduleStarterPath);\n\t\tif (!moduleStarterExists) {\n\t\t\tfiles.push({\n\t\t\t\tfilename: join(options.modulesDir, `/${module}/index.ts`),\n\t\t\t\tcontent: printModuleIndexStarter(config, module),\n\t\t\t\toptions: {\n\t\t\t\t\tdisableOverwrite: true,\n\t\t\t\t\tenableLintHeaders: false,\n\t\t\t\t\tdisableGenerationNoticeHeader: true,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\treturn files;\n}\n","import { createPluginV1, isMatch, type WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen.ts';\n\nexport function graphqlPlugin() {\n\treturn createPluginV1({\n\t\tname: 'graphql',\n\t\tactionName: 'GraphQL modules',\n\t\twatch: (options, watcher, reload) => {\n\t\t\tconst handleChange = (file: WatcherFile) => {\n\t\t\t\tif (isMatch(file.relativePath, options.schemas)) {\n\t\t\t\t\treload(file);\n\t\t\t\t}\n\t\t\t};\n\t\t\twatcher.on('update', handleChange);\n\t\t\twatcher.on('delete', handleChange);\n\t\t},\n\t\tgenerate: async (ctx, next) => {\n\t\t\tconst items = await generate(ctx.generatorOptions, ctx.fileManager.files);\n\t\t\tfor (const item of items) {\n\t\t\t\tctx.fileManager.createAndAdd(item.filename, item.content, 'graphql', item.options);\n\t\t\t}\n\t\t\treturn await next();\n\t\t},\n\t});\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@baeta/plugin-graphql",
3
- "version": "2.0.0-next.14",
3
+ "version": "2.0.0-next.16",
4
+ "description": "GraphQL codegen plugin for Baeta.",
4
5
  "keywords": [
5
6
  "baeta",
6
7
  "builder",
@@ -21,14 +22,14 @@
21
22
  },
22
23
  "repository": {
23
24
  "type": "git",
24
- "url": "https://github.com/andreisergiu98/baeta.git",
25
+ "url": "git+https://github.com/andreisergiu98/baeta.git",
25
26
  "directory": "packages/plugin-graphql"
26
27
  },
27
28
  "files": [
28
- "dist",
29
- "package.json"
29
+ "dist"
30
30
  ],
31
31
  "type": "module",
32
+ "sideEffects": false,
32
33
  "types": "dist/index.d.ts",
33
34
  "exports": {
34
35
  ".": {
@@ -37,13 +38,13 @@
37
38
  }
38
39
  },
39
40
  "publishConfig": {
40
- "access": "public",
41
41
  "exports": {
42
42
  ".": {
43
43
  "types": "./dist/index.d.ts",
44
44
  "default": "./dist/index.js"
45
45
  }
46
- }
46
+ },
47
+ "access": "public"
47
48
  },
48
49
  "scripts": {
49
50
  "build": "builder build",
@@ -54,10 +55,10 @@
54
55
  "types": "tsc --noEmit"
55
56
  },
56
57
  "dependencies": {
57
- "@baeta/generator-sdk": "^2.0.0-next.5",
58
- "@baeta/util-graphql": "^2.0.0-next.2",
59
- "@baeta/util-path": "^2.0.0-next.4",
60
- "change-case-all": "2.1.0"
58
+ "@baeta/generator-sdk": "^2.0.0-next.7",
59
+ "@baeta/util-graphql": "^2.0.0-next.4",
60
+ "@baeta/util-path": "^2.0.0-next.6",
61
+ "change-case": "^5.4.4"
61
62
  },
62
63
  "devDependencies": {
63
64
  "@baeta/builder": "^0.0.0",
@@ -76,7 +77,7 @@
76
77
  ]
77
78
  },
78
79
  "engines": {
79
- "node": ">=22.20.0"
80
+ "node": "^22.20.0 || ^24.0.0 || >=26.0.0"
80
81
  },
81
82
  "typedocOptions": {
82
83
  "entryPoints": [