@baeta/plugin-graphql 0.0.24-75-20230619184544-4493aaa → 0.0.24

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,13 +1,17 @@
1
1
  # @baeta/plugin-graphql
2
2
 
3
- ## 0.0.24-75-20230619184544-4493aaa
3
+ ## 0.0.24
4
4
 
5
5
  ### Patch Changes
6
6
 
7
+ - [#81](https://github.com/andreisergiu98/baeta/pull/81) [`3ff5e54`](https://github.com/andreisergiu98/baeta/commit/3ff5e54f31cf42ba2264b12309338d6e78710722) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - add file transformation function from config
8
+
7
9
  - [#69](https://github.com/andreisergiu98/baeta/pull/69) [`3cdd9b3`](https://github.com/andreisergiu98/baeta/commit/3cdd9b30369d21179769a4b8d5f76e326ae6db37) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
8
10
 
9
- - Updated dependencies [[`3cdd9b3`](https://github.com/andreisergiu98/baeta/commit/3cdd9b30369d21179769a4b8d5f76e326ae6db37)]:
10
- - @baeta/generator-sdk@0.0.9-75-20230619184544-4493aaa
11
+ - [#91](https://github.com/andreisergiu98/baeta/pull/91) [`e0944f6`](https://github.com/andreisergiu98/baeta/commit/e0944f6320e6cf2f0a3d2c9f51edd282bdce0546) Thanks [@andreisergiu98](https://github.com/andreisergiu98)! - update dependencies
12
+
13
+ - Updated dependencies [[`3ff5e54`](https://github.com/andreisergiu98/baeta/commit/3ff5e54f31cf42ba2264b12309338d6e78710722), [`3cdd9b3`](https://github.com/andreisergiu98/baeta/commit/3cdd9b30369d21179769a4b8d5f76e326ae6db37), [`e0944f6`](https://github.com/andreisergiu98/baeta/commit/e0944f6320e6cf2f0a3d2c9f51edd282bdce0546)]:
14
+ - @baeta/generator-sdk@0.0.9
11
15
 
12
16
  ## 0.0.23
13
17
 
package/dist/index.cjs CHANGED
@@ -8,7 +8,6 @@ var __export = (target, all) => {
8
8
  var _generatorsdk = require('@baeta/generator-sdk');
9
9
 
10
10
  // lib/codegen.ts
11
-
12
11
  var _core = require('@graphql-codegen/core');
13
12
  var _pluginhelpers = require('@graphql-codegen/plugin-helpers');
14
13
  var _typescript = require('@graphql-codegen/typescript'); var typescriptPlugin = _interopRequireWildcard(_typescript);
@@ -136,7 +135,9 @@ var _parsefilepath = require('parse-filepath'); var _parsefilepath2 = _interopRe
136
135
  var sep = "/";
137
136
  function collectUsedTypes(doc) {
138
137
  const used = [];
139
- doc.definitions.forEach(findRelated);
138
+ for (const definition of doc.definitions) {
139
+ findRelated(definition);
140
+ }
140
141
  function markAsUsed(type) {
141
142
  pushUnique(used, type);
142
143
  }
@@ -144,28 +145,40 @@ function collectUsedTypes(doc) {
144
145
  if (node.kind === _graphql.Kind.OBJECT_TYPE_DEFINITION || node.kind === _graphql.Kind.OBJECT_TYPE_EXTENSION) {
145
146
  markAsUsed(node.name.value);
146
147
  if (node.fields) {
147
- node.fields.forEach(findRelated);
148
+ for (const field of node.fields) {
149
+ findRelated(field);
150
+ }
148
151
  }
149
152
  if (node.interfaces) {
150
- node.interfaces.forEach(findRelated);
153
+ for (const _interface of node.interfaces) {
154
+ findRelated(_interface);
155
+ }
151
156
  }
152
157
  } else if (node.kind === _graphql.Kind.INPUT_OBJECT_TYPE_DEFINITION || node.kind === _graphql.Kind.INPUT_OBJECT_TYPE_EXTENSION) {
153
158
  markAsUsed(node.name.value);
154
159
  if (node.fields) {
155
- node.fields.forEach(findRelated);
160
+ for (const field of node.fields) {
161
+ findRelated(field);
162
+ }
156
163
  }
157
164
  } else if (node.kind === _graphql.Kind.INTERFACE_TYPE_DEFINITION || node.kind === _graphql.Kind.INTERFACE_TYPE_EXTENSION) {
158
165
  markAsUsed(node.name.value);
159
166
  if (node.fields) {
160
- node.fields.forEach(findRelated);
167
+ for (const field of node.fields) {
168
+ findRelated(field);
169
+ }
161
170
  }
162
171
  if (node.interfaces) {
163
- node.interfaces.forEach(findRelated);
172
+ for (const _interface of node.interfaces) {
173
+ findRelated(_interface);
174
+ }
164
175
  }
165
176
  } else if (node.kind === _graphql.Kind.UNION_TYPE_DEFINITION || node.kind === _graphql.Kind.UNION_TYPE_EXTENSION) {
166
177
  markAsUsed(node.name.value);
167
178
  if (node.types) {
168
- node.types.forEach(findRelated);
179
+ for (const type of node.types) {
180
+ findRelated(type);
181
+ }
169
182
  }
170
183
  } else if (node.kind === _graphql.Kind.ENUM_TYPE_DEFINITION || node.kind === _graphql.Kind.ENUM_TYPE_EXTENSION) {
171
184
  markAsUsed(node.name.value);
@@ -178,7 +191,9 @@ function collectUsedTypes(doc) {
178
191
  } else if (node.kind === _graphql.Kind.FIELD_DEFINITION) {
179
192
  findRelated(resolveTypeNode(node.type));
180
193
  if (node.arguments) {
181
- node.arguments.forEach(findRelated);
194
+ for (const argument of node.arguments) {
195
+ findRelated(argument);
196
+ }
182
197
  }
183
198
  } else if (node.kind === _graphql.Kind.NAMED_TYPE && // Named type
184
199
  !isGraphQLPrimitive(node.name.value)) {
@@ -193,7 +208,7 @@ function collectObjectFieldType(node, fieldDefinition, fieldsMap, fieldTypes) {
193
208
  const field = fieldsMap[fieldDefinition.name.value];
194
209
  const baseName = _pluginhelpers.getBaseType.call(void 0, field.type).name;
195
210
  const isDefaultScalar = _visitorplugincommon.DEFAULT_SCALARS[baseName] != null;
196
- const name = isDefaultScalar ? `Types.Scalars["${baseName}"]` : baseName;
211
+ const name = isDefaultScalar ? `Types.Scalars["${baseName}"]["output"]` : baseName;
197
212
  const type = _visitorplugincommon.wrapTypeWithModifiers.call(void 0, name, field.type, {
198
213
  wrapOptional: (str) => {
199
214
  return `Types.Maybe<${str}>`;
@@ -267,7 +282,7 @@ function buildBlock({ name, lines }) {
267
282
  }
268
283
  return [`${name} {`, ...lines.map(indent(2)), "};"].join("\n");
269
284
  }
270
- var getRelativePath = function(filepath, basePath) {
285
+ var getRelativePath = (filepath, basePath) => {
271
286
  const normalizedFilepath = normalize(filepath);
272
287
  const normalizedBasePath = ensureStartsWithSeparator(
273
288
  normalize(ensureEndsWithSeparator(basePath))
@@ -277,9 +292,9 @@ var getRelativePath = function(filepath, basePath) {
277
292
  };
278
293
  function groupSourcesByModule(sources, basePath) {
279
294
  const grouped = {};
280
- sources.forEach((source) => {
295
+ for (const source of sources) {
281
296
  if (!source.location) {
282
- return;
297
+ continue;
283
298
  }
284
299
  const relativePath = getRelativePath(source.location, basePath);
285
300
  if (relativePath) {
@@ -289,7 +304,7 @@ function groupSourcesByModule(sources, basePath) {
289
304
  }
290
305
  grouped[mod].push(source);
291
306
  }
292
- });
307
+ }
293
308
  return grouped;
294
309
  }
295
310
  function extractModuleDirectory(filepath, basePath) {
@@ -323,9 +338,9 @@ function uniqueByKey(left, right, key) {
323
338
  }
324
339
  function createObject(keys, valueFn) {
325
340
  const obj = {};
326
- keys.forEach((key) => {
341
+ for (const key of keys) {
327
342
  obj[key] = valueFn(key);
328
- });
343
+ }
329
344
  return obj;
330
345
  }
331
346
 
@@ -491,7 +506,7 @@ ${contentBody}
491
506
  return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>("${field}"),`;
492
507
  }
493
508
  function printSubscriptionObjectBuilder() {
494
- const subscriptions = _nullishCoalesce(_optionalChain([picks, 'access', _8 => _8.objects, 'access', _9 => _9["Subscription"], 'optionalAccess', _10 => _10.filter, 'call', _11 => _11(unique)]), () => ( []));
509
+ const subscriptions = _nullishCoalesce(_optionalChain([picks, 'access', _8 => _8.objects, 'access', _9 => _9.Subscription, 'optionalAccess', _10 => _10.filter, 'call', _11 => _11(unique)]), () => ( []));
495
510
  if (subscriptions.length === 0) {
496
511
  return "";
497
512
  }
@@ -595,9 +610,9 @@ ${body}
595
610
  if (!picksObj[name2]) {
596
611
  picksObj[name2] = [];
597
612
  }
598
- node.fields.forEach((field) => {
613
+ for (const field of node.fields) {
599
614
  picksObj[name2].push(field.name.value);
600
- });
615
+ }
601
616
  }
602
617
  }
603
618
  function collectValuesFromEnum(node) {
@@ -606,9 +621,9 @@ ${body}
606
621
  if (!picks.enums[name2]) {
607
622
  picks.enums[name2] = [];
608
623
  }
609
- node.values.forEach((field) => {
624
+ for (const field of node.values) {
610
625
  picks.enums[name2].push(field.name.value);
611
- });
626
+ }
612
627
  }
613
628
  }
614
629
  function collectTypeDefinition(node) {
@@ -859,7 +874,10 @@ async function generate(options) {
859
874
  ...output,
860
875
  cache
861
876
  });
862
- return new (0, _generatorsdk.File)(output.filename, result2, "graphql");
877
+ return {
878
+ filename: output.filename,
879
+ content: result2
880
+ };
863
881
  });
864
882
  return Promise.all(promises);
865
883
  }
@@ -879,8 +897,10 @@ function graphqlPlugin() {
879
897
  watcher.on("delete", handleChange);
880
898
  },
881
899
  generate: async (ctx, next) => {
882
- const files = await generate(ctx.generatorOptions);
883
- ctx.fileManager.add(...files);
900
+ const items = await generate(ctx.generatorOptions);
901
+ for (const item of items) {
902
+ ctx.fileManager.createAndAdd(item.filename, item.content, "graphql");
903
+ }
884
904
  return next();
885
905
  }
886
906
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"names":["getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","sources","result"],"mappings":";;;;;;;AAAA,SAAS,gBAAgB,eAA4B;;;ACArD,SAAS,YAAwC;AACjD,SAAS,WAAW,kBAAkB;AACtC,SAAS,iBAAiB,gCAAgC;AAC1D,YAAY,sBAAsB;;;ACH3B,SAAS,cAIA;AACd,QAAM,QAAQ,oBAAI,IAA8B;AAEhD,SAAO,SAAS,OAAU,WAAmB,KAAa,SAAuC;AAC/F,UAAM,WAAW,GAAG,aAAa;AAEjC,UAAM,cAAc,MAAM,IAAI,QAAQ;AAEtC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,UAAU,KAAK;AAEzB,WAAO;AAAA,EACT;AACF;;;ACrBA,SAAS,mCAAAA,wCAAuC;AAChD,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,cAAc,yBAAqD;AAC5E,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;;;ACT1B,SAAS,uCAAuC;AAChD,SAAwB,aAAa;AACrC,SAAS,kBAAkB;AAEpB,SAAS,YAAY,SAAyB;AACnD,SAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC1D;AAEO,SAAS,WAAW,QAA+B;AACxD,SAAO,YAAY,MAAM,gCAAgC,MAAM,CAAC,CAAC;AACnE;;;ADGA,eAAsB,WAAW,kBAA8C,KAAa;AAC1F,QAAM,kBAAkB,MAAM,kBAAkB,kBAAkB;AAAA,IAChE,SAAS;AAAA,MACP,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,aAAa;AAAA,MACjB,IAAI,kBAAkB;AAAA,MACtB,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,mBAAmB;AAAA,MACvB,IAAI,aAAa;AAAA,IACnB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,CAAC,gBAAgB,YAAY;AAC/B,oBAAgB,aAAa,CAAC;AAAA,EAChC;AAEA,EAAC,gBAAgB,WAAuC,MAAM,IAAI,WAAW,eAAe;AAE5F,SAAO;AAAA,IACL;AAAA,IACA,cAAcA,iCAAgC,eAAe;AAAA,EAC/D;AACF;;;AEvCA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS,mBAAmB,mBAAmB;AAOxC,IAAM,SAAiC,OAC5C,QACA,WACA,WACgC;AAChC,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,YAAY,OAAO,eAAe,KAAK;AAEtD,MAAI,OAAO,cAAc,OAAO,QAAQ;AACtC,UAAM,aAAa,OAAO,UAAU,gBAAgB,GAAG,OAAO;AAE9D,UAAM,SAAS;AAAA,MACb,OAAO;AAAA,MACP;AAAA,QACE;AAAA,UACE;AAAA,UACA,WAAW,OAAO;AAAA,QACpB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sBAAsB,OAAO,MAAM;AAAA,EAClD;AAEA,UAAQ,KAAK,6BAA6B;AAE1C,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ,EAAE,OAAO;;;AC5CxB,SAAS,aAAa,sBAAsB;AAE5C,SAAuB,WAAW,gBAAAC,qBAAoB;AACtD,SAAS,MAAM,UAAU,eAAe;;;ACHxC,SAAS,kBAAkB;AAC3B;AAAA,EASE;AAAA,EACA,QAAAC;AAAA,EAKA;AAAA,OACK;;;AClBP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,6BAA6B;AAEvD;AAAA,EAQE;AAAA,OAIK;AACP,OAAO,WAAW;AAElB,IAAM,MAAM;AAKL,SAAS,iBAAiB,KAA6B;AAC5D,QAAM,OAAiB,CAAC;AAExB,MAAI,YAAY,QAAQ,WAAW;AAEnC,WAAS,WAAW,MAAc;AAChC,eAAW,MAAM,IAAI;AAAA,EACvB;AAEA,WAAS,YACP,MACA;AACA,QAAI,KAAK,SAAS,KAAK,0BAA0B,KAAK,SAAS,KAAK,uBAAuB;AAEzF,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,QAAQ,WAAW;AAAA,MACjC;AAEA,UAAI,KAAK,YAAY;AACnB,aAAK,WAAW,QAAQ,WAAW;AAAA,MACrC;AAAA,IACF,WACE,KAAK,SAAS,KAAK,gCACnB,KAAK,SAAS,KAAK,6BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,QAAQ,WAAW;AAAA,MACjC;AAAA,IACF,WACE,KAAK,SAAS,KAAK,6BACnB,KAAK,SAAS,KAAK,0BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,aAAK,OAAO,QAAQ,WAAW;AAAA,MACjC;AAEA,UAAI,KAAK,YAAY;AACnB,aAAK,WAAW,QAAQ,WAAW;AAAA,MACrC;AAAA,IACF,WACE,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,sBACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,OAAO;AACd,aAAK,MAAM,QAAQ,WAAW;AAAA,MAChC;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB,KAAK,SAAS,KAAK,qBAAqB;AAE5F,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B,WACE,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,uBACnB;AAEA,UAAI,CAAC,mBAAmB,KAAK,KAAK,KAAK,GAAG;AACxC,mBAAW,KAAK,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB;AAEpD,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAAA,IACxC,WAAW,KAAK,SAAS,KAAK,kBAAkB;AAE9C,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAEtC,UAAI,KAAK,WAAW;AAClB,aAAK,UAAU,QAAQ,WAAW;AAAA,MACpC;AAAA,IACF,WACE,KAAK,SAAS,KAAK;AAAA,IAEnB,CAAC,mBAAmB,KAAK,KAAK,KAAK,GACnC;AACA,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,iBACA,WACA,YACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AAEvC,QAAM,QAAQ,UAAU,gBAAgB,KAAK,KAAK;AAClD,QAAM,WAAW,YAAY,MAAM,IAAI,EAAE;AACzC,QAAM,kBAAkB,gBAAgB,QAAQ,KAAK;AACrD,QAAM,OAAO,kBAAkB,kBAAkB,eAAe;AAEhE,QAAM,OAAO,sBAAsB,MAAM,MAAM,MAAM;AAAA,IACnD,cAAc,CAAC,QAAgB;AAC7B,aAAO,eAAe;AAAA,IACxB;AAAA,IACA,WAAW,CAAC,QAAgB;AAC1B,aAAO,SAAS;AAAA,IAClB;AAAA,EACF,CAAC;AAED,MAAI,WAAW,UAAU,KAAK,MAAM;AAClC,eAAW,UAAU,IAAI,CAAC;AAAA,EAC5B;AACA,aAAW,UAAU,EAAE,SAAS,IAAI;AACtC;AAEA,SAAS,4BACP,MACA,iBACA,gBACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AACvC,QAAM,eAAe,gBAAgB,aAAa,QAAQ,gBAAgB,UAAU,SAAS;AAE7F,MAAI,eAAe,UAAU,KAAK,MAAM;AACtC,mBAAe,UAAU,IAAI,CAAC;AAAA,EAChC;AACA,iBAAe,UAAU,EAAE,SAAS,IAAI;AAC1C;AAEO,SAAS,oCAAoC,QAAwB;AAC1E,QAAM,aAAqD,CAAC;AAC5D,QAAM,iBAA0D,CAAC;AAEjE,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,YAAY,eAAe;AAAA,EACtC;AAEA,QAAM,cAAc,OAAO,WAAW;AAEtC,aAAW,QAAQ,OAAO,OAAO,WAAW,GAAG;AAC7C,QAAI,KAAK,SAAS,SAAS,KAAK,wBAAwB;AACtD;AAAA,IACF;AAEA,UAAM,aAAa,YAAY,KAAK,IAAI;AACxC,UAAM,YAAY,WAAW,UAAU;AAEvC,eAAW,SAAS,KAAK,QAAQ,UAAU,CAAC,GAAG;AAC7C,kCAA4B,KAAK,SAAS,OAAO,cAAc;AAC/D,6BAAuB,KAAK,SAAS,OAAO,WAAW,UAAU;AAAA,IACnE;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,eAAe;AACtC;AAEO,SAAS,gBAAgB,MAA+B;AAC7D,MAAI,KAAK,SAAS,KAAK,WAAW;AAChC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,MAAI,KAAK,SAAS,KAAK,eAAe;AACpC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,MAAuB;AACxD,SAAO,CAAC,UAAU,WAAW,MAAM,SAAS,KAAK,EAAE,SAAS,IAAI;AAClE;AAEO,SAAS,OAAU,KAAQ,GAAW,KAAmB;AAC9D,SAAO,MAAM,IAAI,QAAQ,GAAG;AAC9B;AAEO,SAAS,WAAW,KAAqB;AAC9C,SAAO,IAAI;AACb;AAEO,SAAS,OAAO,MAAc;AACnC,QAAM,QAAQ,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AAE/C,WAAS,YAAY,KAAqB;AACxC,WAAO,IACJ,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,GAAG,QAAQ,MAAM,EAC/B,KAAK,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,EAAE,MAAM,MAAM,GAA8C;AACrF,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,GAAG,UAAU,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/D;AAEA,IAAM,kBAAkB,SAAU,UAAkB,UAAkB;AACpE,QAAM,qBAAqB,UAAU,QAAQ;AAC7C,QAAM,qBAAqB;AAAA,IACzB,UAAU,wBAAwB,QAAQ,CAAC;AAAA,EAC7C;AACA,QAAM,CAAC,EAAE,YAAY,IAAI,mBAAmB,MAAM,kBAAkB;AACpE,SAAO;AACT;AAEO,SAAS,qBACd,SACA,UAC0B;AAC1B,QAAM,UAAoC,CAAC;AAE3C,UAAQ,QAAQ,CAAC,WAAW;AAC1B,QAAI,CAAC,OAAO,UAAU;AACpB;AAAA,IACF;AAEA,UAAM,eAAe,gBAAgB,OAAO,UAAU,QAAQ;AAE9D,QAAI,cAAc;AAEhB,YAAM,MAAM,uBAAuB,OAAO,UAAU,QAAQ;AAE5D,UAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,gBAAQ,GAAG,IAAI,CAAC;AAAA,MAClB;AAEA,cAAQ,GAAG,EAAE,KAAK,MAAM;AAAA,IAC1B;AAAA,EACF,CAAC;AAED,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAkB,UAA0B;AAC1E,QAAM,eAAe,gBAAgB,UAAU,QAAQ;AAEvD,QAAM,CAAC,eAAe,IAAI,aAAa,MAAM,GAAG;AAEhD,SAAO;AACT;AAEO,SAAS,cAAc,MAAc;AAC1C,QAAM,aAAa,MAAM,IAAI;AAC7B,SAAO,UAAU,WAAW,GAAG;AACjC;AAEO,SAAS,UAAU,MAAc;AACtC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAChC;AAEA,SAAS,wBAAwB,MAAc;AAC7C,SAAO,KAAK,SAAS,GAAG,IAAI,OAAO,OAAO;AAC5C;AAEA,SAAS,0BAA0B,MAAc;AAC/C,SAAO,KAAK,WAAW,GAAG,IACtB,KAAK,QAAQ,iBAAiB,GAAG,IACjC,KAAK,WAAW,GAAG,IACnB,OACA,IAAI;AACV;AAKO,SAAS,WAAc,MAAW,MAAe;AACtD,MAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACxB,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEO,SAAS,YACd,MACA,OACA,KACA;AAEA,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD;AAEO,SAAS,YACd,MACA,OACA,KACA;AACA,SAAO,KAAK,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,SAAS,IAAI,CAAC;AAC9D;AAEO,SAAS,aAAkC,MAAW,SAAwB;AACnF,QAAM,MAAoB,CAAC;AAE3B,OAAK,QAAQ,CAAC,QAAQ;AACpB,QAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,EACxB,CAAC;AAED,SAAO;AACT;;;ADvSA,IAAM,eAA+B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,SAAS,YACd,MACA,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAcQ;AACR,QAAM,QAAwD;AAAA,IAC5D;AAAA,IACA,OAAO,CAAC;AAAA,EACV;AACA,QAAM,UAAoB,aAAa,cAAc,MAAM,CAAC,CAAC;AAC7D,QAAM,WAAqB,aAAa,cAAc,MAAM,CAAC,CAAC;AAG9D,QAAM,YAAY,iBAAiB,GAAG;AAEtC,QAAM,KAAK;AAAA,IACT,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,0BAA0B,MAAM;AAC9B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,yBAAyB,MAAM;AAC7B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,wBAAwB,MAAM;AAC5B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,uBAAuB,MAAM;AAC3B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,mBAAmB,MAAM;AACvB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,mBAAmB,MAAM;AACvB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,kBAAkB,MAAM;AACtB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,CAAC;AAGD,QAAM,UAAoB;AAAA,IAAa;AAAA,IAAc,CAAC,QACpD,YAAY,SAAS,UAAU,GAAG;AAAA,EACpC;AAGA,QAAM,WAAqB;AAAA,IAAa;AAAA,IAAc,CAAC,QACrD,YAAY,UAAU,SAAS,GAAG;AAAA,EACpC;AAWA,QAAM,UAAU;AAAA,IACd,eAAe,yBAAyB;AAAA,IACxC;AAAA,IACA;AAAA,EACF;AAEA,MAAI,gBAAgB;AAClB,YAAQ,KAAK,gCAAgC,kBAAkB;AAAA,EACjE;AAEA,UAAQ,KAAK,IAAI;AAEjB,MAAI,UAAU;AAAA,IACZ,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,iBAAiB,SAAS;AAAA,IAC1B,cAAc;AAAA,EAChB,EACG,OAAO,OAAO,EACd,KAAK,MAAM;AAEd,QAAM,kBAAkB,YAAY,YAAY,MAAM;AAAA,IACpD,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,gBAAgB,aAAa;AAC/B,cAAU,GAAG,gBAAgB,YAAY,sBAAsB,YAAY,YAAY,MAAM;AAAA,MAC3F,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC;AAAA,EAAQ,gBAAgB,GAAG,OAAO,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC;AAAA,IAAQ,KAAK,OAAO,CAAC,EAAE,OAAO;AAAA;AAAA,EACxF;AAEA,SAAO,CAAC,GAAI,gBAAgB,CAAC,IAAI,SAAU,SAAS,mBAAmB,CAAC,EACrE,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,WAAS,gBAAgB;AACvB,WAAO;AAAA,uBACY;AAAA,8BACO;AAAA,2BACH,KAAK,UAAU,GAAG;AAAA,IACzC,kBAAkB;AAAA;AAAA,EAEpB;AAKA,WAAS,qBAAqB;AAC5B,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,CAAC,GAAG,QAAQ,SAAS,GAAG,QAAQ,UAAU,EAAE;AAAA,QACjD,CAAC,aACC,GAAG,aAAa,WAAW,UAAU;AAAA,UACnC,GAAG,MAAM;AAAA,UACT,GAAG,MAAM;AAAA,QACX,CAAC;AAAA,MACL;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,qBAAqB;AAC5B,UAAMC,QAAO,gBAAgB,MAAM,GAAG,gBAAgB,SAAS,CAAC;AAChE,UAAM,iBAAiB,SAASA;AAChC,UAAM,cAAc,MAAMA;AAC1B,UAAM,gBAAgB,iBAAiB,sBAAsB;AAE7D,WAAO;AAAA,eACI,kEAAkE;AAAA,eAClE,6CAA6C;AAAA;AAAA,EAE1D;AAMA,WAAS,gCAAgC,UAAkB,OAAe;AACxE,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,aAAa,cAAc,UAAU,KAAK;AAChD,UAAM,gBAAgB,YAAY,UAAU,KAAK;AACjD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,uCAAuC,eAAe,eAAe,gBAAgB,mBAAmB,eAAe;AAAA,EACnI;AAEA,WAAS,2BAA2B,UAAkB,SAAmC;AACvF,UAAM,SACJ,QAAQ,QAAQ,GACZ,OAAO,MAAM,EACd,IAAI,CAAC,UAAU,gCAAgC,UAAU,KAAK,CAAC,KAAK,CAAC;AAE1E,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,cAAc,eAAe;AAEnC,UAAM,SAAS,CAAC,+BAA+B,eAAe,iBAAiB,aAAa;AAC5F,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AACnE,UAAMC,WAAU;AAAA,EAAM;AAAA;AACtB,WAAO,GAAG,aAAaA;AAAA,EACzB;AAEA,WAAS,8BAA8B,OAAe;AACpD,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,aAAa,cAAc,gBAAgB,KAAK;AACtD,UAAM,gBAAgB,YAAY,gBAAgB,KAAK;AACvD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,2CAA2C,eAAe,eAAe,gBAAgB,mBAAmB;AAAA,EACxH;AAEA,WAAS,iCAAiC;AACxC,UAAM,gBAAgB,MAAM,QAAQ,cAAc,GAAG,OAAO,MAAM,KAAK,CAAC;AAExE,QAAI,cAAc,WAAW,GAAG;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,cAAc,IAAI,CAAC,iBAAiB,8BAA8B,YAAY,CAAC;AAE9F,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,uCAAuC,eAAe,iBAAiB;AACvF,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAEnE,UAAMA,WAAU;AAAA,EAAM;AAAA;AACtB,WAAO,iBAAiBA;AAAA,EAC1B;AAEA,WAAS,qBAAqB;AAC5B,UAAM,UAAU,QAAQ;AACxB,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,QAAQ,IAAI,CAAC,WAAW,GAAG,uCAAuC,WAAW;AAC5F,UAAMA,WAAU,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC/C,WAAO;AAAA,EAAcA;AAAA;AAAA,EACvB;AAEA,WAAS,oBAAoB;AAC3B,UAAM,UAAU,QAAQ,QACrB,OAAO,CAAC,SAAS,SAAS,cAAc,EACxC,IAAI,CAAC,aAAa,2BAA2B,UAAU,MAAM,OAAO,CAAC,EACrE,OAAO,OAAO;AAEjB,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,iCAAiC,iBAAiB;AAElE,UAAM,aAAa;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,mBAAmB;AAAA,MACnB,+BAA+B;AAAA,IACjC;AAEA,UAAM,OAAO,WAAW,OAAO,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAChE,UAAMA,WAAU;AAAA,EAAM;AAAA;AAEtB,WAAO;AAAA;AAAA,aAEEA;AAAA;AAAA,EAEX;AAKA,WAAS,yBAAyB;AAChC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,MAAM,IAAI,CAAC,aAAa,GAAG,aAAa,WAAW,UAAU,MAAM,KAAK,IAAI;AAAA,IAC7F,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,UAA0B;AACrD,QAAI,gBAAgB,UAAU;AAC5B,aAAO,GAAG,WAAW,IAAI,KAAK;AAAA,IAChC;AAEA,WAAO;AAAA,EACT;AAKA,WAAS,0BAA0B;AACjC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,OAAO;AAAA,QACpB,CAAC,aAAa,GAAG,aAAa,WAAW,UAAU,MAAM,MAAM;AAAA,MACjE;AAAA,IACF,CAAC;AAAA,EACH;AAKA,WAAS,iBAAiB,OAAiB;AACzC,WAAO,MACJ,OAAO,CAAC,SAAS,CAAC,QAAQ,QAAQ,SAAS,IAAI,CAAC,EAChD,IAAI,eAAe,EACnB,KAAK,IAAI;AAAA,EACd;AAEA,WAAS,WAAW,UAAkB,SAA2C;AAC/E,WAAO,QAAQ,QAAQ,EAAE,OAAO,MAAM,EAAE,IAAI,UAAU,EAAE,KAAK,KAAK;AAAA,EACpE;AAEA,WAAS,cAAc,UAA0B;AAC/C,UAAM,WAAW,GAAG,mBAAmB,YAAY,YAAY,UAAU;AAAA,MACvE,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC;AAED,QAAI,SAAS,MAAM,SAAS,QAAQ,KAAK,SAAS,QAAQ,SAAS,QAAQ,GAAG;AAC5E,UAAI,UAAU,aAAa,OAAO,QAAQ,QAAQ,CAAC,GAAG;AACpD,eAAO,GAAG,4BAA4B;AAAA,MACxC;AAEA,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,MAAM,SAAS,QAAQ,KAAK,MAAM,MAAM,QAAQ,GAAG;AAC7D,aAAO,sBAAsB;AAAA,IAC/B;AAEA,QAAI,QAAQ,QAAQ,SAAS,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACjE,aAAO,QAAQ,4BAA4B;AAAA,IAC7C;AAEA,QAAI,QAAQ,WAAW,SAAS,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG;AACvE,aAAO,QAAQ,4BAA4B;AAAA,IAC7C;AAEA,QAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,MAAM,OAAO,QAAQ,GAAG;AAC/D,aAAO,QAAQ,iCAAiC;AAAA,IAClD;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,gBAAgB,UAA0B;AACjD,WAAO,eAAe,oBAAoB,QAAQ,OAAO,cAAc,QAAQ;AAAA,EACjF;AAUA,WAAS,cACP,MAOA,UACA;AACA,UAAMD,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,SAASA,KAAI,GAAG;AACnB,iBAASA,KAAI,IAAI,CAAC;AAAA,MACpB;AAEA,WAAK,OAAO,QAAQ,CAAC,UAAU;AAC7B,iBAASA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACtC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,sBAAsB,MAAsD;AACnF,UAAMA,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,MAAM,MAAMA,KAAI,GAAG;AACtB,cAAM,MAAMA,KAAI,IAAI,CAAC;AAAA,MACvB;AAEA,WAAK,OAAO,QAAQ,CAAC,UAAU;AAC7B,cAAM,MAAMA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,sBAAsB,MAA0B;AACvD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKD,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKC,KAAI;AACzB,sBAAc,MAAM,MAAM,OAAO;AACjC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,sBAAsB;AAC9B,gBAAQ,MAAM,KAAKC,KAAI;AACvB,8BAAsB,IAAI;AAC1B;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,8BAA8B;AACtC,gBAAQ,OAAO,KAAKC,KAAI;AACxB,sBAAc,MAAM,MAAM,MAAM;AAChC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKC,KAAI;AACzB;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,2BAA2B;AACnC,gBAAQ,WAAW,KAAKC,KAAI;AAC5B,sBAAc,MAAM,MAAM,UAAU;AACpC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,uBAAuB;AAC/B,gBAAQ,OAAO,KAAKC,KAAI;AACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,qBAAqB,MAAyB;AACrD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKD,MAAK,uBAAuB;AAC/B,sBAAc,MAAM,MAAM,OAAO;AAGjC,YAAI,UAAU,SAASC,KAAI,GAAG;AAC5B,qBAAW,QAAQ,SAASA,KAAI;AAChC;AAAA,QACF;AAEA,mBAAW,SAAS,SAASA,KAAI;AAEjC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,qBAAqB;AAC7B,8BAAsB,IAAI;AAC1B,mBAAW,SAAS,OAAOC,KAAI;AAC/B;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,6BAA6B;AACrC,sBAAc,MAAM,MAAM,MAAM;AAChC,mBAAW,SAAS,QAAQC,KAAI;AAChC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,0BAA0B;AAClC,sBAAc,MAAM,MAAM,UAAU;AACpC,mBAAW,SAAS,YAAYC,KAAI;AACpC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,sBAAsB;AAC9B,mBAAW,SAAS,QAAQC,KAAI;AAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,cAAc,MAAc;AACnC,QAAI,CAAC,SAAS,YAAY,cAAc,EAAE,SAAS,IAAI,GAAG;AACxD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,MAAc,OAAe;AAClD,WAAO,aAAa,IAAI,IAAI,KAAK,KAAK;AAAA,EACxC;AAEA,WAAS,YAAY,MAAc,OAAe;AAChD,UAAM,UAAU,iBAAiB,IAAI,IAAI,KAAK,KAAK;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AACzD,WAAO,SAAS,OAAO;AAAA,EACzB;AAEA,WAAS,iBAAiB;AACxB,WAAO;AAAA,EACT;AACF;;;ADlhBO,IAAM,SAA4C;AAAA,EACvD,uBAAuB,CAAC,YAAY;AAClC,UAAM,EAAE,cAAc,IAAI;AAC1B,UAAM,EAAE,eAAe,gBAAgB,uBAAuB,IAAI,QAAQ;AAE1E,UAAM,uBAAuB,eAAe,SAAS,aAAa,sBAAsB,KAAK;AAE7F,UAAM,MAAM,QAAQ,QAAQ,aAAa,OAAO,QAAQ,IAAI,CAAC;AAC7D,UAAM,uBAAuB,QAAQ,aAAa,wBAAwB;AAE1E,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,WAAW,WAAW,SAAS;AAC1C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAEA,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,UAAW,YAAY,mBAAmB,CAAC;AACjD,UAAM,qBAAqB,qBAAqB,SAAS,aAAa;AACtE,UAAM,UAAU,OAAO,KAAK,kBAAkB;AAE9C,UAAM,cAAc,IAAI,YAAY,QAAQ,QAAQ,CAAC,CAAC;AACtD,UAAM,EAAE,YAAY,eAAe,IAAI,oCAAoC,QAAQ,SAAS;AAG5F,UAAM,aAAoC;AAAA,MACxC,UAAU,QAAQ,KAAK,eAAe,aAAa;AAAA,MACnD,QAAQ,QAAQ;AAAA,MAChB,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX;AAAA,UACE,4BAA4B,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,GAAG,QAAQ;AAAA,QACX,4BAA4B;AAAA,UAC1B,QAAQ,CAAC,WAAW;AAClB,kBAAM,UAAU,OAAO,WAAW;AAElC,mBAAO,OAAO,KAAK,OAAO,EACvB,IAAI,CAAC,MAAM;AACV,kBAAI,KAAK,QAAQ,CAAC,KAAKF,cAAa,QAAQ,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG;AACzE,sBAAM,gBAAgB,YAAY,YAAY,CAAC;AAC/C,uBAAO,eAAe,4BAA4B;AAAA,cACpD;AAEA,qBAAO;AAAA,YACT,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,QAAQ;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,oBAAoB,cAAc,QAAQ,mBAAmB,EAAE;AACrE,UAAM,eAAe,cAAc,WAAW,QAAQ;AAGtD,UAAM,UAAmC,QAAQ,IAAI,CAAC,eAAe;AACnE,YAAM,WAAW,QAAQ,KAAK,eAAe,YAAY,QAAQ,aAAa,QAAQ;AACtF,YAAM,UAAU,cAAc,QAAQ;AACtC,YAAM,eAAe,SAAS,SAAS,YAAY;AACnD,YAAM,aACJ,QAAQ,aAAa,uBACrB,UAAU,KAAK,cAAc,iBAAiB,CAAC;AACjD,YAAMI,WAAU,mBAAmB,UAAU;AAE7C,YAAM,YAAYA,SAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ;AAEzD,YAAM,iBAAiB,UAAU,SAAS;AAE1C,YAAM,gBAAgB,SAAS,SAAS,OAAO;AAE/C,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,CAAC;AAAA,QACZ,SAAS;AAAA,UACP,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC,EAAE,GAAG;AAAA,UACjE;AAAA,YACE,0BAA0B,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,GAAG,QAAQ;AAAA,UACX,0BAA0B;AAAA,YACxB,QAAQ,CAAC,WACP,YAAY,YAAY,gBAAgB;AAAA,cACtC,iBAAiB;AAAA,cACjB;AAAA,cACA,aAAa,0BAA0B;AAAA,cACvC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,mBAAmB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,gBACT,OAAO,aAAa,GAAG,QAAQ;AAAA,gBAC/B,OAAO,gBAAgB,GAAG,QAAQ;AAAA,gBAClC,OAAO,oBAAoB,GAAG,QAAQ;AAAA,cACxC,EAAE,OAAO,OAAO;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,CAAC,UAAU,EAAE,OAAO,OAAO;AAAA,EACpC;AACF;;;ALnIA,eAAsB,SAAS,SAAqC;AAClE,QAAM,aAAa;AAAA,IACjB,SAAS,yBAAyB,QAAQ,OAAO;AAAA,IACjD,YAAY,QAAQ;AAAA,IACpB,eAAe,QAAQ;AAAA,IACvB,aAAa,QAAQ;AAAA,IACrB,sBAAsB,QAAQ;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB,SAAS,gBAAgB,CAAC,cAAc,SAAS,CAAC;AAAA,IAClD,WAAW;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,YAAY;AAE1B,QAAM,mBAA+C,CAAC;AACtD,aAAW,OAAO,WAAW,SAAS;AACpC,QAAI,OAAO,QAAQ,UAAU;AAC3B,uBAAiB,GAAG,IAAI,CAAC;AAAA,IAC3B,WAAW,OAAO,QAAQ,UAAU;AAClC,aAAO,OAAO,kBAAkB,GAAG;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,OAAO,KAAK,UAAU,gBAAgB;AAC5C,QAAM,SAAS,MAAM,MAAM,UAAU,MAAM,YAAY;AACrD,WAAO,WAAW,kBAAkB,QAAQ,GAAG;AAAA,EACjD,CAAC;AAED,QAAM,UAAU,MAAc,OAAO,sBAAsB;AAAA,IACzD,eAAe,QAAQ;AAAA,IACvB,cAAc;AAAA,MACZ,eAAe,WAAW;AAAA,MAC1B,UAAU,WAAW;AAAA,MACrB,wBAAwB;AAAA,MACxB,gBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,WAAW,OAAO;AAAA,IAClB,WAAW,CAAC;AAAA,IACZ,WAAW,WAAW;AAAA,IACtB,SAAS,WAAW;AAAA,IACpB,QAAQ;AAAA,MACN,iBAAiB;AAAA,MACjB,aAAa,WAAW;AAAA,MACxB,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACP,GAAG,WAAW;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,WAAW,QAAQ,IAAI,OAAO,WAAW;AAC7C,UAAMC,UAAS,MAAM,WAAW;AAAA,MAC9B,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AACD,WAAO,IAAI,KAAK,OAAO,UAAUA,SAAQ,SAAS;AAAA,EACpD,CAAC;AAED,SAAO,QAAQ,IAAI,QAAQ;AAC7B;;;ADtEO,SAAS,gBAAgB;AAC9B,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO,CAAC,SAAS,SAAS,WAAW;AACnC,YAAM,eAAe,CAAC,SAAsB;AAC1C,YAAI,QAAQ,KAAK,cAAc,QAAQ,OAAO,GAAG;AAC/C,iBAAO,IAAI;AAAA,QACb;AAAA,MACF;AAEA,cAAQ,GAAG,UAAU,YAAY;AACjC,cAAQ,GAAG,UAAU,YAAY;AAAA,IACnC;AAAA,IACA,UAAU,OAAO,KAAK,SAAS;AAC7B,YAAM,QAAQ,MAAM,SAAS,IAAI,gBAAgB;AACjD,UAAI,YAAY,IAAI,GAAG,KAAK;AAC5B,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACH","sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const files = await generate(ctx.generatorOptions);\n ctx.fileManager.add(...files);\n return next();\n },\n });\n}\n","import { File, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n return new File(output.filename, result, 'graphql');\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport { DocumentNode, concatAST, isScalarType } from 'graphql';\nimport { join, relative, resolve } from 'path';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n }\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({})\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key)\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key)\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects['Subscription']?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const coreType = `${importNamespace}.${baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n })}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return coreType;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n return coreType;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n node.fields.forEach((field) => {\n picksObj[name].push(field.name.value);\n });\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n node.values.forEach((field) => {\n picks.enums[name].push(field.name.value);\n });\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n doc.definitions.forEach(findRelated);\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n\n if (node.interfaces) {\n node.interfaces.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n\n if (node.interfaces) {\n node.interfaces.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n node.types.forEach(findRelated);\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n node.arguments.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = function (filepath: string, basePath: string) {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath))\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n sources.forEach((source) => {\n if (!source.location) {\n return;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n });\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n keys.forEach((key) => {\n obj[key] = valueFn(key);\n });\n\n return obj;\n}\n"]}
1
+ {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"names":["getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","sources","result"],"mappings":";;;;;;;AAAA,SAAS,gBAAgB,eAA4B;;;ACCrD,SAAS,WAAW,kBAAkB;AACtC,SAAS,iBAAiB,gCAAgC;AAC1D,YAAY,sBAAsB;;;ACH3B,SAAS,cAIA;AACd,QAAM,QAAQ,oBAAI,IAA8B;AAEhD,SAAO,SAAS,OAAU,WAAmB,KAAa,SAAuC;AAC/F,UAAM,WAAW,GAAG,SAAS,IAAI,GAAG;AAEpC,UAAM,cAAc,MAAM,IAAI,QAAQ;AAEtC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,UAAU,KAAK;AAEzB,WAAO;AAAA,EACT;AACF;;;ACrBA,SAAS,mCAAAA,wCAAuC;AAChD,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,cAAc,yBAAqD;AAC5E,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;;;ACT1B,SAAS,uCAAuC;AAChD,SAAwB,aAAa;AACrC,SAAS,kBAAkB;AAEpB,SAAS,YAAY,SAAyB;AACnD,SAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC1D;AAEO,SAAS,WAAW,QAA+B;AACxD,SAAO,YAAY,MAAM,gCAAgC,MAAM,CAAC,CAAC;AACnE;;;ADGA,eAAsB,WAAW,kBAA8C,KAAa;AAC1F,QAAM,kBAAkB,MAAM,kBAAkB,kBAAkB;AAAA,IAChE,SAAS;AAAA,MACP,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,aAAa;AAAA,MACjB,IAAI,kBAAkB;AAAA,MACtB,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,mBAAmB;AAAA,MACvB,IAAI,aAAa;AAAA,IACnB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,CAAC,gBAAgB,YAAY;AAC/B,oBAAgB,aAAa,CAAC;AAAA,EAChC;AAEA,EAAC,gBAAgB,WAAuC,MAAM,IAAI,WAAW,eAAe;AAE5F,SAAO;AAAA,IACL;AAAA,IACA,cAAcA,iCAAgC,eAAe;AAAA,EAC/D;AACF;;;AEvCA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS,mBAAmB,mBAAmB;AAOxC,IAAM,SAAiC,OAC5C,QACA,WACA,WACgC;AAChC,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,YAAY,OAAO,eAAe,KAAK;AAEtD,MAAI,OAAO,cAAc,OAAO,QAAQ;AACtC,UAAM,aAAa,OAAO,UAAU,gBAAgB,GAAG,OAAO,MAAM;AAEpE,UAAM,SAAS;AAAA,MACb,OAAO;AAAA,MACP;AAAA,QACE;AAAA,UACE;AAAA,UACA,WAAW,OAAO;AAAA,QACpB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sBAAsB,OAAO,IAAI,EAAE;AAAA,EAClD;AAEA,UAAQ,KAAK,6BAA6B;AAE1C,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ,EAAE,OAAO;;;AC5CxB,SAAS,aAAa,sBAAsB;AAE5C,SAAuB,WAAW,gBAAAC,qBAAoB;AACtD,SAAS,MAAM,UAAU,eAAe;;;ACHxC,SAAS,kBAAkB;AAC3B;AAAA,EASE;AAAA,EACA,QAAAC;AAAA,EAKA;AAAA,OACK;;;AClBP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,6BAA6B;AAEvD;AAAA,EAQE;AAAA,OAIK;AACP,OAAO,WAAW;AAElB,IAAM,MAAM;AAKL,SAAS,iBAAiB,KAA6B;AAC5D,QAAM,OAAiB,CAAC;AAExB,aAAW,cAAc,IAAI,aAAa;AACxC,gBAAY,UAAU;AAAA,EACxB;AAEA,WAAS,WAAW,MAAc;AAChC,eAAW,MAAM,IAAI;AAAA,EACvB;AAEA,WAAS,YACP,MACA;AACA,QAAI,KAAK,SAAS,KAAK,0BAA0B,KAAK,SAAS,KAAK,uBAAuB;AAEzF,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,gCACnB,KAAK,SAAS,KAAK,6BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,6BACnB,KAAK,SAAS,KAAK,0BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,sBACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,OAAO;AACd,mBAAW,QAAQ,KAAK,OAAO;AAC7B,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB,KAAK,SAAS,KAAK,qBAAqB;AAE5F,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B,WACE,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,uBACnB;AAEA,UAAI,CAAC,mBAAmB,KAAK,KAAK,KAAK,GAAG;AACxC,mBAAW,KAAK,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB;AAEpD,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAAA,IACxC,WAAW,KAAK,SAAS,KAAK,kBAAkB;AAE9C,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAEtC,UAAI,KAAK,WAAW;AAClB,mBAAW,YAAY,KAAK,WAAW;AACrC,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK;AAAA,IAEnB,CAAC,mBAAmB,KAAK,KAAK,KAAK,GACnC;AACA,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,iBACA,WACA,YACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AAEvC,QAAM,QAAQ,UAAU,gBAAgB,KAAK,KAAK;AAClD,QAAM,WAAW,YAAY,MAAM,IAAI,EAAE;AACzC,QAAM,kBAAkB,gBAAgB,QAAQ,KAAK;AACrD,QAAM,OAAO,kBAAkB,kBAAkB,QAAQ,iBAAiB;AAE1E,QAAM,OAAO,sBAAsB,MAAM,MAAM,MAAM;AAAA,IACnD,cAAc,CAAC,QAAgB;AAC7B,aAAO,eAAe,GAAG;AAAA,IAC3B;AAAA,IACA,WAAW,CAAC,QAAgB;AAC1B,aAAO,SAAS,GAAG;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAI,WAAW,UAAU,KAAK,MAAM;AAClC,eAAW,UAAU,IAAI,CAAC;AAAA,EAC5B;AACA,aAAW,UAAU,EAAE,SAAS,IAAI;AACtC;AAEA,SAAS,4BACP,MACA,iBACA,gBACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AACvC,QAAM,eAAe,gBAAgB,aAAa,QAAQ,gBAAgB,UAAU,SAAS;AAE7F,MAAI,eAAe,UAAU,KAAK,MAAM;AACtC,mBAAe,UAAU,IAAI,CAAC;AAAA,EAChC;AACA,iBAAe,UAAU,EAAE,SAAS,IAAI;AAC1C;AAEO,SAAS,oCAAoC,QAAwB;AAC1E,QAAM,aAAqD,CAAC;AAC5D,QAAM,iBAA0D,CAAC;AAEjE,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,YAAY,eAAe;AAAA,EACtC;AAEA,QAAM,cAAc,OAAO,WAAW;AAEtC,aAAW,QAAQ,OAAO,OAAO,WAAW,GAAG;AAC7C,QAAI,KAAK,SAAS,SAAS,KAAK,wBAAwB;AACtD;AAAA,IACF;AAEA,UAAM,aAAa,YAAY,KAAK,IAAI;AACxC,UAAM,YAAY,WAAW,UAAU;AAEvC,eAAW,SAAS,KAAK,QAAQ,UAAU,CAAC,GAAG;AAC7C,kCAA4B,KAAK,SAAS,OAAO,cAAc;AAC/D,6BAAuB,KAAK,SAAS,OAAO,WAAW,UAAU;AAAA,IACnE;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,eAAe;AACtC;AAEO,SAAS,gBAAgB,MAA+B;AAC7D,MAAI,KAAK,SAAS,KAAK,WAAW;AAChC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,MAAI,KAAK,SAAS,KAAK,eAAe;AACpC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,MAAuB;AACxD,SAAO,CAAC,UAAU,WAAW,MAAM,SAAS,KAAK,EAAE,SAAS,IAAI;AAClE;AAEO,SAAS,OAAU,KAAQ,GAAW,KAAmB;AAC9D,SAAO,MAAM,IAAI,QAAQ,GAAG;AAC9B;AAEO,SAAS,WAAW,KAAqB;AAC9C,SAAO,IAAI,GAAG;AAChB;AAEO,SAAS,OAAO,MAAc;AACnC,QAAM,QAAQ,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AAE/C,WAAS,YAAY,KAAqB;AACxC,WAAO,IACJ,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,EAC/B,KAAK,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,EAAE,MAAM,MAAM,GAA8C;AACrF,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,GAAG,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/D;AAEA,IAAM,kBAAkB,CAAC,UAAkB,aAAqB;AAC9D,QAAM,qBAAqB,UAAU,QAAQ;AAC7C,QAAM,qBAAqB;AAAA,IACzB,UAAU,wBAAwB,QAAQ,CAAC;AAAA,EAC7C;AACA,QAAM,CAAC,EAAE,YAAY,IAAI,mBAAmB,MAAM,kBAAkB;AACpE,SAAO;AACT;AAEO,SAAS,qBACd,SACA,UAC0B;AAC1B,QAAM,UAAoC,CAAC;AAE3C,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,OAAO,UAAU;AACpB;AAAA,IACF;AAEA,UAAM,eAAe,gBAAgB,OAAO,UAAU,QAAQ;AAE9D,QAAI,cAAc;AAEhB,YAAM,MAAM,uBAAuB,OAAO,UAAU,QAAQ;AAE5D,UAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,gBAAQ,GAAG,IAAI,CAAC;AAAA,MAClB;AAEA,cAAQ,GAAG,EAAE,KAAK,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAkB,UAA0B;AAC1E,QAAM,eAAe,gBAAgB,UAAU,QAAQ;AAEvD,QAAM,CAAC,eAAe,IAAI,aAAa,MAAM,GAAG;AAEhD,SAAO;AACT;AAEO,SAAS,cAAc,MAAc;AAC1C,QAAM,aAAa,MAAM,IAAI;AAC7B,SAAO,UAAU,WAAW,GAAG;AACjC;AAEO,SAAS,UAAU,MAAc;AACtC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAChC;AAEA,SAAS,wBAAwB,MAAc;AAC7C,SAAO,KAAK,SAAS,GAAG,IAAI,OAAO,OAAO;AAC5C;AAEA,SAAS,0BAA0B,MAAc;AAC/C,SAAO,KAAK,WAAW,GAAG,IACtB,KAAK,QAAQ,iBAAiB,GAAG,IACjC,KAAK,WAAW,GAAG,IACjB,OACA,IAAI,IAAI;AAChB;AAKO,SAAS,WAAc,MAAW,MAAe;AACtD,MAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACxB,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEO,SAAS,YACd,MACA,OACA,KACA;AAGA,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD;AAEO,SAAS,YACd,MACA,OACA,KACA;AACA,SAAO,KAAK,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,SAAS,IAAI,CAAC;AAC9D;AAEO,SAAS,aAAkC,MAAW,SAAwB;AACnF,QAAM,MAAoB,CAAC;AAE3B,aAAW,OAAO,MAAM;AACtB,QAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,EACxB;AAEA,SAAO;AACT;;;ADxTA,IAAM,eAA+B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,SAAS,YACd,MACA,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAcQ;AACR,QAAM,QAAwD;AAAA,IAC5D;AAAA,IACA,OAAO,CAAC;AAAA,EACV;AACA,QAAM,UAAoB,aAAa,cAAc,MAAM,CAAC,CAAC;AAC7D,QAAM,WAAqB,aAAa,cAAc,MAAM,CAAC,CAAC;AAG9D,QAAM,YAAY,iBAAiB,GAAG;AAEtC,QAAM,KAAK;AAAA,IACT,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,0BAA0B,MAAM;AAC9B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,yBAAyB,MAAM;AAC7B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,wBAAwB,MAAM;AAC5B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,uBAAuB,MAAM;AAC3B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,mBAAmB,MAAM;AACvB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,mBAAmB,MAAM;AACvB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,kBAAkB,MAAM;AACtB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,CAAC;AAGD,QAAM,UAAoB;AAAA,IAAa;AAAA,IAAc,CAAC,QACpD,YAAY,SAAS,UAAU,GAAG;AAAA,EACpC;AAGA,QAAM,WAAqB;AAAA,IAAa;AAAA,IAAc,CAAC,QACrD,YAAY,UAAU,SAAS,GAAG;AAAA,EACpC;AAWA,QAAM,UAAU;AAAA,IACd,eAAe,eAAe,UAAU,UAAU;AAAA,IAClD;AAAA,IACA;AAAA,EACF;AAEA,MAAI,gBAAgB;AAClB,YAAQ,KAAK,gCAAgC,cAAc,IAAI;AAAA,EACjE;AAEA,UAAQ,KAAK,IAAI;AAEjB,MAAI,UAAU;AAAA,IACZ,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,iBAAiB,SAAS;AAAA,IAC1B,cAAc;AAAA,EAChB,EACG,OAAO,OAAO,EACd,KAAK,MAAM;AAEd,QAAM,kBAAkB,YAAY,YAAY,MAAM;AAAA,IACpD,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,gBAAgB,aAAa;AAC/B,cAAU,GAAG,gBAAgB,YAAY,QAAQ,cAAc,YAAY,YAAY,MAAM;AAAA,MAC3F,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,CAAC;AAAA,EAAO,gBAAgB,GAAG,OAAO,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC;AAAA,IAAO,EAAE,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC;AAAA;AAAA,EACzF;AAEA,SAAO,CAAC,GAAI,gBAAgB,CAAC,IAAI,SAAU,SAAS,mBAAmB,CAAC,EACrE,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,WAAS,gBAAgB;AACvB,WAAO;AAAA,uBACY,IAAI;AAAA,8BACG,IAAI;AAAA,2BACP,KAAK,UAAU,GAAG,CAAC;AAAA,IAC1C,kBAAkB,CAAC;AAAA;AAAA,EAErB;AAKA,WAAS,qBAAqB;AAC5B,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,CAAC,GAAG,QAAQ,SAAS,GAAG,QAAQ,UAAU,EAAE;AAAA,QACjD,CAAC,aACC,GAAG,QAAQ,KAAK,WAAW,UAAU;AAAA,UACnC,GAAG,MAAM;AAAA,UACT,GAAG,MAAM;AAAA,QACX,CAAC,CAAC;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,qBAAqB;AAC5B,UAAMC,QAAO,gBAAgB,MAAM,GAAG,gBAAgB,SAAS,CAAC;AAChE,UAAM,iBAAiB,SAASA,KAAI;AACpC,UAAM,cAAc,MAAMA,KAAI;AAC9B,UAAM,gBAAgB,iBAAiB,sBAAsB;AAE7D,WAAO;AAAA,eACI,cAAc,oDAAoD,aAAa;AAAA,eAC/E,WAAW,kCAAkC,cAAc;AAAA;AAAA,EAExE;AAMA,WAAS,gCAAgC,UAAkB,OAAe;AACxE,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,aAAa,cAAc,UAAU,KAAK;AAChD,UAAM,gBAAgB,YAAY,UAAU,KAAK;AACjD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,kCAAkC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,QAAQ,OAAO,KAAK;AAAA,EACxI;AAEA,WAAS,2BAA2B,UAAkB,SAAmC;AACvF,UAAM,SACJ,QAAQ,QAAQ,GACZ,OAAO,MAAM,EACd,IAAI,CAAC,UAAU,gCAAgC,UAAU,KAAK,CAAC,KAAK,CAAC;AAE1E,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,cAAc,eAAe;AAEnC,UAAM,SAAS,CAAC,+BAA+B,UAAU,KAAK,WAAW,MAAM,QAAQ,KAAK;AAC5F,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AACnE,UAAMC,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,GAAG,QAAQ,KAAKA,QAAO;AAAA,EAChC;AAEA,WAAS,8BAA8B,OAAe;AACpD,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,aAAa,cAAc,gBAAgB,KAAK;AACtD,UAAM,gBAAgB,YAAY,gBAAgB,KAAK;AACvD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,sCAAsC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,KAAK;AAAA,EAC7H;AAEA,WAAS,iCAAiC;AACxC,UAAM,gBAAgB,MAAM,QAAQ,cAAc,OAAO,MAAM,KAAK,CAAC;AAErE,QAAI,cAAc,WAAW,GAAG;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,cAAc,IAAI,CAAC,iBAAiB,8BAA8B,YAAY,CAAC;AAE9F,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,uCAAuC,UAAU,KAAK,WAAW,MAAM;AACvF,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAEnE,UAAMA,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,iBAAiBA,QAAO;AAAA,EACjC;AAEA,WAAS,qBAAqB;AAC5B,UAAM,UAAU,QAAQ;AACxB,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,iCAAiC,MAAM,KAAK;AAC5F,UAAMA,WAAU,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC/C,WAAO;AAAA,EAAcA,QAAO;AAAA;AAAA,EAC9B;AAEA,WAAS,oBAAoB;AAC3B,UAAM,UAAU,QAAQ,QACrB,OAAO,CAAC,SAAS,SAAS,cAAc,EACxC,IAAI,CAAC,aAAa,2BAA2B,UAAU,MAAM,OAAO,CAAC,EACrE,OAAO,OAAO;AAEjB,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,iCAAiC,WAAW,MAAM;AAElE,UAAM,aAAa;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,mBAAmB;AAAA,MACnB,+BAA+B;AAAA,IACjC;AAEA,UAAM,OAAO,WAAW,OAAO,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAChE,UAAMA,WAAU;AAAA,EAAM,IAAI;AAAA;AAE1B,WAAO;AAAA;AAAA,aAEEA,QAAO;AAAA;AAAA,EAElB;AAKA,WAAS,yBAAyB;AAChC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,MAAM,IAAI,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,KAAK,CAAC,GAAG;AAAA,IAC7F,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,UAA0B;AACrD,QAAI,gBAAgB,UAAU;AAC5B,aAAO,GAAG,WAAW,IAAI,CAAC,IAAI,QAAQ;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAKA,WAAS,0BAA0B;AACjC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,OAAO;AAAA,QACpB,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,MAAM,CAAC;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAKA,WAAS,iBAAiB,OAAiB;AACzC,WAAO,MACJ,OAAO,CAAC,SAAS,CAAC,QAAQ,QAAQ,SAAS,IAAI,CAAC,EAChD,IAAI,eAAe,EACnB,KAAK,IAAI;AAAA,EACd;AAEA,WAAS,WAAW,UAAkB,SAA2C;AAC/E,WAAO,QAAQ,QAAQ,EAAE,OAAO,MAAM,EAAE,IAAI,UAAU,EAAE,KAAK,KAAK;AAAA,EACpE;AAEA,WAAS,cAAc,UAA0B;AAC/C,UAAM,WAAW,GAAG,eAAe,IAAI,YAAY,YAAY,UAAU;AAAA,MACvE,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,CAAC;AAEF,QAAI,SAAS,MAAM,SAAS,QAAQ,KAAK,SAAS,QAAQ,SAAS,QAAQ,GAAG;AAC5E,UAAI,UAAU,aAAa,OAAO,QAAQ,QAAQ,CAAC,GAAG;AACpD,eAAO,GAAG,eAAe,aAAa,QAAQ;AAAA,MAChD;AAEA,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,MAAM,SAAS,QAAQ,KAAK,MAAM,MAAM,QAAQ,GAAG;AAC7D,aAAO,sBAAsB,QAAQ;AAAA,IACvC;AAEA,QAAI,QAAQ,QAAQ,SAAS,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACjE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,WAAW,SAAS,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG;AACvE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,MAAM,OAAO,QAAQ,GAAG;AAC/D,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ;AAAA,IAC1D;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,gBAAgB,UAA0B;AACjD,WAAO,eAAe,oBAAoB,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC;AAAA,EAClF;AAUA,WAAS,cACP,MAOA,UACA;AACA,UAAMD,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,SAASA,KAAI,GAAG;AACnB,iBAASA,KAAI,IAAI,CAAC;AAAA,MACpB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,iBAASA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAAsD;AACnF,UAAMA,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,MAAM,MAAMA,KAAI,GAAG;AACtB,cAAM,MAAMA,KAAI,IAAI,CAAC;AAAA,MACvB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,cAAM,MAAMA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAA0B;AACvD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKD,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKC,KAAI;AACzB,sBAAc,MAAM,MAAM,OAAO;AACjC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,sBAAsB;AAC9B,gBAAQ,MAAM,KAAKC,KAAI;AACvB,8BAAsB,IAAI;AAC1B;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,8BAA8B;AACtC,gBAAQ,OAAO,KAAKC,KAAI;AACxB,sBAAc,MAAM,MAAM,MAAM;AAChC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKC,KAAI;AACzB;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,2BAA2B;AACnC,gBAAQ,WAAW,KAAKC,KAAI;AAC5B,sBAAc,MAAM,MAAM,UAAU;AACpC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,uBAAuB;AAC/B,gBAAQ,OAAO,KAAKC,KAAI;AACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,qBAAqB,MAAyB;AACrD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKD,MAAK,uBAAuB;AAC/B,sBAAc,MAAM,MAAM,OAAO;AAGjC,YAAI,UAAU,SAASC,KAAI,GAAG;AAC5B,qBAAW,QAAQ,SAASA,KAAI;AAChC;AAAA,QACF;AAEA,mBAAW,SAAS,SAASA,KAAI;AAEjC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,qBAAqB;AAC7B,8BAAsB,IAAI;AAC1B,mBAAW,SAAS,OAAOC,KAAI;AAC/B;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,6BAA6B;AACrC,sBAAc,MAAM,MAAM,MAAM;AAChC,mBAAW,SAAS,QAAQC,KAAI;AAChC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,0BAA0B;AAClC,sBAAc,MAAM,MAAM,UAAU;AACpC,mBAAW,SAAS,YAAYC,KAAI;AACpC;AAAA,MACF;AAAA,MAEA,KAAKD,MAAK,sBAAsB;AAC9B,mBAAW,SAAS,QAAQC,KAAI;AAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,cAAc,MAAc;AACnC,QAAI,CAAC,SAAS,YAAY,cAAc,EAAE,SAAS,IAAI,GAAG;AACxD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,MAAc,OAAe;AAClD,WAAO,aAAa,IAAI,IAAI,KAAK,KAAK;AAAA,EACxC;AAEA,WAAS,YAAY,MAAc,OAAe;AAChD,UAAM,UAAU,iBAAiB,IAAI,IAAI,KAAK,KAAK;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AACzD,WAAO,SAAS,IAAI,GAAG,UAAU;AAAA,EACnC;AAEA,WAAS,iBAAiB;AACxB,WAAO;AAAA,EACT;AACF;;;ADlhBO,IAAM,SAA4C;AAAA,EACvD,uBAAuB,CAAC,YAAY;AAClC,UAAM,EAAE,cAAc,IAAI;AAC1B,UAAM,EAAE,eAAe,gBAAgB,uBAAuB,IAAI,QAAQ;AAE1E,UAAM,uBAAuB,eAAe,SAAS,aAAa,sBAAsB,KAAK;AAE7F,UAAM,MAAM,QAAQ,QAAQ,aAAa,OAAO,QAAQ,IAAI,CAAC;AAC7D,UAAM,uBAAuB,QAAQ,aAAa,wBAAwB;AAE1E,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,WAAW,WAAW,SAAS;AAC1C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAEA,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,UAAW,YAAY,mBAAmB,CAAC;AACjD,UAAM,qBAAqB,qBAAqB,SAAS,aAAa;AACtE,UAAM,UAAU,OAAO,KAAK,kBAAkB;AAE9C,UAAM,cAAc,IAAI,YAAY,QAAQ,QAAQ,CAAC,CAAC;AACtD,UAAM,EAAE,YAAY,eAAe,IAAI,oCAAoC,QAAQ,SAAS;AAG5F,UAAM,aAAoC;AAAA,MACxC,UAAU,QAAQ,KAAK,eAAe,aAAa;AAAA,MACnD,QAAQ,QAAQ;AAAA,MAChB,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX;AAAA,UACE,4BAA4B,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,GAAG,QAAQ;AAAA,QACX,4BAA4B;AAAA,UAC1B,QAAQ,CAAC,WAAW;AAClB,kBAAM,UAAU,OAAO,WAAW;AAElC,mBAAO,OAAO,KAAK,OAAO,EACvB,IAAI,CAAC,MAAM;AACV,kBAAI,KAAK,QAAQ,CAAC,KAAKF,cAAa,QAAQ,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG;AACzE,sBAAM,gBAAgB,YAAY,YAAY,CAAC;AAC/C,uBAAO,eAAe,aAAa,eAAe,CAAC;AAAA,cACrD;AAEA,qBAAO;AAAA,YACT,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,QAAQ;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,oBAAoB,cAAc,QAAQ,mBAAmB,EAAE;AACrE,UAAM,eAAe,cAAc,WAAW,QAAQ;AAGtD,UAAM,UAAmC,QAAQ,IAAI,CAAC,eAAe;AACnE,YAAM,WAAW,QAAQ,KAAK,eAAe,YAAY,QAAQ,aAAa,QAAQ;AACtF,YAAM,UAAU,cAAc,QAAQ;AACtC,YAAM,eAAe,SAAS,SAAS,YAAY;AACnD,YAAM,aACJ,QAAQ,aAAa,uBACrB,UAAU,KAAK,cAAc,iBAAiB,CAAC;AACjD,YAAMI,WAAU,mBAAmB,UAAU;AAE7C,YAAM,YAAYA,SAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ;AAEzD,YAAM,iBAAiB,UAAU,SAAS;AAE1C,YAAM,gBAAgB,SAAS,SAAS,OAAO;AAE/C,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,CAAC;AAAA,QACZ,SAAS;AAAA,UACP,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC,EAAE,GAAG;AAAA,UACjE;AAAA,YACE,0BAA0B,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,GAAG,QAAQ;AAAA,UACX,0BAA0B;AAAA,YACxB,QAAQ,CAAC,WACP,YAAY,YAAY,gBAAgB;AAAA,cACtC,iBAAiB;AAAA,cACjB;AAAA,cACA,aAAa,0BAA0B;AAAA,cACvC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,mBAAmB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,gBACT,OAAO,aAAa,GAAG,QAAQ;AAAA,gBAC/B,OAAO,gBAAgB,GAAG,QAAQ;AAAA,gBAClC,OAAO,oBAAoB,GAAG,QAAQ;AAAA,cACxC,EAAE,OAAO,OAAO;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,CAAC,UAAU,EAAE,OAAO,OAAO;AAAA,EACpC;AACF;;;ALnIA,eAAsB,SAAS,SAAqC;AAClE,QAAM,aAAa;AAAA,IACjB,SAAS,yBAAyB,QAAQ,OAAO;AAAA,IACjD,YAAY,QAAQ;AAAA,IACpB,eAAe,QAAQ;AAAA,IACvB,aAAa,QAAQ;AAAA,IACrB,sBAAsB,QAAQ;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB,SAAS,gBAAgB,CAAC,cAAc,SAAS,CAAC;AAAA,IAClD,WAAW;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,YAAY;AAE1B,QAAM,mBAA+C,CAAC;AACtD,aAAW,OAAO,WAAW,SAAS;AACpC,QAAI,OAAO,QAAQ,UAAU;AAC3B,uBAAiB,GAAG,IAAI,CAAC;AAAA,IAC3B,WAAW,OAAO,QAAQ,UAAU;AAClC,aAAO,OAAO,kBAAkB,GAAG;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,OAAO,KAAK,UAAU,gBAAgB;AAC5C,QAAM,SAAS,MAAM,MAAM,UAAU,MAAM,YAAY;AACrD,WAAO,WAAW,kBAAkB,QAAQ,GAAG;AAAA,EACjD,CAAC;AAED,QAAM,UAAU,MAAc,OAAO,sBAAsB;AAAA,IACzD,eAAe,QAAQ;AAAA,IACvB,cAAc;AAAA,MACZ,eAAe,WAAW;AAAA,MAC1B,UAAU,WAAW;AAAA,MACrB,wBAAwB;AAAA,MACxB,gBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,WAAW,OAAO;AAAA,IAClB,WAAW,CAAC;AAAA,IACZ,WAAW,WAAW;AAAA,IACtB,SAAS,WAAW;AAAA,IACpB,QAAQ;AAAA,MACN,iBAAiB;AAAA,MACjB,aAAa,WAAW;AAAA,MACxB,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACP,GAAG,WAAW;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,WAAW,QAAQ,IAAI,OAAO,WAAW;AAC7C,UAAMC,UAAS,MAAM,WAAW;AAAA,MAC9B,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,UAAU,OAAO;AAAA,MACjB,SAASA;AAAA,IACX;AAAA,EACF,CAAC;AAED,SAAO,QAAQ,IAAI,QAAQ;AAC7B;;;AD1EO,SAAS,gBAAgB;AAC9B,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO,CAAC,SAAS,SAAS,WAAW;AACnC,YAAM,eAAe,CAAC,SAAsB;AAC1C,YAAI,QAAQ,KAAK,cAAc,QAAQ,OAAO,GAAG;AAC/C,iBAAO,IAAI;AAAA,QACb;AAAA,MACF;AAEA,cAAQ,GAAG,UAAU,YAAY;AACjC,cAAQ,GAAG,UAAU,YAAY;AAAA,IACnC;AAAA,IACA,UAAU,OAAO,KAAK,SAAS;AAC7B,YAAM,QAAQ,MAAM,SAAS,IAAI,gBAAgB;AAEjD,iBAAW,QAAQ,OAAO;AACxB,YAAI,YAAY,aAAa,KAAK,UAAU,KAAK,SAAS,SAAS;AAAA,MACrE;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACH","sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport { DocumentNode, concatAST, isScalarType } from 'graphql';\nimport { join, relative, resolve } from 'path';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const coreType = `${importNamespace}.${baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n })}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return coreType;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n return coreType;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import * as _baeta_generator_sdk from '@baeta/generator-sdk';
2
+
3
+ declare function graphqlPlugin(): _baeta_generator_sdk.GeneratorPluginV1<{}>;
4
+
5
+ export { graphqlPlugin };
package/dist/index.js CHANGED
@@ -8,7 +8,6 @@ var __export = (target, all) => {
8
8
  import { createPluginV1, isMatch } from "@baeta/generator-sdk";
9
9
 
10
10
  // lib/codegen.ts
11
- import { File } from "@baeta/generator-sdk";
12
11
  import { codegen as gqlCodegen } from "@graphql-codegen/core";
13
12
  import { normalizeConfig, normalizeInstanceOrArray } from "@graphql-codegen/plugin-helpers";
14
13
  import * as typescriptPlugin from "@graphql-codegen/typescript";
@@ -136,7 +135,9 @@ import parse from "parse-filepath";
136
135
  var sep = "/";
137
136
  function collectUsedTypes(doc) {
138
137
  const used = [];
139
- doc.definitions.forEach(findRelated);
138
+ for (const definition of doc.definitions) {
139
+ findRelated(definition);
140
+ }
140
141
  function markAsUsed(type) {
141
142
  pushUnique(used, type);
142
143
  }
@@ -144,28 +145,40 @@ function collectUsedTypes(doc) {
144
145
  if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {
145
146
  markAsUsed(node.name.value);
146
147
  if (node.fields) {
147
- node.fields.forEach(findRelated);
148
+ for (const field of node.fields) {
149
+ findRelated(field);
150
+ }
148
151
  }
149
152
  if (node.interfaces) {
150
- node.interfaces.forEach(findRelated);
153
+ for (const _interface of node.interfaces) {
154
+ findRelated(_interface);
155
+ }
151
156
  }
152
157
  } else if (node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION) {
153
158
  markAsUsed(node.name.value);
154
159
  if (node.fields) {
155
- node.fields.forEach(findRelated);
160
+ for (const field of node.fields) {
161
+ findRelated(field);
162
+ }
156
163
  }
157
164
  } else if (node.kind === Kind.INTERFACE_TYPE_DEFINITION || node.kind === Kind.INTERFACE_TYPE_EXTENSION) {
158
165
  markAsUsed(node.name.value);
159
166
  if (node.fields) {
160
- node.fields.forEach(findRelated);
167
+ for (const field of node.fields) {
168
+ findRelated(field);
169
+ }
161
170
  }
162
171
  if (node.interfaces) {
163
- node.interfaces.forEach(findRelated);
172
+ for (const _interface of node.interfaces) {
173
+ findRelated(_interface);
174
+ }
164
175
  }
165
176
  } else if (node.kind === Kind.UNION_TYPE_DEFINITION || node.kind === Kind.UNION_TYPE_EXTENSION) {
166
177
  markAsUsed(node.name.value);
167
178
  if (node.types) {
168
- node.types.forEach(findRelated);
179
+ for (const type of node.types) {
180
+ findRelated(type);
181
+ }
169
182
  }
170
183
  } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {
171
184
  markAsUsed(node.name.value);
@@ -178,7 +191,9 @@ function collectUsedTypes(doc) {
178
191
  } else if (node.kind === Kind.FIELD_DEFINITION) {
179
192
  findRelated(resolveTypeNode(node.type));
180
193
  if (node.arguments) {
181
- node.arguments.forEach(findRelated);
194
+ for (const argument of node.arguments) {
195
+ findRelated(argument);
196
+ }
182
197
  }
183
198
  } else if (node.kind === Kind.NAMED_TYPE && // Named type
184
199
  !isGraphQLPrimitive(node.name.value)) {
@@ -193,7 +208,7 @@ function collectObjectFieldType(node, fieldDefinition, fieldsMap, fieldTypes) {
193
208
  const field = fieldsMap[fieldDefinition.name.value];
194
209
  const baseName = getBaseType(field.type).name;
195
210
  const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;
196
- const name = isDefaultScalar ? `Types.Scalars["${baseName}"]` : baseName;
211
+ const name = isDefaultScalar ? `Types.Scalars["${baseName}"]["output"]` : baseName;
197
212
  const type = wrapTypeWithModifiers(name, field.type, {
198
213
  wrapOptional: (str) => {
199
214
  return `Types.Maybe<${str}>`;
@@ -267,7 +282,7 @@ function buildBlock({ name, lines }) {
267
282
  }
268
283
  return [`${name} {`, ...lines.map(indent(2)), "};"].join("\n");
269
284
  }
270
- var getRelativePath = function(filepath, basePath) {
285
+ var getRelativePath = (filepath, basePath) => {
271
286
  const normalizedFilepath = normalize(filepath);
272
287
  const normalizedBasePath = ensureStartsWithSeparator(
273
288
  normalize(ensureEndsWithSeparator(basePath))
@@ -277,9 +292,9 @@ var getRelativePath = function(filepath, basePath) {
277
292
  };
278
293
  function groupSourcesByModule(sources, basePath) {
279
294
  const grouped = {};
280
- sources.forEach((source) => {
295
+ for (const source of sources) {
281
296
  if (!source.location) {
282
- return;
297
+ continue;
283
298
  }
284
299
  const relativePath = getRelativePath(source.location, basePath);
285
300
  if (relativePath) {
@@ -289,7 +304,7 @@ function groupSourcesByModule(sources, basePath) {
289
304
  }
290
305
  grouped[mod].push(source);
291
306
  }
292
- });
307
+ }
293
308
  return grouped;
294
309
  }
295
310
  function extractModuleDirectory(filepath, basePath) {
@@ -323,9 +338,9 @@ function uniqueByKey(left, right, key) {
323
338
  }
324
339
  function createObject(keys, valueFn) {
325
340
  const obj = {};
326
- keys.forEach((key) => {
341
+ for (const key of keys) {
327
342
  obj[key] = valueFn(key);
328
- });
343
+ }
329
344
  return obj;
330
345
  }
331
346
 
@@ -491,7 +506,7 @@ ${contentBody}
491
506
  return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>("${field}"),`;
492
507
  }
493
508
  function printSubscriptionObjectBuilder() {
494
- const subscriptions = picks.objects["Subscription"]?.filter(unique) ?? [];
509
+ const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];
495
510
  if (subscriptions.length === 0) {
496
511
  return "";
497
512
  }
@@ -595,9 +610,9 @@ ${body}
595
610
  if (!picksObj[name2]) {
596
611
  picksObj[name2] = [];
597
612
  }
598
- node.fields.forEach((field) => {
613
+ for (const field of node.fields) {
599
614
  picksObj[name2].push(field.name.value);
600
- });
615
+ }
601
616
  }
602
617
  }
603
618
  function collectValuesFromEnum(node) {
@@ -606,9 +621,9 @@ ${body}
606
621
  if (!picks.enums[name2]) {
607
622
  picks.enums[name2] = [];
608
623
  }
609
- node.values.forEach((field) => {
624
+ for (const field of node.values) {
610
625
  picks.enums[name2].push(field.name.value);
611
- });
626
+ }
612
627
  }
613
628
  }
614
629
  function collectTypeDefinition(node) {
@@ -859,7 +874,10 @@ async function generate(options) {
859
874
  ...output,
860
875
  cache
861
876
  });
862
- return new File(output.filename, result2, "graphql");
877
+ return {
878
+ filename: output.filename,
879
+ content: result2
880
+ };
863
881
  });
864
882
  return Promise.all(promises);
865
883
  }
@@ -879,8 +897,10 @@ function graphqlPlugin() {
879
897
  watcher.on("delete", handleChange);
880
898
  },
881
899
  generate: async (ctx, next) => {
882
- const files = await generate(ctx.generatorOptions);
883
- ctx.fileManager.add(...files);
900
+ const items = await generate(ctx.generatorOptions);
901
+ for (const item of items) {
902
+ ctx.fileManager.createAndAdd(item.filename, item.content, "graphql");
903
+ }
884
904
  return next();
885
905
  }
886
906
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const files = await generate(ctx.generatorOptions);\n ctx.fileManager.add(...files);\n return next();\n },\n });\n}\n","import { File, NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n return new File(output.filename, result, 'graphql');\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport { DocumentNode, concatAST, isScalarType } from 'graphql';\nimport { join, relative, resolve } from 'path';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n }\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({})\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key)\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key)\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects['Subscription']?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const coreType = `${importNamespace}.${baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n })}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return coreType;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n return coreType;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n node.fields.forEach((field) => {\n picksObj[name].push(field.name.value);\n });\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n node.values.forEach((field) => {\n picks.enums[name].push(field.name.value);\n });\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n doc.definitions.forEach(findRelated);\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n\n if (node.interfaces) {\n node.interfaces.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n node.fields.forEach(findRelated);\n }\n\n if (node.interfaces) {\n node.interfaces.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n node.types.forEach(findRelated);\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n node.arguments.forEach(findRelated);\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = function (filepath: string, basePath: string) {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath))\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n sources.forEach((source) => {\n if (!source.location) {\n return;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n });\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n keys.forEach((key) => {\n obj[key] = valueFn(key);\n });\n\n return obj;\n}\n"],"mappings":"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","names":["getCachedDocumentNodeFromSchema","getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","Kind","isScalarType","sources","result"]}
1
+ {"version":3,"sources":["../index.ts","../lib/codegen.ts","../utils/cache.ts","../utils/load.ts","../utils/hash.ts","../lib/context/index.ts","../lib/modules/index.ts","../lib/modules/builder.ts","../lib/modules/utils.ts"],"sourcesContent":["import { createPluginV1, isMatch, WatcherFile } from '@baeta/generator-sdk';\nimport { generate } from './lib/codegen';\n\nexport function graphqlPlugin() {\n return createPluginV1({\n name: 'graphql',\n actionName: 'GraphQL modules',\n watch: (options, watcher, reload) => {\n const handleChange = (file: WatcherFile) => {\n if (isMatch(file.relativePath, options.schemas)) {\n reload(file);\n }\n };\n\n watcher.on('update', handleChange);\n watcher.on('delete', handleChange);\n },\n generate: async (ctx, next) => {\n const items = await generate(ctx.generatorOptions);\n\n for (const item of items) {\n ctx.fileManager.createAndAdd(item.filename, item.content, 'graphql');\n }\n\n return next();\n },\n });\n}\n","import { NormalizedGeneratorOptions } from '@baeta/generator-sdk';\nimport { codegen as gqlCodegen } from '@graphql-codegen/core';\nimport { normalizeConfig, normalizeInstanceOrArray } from '@graphql-codegen/plugin-helpers';\nimport * as typescriptPlugin from '@graphql-codegen/typescript';\nimport { UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { createCache } from '../utils/cache';\nimport { loadSchema } from '../utils/load';\nimport * as contextPlugin from './context';\nimport * as modules from './modules';\n\nexport async function generate(options: NormalizedGeneratorOptions) {\n const rootConfig = {\n schemas: normalizeInstanceOrArray(options.schemas),\n modulesDir: options.modulesDir,\n baseTypesPath: options.baseTypesPath,\n contextType: options.contextType,\n moduleDefinitionName: options.moduleDefinitionName,\n scalars: options.scalars,\n plugins: normalizeConfig(['typescript', 'context']),\n pluginMap: {\n typescript: typescriptPlugin,\n context: contextPlugin,\n },\n };\n\n const cache = createCache();\n\n const schemaPointerMap: UnnormalizedTypeDefPointer = {};\n for (const ptr of rootConfig.schemas) {\n if (typeof ptr === 'string') {\n schemaPointerMap[ptr] = {};\n } else if (typeof ptr === 'object') {\n Object.assign(schemaPointerMap, ptr);\n }\n }\n\n const hash = JSON.stringify(schemaPointerMap);\n const result = await cache('schema', hash, async () => {\n return loadSchema(schemaPointerMap, options.cwd);\n });\n\n const outputs = await modules.preset.buildGeneratesSection({\n baseOutputDir: options.modulesDir,\n presetConfig: {\n baseTypesPath: rootConfig.baseTypesPath,\n filename: rootConfig.moduleDefinitionName,\n encapsulateModuleTypes: 'none',\n extensionsPath: options.extensions,\n },\n schema: result.outputSchema,\n schemaAst: result.outputSchemaAst,\n documents: [],\n pluginMap: rootConfig.pluginMap,\n plugins: rootConfig.plugins,\n config: {\n inputMaybeValue: 'T | undefined',\n contextType: rootConfig.contextType,\n useTypeImports: true,\n scalars: {\n ...rootConfig.scalars,\n },\n },\n });\n\n const promises = outputs.map(async (output) => {\n const result = await gqlCodegen({\n ...output,\n cache,\n });\n\n return {\n filename: output.filename,\n content: result,\n };\n });\n\n return Promise.all(promises);\n}\n","export function createCache(): <T>(\n namespace: string,\n key: string,\n factory: () => Promise<T>,\n) => Promise<T> {\n const cache = new Map<string, Promise<unknown>>();\n\n return function ensure<T>(namespace: string, key: string, factory: () => Promise<T>): Promise<T> {\n const cacheKey = `${namespace}:${key}`;\n\n const cachedValue = cache.get(cacheKey);\n\n if (cachedValue) {\n return cachedValue as Promise<T>;\n }\n\n const value = factory();\n cache.set(cacheKey, value);\n\n return value;\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { ApolloEngineLoader } from '@graphql-tools/apollo-engine-loader';\nimport { CodeFileLoader } from '@graphql-tools/code-file-loader';\nimport { GitLoader } from '@graphql-tools/git-loader';\nimport { GithubLoader } from '@graphql-tools/github-loader';\nimport { GraphQLFileLoader } from '@graphql-tools/graphql-file-loader';\nimport { JsonFileLoader } from '@graphql-tools/json-file-loader';\nimport { loadSchema as loadSchemaToolkit, UnnormalizedTypeDefPointer } from '@graphql-tools/load';\nimport { PrismaLoader } from '@graphql-tools/prisma-loader';\nimport { UrlLoader } from '@graphql-tools/url-loader';\nimport { GraphQLSchemaExtensions } from 'graphql';\nimport { hashSchema } from './hash';\n\nexport async function loadSchema(schemaPointerMap: UnnormalizedTypeDefPointer, cwd: string) {\n const outputSchemaAst = await loadSchemaToolkit(schemaPointerMap, {\n loaders: [\n new CodeFileLoader(),\n new GitLoader(),\n new GithubLoader(),\n new GraphQLFileLoader(),\n new JsonFileLoader(),\n new UrlLoader(),\n new ApolloEngineLoader(),\n new PrismaLoader(),\n ],\n cwd,\n includeSources: true,\n });\n\n if (!outputSchemaAst.extensions) {\n outputSchemaAst.extensions = {};\n }\n\n (outputSchemaAst.extensions as GraphQLSchemaExtensions)['hash'] = hashSchema(outputSchemaAst);\n\n return {\n outputSchemaAst,\n outputSchema: getCachedDocumentNodeFromSchema(outputSchemaAst),\n };\n}\n","import { getCachedDocumentNodeFromSchema } from '@graphql-codegen/plugin-helpers';\nimport { GraphQLSchema, print } from 'graphql';\nimport { createHash } from 'node:crypto';\n\nexport function hashContent(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nexport function hashSchema(schema: GraphQLSchema): string {\n return hashContent(print(getCachedDocumentNodeFromSchema(schema)));\n}\n","import { PluginFunction, Types } from '@graphql-codegen/plugin-helpers';\nimport { buildMapperImport, parseMapper } from '@graphql-codegen/visitor-plugin-common';\nimport { GraphQLSchema } from 'graphql';\n\ninterface Config {\n contextType: string | undefined;\n}\n\nexport const plugin: PluginFunction<Config> = async (\n schema: GraphQLSchema,\n documents: Types.DocumentFile[],\n config: Config,\n): Promise<Types.PluginOutput> => {\n const prepend: string[] = [];\n const mapper = parseMapper(config.contextType || 'any');\n\n if (mapper.isExternal && mapper.source) {\n const identifier = mapper.default ? 'ContextType' : `${mapper.import} as ContextType`;\n\n const result = buildMapperImport(\n mapper.source,\n [\n {\n identifier,\n asDefault: mapper.default,\n },\n ],\n true,\n );\n\n if (result) {\n prepend.push(result);\n }\n } else {\n prepend.push(`type ContextType = ${mapper.type}`);\n }\n\n prepend.push('export type { ContextType }');\n\n return {\n content: '',\n prepend: prepend,\n };\n};\n\nexport default { plugin };\n","import { Types } from '@graphql-codegen/plugin-helpers';\nimport { BaseVisitor, getConfigValue } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport { DocumentNode, concatAST, isScalarType } from 'graphql';\nimport { join, relative, resolve } from 'path';\nimport { buildModule } from './builder';\nimport { ModulesConfig } from './config';\nimport {\n collectObjectFieldTypesAndArguments,\n groupSourcesByModule,\n isGraphQLPrimitive,\n normalize,\n stripFilename,\n} from './utils';\n\nexport const preset: Types.OutputPreset<ModulesConfig> = {\n buildGeneratesSection: (options) => {\n const { baseOutputDir } = options;\n const { baseTypesPath, extensionsPath, encapsulateModuleTypes } = options.presetConfig;\n\n const requireRootResolvers = getConfigValue(options?.presetConfig.requireRootResolvers, false);\n\n const cwd = resolve(options.presetConfig.cwd || process.cwd());\n const importTypesNamespace = options.presetConfig.importTypesNamespace || 'Types';\n\n if (!baseTypesPath) {\n throw new Error(\n `Preset \"graphql-modules\" requires you to specify \"baseTypesPath\" configuration and point it to your base types file (generated by \"typescript\" plugin)!`,\n );\n }\n\n if (!options.schemaAst?.extensions.sources) {\n throw new Error(`Preset \"graphql-modules\" requires to use GraphQL SDL`);\n }\n\n const extensions = options.schemaAst?.extensions;\n const sources = (extensions?.extendedSources ?? []) as Source[];\n const sourcesByModuleMap = groupSourcesByModule(sources, baseOutputDir);\n const modules = Object.keys(sourcesByModuleMap);\n\n const baseVisitor = new BaseVisitor(options.config, {});\n const { fieldTypes, fieldArguments } = collectObjectFieldTypesAndArguments(options.schemaAst);\n\n // One file with an output from all plugins\n const baseOutput: Types.GenerateOptions = {\n filename: resolve(cwd, baseOutputDir, baseTypesPath),\n schema: options.schema,\n documents: options.documents,\n plugins: [\n ...options.plugins,\n {\n 'modules-exported-scalars': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'modules-exported-scalars': {\n plugin: (schema) => {\n const typeMap = schema.getTypeMap();\n\n return Object.keys(typeMap)\n .map((t) => {\n if (t && typeMap[t] && isScalarType(typeMap[t]) && !isGraphQLPrimitive(t)) {\n const convertedName = baseVisitor.convertName(t);\n return `export type ${convertedName} = Scalars[\"${t}\"];`;\n }\n\n return null;\n })\n .filter(Boolean)\n .join('\\n');\n },\n },\n },\n config: {\n ...options.config,\n enumsAsTypes: true,\n },\n schemaAst: options.schemaAst,\n };\n\n const baseTypesFilename = baseTypesPath.replace(/\\.(js|ts|d.ts)$/, '');\n const baseTypesDir = stripFilename(baseOutput.filename);\n\n // One file per each module\n const outputs: Types.GenerateOptions[] = modules.map((moduleName) => {\n const filename = resolve(cwd, baseOutputDir, moduleName, options.presetConfig.filename);\n const dirpath = stripFilename(filename);\n const relativePath = relative(dirpath, baseTypesDir);\n const importPath =\n options.presetConfig.importBaseTypesFrom ||\n normalize(join(relativePath, baseTypesFilename));\n const sources = sourcesByModuleMap[moduleName];\n\n const documents = sources.map((source) => source.document) as DocumentNode[];\n\n const moduleDocument = concatAST(documents);\n\n const shouldDeclare = filename.endsWith('.d.ts');\n\n return {\n filename,\n schema: options.schema,\n documents: [],\n plugins: [\n ...options.plugins.filter((p) => typeof p === 'object' && !!p.add),\n {\n 'graphql-modules-plugin': {},\n },\n ],\n pluginMap: {\n ...options.pluginMap,\n 'graphql-modules-plugin': {\n plugin: (schema) =>\n buildModule(moduleName, moduleDocument, {\n importNamespace: importTypesNamespace,\n importPath,\n encapsulate: encapsulateModuleTypes || 'namespace',\n requireRootResolvers,\n shouldDeclare,\n schema,\n baseVisitor,\n useGraphQLModules: false,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n rootTypes: [\n schema.getQueryType()?.name || '',\n schema.getMutationType()?.name || '',\n schema.getSubscriptionType()?.name || '',\n ].filter(Boolean),\n }),\n },\n },\n config: options.config,\n schemaAst: options.schemaAst,\n };\n });\n\n return [baseOutput].concat(outputs);\n },\n};\n\nexport default preset;\n","import { BaseVisitor } from '@graphql-codegen/visitor-plugin-common';\nimport { pascalCase } from 'change-case-all';\nimport {\n DocumentNode,\n EnumTypeDefinitionNode,\n EnumTypeExtensionNode,\n GraphQLSchema,\n InputObjectTypeDefinitionNode,\n InputObjectTypeExtensionNode,\n InterfaceTypeDefinitionNode,\n InterfaceTypeExtensionNode,\n isScalarType,\n Kind,\n ObjectTypeDefinitionNode,\n ObjectTypeExtensionNode,\n TypeDefinitionNode,\n TypeExtensionNode,\n visit,\n} from 'graphql';\nimport { ModulesConfig } from './config';\nimport {\n buildBlock,\n collectUsedTypes,\n concatByKey,\n createObject,\n indent,\n pushUnique,\n unique,\n uniqueByKey,\n withQuotes,\n} from './utils';\n\ntype RegistryKeys = 'objects' | 'inputs' | 'interfaces' | 'scalars' | 'unions' | 'enums';\ntype Registry = Record<RegistryKeys, string[]>;\nconst registryKeys: RegistryKeys[] = [\n 'objects',\n 'inputs',\n 'interfaces',\n 'scalars',\n 'unions',\n 'enums',\n];\nconst resolverKeys: Extract<RegistryKeys, 'objects' | 'enums' | 'scalars'>[] = [\n 'scalars',\n 'objects',\n 'enums',\n];\n\nexport function buildModule(\n name: string,\n doc: DocumentNode,\n {\n importNamespace,\n importPath,\n encapsulate,\n requireRootResolvers,\n shouldDeclare,\n rootTypes,\n schema,\n baseVisitor,\n fieldTypes,\n fieldArguments,\n extensionsPath,\n }: {\n importNamespace: string;\n importPath: string;\n encapsulate: ModulesConfig['encapsulateModuleTypes'];\n requireRootResolvers: ModulesConfig['requireRootResolvers'];\n shouldDeclare: boolean;\n rootTypes: string[];\n baseVisitor: BaseVisitor;\n schema?: GraphQLSchema;\n useGraphQLModules: boolean;\n fieldTypes: Record<string, Record<string, string>>;\n fieldArguments: Record<string, Record<string, boolean>>;\n extensionsPath?: string;\n },\n): string {\n const picks: Record<RegistryKeys, Record<string, string[]>> = createObject(\n registryKeys,\n () => ({}),\n );\n const defined: Registry = createObject(registryKeys, () => []);\n const extended: Registry = createObject(registryKeys, () => []);\n\n // List of types used in objects, fields, arguments etc\n const usedTypes = collectUsedTypes(doc);\n\n visit(doc, {\n ObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n ObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InputObjectTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InputObjectTypeExtension(node) {\n collectTypeExtension(node);\n },\n InterfaceTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n InterfaceTypeExtension(node) {\n collectTypeExtension(node);\n },\n ScalarTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n UnionTypeExtension(node) {\n collectTypeExtension(node);\n },\n EnumTypeDefinition(node) {\n collectTypeDefinition(node);\n },\n EnumTypeExtension(node) {\n collectTypeExtension(node);\n },\n });\n\n // Defined and Extended types\n const visited: Registry = createObject(registryKeys, (key) =>\n concatByKey(defined, extended, key),\n );\n\n // Types that are not defined or extended in a module, they come from other modules\n const external: Registry = createObject(registryKeys, (key) =>\n uniqueByKey(extended, defined, key),\n );\n\n //\n //\n //\n // Prints\n //\n //\n //\n\n // An actual output\n const imports = [\n `import * as ${importNamespace} from \"${importPath}\";`,\n 'import { DocumentNode } from \"graphql\";',\n 'import * as Baeta from \"@baeta/core/sdk\";',\n ];\n\n if (extensionsPath) {\n imports.push(`import baetaExtensions from \"${extensionsPath}\";`);\n }\n\n imports.push('\\n');\n\n let content = [\n printDefinedFields(),\n printDefinedEnumValues(),\n printDefinedInputFields(),\n printSchemaTypes(usedTypes),\n printMetadata(),\n ]\n .filter(Boolean)\n .join('\\n\\n');\n\n const moduleNamespace = baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n });\n\n if (encapsulate === 'namespace') {\n content = `${shouldDeclare ? 'declare' : 'export'} namespace ${baseVisitor.convertName(name, {\n suffix: 'Module',\n useTypesPrefix: false,\n useTypesSuffix: false,\n })} {\\n${shouldDeclare ? `${indent(2)(imports.join('\\n'))}\\n` : ''}${indent(2)(content)}\\n}`;\n }\n\n return [...(shouldDeclare ? [] : imports), content, printFactoryMethod()]\n .filter(Boolean)\n .join('\\n');\n\n function printMetadata() {\n return `export namespace ModuleMetadata {\n export const id = '${name}';\n export const dirname = './${name}';\n export const typedef = ${JSON.stringify(doc)} as unknown as DocumentNode;\n ${printBaetaManager()}\n}`;\n }\n\n /**\n * A dictionary of fields to pick from an object\n */\n function printDefinedFields() {\n return buildBlock({\n name: 'interface DefinedFields',\n lines: [...visited.objects, ...visited.interfaces].map(\n (typeName) =>\n `${typeName}: ${printPicks(typeName, {\n ...picks.objects,\n ...picks.interfaces,\n })};`,\n ),\n });\n }\n\n function printFactoryMethod() {\n const name = moduleNamespace.slice(0, moduleNamespace.length - 6);\n const createModuleFn = `create${name}Module`;\n const getModuleFn = `get${name}Module`;\n const extensionsArg = extensionsPath ? ', baetaExtensions' : '';\n\n return `\nexport const ${createModuleFn} = () => Baeta.createModuleManager(ModuleMetadata${extensionsArg});\nexport const ${getModuleFn} = Baeta.createSingletonModule(${createModuleFn});\n`;\n }\n\n /**\n * Baeta manager\n */\n\n function printObjectFieldResolverBuilder(typeName: string, field: string) {\n const parentType = getParentType(typeName);\n const resultType = getResultType(typeName, field);\n const argumentsType = getArgsType(typeName, field);\n const contextType = getContextType();\n return `${field}: module.createResolverBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${typeName}\", \"${field}\"),`;\n }\n\n function printObjectResolverBuilder(typeName: string, objects: Record<string, string[]>) {\n const fields =\n objects[typeName]\n ?.filter(unique)\n .map((field) => printObjectFieldResolverBuilder(typeName, field)) ?? [];\n\n if (fields.length === 0) {\n return '';\n }\n\n const parentType = getParentType(typeName);\n const contextType = getContextType();\n\n const addons = [`...module.createTypeMethods<${parentType}, ${contextType}>(\"${typeName}\"),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n const content = `{\\n${contentBody}\\n}`;\n return `${typeName}: ${content},`;\n }\n\n function printSubscriptionFieldBuilder(field: string) {\n const parentType = getParentType('Subscription');\n const resultType = getResultType('Subscription', field);\n const argumentsType = getArgsType('Subscription', field);\n const contextType = getContextType();\n return `${field}: module.createSubscriptionBuilder<${resultType}, ${parentType}, ${contextType}, ${argumentsType}>(\"${field}\"),`;\n }\n\n function printSubscriptionObjectBuilder() {\n const subscriptions = picks.objects.Subscription?.filter(unique) ?? [];\n\n if (subscriptions.length === 0) {\n return '';\n }\n\n const fields = subscriptions.map((subscription) => printSubscriptionFieldBuilder(subscription));\n\n const parentType = getParentType('Subscription');\n const contextType = getContextType();\n const addons = [`...module.createSubscriptionMethods<${parentType}, ${contextType}>(),`];\n const contentBody = [...addons, ...fields].map(indent(2)).join('\\n');\n\n const content = `{\\n${contentBody}\\n}`;\n return `Subscription: ${content},`;\n }\n\n function printScalarBuilder() {\n const scalars = visited.scalars;\n if (scalars.length === 0) {\n return '';\n }\n\n const fields = scalars.map((scalar) => `${scalar}: module.createScalarBuilder(\"${scalar}\"),`);\n const content = fields.map(indent(2)).join('\\n');\n return `Scalar: {\\n${content}\\n},`;\n }\n\n function printBaetaManager() {\n const objects = visited.objects\n .filter((type) => type !== 'Subscription')\n .map((typeName) => printObjectResolverBuilder(typeName, picks.objects))\n .filter(Boolean);\n\n const contextType = getContextType();\n const addons = [`...module.createModuleMethods<${contextType}>(),`];\n\n const bodyFields = [\n ...addons,\n ...objects,\n printScalarBuilder(),\n printSubscriptionObjectBuilder(),\n ];\n\n const body = bodyFields.filter(Boolean).map(indent(6)).join('\\n');\n const content = `{\\n${body}\\n }`;\n\n return `\n export function createManager(module: Baeta.ModuleBuilder) {\n return ${content};\n }`;\n }\n\n /**\n * A dictionary of values to pick from an enum\n */\n function printDefinedEnumValues() {\n return buildBlock({\n name: 'interface DefinedEnumValues',\n lines: visited.enums.map((typeName) => `${typeName}: ${printPicks(typeName, picks.enums)};`),\n });\n }\n\n function encapsulateTypeName(typeName: string): string {\n if (encapsulate === 'prefix') {\n return `${pascalCase(name)}_${typeName}`;\n }\n\n return typeName;\n }\n\n /**\n * A dictionary of fields to pick from an input\n */\n function printDefinedInputFields() {\n return buildBlock({\n name: 'interface DefinedInputFields',\n lines: visited.inputs.map(\n (typeName) => `${typeName}: ${printPicks(typeName, picks.inputs)};`,\n ),\n });\n }\n\n /**\n * Prints signatures of schema types with picks\n */\n function printSchemaTypes(types: string[]) {\n return types\n .filter((type) => !visited.scalars.includes(type))\n .map(printExportType)\n .join('\\n');\n }\n\n function printPicks(typeName: string, records: Record<string, string[]>): string {\n return records[typeName].filter(unique).map(withQuotes).join(' | ');\n }\n\n function printTypeBody(typeName: string): string {\n const coreType = `${importNamespace}.${baseVisitor.convertName(typeName, {\n useTypesSuffix: true,\n useTypesPrefix: true,\n })}`;\n\n if (external.enums.includes(typeName) || external.objects.includes(typeName)) {\n if (schema && isScalarType(schema.getType(typeName))) {\n return `${importNamespace}.Scalars['${typeName}']`;\n }\n\n return coreType;\n }\n\n if (defined.enums.includes(typeName) && picks.enums[typeName]) {\n return `DefinedEnumValues['${typeName}']`;\n }\n\n if (defined.objects.includes(typeName) && picks.objects[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.interfaces.includes(typeName) && picks.interfaces[typeName]) {\n return `Pick<${coreType}, DefinedFields['${typeName}']>`;\n }\n\n if (defined.inputs.includes(typeName) && picks.inputs[typeName]) {\n return `Pick<${coreType}, DefinedInputFields['${typeName}']>`;\n }\n\n return coreType;\n }\n\n function printExportType(typeName: string): string {\n return `export type ${encapsulateTypeName(typeName)} = ${printTypeBody(typeName)};`;\n }\n\n //\n //\n //\n // Utils\n //\n //\n //\n\n function collectFields(\n node:\n | ObjectTypeDefinitionNode\n | ObjectTypeExtensionNode\n | InterfaceTypeDefinitionNode\n | InterfaceTypeExtensionNode\n | InputObjectTypeDefinitionNode\n | InputObjectTypeExtensionNode,\n picksObj: Record<string, string[]>,\n ) {\n const name = node.name.value;\n\n if (node.fields) {\n if (!picksObj[name]) {\n picksObj[name] = [];\n }\n\n for (const field of node.fields) {\n picksObj[name].push(field.name.value);\n }\n }\n }\n\n function collectValuesFromEnum(node: EnumTypeDefinitionNode | EnumTypeExtensionNode) {\n const name = node.name.value;\n\n if (node.values) {\n if (!picks.enums[name]) {\n picks.enums[name] = [];\n }\n\n for (const field of node.values) {\n picks.enums[name].push(field.name.value);\n }\n }\n }\n\n function collectTypeDefinition(node: TypeDefinitionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_DEFINITION: {\n defined.objects.push(name);\n collectFields(node, picks.objects);\n break;\n }\n\n case Kind.ENUM_TYPE_DEFINITION: {\n defined.enums.push(name);\n collectValuesFromEnum(node);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n defined.inputs.push(name);\n collectFields(node, picks.inputs);\n break;\n }\n\n case Kind.SCALAR_TYPE_DEFINITION: {\n defined.scalars.push(name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_DEFINITION: {\n defined.interfaces.push(name);\n collectFields(node, picks.interfaces);\n break;\n }\n\n case Kind.UNION_TYPE_DEFINITION: {\n defined.unions.push(name);\n break;\n }\n }\n }\n\n function collectTypeExtension(node: TypeExtensionNode) {\n const name = node.name.value;\n\n switch (node.kind) {\n case Kind.OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.objects);\n // Do not include root types as extensions\n // so we can use them in DefinedFields\n if (rootTypes.includes(name)) {\n pushUnique(defined.objects, name);\n return;\n }\n\n pushUnique(extended.objects, name);\n\n break;\n }\n\n case Kind.ENUM_TYPE_EXTENSION: {\n collectValuesFromEnum(node);\n pushUnique(extended.enums, name);\n break;\n }\n\n case Kind.INPUT_OBJECT_TYPE_EXTENSION: {\n collectFields(node, picks.inputs);\n pushUnique(extended.inputs, name);\n break;\n }\n\n case Kind.INTERFACE_TYPE_EXTENSION: {\n collectFields(node, picks.interfaces);\n pushUnique(extended.interfaces, name);\n break;\n }\n\n case Kind.UNION_TYPE_EXTENSION: {\n pushUnique(extended.unions, name);\n break;\n }\n }\n }\n\n function getParentType(type: string) {\n if (['Query', 'Mutation', 'Subscription'].includes(type)) {\n return '{}';\n }\n return type;\n }\n\n function getResultType(type: string, field: string) {\n return fieldTypes?.[type]?.[field] || '{}';\n }\n\n function getArgsType(type: string, field: string) {\n const hasArgs = fieldArguments?.[type]?.[field] ?? false;\n if (!hasArgs) {\n return '{}';\n }\n const fieldUpper = field[0].toUpperCase() + field.slice(1);\n return `Types.${type}${fieldUpper}Args`;\n }\n\n function getContextType() {\n return 'Types.ContextType';\n }\n}\n","import { getBaseType } from '@graphql-codegen/plugin-helpers';\nimport { DEFAULT_SCALARS, wrapTypeWithModifiers } from '@graphql-codegen/visitor-plugin-common';\nimport { Source } from '@graphql-tools/utils';\nimport {\n DefinitionNode,\n DocumentNode,\n FieldDefinitionNode,\n GraphQLFieldMap,\n GraphQLObjectType,\n GraphQLSchema,\n InputValueDefinitionNode,\n Kind,\n NamedTypeNode,\n ObjectTypeDefinitionNode,\n TypeNode,\n} from 'graphql';\nimport parse from 'parse-filepath';\n\nconst sep = '/';\n\n/**\n * Searches every node to collect used types\n */\nexport function collectUsedTypes(doc: DocumentNode): string[] {\n const used: string[] = [];\n\n for (const definition of doc.definitions) {\n findRelated(definition);\n }\n\n function markAsUsed(type: string) {\n pushUnique(used, type);\n }\n\n function findRelated(\n node: DefinitionNode | FieldDefinitionNode | InputValueDefinitionNode | NamedTypeNode,\n ) {\n if (node.kind === Kind.OBJECT_TYPE_DEFINITION || node.kind === Kind.OBJECT_TYPE_EXTENSION) {\n // Object\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.INPUT_OBJECT_TYPE_DEFINITION ||\n node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION\n ) {\n // Input\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n } else if (\n node.kind === Kind.INTERFACE_TYPE_DEFINITION ||\n node.kind === Kind.INTERFACE_TYPE_EXTENSION\n ) {\n // Interface\n markAsUsed(node.name.value);\n\n if (node.fields) {\n for (const field of node.fields) {\n findRelated(field);\n }\n }\n\n if (node.interfaces) {\n for (const _interface of node.interfaces) {\n findRelated(_interface);\n }\n }\n } else if (\n node.kind === Kind.UNION_TYPE_DEFINITION ||\n node.kind === Kind.UNION_TYPE_EXTENSION\n ) {\n // Union\n markAsUsed(node.name.value);\n\n if (node.types) {\n for (const type of node.types) {\n findRelated(type);\n }\n }\n } else if (node.kind === Kind.ENUM_TYPE_DEFINITION || node.kind === Kind.ENUM_TYPE_EXTENSION) {\n // Enum\n markAsUsed(node.name.value);\n } else if (\n node.kind === Kind.SCALAR_TYPE_DEFINITION ||\n node.kind === Kind.SCALAR_TYPE_EXTENSION\n ) {\n // Scalar\n if (!isGraphQLPrimitive(node.name.value)) {\n markAsUsed(node.name.value);\n }\n } else if (node.kind === Kind.INPUT_VALUE_DEFINITION) {\n // Argument\n findRelated(resolveTypeNode(node.type));\n } else if (node.kind === Kind.FIELD_DEFINITION) {\n // Field\n findRelated(resolveTypeNode(node.type));\n\n if (node.arguments) {\n for (const argument of node.arguments) {\n findRelated(argument);\n }\n }\n } else if (\n node.kind === Kind.NAMED_TYPE &&\n // Named type\n !isGraphQLPrimitive(node.name.value)\n ) {\n markAsUsed(node.name.value);\n }\n }\n\n return used;\n}\n\nfunction collectObjectFieldType(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldsMap: GraphQLFieldMap<unknown, unknown>,\n fieldTypes: Record<string, Record<string, string>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n\n const field = fieldsMap[fieldDefinition.name.value];\n const baseName = getBaseType(field.type).name;\n const isDefaultScalar = DEFAULT_SCALARS[baseName] != null;\n const name = isDefaultScalar ? `Types.Scalars[\"${baseName}\"][\"output\"]` : baseName;\n\n const type = wrapTypeWithModifiers(name, field.type, {\n wrapOptional: (str: string) => {\n return `Types.Maybe<${str}>`;\n },\n wrapArray: (str: string) => {\n return `Array<${str}>`;\n },\n });\n\n if (fieldTypes[objectName] == null) {\n fieldTypes[objectName] = {};\n }\n fieldTypes[objectName][fieldName] = type;\n}\n\nfunction collectObjectFieldArguments(\n node: ObjectTypeDefinitionNode,\n fieldDefinition: FieldDefinitionNode,\n fieldArguments: Record<string, Record<string, boolean>>,\n) {\n const objectName = node.name.value;\n const fieldName = fieldDefinition.name.value;\n const hasArguments = fieldDefinition.arguments != null && fieldDefinition.arguments.length > 0;\n\n if (fieldArguments[objectName] == null) {\n fieldArguments[objectName] = {};\n }\n fieldArguments[objectName][fieldName] = hasArguments;\n}\n\nexport function collectObjectFieldTypesAndArguments(schema?: GraphQLSchema) {\n const fieldTypes: Record<string, Record<string, string>> = {};\n const fieldArguments: Record<string, Record<string, boolean>> = {};\n\n if (!schema) {\n return { fieldTypes, fieldArguments };\n }\n\n const schemaTypes = schema.getTypeMap();\n\n for (const type of Object.values(schemaTypes)) {\n if (type.astNode?.kind !== Kind.OBJECT_TYPE_DEFINITION) {\n continue;\n }\n\n const schemaType = schemaTypes[type.name] as GraphQLObjectType;\n const fieldsMap = schemaType.getFields();\n\n for (const field of type.astNode.fields ?? []) {\n collectObjectFieldArguments(type.astNode, field, fieldArguments);\n collectObjectFieldType(type.astNode, field, fieldsMap, fieldTypes);\n }\n }\n\n return { fieldTypes, fieldArguments };\n}\n\nexport function resolveTypeNode(node: TypeNode): NamedTypeNode {\n if (node.kind === Kind.LIST_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n if (node.kind === Kind.NON_NULL_TYPE) {\n return resolveTypeNode(node.type);\n }\n\n return node;\n}\n\nexport function isGraphQLPrimitive(name: string): boolean {\n return ['String', 'Boolean', 'ID', 'Float', 'Int'].includes(name);\n}\n\nexport function unique<T>(val: T, i: number, all: T[]): boolean {\n return i === all.indexOf(val);\n}\n\nexport function withQuotes(val: string): string {\n return `'${val}'`;\n}\n\nexport function indent(size: number) {\n const space = new Array(size).fill(' ').join('');\n\n function indentInner(val: string): string {\n return val\n .split('\\n')\n .map((line) => `${space}${line}`)\n .join('\\n');\n }\n\n return indentInner;\n}\n\nexport function buildBlock({ name, lines }: { name: string; lines: string[] }): string {\n if (!lines.length) {\n return '';\n }\n\n return [`${name} {`, ...lines.map(indent(2)), '};'].join('\\n');\n}\n\nconst getRelativePath = (filepath: string, basePath: string) => {\n const normalizedFilepath = normalize(filepath);\n const normalizedBasePath = ensureStartsWithSeparator(\n normalize(ensureEndsWithSeparator(basePath)),\n );\n const [, relativePath] = normalizedFilepath.split(normalizedBasePath);\n return relativePath;\n};\n\nexport function groupSourcesByModule(\n sources: Source[],\n basePath: string,\n): Record<string, Source[]> {\n const grouped: Record<string, Source[]> = {};\n\n for (const source of sources) {\n if (!source.location) {\n continue;\n }\n\n const relativePath = getRelativePath(source.location, basePath);\n\n if (relativePath) {\n // PERF: we could guess the module by matching source.location with a list of already resolved paths\n const mod = extractModuleDirectory(source.location, basePath);\n\n if (!grouped[mod]) {\n grouped[mod] = [];\n }\n\n grouped[mod].push(source);\n }\n }\n\n return grouped;\n}\n\nfunction extractModuleDirectory(filepath: string, basePath: string): string {\n const relativePath = getRelativePath(filepath, basePath);\n\n const [moduleDirectory] = relativePath.split(sep);\n\n return moduleDirectory;\n}\n\nexport function stripFilename(path: string) {\n const parsedPath = parse(path);\n return normalize(parsedPath.dir);\n}\n\nexport function normalize(path: string) {\n return path.replace(/\\\\/g, '/');\n}\n\nfunction ensureEndsWithSeparator(path: string) {\n return path.endsWith(sep) ? path : path + sep;\n}\n\nfunction ensureStartsWithSeparator(path: string) {\n return path.startsWith('.')\n ? path.replace(/^(..\\/)|(.\\/)/, '/')\n : path.startsWith('/')\n ? path\n : `/${path}`;\n}\n\n/**\n * Pushes an item to a list only if the list doesn't include the item\n */\nexport function pushUnique<T>(list: T[], item: T): void {\n if (!list.includes(item)) {\n list.push(item);\n }\n}\n\nexport function concatByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n // Remove duplicate, if an element is in right & left, it will be only once in the returned array.\n //@ts-expect-error check compiler settings\n return [...new Set([...left[key], ...right[key]])];\n}\n\nexport function uniqueByKey<T extends Record<string, string[]>, K extends keyof T>(\n left: T,\n right: T,\n key: K,\n) {\n return left[key].filter((item) => !right[key].includes(item));\n}\n\nexport function createObject<K extends string, T>(keys: K[], valueFn: (key: K) => T) {\n const obj: Record<K, T> = {} as Record<K, T>;\n\n for (const key of keys) {\n obj[key] = valueFn(key);\n }\n\n return obj;\n}\n"],"mappings":";;;;;;;AAAA,SAAS,gBAAgB,eAA4B;;;ACCrD,SAAS,WAAW,kBAAkB;AACtC,SAAS,iBAAiB,gCAAgC;AAC1D,YAAY,sBAAsB;;;ACH3B,SAAS,cAIA;AACd,QAAM,QAAQ,oBAAI,IAA8B;AAEhD,SAAO,SAAS,OAAU,WAAmB,KAAa,SAAuC;AAC/F,UAAM,WAAW,GAAG,SAAS,IAAI,GAAG;AAEpC,UAAM,cAAc,MAAM,IAAI,QAAQ;AAEtC,QAAI,aAAa;AACf,aAAO;AAAA,IACT;AAEA,UAAM,QAAQ,QAAQ;AACtB,UAAM,IAAI,UAAU,KAAK;AAEzB,WAAO;AAAA,EACT;AACF;;;ACrBA,SAAS,mCAAAA,wCAAuC;AAChD,SAAS,0BAA0B;AACnC,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,cAAc,yBAAqD;AAC5E,SAAS,oBAAoB;AAC7B,SAAS,iBAAiB;;;ACT1B,SAAS,uCAAuC;AAChD,SAAwB,aAAa;AACrC,SAAS,kBAAkB;AAEpB,SAAS,YAAY,SAAyB;AACnD,SAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,EAAE,OAAO,KAAK;AAC1D;AAEO,SAAS,WAAW,QAA+B;AACxD,SAAO,YAAY,MAAM,gCAAgC,MAAM,CAAC,CAAC;AACnE;;;ADGA,eAAsB,WAAW,kBAA8C,KAAa;AAC1F,QAAM,kBAAkB,MAAM,kBAAkB,kBAAkB;AAAA,IAChE,SAAS;AAAA,MACP,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,aAAa;AAAA,MACjB,IAAI,kBAAkB;AAAA,MACtB,IAAI,eAAe;AAAA,MACnB,IAAI,UAAU;AAAA,MACd,IAAI,mBAAmB;AAAA,MACvB,IAAI,aAAa;AAAA,IACnB;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,CAAC,gBAAgB,YAAY;AAC/B,oBAAgB,aAAa,CAAC;AAAA,EAChC;AAEA,EAAC,gBAAgB,WAAuC,MAAM,IAAI,WAAW,eAAe;AAE5F,SAAO;AAAA,IACL;AAAA,IACA,cAAcC,iCAAgC,eAAe;AAAA,EAC/D;AACF;;;AEvCA;AAAA;AAAA;AAAA;AAAA;AACA,SAAS,mBAAmB,mBAAmB;AAOxC,IAAM,SAAiC,OAC5C,QACA,WACA,WACgC;AAChC,QAAM,UAAoB,CAAC;AAC3B,QAAM,SAAS,YAAY,OAAO,eAAe,KAAK;AAEtD,MAAI,OAAO,cAAc,OAAO,QAAQ;AACtC,UAAM,aAAa,OAAO,UAAU,gBAAgB,GAAG,OAAO,MAAM;AAEpE,UAAM,SAAS;AAAA,MACb,OAAO;AAAA,MACP;AAAA,QACE;AAAA,UACE;AAAA,UACA,WAAW,OAAO;AAAA,QACpB;AAAA,MACF;AAAA,MACA;AAAA,IACF;AAEA,QAAI,QAAQ;AACV,cAAQ,KAAK,MAAM;AAAA,IACrB;AAAA,EACF,OAAO;AACL,YAAQ,KAAK,sBAAsB,OAAO,IAAI,EAAE;AAAA,EAClD;AAEA,UAAQ,KAAK,6BAA6B;AAE1C,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,EACF;AACF;AAEA,IAAO,kBAAQ,EAAE,OAAO;;;AC5CxB,SAAS,aAAa,sBAAsB;AAE5C,SAAuB,WAAW,gBAAAC,qBAAoB;AACtD,SAAS,MAAM,UAAU,eAAe;;;ACHxC,SAAS,kBAAkB;AAC3B;AAAA,EASE;AAAA,EACA,QAAAC;AAAA,EAKA;AAAA,OACK;;;AClBP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,6BAA6B;AAEvD;AAAA,EAQE;AAAA,OAIK;AACP,OAAO,WAAW;AAElB,IAAM,MAAM;AAKL,SAAS,iBAAiB,KAA6B;AAC5D,QAAM,OAAiB,CAAC;AAExB,aAAW,cAAc,IAAI,aAAa;AACxC,gBAAY,UAAU;AAAA,EACxB;AAEA,WAAS,WAAW,MAAc;AAChC,eAAW,MAAM,IAAI;AAAA,EACvB;AAEA,WAAS,YACP,MACA;AACA,QAAI,KAAK,SAAS,KAAK,0BAA0B,KAAK,SAAS,KAAK,uBAAuB;AAEzF,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,gCACnB,KAAK,SAAS,KAAK,6BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,6BACnB,KAAK,SAAS,KAAK,0BACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,QAAQ;AACf,mBAAW,SAAS,KAAK,QAAQ;AAC/B,sBAAY,KAAK;AAAA,QACnB;AAAA,MACF;AAEA,UAAI,KAAK,YAAY;AACnB,mBAAW,cAAc,KAAK,YAAY;AACxC,sBAAY,UAAU;AAAA,QACxB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK,yBACnB,KAAK,SAAS,KAAK,sBACnB;AAEA,iBAAW,KAAK,KAAK,KAAK;AAE1B,UAAI,KAAK,OAAO;AACd,mBAAW,QAAQ,KAAK,OAAO;AAC7B,sBAAY,IAAI;AAAA,QAClB;AAAA,MACF;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB,KAAK,SAAS,KAAK,qBAAqB;AAE5F,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B,WACE,KAAK,SAAS,KAAK,0BACnB,KAAK,SAAS,KAAK,uBACnB;AAEA,UAAI,CAAC,mBAAmB,KAAK,KAAK,KAAK,GAAG;AACxC,mBAAW,KAAK,KAAK,KAAK;AAAA,MAC5B;AAAA,IACF,WAAW,KAAK,SAAS,KAAK,wBAAwB;AAEpD,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAAA,IACxC,WAAW,KAAK,SAAS,KAAK,kBAAkB;AAE9C,kBAAY,gBAAgB,KAAK,IAAI,CAAC;AAEtC,UAAI,KAAK,WAAW;AAClB,mBAAW,YAAY,KAAK,WAAW;AACrC,sBAAY,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,IACF,WACE,KAAK,SAAS,KAAK;AAAA,IAEnB,CAAC,mBAAmB,KAAK,KAAK,KAAK,GACnC;AACA,iBAAW,KAAK,KAAK,KAAK;AAAA,IAC5B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,iBACA,WACA,YACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AAEvC,QAAM,QAAQ,UAAU,gBAAgB,KAAK,KAAK;AAClD,QAAM,WAAW,YAAY,MAAM,IAAI,EAAE;AACzC,QAAM,kBAAkB,gBAAgB,QAAQ,KAAK;AACrD,QAAM,OAAO,kBAAkB,kBAAkB,QAAQ,iBAAiB;AAE1E,QAAM,OAAO,sBAAsB,MAAM,MAAM,MAAM;AAAA,IACnD,cAAc,CAAC,QAAgB;AAC7B,aAAO,eAAe,GAAG;AAAA,IAC3B;AAAA,IACA,WAAW,CAAC,QAAgB;AAC1B,aAAO,SAAS,GAAG;AAAA,IACrB;AAAA,EACF,CAAC;AAED,MAAI,WAAW,UAAU,KAAK,MAAM;AAClC,eAAW,UAAU,IAAI,CAAC;AAAA,EAC5B;AACA,aAAW,UAAU,EAAE,SAAS,IAAI;AACtC;AAEA,SAAS,4BACP,MACA,iBACA,gBACA;AACA,QAAM,aAAa,KAAK,KAAK;AAC7B,QAAM,YAAY,gBAAgB,KAAK;AACvC,QAAM,eAAe,gBAAgB,aAAa,QAAQ,gBAAgB,UAAU,SAAS;AAE7F,MAAI,eAAe,UAAU,KAAK,MAAM;AACtC,mBAAe,UAAU,IAAI,CAAC;AAAA,EAChC;AACA,iBAAe,UAAU,EAAE,SAAS,IAAI;AAC1C;AAEO,SAAS,oCAAoC,QAAwB;AAC1E,QAAM,aAAqD,CAAC;AAC5D,QAAM,iBAA0D,CAAC;AAEjE,MAAI,CAAC,QAAQ;AACX,WAAO,EAAE,YAAY,eAAe;AAAA,EACtC;AAEA,QAAM,cAAc,OAAO,WAAW;AAEtC,aAAW,QAAQ,OAAO,OAAO,WAAW,GAAG;AAC7C,QAAI,KAAK,SAAS,SAAS,KAAK,wBAAwB;AACtD;AAAA,IACF;AAEA,UAAM,aAAa,YAAY,KAAK,IAAI;AACxC,UAAM,YAAY,WAAW,UAAU;AAEvC,eAAW,SAAS,KAAK,QAAQ,UAAU,CAAC,GAAG;AAC7C,kCAA4B,KAAK,SAAS,OAAO,cAAc;AAC/D,6BAAuB,KAAK,SAAS,OAAO,WAAW,UAAU;AAAA,IACnE;AAAA,EACF;AAEA,SAAO,EAAE,YAAY,eAAe;AACtC;AAEO,SAAS,gBAAgB,MAA+B;AAC7D,MAAI,KAAK,SAAS,KAAK,WAAW;AAChC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,MAAI,KAAK,SAAS,KAAK,eAAe;AACpC,WAAO,gBAAgB,KAAK,IAAI;AAAA,EAClC;AAEA,SAAO;AACT;AAEO,SAAS,mBAAmB,MAAuB;AACxD,SAAO,CAAC,UAAU,WAAW,MAAM,SAAS,KAAK,EAAE,SAAS,IAAI;AAClE;AAEO,SAAS,OAAU,KAAQ,GAAW,KAAmB;AAC9D,SAAO,MAAM,IAAI,QAAQ,GAAG;AAC9B;AAEO,SAAS,WAAW,KAAqB;AAC9C,SAAO,IAAI,GAAG;AAChB;AAEO,SAAS,OAAO,MAAc;AACnC,QAAM,QAAQ,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE;AAE/C,WAAS,YAAY,KAAqB;AACxC,WAAO,IACJ,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,IAAI,EAAE,EAC/B,KAAK,IAAI;AAAA,EACd;AAEA,SAAO;AACT;AAEO,SAAS,WAAW,EAAE,MAAM,MAAM,GAA8C;AACrF,MAAI,CAAC,MAAM,QAAQ;AACjB,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,GAAG,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,IAAI;AAC/D;AAEA,IAAM,kBAAkB,CAAC,UAAkB,aAAqB;AAC9D,QAAM,qBAAqB,UAAU,QAAQ;AAC7C,QAAM,qBAAqB;AAAA,IACzB,UAAU,wBAAwB,QAAQ,CAAC;AAAA,EAC7C;AACA,QAAM,CAAC,EAAE,YAAY,IAAI,mBAAmB,MAAM,kBAAkB;AACpE,SAAO;AACT;AAEO,SAAS,qBACd,SACA,UAC0B;AAC1B,QAAM,UAAoC,CAAC;AAE3C,aAAW,UAAU,SAAS;AAC5B,QAAI,CAAC,OAAO,UAAU;AACpB;AAAA,IACF;AAEA,UAAM,eAAe,gBAAgB,OAAO,UAAU,QAAQ;AAE9D,QAAI,cAAc;AAEhB,YAAM,MAAM,uBAAuB,OAAO,UAAU,QAAQ;AAE5D,UAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,gBAAQ,GAAG,IAAI,CAAC;AAAA,MAClB;AAEA,cAAQ,GAAG,EAAE,KAAK,MAAM;AAAA,IAC1B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,UAAkB,UAA0B;AAC1E,QAAM,eAAe,gBAAgB,UAAU,QAAQ;AAEvD,QAAM,CAAC,eAAe,IAAI,aAAa,MAAM,GAAG;AAEhD,SAAO;AACT;AAEO,SAAS,cAAc,MAAc;AAC1C,QAAM,aAAa,MAAM,IAAI;AAC7B,SAAO,UAAU,WAAW,GAAG;AACjC;AAEO,SAAS,UAAU,MAAc;AACtC,SAAO,KAAK,QAAQ,OAAO,GAAG;AAChC;AAEA,SAAS,wBAAwB,MAAc;AAC7C,SAAO,KAAK,SAAS,GAAG,IAAI,OAAO,OAAO;AAC5C;AAEA,SAAS,0BAA0B,MAAc;AAC/C,SAAO,KAAK,WAAW,GAAG,IACtB,KAAK,QAAQ,iBAAiB,GAAG,IACjC,KAAK,WAAW,GAAG,IACjB,OACA,IAAI,IAAI;AAChB;AAKO,SAAS,WAAc,MAAW,MAAe;AACtD,MAAI,CAAC,KAAK,SAAS,IAAI,GAAG;AACxB,SAAK,KAAK,IAAI;AAAA,EAChB;AACF;AAEO,SAAS,YACd,MACA,OACA,KACA;AAGA,SAAO,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD;AAEO,SAAS,YACd,MACA,OACA,KACA;AACA,SAAO,KAAK,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,SAAS,IAAI,CAAC;AAC9D;AAEO,SAAS,aAAkC,MAAW,SAAwB;AACnF,QAAM,MAAoB,CAAC;AAE3B,aAAW,OAAO,MAAM;AACtB,QAAI,GAAG,IAAI,QAAQ,GAAG;AAAA,EACxB;AAEA,SAAO;AACT;;;ADxTA,IAAM,eAA+B;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,SAAS,YACd,MACA,KACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAcQ;AACR,QAAM,QAAwD;AAAA,IAC5D;AAAA,IACA,OAAO,CAAC;AAAA,EACV;AACA,QAAM,UAAoB,aAAa,cAAc,MAAM,CAAC,CAAC;AAC7D,QAAM,WAAqB,aAAa,cAAc,MAAM,CAAC,CAAC;AAG9D,QAAM,YAAY,iBAAiB,GAAG;AAEtC,QAAM,KAAK;AAAA,IACT,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,0BAA0B,MAAM;AAC9B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,yBAAyB,MAAM;AAC7B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,wBAAwB,MAAM;AAC5B,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,uBAAuB,MAAM;AAC3B,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,qBAAqB,MAAM;AACzB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,oBAAoB,MAAM;AACxB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,mBAAmB,MAAM;AACvB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,IACA,mBAAmB,MAAM;AACvB,4BAAsB,IAAI;AAAA,IAC5B;AAAA,IACA,kBAAkB,MAAM;AACtB,2BAAqB,IAAI;AAAA,IAC3B;AAAA,EACF,CAAC;AAGD,QAAM,UAAoB;AAAA,IAAa;AAAA,IAAc,CAAC,QACpD,YAAY,SAAS,UAAU,GAAG;AAAA,EACpC;AAGA,QAAM,WAAqB;AAAA,IAAa;AAAA,IAAc,CAAC,QACrD,YAAY,UAAU,SAAS,GAAG;AAAA,EACpC;AAWA,QAAM,UAAU;AAAA,IACd,eAAe,eAAe,UAAU,UAAU;AAAA,IAClD;AAAA,IACA;AAAA,EACF;AAEA,MAAI,gBAAgB;AAClB,YAAQ,KAAK,gCAAgC,cAAc,IAAI;AAAA,EACjE;AAEA,UAAQ,KAAK,IAAI;AAEjB,MAAI,UAAU;AAAA,IACZ,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,wBAAwB;AAAA,IACxB,iBAAiB,SAAS;AAAA,IAC1B,cAAc;AAAA,EAChB,EACG,OAAO,OAAO,EACd,KAAK,MAAM;AAEd,QAAM,kBAAkB,YAAY,YAAY,MAAM;AAAA,IACpD,QAAQ;AAAA,IACR,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB,CAAC;AAED,MAAI,gBAAgB,aAAa;AAC/B,cAAU,GAAG,gBAAgB,YAAY,QAAQ,cAAc,YAAY,YAAY,MAAM;AAAA,MAC3F,QAAQ;AAAA,MACR,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,CAAC;AAAA,EAAO,gBAAgB,GAAG,OAAO,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC;AAAA,IAAO,EAAE,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC;AAAA;AAAA,EACzF;AAEA,SAAO,CAAC,GAAI,gBAAgB,CAAC,IAAI,SAAU,SAAS,mBAAmB,CAAC,EACrE,OAAO,OAAO,EACd,KAAK,IAAI;AAEZ,WAAS,gBAAgB;AACvB,WAAO;AAAA,uBACY,IAAI;AAAA,8BACG,IAAI;AAAA,2BACP,KAAK,UAAU,GAAG,CAAC;AAAA,IAC1C,kBAAkB,CAAC;AAAA;AAAA,EAErB;AAKA,WAAS,qBAAqB;AAC5B,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,CAAC,GAAG,QAAQ,SAAS,GAAG,QAAQ,UAAU,EAAE;AAAA,QACjD,CAAC,aACC,GAAG,QAAQ,KAAK,WAAW,UAAU;AAAA,UACnC,GAAG,MAAM;AAAA,UACT,GAAG,MAAM;AAAA,QACX,CAAC,CAAC;AAAA,MACN;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,qBAAqB;AAC5B,UAAMC,QAAO,gBAAgB,MAAM,GAAG,gBAAgB,SAAS,CAAC;AAChE,UAAM,iBAAiB,SAASA,KAAI;AACpC,UAAM,cAAc,MAAMA,KAAI;AAC9B,UAAM,gBAAgB,iBAAiB,sBAAsB;AAE7D,WAAO;AAAA,eACI,cAAc,oDAAoD,aAAa;AAAA,eAC/E,WAAW,kCAAkC,cAAc;AAAA;AAAA,EAExE;AAMA,WAAS,gCAAgC,UAAkB,OAAe;AACxE,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,aAAa,cAAc,UAAU,KAAK;AAChD,UAAM,gBAAgB,YAAY,UAAU,KAAK;AACjD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,kCAAkC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,QAAQ,OAAO,KAAK;AAAA,EACxI;AAEA,WAAS,2BAA2B,UAAkB,SAAmC;AACvF,UAAM,SACJ,QAAQ,QAAQ,GACZ,OAAO,MAAM,EACd,IAAI,CAAC,UAAU,gCAAgC,UAAU,KAAK,CAAC,KAAK,CAAC;AAE1E,QAAI,OAAO,WAAW,GAAG;AACvB,aAAO;AAAA,IACT;AAEA,UAAM,aAAa,cAAc,QAAQ;AACzC,UAAM,cAAc,eAAe;AAEnC,UAAM,SAAS,CAAC,+BAA+B,UAAU,KAAK,WAAW,MAAM,QAAQ,KAAK;AAC5F,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AACnE,UAAMC,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,GAAG,QAAQ,KAAKA,QAAO;AAAA,EAChC;AAEA,WAAS,8BAA8B,OAAe;AACpD,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,aAAa,cAAc,gBAAgB,KAAK;AACtD,UAAM,gBAAgB,YAAY,gBAAgB,KAAK;AACvD,UAAM,cAAc,eAAe;AACnC,WAAO,GAAG,KAAK,sCAAsC,UAAU,KAAK,UAAU,KAAK,WAAW,KAAK,aAAa,MAAM,KAAK;AAAA,EAC7H;AAEA,WAAS,iCAAiC;AACxC,UAAM,gBAAgB,MAAM,QAAQ,cAAc,OAAO,MAAM,KAAK,CAAC;AAErE,QAAI,cAAc,WAAW,GAAG;AAC9B,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,cAAc,IAAI,CAAC,iBAAiB,8BAA8B,YAAY,CAAC;AAE9F,UAAM,aAAa,cAAc,cAAc;AAC/C,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,uCAAuC,UAAU,KAAK,WAAW,MAAM;AACvF,UAAM,cAAc,CAAC,GAAG,QAAQ,GAAG,MAAM,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAEnE,UAAMA,WAAU;AAAA,EAAM,WAAW;AAAA;AACjC,WAAO,iBAAiBA,QAAO;AAAA,EACjC;AAEA,WAAS,qBAAqB;AAC5B,UAAM,UAAU,QAAQ;AACxB,QAAI,QAAQ,WAAW,GAAG;AACxB,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,QAAQ,IAAI,CAAC,WAAW,GAAG,MAAM,iCAAiC,MAAM,KAAK;AAC5F,UAAMA,WAAU,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAC/C,WAAO;AAAA,EAAcA,QAAO;AAAA;AAAA,EAC9B;AAEA,WAAS,oBAAoB;AAC3B,UAAM,UAAU,QAAQ,QACrB,OAAO,CAAC,SAAS,SAAS,cAAc,EACxC,IAAI,CAAC,aAAa,2BAA2B,UAAU,MAAM,OAAO,CAAC,EACrE,OAAO,OAAO;AAEjB,UAAM,cAAc,eAAe;AACnC,UAAM,SAAS,CAAC,iCAAiC,WAAW,MAAM;AAElE,UAAM,aAAa;AAAA,MACjB,GAAG;AAAA,MACH,GAAG;AAAA,MACH,mBAAmB;AAAA,MACnB,+BAA+B;AAAA,IACjC;AAEA,UAAM,OAAO,WAAW,OAAO,OAAO,EAAE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,IAAI;AAChE,UAAMA,WAAU;AAAA,EAAM,IAAI;AAAA;AAE1B,WAAO;AAAA;AAAA,aAEEA,QAAO;AAAA;AAAA,EAElB;AAKA,WAAS,yBAAyB;AAChC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,MAAM,IAAI,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,KAAK,CAAC,GAAG;AAAA,IAC7F,CAAC;AAAA,EACH;AAEA,WAAS,oBAAoB,UAA0B;AACrD,QAAI,gBAAgB,UAAU;AAC5B,aAAO,GAAG,WAAW,IAAI,CAAC,IAAI,QAAQ;AAAA,IACxC;AAEA,WAAO;AAAA,EACT;AAKA,WAAS,0BAA0B;AACjC,WAAO,WAAW;AAAA,MAChB,MAAM;AAAA,MACN,OAAO,QAAQ,OAAO;AAAA,QACpB,CAAC,aAAa,GAAG,QAAQ,KAAK,WAAW,UAAU,MAAM,MAAM,CAAC;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAKA,WAAS,iBAAiB,OAAiB;AACzC,WAAO,MACJ,OAAO,CAAC,SAAS,CAAC,QAAQ,QAAQ,SAAS,IAAI,CAAC,EAChD,IAAI,eAAe,EACnB,KAAK,IAAI;AAAA,EACd;AAEA,WAAS,WAAW,UAAkB,SAA2C;AAC/E,WAAO,QAAQ,QAAQ,EAAE,OAAO,MAAM,EAAE,IAAI,UAAU,EAAE,KAAK,KAAK;AAAA,EACpE;AAEA,WAAS,cAAc,UAA0B;AAC/C,UAAM,WAAW,GAAG,eAAe,IAAI,YAAY,YAAY,UAAU;AAAA,MACvE,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,IAClB,CAAC,CAAC;AAEF,QAAI,SAAS,MAAM,SAAS,QAAQ,KAAK,SAAS,QAAQ,SAAS,QAAQ,GAAG;AAC5E,UAAI,UAAU,aAAa,OAAO,QAAQ,QAAQ,CAAC,GAAG;AACpD,eAAO,GAAG,eAAe,aAAa,QAAQ;AAAA,MAChD;AAEA,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,MAAM,SAAS,QAAQ,KAAK,MAAM,MAAM,QAAQ,GAAG;AAC7D,aAAO,sBAAsB,QAAQ;AAAA,IACvC;AAEA,QAAI,QAAQ,QAAQ,SAAS,QAAQ,KAAK,MAAM,QAAQ,QAAQ,GAAG;AACjE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,WAAW,SAAS,QAAQ,KAAK,MAAM,WAAW,QAAQ,GAAG;AACvE,aAAO,QAAQ,QAAQ,oBAAoB,QAAQ;AAAA,IACrD;AAEA,QAAI,QAAQ,OAAO,SAAS,QAAQ,KAAK,MAAM,OAAO,QAAQ,GAAG;AAC/D,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ;AAAA,IAC1D;AAEA,WAAO;AAAA,EACT;AAEA,WAAS,gBAAgB,UAA0B;AACjD,WAAO,eAAe,oBAAoB,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC;AAAA,EAClF;AAUA,WAAS,cACP,MAOA,UACA;AACA,UAAMD,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,SAASA,KAAI,GAAG;AACnB,iBAASA,KAAI,IAAI,CAAC;AAAA,MACpB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,iBAASA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAAsD;AACnF,UAAMA,QAAO,KAAK,KAAK;AAEvB,QAAI,KAAK,QAAQ;AACf,UAAI,CAAC,MAAM,MAAMA,KAAI,GAAG;AACtB,cAAM,MAAMA,KAAI,IAAI,CAAC;AAAA,MACvB;AAEA,iBAAW,SAAS,KAAK,QAAQ;AAC/B,cAAM,MAAMA,KAAI,EAAE,KAAK,MAAM,KAAK,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,WAAS,sBAAsB,MAA0B;AACvD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKE,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKF,KAAI;AACzB,sBAAc,MAAM,MAAM,OAAO;AACjC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,sBAAsB;AAC9B,gBAAQ,MAAM,KAAKF,KAAI;AACvB,8BAAsB,IAAI;AAC1B;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,8BAA8B;AACtC,gBAAQ,OAAO,KAAKF,KAAI;AACxB,sBAAc,MAAM,MAAM,MAAM;AAChC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,wBAAwB;AAChC,gBAAQ,QAAQ,KAAKF,KAAI;AACzB;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,2BAA2B;AACnC,gBAAQ,WAAW,KAAKF,KAAI;AAC5B,sBAAc,MAAM,MAAM,UAAU;AACpC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,uBAAuB;AAC/B,gBAAQ,OAAO,KAAKF,KAAI;AACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,qBAAqB,MAAyB;AACrD,UAAMA,QAAO,KAAK,KAAK;AAEvB,YAAQ,KAAK,MAAM;AAAA,MACjB,KAAKE,MAAK,uBAAuB;AAC/B,sBAAc,MAAM,MAAM,OAAO;AAGjC,YAAI,UAAU,SAASF,KAAI,GAAG;AAC5B,qBAAW,QAAQ,SAASA,KAAI;AAChC;AAAA,QACF;AAEA,mBAAW,SAAS,SAASA,KAAI;AAEjC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,qBAAqB;AAC7B,8BAAsB,IAAI;AAC1B,mBAAW,SAAS,OAAOF,KAAI;AAC/B;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,6BAA6B;AACrC,sBAAc,MAAM,MAAM,MAAM;AAChC,mBAAW,SAAS,QAAQF,KAAI;AAChC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,0BAA0B;AAClC,sBAAc,MAAM,MAAM,UAAU;AACpC,mBAAW,SAAS,YAAYF,KAAI;AACpC;AAAA,MACF;AAAA,MAEA,KAAKE,MAAK,sBAAsB;AAC9B,mBAAW,SAAS,QAAQF,KAAI;AAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS,cAAc,MAAc;AACnC,QAAI,CAAC,SAAS,YAAY,cAAc,EAAE,SAAS,IAAI,GAAG;AACxD,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,MAAc,OAAe;AAClD,WAAO,aAAa,IAAI,IAAI,KAAK,KAAK;AAAA,EACxC;AAEA,WAAS,YAAY,MAAc,OAAe;AAChD,UAAM,UAAU,iBAAiB,IAAI,IAAI,KAAK,KAAK;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAM,aAAa,MAAM,CAAC,EAAE,YAAY,IAAI,MAAM,MAAM,CAAC;AACzD,WAAO,SAAS,IAAI,GAAG,UAAU;AAAA,EACnC;AAEA,WAAS,iBAAiB;AACxB,WAAO;AAAA,EACT;AACF;;;ADlhBO,IAAM,SAA4C;AAAA,EACvD,uBAAuB,CAAC,YAAY;AAClC,UAAM,EAAE,cAAc,IAAI;AAC1B,UAAM,EAAE,eAAe,gBAAgB,uBAAuB,IAAI,QAAQ;AAE1E,UAAM,uBAAuB,eAAe,SAAS,aAAa,sBAAsB,KAAK;AAE7F,UAAM,MAAM,QAAQ,QAAQ,aAAa,OAAO,QAAQ,IAAI,CAAC;AAC7D,UAAM,uBAAuB,QAAQ,aAAa,wBAAwB;AAE1E,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,QAAQ,WAAW,WAAW,SAAS;AAC1C,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAEA,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,UAAW,YAAY,mBAAmB,CAAC;AACjD,UAAM,qBAAqB,qBAAqB,SAAS,aAAa;AACtE,UAAM,UAAU,OAAO,KAAK,kBAAkB;AAE9C,UAAM,cAAc,IAAI,YAAY,QAAQ,QAAQ,CAAC,CAAC;AACtD,UAAM,EAAE,YAAY,eAAe,IAAI,oCAAoC,QAAQ,SAAS;AAG5F,UAAM,aAAoC;AAAA,MACxC,UAAU,QAAQ,KAAK,eAAe,aAAa;AAAA,MACnD,QAAQ,QAAQ;AAAA,MAChB,WAAW,QAAQ;AAAA,MACnB,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX;AAAA,UACE,4BAA4B,CAAC;AAAA,QAC/B;AAAA,MACF;AAAA,MACA,WAAW;AAAA,QACT,GAAG,QAAQ;AAAA,QACX,4BAA4B;AAAA,UAC1B,QAAQ,CAAC,WAAW;AAClB,kBAAM,UAAU,OAAO,WAAW;AAElC,mBAAO,OAAO,KAAK,OAAO,EACvB,IAAI,CAAC,MAAM;AACV,kBAAI,KAAK,QAAQ,CAAC,KAAKG,cAAa,QAAQ,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG;AACzE,sBAAM,gBAAgB,YAAY,YAAY,CAAC;AAC/C,uBAAO,eAAe,aAAa,eAAe,CAAC;AAAA,cACrD;AAEA,qBAAO;AAAA,YACT,CAAC,EACA,OAAO,OAAO,EACd,KAAK,IAAI;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,QAAQ;AAAA,QACX,cAAc;AAAA,MAChB;AAAA,MACA,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,oBAAoB,cAAc,QAAQ,mBAAmB,EAAE;AACrE,UAAM,eAAe,cAAc,WAAW,QAAQ;AAGtD,UAAM,UAAmC,QAAQ,IAAI,CAAC,eAAe;AACnE,YAAM,WAAW,QAAQ,KAAK,eAAe,YAAY,QAAQ,aAAa,QAAQ;AACtF,YAAM,UAAU,cAAc,QAAQ;AACtC,YAAM,eAAe,SAAS,SAAS,YAAY;AACnD,YAAM,aACJ,QAAQ,aAAa,uBACrB,UAAU,KAAK,cAAc,iBAAiB,CAAC;AACjD,YAAMC,WAAU,mBAAmB,UAAU;AAE7C,YAAM,YAAYA,SAAQ,IAAI,CAAC,WAAW,OAAO,QAAQ;AAEzD,YAAM,iBAAiB,UAAU,SAAS;AAE1C,YAAM,gBAAgB,SAAS,SAAS,OAAO;AAE/C,aAAO;AAAA,QACL;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,CAAC;AAAA,QACZ,SAAS;AAAA,UACP,GAAG,QAAQ,QAAQ,OAAO,CAAC,MAAM,OAAO,MAAM,YAAY,CAAC,CAAC,EAAE,GAAG;AAAA,UACjE;AAAA,YACE,0BAA0B,CAAC;AAAA,UAC7B;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT,GAAG,QAAQ;AAAA,UACX,0BAA0B;AAAA,YACxB,QAAQ,CAAC,WACP,YAAY,YAAY,gBAAgB;AAAA,cACtC,iBAAiB;AAAA,cACjB;AAAA,cACA,aAAa,0BAA0B;AAAA,cACvC;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,mBAAmB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA,WAAW;AAAA,gBACT,OAAO,aAAa,GAAG,QAAQ;AAAA,gBAC/B,OAAO,gBAAgB,GAAG,QAAQ;AAAA,gBAClC,OAAO,oBAAoB,GAAG,QAAQ;AAAA,cACxC,EAAE,OAAO,OAAO;AAAA,YAClB,CAAC;AAAA,UACL;AAAA,QACF;AAAA,QACA,QAAQ,QAAQ;AAAA,QAChB,WAAW,QAAQ;AAAA,MACrB;AAAA,IACF,CAAC;AAED,WAAO,CAAC,UAAU,EAAE,OAAO,OAAO;AAAA,EACpC;AACF;;;ALnIA,eAAsB,SAAS,SAAqC;AAClE,QAAM,aAAa;AAAA,IACjB,SAAS,yBAAyB,QAAQ,OAAO;AAAA,IACjD,YAAY,QAAQ;AAAA,IACpB,eAAe,QAAQ;AAAA,IACvB,aAAa,QAAQ;AAAA,IACrB,sBAAsB,QAAQ;AAAA,IAC9B,SAAS,QAAQ;AAAA,IACjB,SAAS,gBAAgB,CAAC,cAAc,SAAS,CAAC;AAAA,IAClD,WAAW;AAAA,MACT,YAAY;AAAA,MACZ,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,QAAQ,YAAY;AAE1B,QAAM,mBAA+C,CAAC;AACtD,aAAW,OAAO,WAAW,SAAS;AACpC,QAAI,OAAO,QAAQ,UAAU;AAC3B,uBAAiB,GAAG,IAAI,CAAC;AAAA,IAC3B,WAAW,OAAO,QAAQ,UAAU;AAClC,aAAO,OAAO,kBAAkB,GAAG;AAAA,IACrC;AAAA,EACF;AAEA,QAAM,OAAO,KAAK,UAAU,gBAAgB;AAC5C,QAAM,SAAS,MAAM,MAAM,UAAU,MAAM,YAAY;AACrD,WAAO,WAAW,kBAAkB,QAAQ,GAAG;AAAA,EACjD,CAAC;AAED,QAAM,UAAU,MAAc,OAAO,sBAAsB;AAAA,IACzD,eAAe,QAAQ;AAAA,IACvB,cAAc;AAAA,MACZ,eAAe,WAAW;AAAA,MAC1B,UAAU,WAAW;AAAA,MACrB,wBAAwB;AAAA,MACxB,gBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,QAAQ,OAAO;AAAA,IACf,WAAW,OAAO;AAAA,IAClB,WAAW,CAAC;AAAA,IACZ,WAAW,WAAW;AAAA,IACtB,SAAS,WAAW;AAAA,IACpB,QAAQ;AAAA,MACN,iBAAiB;AAAA,MACjB,aAAa,WAAW;AAAA,MACxB,gBAAgB;AAAA,MAChB,SAAS;AAAA,QACP,GAAG,WAAW;AAAA,MAChB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,WAAW,QAAQ,IAAI,OAAO,WAAW;AAC7C,UAAMC,UAAS,MAAM,WAAW;AAAA,MAC9B,GAAG;AAAA,MACH;AAAA,IACF,CAAC;AAED,WAAO;AAAA,MACL,UAAU,OAAO;AAAA,MACjB,SAASA;AAAA,IACX;AAAA,EACF,CAAC;AAED,SAAO,QAAQ,IAAI,QAAQ;AAC7B;;;AD1EO,SAAS,gBAAgB;AAC9B,SAAO,eAAe;AAAA,IACpB,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,OAAO,CAAC,SAAS,SAAS,WAAW;AACnC,YAAM,eAAe,CAAC,SAAsB;AAC1C,YAAI,QAAQ,KAAK,cAAc,QAAQ,OAAO,GAAG;AAC/C,iBAAO,IAAI;AAAA,QACb;AAAA,MACF;AAEA,cAAQ,GAAG,UAAU,YAAY;AACjC,cAAQ,GAAG,UAAU,YAAY;AAAA,IACnC;AAAA,IACA,UAAU,OAAO,KAAK,SAAS;AAC7B,YAAM,QAAQ,MAAM,SAAS,IAAI,gBAAgB;AAEjD,iBAAW,QAAQ,OAAO;AACxB,YAAI,YAAY,aAAa,KAAK,UAAU,KAAK,SAAS,SAAS;AAAA,MACrE;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACH;","names":["getCachedDocumentNodeFromSchema","getCachedDocumentNodeFromSchema","isScalarType","Kind","name","content","Kind","isScalarType","sources","result"]}
package/package.json CHANGED
@@ -1,6 +1,15 @@
1
1
  {
2
2
  "name": "@baeta/plugin-graphql",
3
- "version": "0.0.24-75-20230619184544-4493aaa",
3
+ "version": "0.0.24",
4
+ "keywords": [
5
+ "baeta",
6
+ "graphql",
7
+ "schema",
8
+ "types",
9
+ "typescript",
10
+ "framework",
11
+ "builder"
12
+ ],
4
13
  "homepage": "https://github.com/andreisergiu98/baeta#readme",
5
14
  "bugs": {
6
15
  "url": "https://github.com/andreisergiu98/baeta/issues"
@@ -11,7 +20,10 @@
11
20
  "directory": "packages/plugin-graphql"
12
21
  },
13
22
  "license": "MIT",
14
- "author": "Andrei Pampu <pampu.andrei@pm.me>",
23
+ "author": {
24
+ "name": "Andrei Pampu",
25
+ "url": "https://github.com/andreisergiu98"
26
+ },
15
27
  "type": "module",
16
28
  "exports": {
17
29
  ".": {
@@ -33,32 +45,32 @@
33
45
  "types": "tsc --noEmit"
34
46
  },
35
47
  "dependencies": {
36
- "@baeta/generator-sdk": "^0.0.9-75-20230619184544-4493aaa",
37
- "@graphql-codegen/core": "^3.1.0",
38
- "@graphql-codegen/plugin-helpers": "^4.2.0",
39
- "@graphql-codegen/typescript": "^3.0.4",
40
- "@graphql-codegen/visitor-plugin-common": "3.1.1",
48
+ "@baeta/generator-sdk": "^0.0.9",
49
+ "@graphql-codegen/core": "^4.0.0",
50
+ "@graphql-codegen/plugin-helpers": "^5.0.1",
51
+ "@graphql-codegen/typescript": "^4.0.1",
52
+ "@graphql-codegen/visitor-plugin-common": "4.0.1",
41
53
  "@graphql-tools/apollo-engine-loader": "^8.0.0",
42
- "@graphql-tools/code-file-loader": "^8.0.1",
43
- "@graphql-tools/git-loader": "^8.0.1",
54
+ "@graphql-tools/code-file-loader": "^8.0.3",
55
+ "@graphql-tools/git-loader": "^8.0.3",
44
56
  "@graphql-tools/github-loader": "^8.0.0",
45
57
  "@graphql-tools/graphql-file-loader": "^8.0.0",
46
58
  "@graphql-tools/json-file-loader": "^8.0.0",
47
- "@graphql-tools/load": "^8.0.0",
48
- "@graphql-tools/prisma-loader": "^8.0.1",
59
+ "@graphql-tools/load": "^8.0.1",
60
+ "@graphql-tools/prisma-loader": "^8.0.2",
49
61
  "@graphql-tools/url-loader": "^8.0.0",
50
- "@graphql-tools/utils": "^10.0.1",
62
+ "@graphql-tools/utils": "^10.0.11",
51
63
  "auto-bind": "^5.0.1",
52
- "change-case-all": "1.0.15",
64
+ "change-case-all": "2.1.0",
53
65
  "parse-filepath": "^1.0.2"
54
66
  },
55
67
  "devDependencies": {
56
68
  "@baeta/builder": "^0.0.0",
57
69
  "@baeta/tsconfig": "^0.0.0",
58
- "@types/node": "^18.16.18",
59
- "@types/parse-filepath": "1.0.0",
60
- "graphql": "^16.6.0",
61
- "typescript": "^5.1.3"
70
+ "@types/node": "^18.19.0",
71
+ "@types/parse-filepath": "1.0.2",
72
+ "graphql": "^16.8.1",
73
+ "typescript": "^5.3.2"
62
74
  },
63
75
  "peerDependencies": {
64
76
  "graphql": "^16.6.0"