@gqlbase/plugins 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.d.ts.map +1 -1
  2. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.js +2 -3
  3. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.js.map +1 -1
  4. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.utils.d.ts +0 -3
  5. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.utils.d.ts.map +1 -1
  6. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.utils.js +1 -7
  7. package/dist/appsync/AppSyncSchemaGeneratorPlugin/AppSyncSchemaGeneratorPlugin.utils.js.map +1 -1
  8. package/dist/base/ModelPlugin/ModelPlugin.d.ts +3 -0
  9. package/dist/base/ModelPlugin/ModelPlugin.d.ts.map +1 -1
  10. package/dist/base/ModelPlugin/ModelPlugin.js +40 -12
  11. package/dist/base/ModelPlugin/ModelPlugin.js.map +1 -1
  12. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.d.ts +1 -1
  13. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.d.ts.map +1 -1
  14. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.js +14 -12
  15. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.js.map +1 -1
  16. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.utils.d.ts +12 -1
  17. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.utils.d.ts.map +1 -1
  18. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.utils.js +27 -0
  19. package/dist/base/UtilitiesPlugin/UtilitiesPlugin.utils.js.map +1 -1
  20. package/dist/base/UtilitiesPlugin/index.d.ts +1 -1
  21. package/dist/base/UtilitiesPlugin/index.d.ts.map +1 -1
  22. package/dist/base/UtilitiesPlugin/index.js +1 -1
  23. package/dist/base/UtilitiesPlugin/index.js.map +1 -1
  24. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.d.ts +87 -0
  25. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.d.ts.map +1 -0
  26. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.js +326 -0
  27. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.js.map +1 -0
  28. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.d.ts +40 -0
  29. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.d.ts.map +1 -0
  30. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.js +78 -0
  31. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.js.map +1 -0
  32. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/index.d.ts +2 -0
  33. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/index.d.ts.map +1 -0
  34. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/index.js +2 -0
  35. package/dist/drizzle/DrizzleSchemaGeneratorPlugin/index.js.map +1 -0
  36. package/dist/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.d.ts +8 -0
  37. package/dist/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.d.ts.map +1 -0
  38. package/dist/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.js +10 -0
  39. package/dist/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.js.map +1 -0
  40. package/dist/drizzle/index.d.ts +2 -0
  41. package/dist/drizzle/index.d.ts.map +1 -0
  42. package/dist/drizzle/index.js +2 -0
  43. package/dist/drizzle/index.js.map +1 -0
  44. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.d.ts +68 -0
  45. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.d.ts.map +1 -0
  46. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.js +300 -0
  47. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.js.map +1 -0
  48. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.utils.d.ts +17 -0
  49. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.utils.d.ts.map +1 -0
  50. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.utils.js +24 -0
  51. package/dist/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.utils.js.map +1 -0
  52. package/dist/zod/ZodSchemaGeneratorPlugin/index.d.ts +2 -0
  53. package/dist/zod/ZodSchemaGeneratorPlugin/index.d.ts.map +1 -0
  54. package/dist/zod/ZodSchemaGeneratorPlugin/index.js +2 -0
  55. package/dist/zod/ZodSchemaGeneratorPlugin/index.js.map +1 -0
  56. package/dist/zod/index.d.ts +2 -0
  57. package/dist/zod/index.d.ts.map +1 -0
  58. package/dist/zod/index.js +2 -0
  59. package/dist/zod/index.js.map +1 -0
  60. package/package.json +4 -13
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleSchemaGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAIhG,OAAO,EACL,cAAc,EAWf,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EACL,KAAK,mCAAmC,EAMzC,MAAM,yCAAyC,CAAC;AAYjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,qBAAa,4BAA6B,SAAQ,qBAAqB;IACrE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,WAAW,CAAqB;gBAE5B,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,mCAAwC;IAK3F,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,uBAAuB;IA0C/B,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,uBAAuB;IAkH/B,OAAO,CAAC,cAAc;IA6Bf,MAAM;IAMN,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAS1C,QAAQ,CAAC,UAAU,EAAE,cAAc;IAUnC,MAAM;;;;;CA6Bd;AAED,eAAO,MAAM,4BAA4B,uGAAoD,CAAC"}
@@ -0,0 +1,326 @@
1
+ import ts from "typescript";
2
+ import { createPluginFactory, TransformerPluginBase } from "@gqlbase/core";
3
+ import { isBuildInScalar } from "@gqlbase/shared/definition";
4
+ import { createFileHeaders, jsonToObjectAst } from "@gqlbase/shared/codegen";
5
+ import { getTypeHint, isInternal } from "@gqlbase/core/plugins";
6
+ import { isDirectiveDefinitionNode, isEnumNode, isListTypeNode, isObjectLike, isObjectNode, isOperationNode, isScalarNode, } from "@gqlbase/core/definition";
7
+ import { TransformerPluginExecutionError } from "@gqlbase/shared/errors";
8
+ import { isClientOnly } from "../../base/UtilitiesPlugin/index.js";
9
+ import { isSemanticNullable } from "../../base/RfcFeaturesPlugin/index.js";
10
+ import { isRelationField } from "../../base/RelationsPlugin/index.js";
11
+ import { isModel } from "../../base/ModelPlugin/ModelPlugin.utils.js";
12
+ import { mergeOptions, toTableName, toTableVarName, resolveScalarType, resolveTypeHintType, } from "./DrizzleSchemaGeneratorPlugin.utils.js";
13
+ import { camelCase, snakeCase } from "@gqlbase/shared/format";
14
+ import { isBelongsToRelationship, isManyRelationship, isOneRelationship, isPaginationConnection, parseFieldRelation, } from "../../base/RelationsPlugin/RelationsPlugin.utils.js";
15
+ import { isRelayConnection, isRelayEdge } from "../../relay/index.js";
16
+ /**
17
+ * Generates Drizzle schema definitions based on the GraphQL schema. Supports PostgreSQL, MySQL, and SQLite via configurable scalar mappings.
18
+ *
19
+ * @example
20
+ * ```graphql
21
+ * # schema.graphql
22
+ * type User `@model` {
23
+ * id: ID!
24
+ * email: String!
25
+ * name: String!
26
+ * nickname: String
27
+ * posts: Post! `@hasMany`
28
+ * }
29
+ *
30
+ * type Post `@model` {
31
+ * id: ID!
32
+ * title: String!
33
+ * content: String
34
+ * }
35
+ * ```
36
+ *
37
+ * ```ts
38
+ * // drizzle/schema.ts (generated)
39
+ * import { relations } from "drizzle-orm";
40
+ * import { pgTable, uuid, text } from "drizzle-orm/pg-core";
41
+ *
42
+ * export const users = pgTable("users", {
43
+ * id: uuid("id").primaryKey().defaultRandom(),
44
+ * email: text("email").notNull(),
45
+ * name: text("name").notNull(),
46
+ * nickname: text("nickname")
47
+ * });
48
+ *
49
+ * export const usersRelations = relations(users, ({ many }) => ({
50
+ * posts: many(posts)
51
+ * }));
52
+ *
53
+ * export const posts = pgTable("posts", {
54
+ * id: uuid("id").primaryKey().defaultRandom(),
55
+ * userId: uuid("user_id").notNull(),
56
+ * title: text("title").notNull(),
57
+ * content: text("content")
58
+ * }));
59
+ *
60
+ * export const postsRelations = relations(posts, ({ one }) => ({
61
+ * user: one(users, {
62
+ * fields: [posts.userId],
63
+ * references: [users.id],
64
+ * })
65
+ * }));
66
+ *
67
+ */
68
+ export class DrizzleSchemaGeneratorPlugin extends TransformerPluginBase {
69
+ nodes = [];
70
+ options;
71
+ drizzleImports = new Set();
72
+ typeImports = new Set();
73
+ constructor(context, options = {}) {
74
+ super("DrizzleSchemaGeneratorPlugin", context);
75
+ this.options = mergeOptions(options);
76
+ }
77
+ _getContent(nodes) {
78
+ const file = ts.createSourceFile(this.options.fileName, "", ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
79
+ const printer = ts.createPrinter({
80
+ newLine: ts.NewLineKind.CarriageReturnLineFeed,
81
+ removeComments: false,
82
+ });
83
+ return printer.printList(ts.ListFormat.MultiLine, ts.factory.createNodeArray(nodes), file);
84
+ }
85
+ _callExp(name, args = []) {
86
+ return ts.factory.createCallExpression(ts.factory.createIdentifier(name), undefined, args);
87
+ }
88
+ _chainCallExp(expr, method, args = [], typeArgs = undefined) {
89
+ return ts.factory.createCallExpression(ts.factory.createPropertyAccessExpression(expr, ts.factory.createIdentifier(method)), typeArgs, args);
90
+ }
91
+ _objectLiteralExp(props) {
92
+ return ts.factory.createObjectLiteralExpression(props.map(([propName, [idl, idr]]) => ts.factory.createPropertyAssignment(ts.factory.createIdentifier(propName), ts.factory.createArrayLiteralExpression([
93
+ ts.factory.createPropertyAccessExpression(ts.factory.createIdentifier(idl), ts.factory.createIdentifier(idr)),
94
+ ]))), true);
95
+ }
96
+ _createExportedConst(name, initializer) {
97
+ return ts.factory.createVariableStatement([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], ts.factory.createVariableDeclarationList([ts.factory.createVariableDeclaration(name, undefined, undefined, initializer)], ts.NodeFlags.Const));
98
+ }
99
+ _createNamedImport(from, names, isTypeOnly = false) {
100
+ return ts.factory.createImportDeclaration(undefined, ts.factory.createImportClause(undefined, undefined, ts.factory.createNamedImports(names.map((n) => ts.factory.createImportSpecifier(isTypeOnly, undefined, ts.factory.createIdentifier(n))))), ts.factory.createStringLiteral(from), undefined);
101
+ }
102
+ _shouldSkipField(field) {
103
+ return isInternal(field) || isClientOnly(field) || isRelationField(field);
104
+ }
105
+ _resolveScalarColumn(typeName, columnDbName) {
106
+ let columnType = resolveScalarType(typeName, this.options);
107
+ if (!columnType) {
108
+ const typeDef = this.context.document.getNodeOrThrow(typeName);
109
+ if (isScalarNode(typeDef)) {
110
+ const hint = getTypeHint(typeDef);
111
+ columnType = resolveTypeHintType(hint);
112
+ }
113
+ if (!columnType) {
114
+ throw new TransformerPluginExecutionError(this.name, `Unsupported scalar type "${typeName}". Please provide a mapping via options.scalarMap or ensure the scalar has a valid @gqlbase_typehint.`);
115
+ }
116
+ }
117
+ const callArgs = [ts.factory.createStringLiteral(columnDbName)];
118
+ if (columnType.config) {
119
+ callArgs.push(jsonToObjectAst(columnType.config));
120
+ }
121
+ this.drizzleImports.add(columnType.type);
122
+ return this._callExp(columnType.type, callArgs);
123
+ }
124
+ _isPrimaryKey(field) {
125
+ return field.name === "id";
126
+ }
127
+ _applyColumnContraints(column, field) {
128
+ let expr = column;
129
+ if (this._isPrimaryKey(field)) {
130
+ expr = this._chainCallExp(expr, "primaryKey");
131
+ expr = this._chainCallExp(expr, "defaultRandom");
132
+ return expr; // id is always non-null via primaryKey, skip further processing
133
+ }
134
+ if (isListTypeNode(field.type)) {
135
+ expr = this._chainCallExp(expr, "array");
136
+ }
137
+ if (!isSemanticNullable(field)) {
138
+ expr = this._chainCallExp(expr, "notNull");
139
+ }
140
+ // TODO: aditional contraints based on `parseConstraints(field)` from UtilitiesPlugin and passed as options, eg. dates as text.
141
+ // some `base` scalars will also have predefined constrains, like EmailAddress, IPAddress, URL, etc. which we can apply here as well.
142
+ // For defaults, we should consider register directives so we can reliably identify them here, instead of relying on heuristics like field name + type.
143
+ return expr;
144
+ }
145
+ _createColumnExpression(field) {
146
+ const fieldTypeName = field.type.getTypeName();
147
+ const columnDbName = snakeCase(field.name);
148
+ if (isBuildInScalar(fieldTypeName)) {
149
+ const column = this._resolveScalarColumn(fieldTypeName, columnDbName);
150
+ return this._applyColumnContraints(column, field);
151
+ }
152
+ const typeDef = this.context.document.getNodeOrThrow(fieldTypeName);
153
+ if (isScalarNode(typeDef)) {
154
+ const column = this._resolveScalarColumn(fieldTypeName, columnDbName);
155
+ return this._applyColumnContraints(column, field);
156
+ }
157
+ if (isEnumNode(typeDef)) {
158
+ const enumVarName = camelCase(fieldTypeName, "enum");
159
+ const column = this._callExp(enumVarName, [ts.factory.createStringLiteral(columnDbName)]);
160
+ return this._applyColumnContraints(column, field);
161
+ }
162
+ if (isObjectLike(typeDef) && !isModel(typeDef) && !isOperationNode(typeDef)) {
163
+ this.drizzleImports.add("json");
164
+ this.typeImports.add(fieldTypeName);
165
+ const columnType = this._callExp("json", [ts.factory.createStringLiteral(columnDbName)]);
166
+ const typeRef = ts.factory.createTypeReferenceNode(fieldTypeName);
167
+ return this._applyColumnContraints(this._chainCallExp(columnType, "$type", [], [typeRef]), field);
168
+ }
169
+ throw new TransformerPluginExecutionError(this.name, `Unsupported field type "${field.type.getTypeName()}" for field "${field.name}".`);
170
+ }
171
+ _generateEnum(definition) {
172
+ if (!definition.values?.length) {
173
+ throw new TransformerPluginExecutionError(this.name, `Enum type ${definition.name} must have at least one value.`);
174
+ }
175
+ this.drizzleImports.add("pgEnum");
176
+ const enumDbName = snakeCase(definition.name, "enum");
177
+ const enumVarName = camelCase(definition.name, "enum");
178
+ const values = definition.values.map((v) => ts.factory.createStringLiteral(v.name));
179
+ const initializer = this._callExp("pgEnum", [
180
+ ts.factory.createStringLiteral(enumDbName),
181
+ ts.factory.createArrayLiteralExpression(values),
182
+ ]);
183
+ this.nodes.unshift(this._createExportedConst(enumVarName, initializer));
184
+ }
185
+ _resolveConnectionTarget(node) {
186
+ let typeName = node.name;
187
+ if (isObjectNode(node)) {
188
+ if (isPaginationConnection(node)) {
189
+ const targetName = node.getField("items")?.type.getTypeName();
190
+ if (targetName) {
191
+ typeName = targetName;
192
+ }
193
+ }
194
+ if (isRelayConnection(node)) {
195
+ const edgesField = node.getField("edges");
196
+ const edgeNode = edgesField
197
+ ? this.context.document.getNodeOrThrow(edgesField.type.getTypeName())
198
+ : null;
199
+ if (edgeNode && isObjectNode(edgeNode) && isRelayEdge(edgeNode)) {
200
+ const targetName = edgeNode.getField("node")?.type.getTypeName();
201
+ if (targetName) {
202
+ typeName = targetName;
203
+ }
204
+ }
205
+ }
206
+ }
207
+ return typeName;
208
+ }
209
+ _generateTableRelations(definition, tableVarName) {
210
+ const relations = [];
211
+ const cbParams = new Set();
212
+ for (const field of definition.fields ?? []) {
213
+ if (!isRelationField(field)) {
214
+ continue;
215
+ }
216
+ const target = this.context.document.getNodeOrThrow(field.type.getTypeName());
217
+ if (!isObjectLike(target)) {
218
+ throw new TransformerPluginExecutionError(this.name, `Invalid relation target for ${definition.name}.${field.name}: expected object or interface type, found ${target.kind}`);
219
+ }
220
+ const relation = parseFieldRelation(definition, field, target);
221
+ const relatedTableVarName = toTableVarName(field.type.getTypeName());
222
+ if (!relation?.key) {
223
+ throw new TransformerPluginExecutionError(this.name, `Relation key not found for ${definition.name}.${field.name}. Ensure the relation field has a valid @hasOne, @hasMany, or @belongsTo directive with the correct configuration.`);
224
+ }
225
+ if (isBelongsToRelationship(field)) {
226
+ // belongsTo (many-to-one) relation, defined on the "many" side, use `one()`
227
+ cbParams.add("one");
228
+ relations.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(field.name), this._callExp("one", [
229
+ ts.factory.createIdentifier(relatedTableVarName),
230
+ this._objectLiteralExp([
231
+ ["fields", [tableVarName, relation.key]],
232
+ ["references", [relatedTableVarName, "id"]],
233
+ ]),
234
+ ])));
235
+ }
236
+ if (isOneRelationship(field)) {
237
+ // one-to-one relation, defined on target side, use `one()`
238
+ cbParams.add("one");
239
+ relations.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(field.name), this._callExp("one", [
240
+ ts.factory.createIdentifier(relatedTableVarName),
241
+ this._objectLiteralExp([
242
+ ["fields", [relatedTableVarName, relation.key]],
243
+ ["references", [tableVarName, "id"]],
244
+ ]),
245
+ ])));
246
+ }
247
+ if (isManyRelationship(field)) {
248
+ // one-to-many relation, defined on the "one" side, use `many()`
249
+ cbParams.add("many");
250
+ const relatedTableVarName = toTableVarName(this._resolveConnectionTarget(target));
251
+ relations.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(field.name), this._callExp("many", [ts.factory.createIdentifier(relatedTableVarName)])));
252
+ }
253
+ }
254
+ if (relations.length > 0) {
255
+ const callback = ts.factory.createArrowFunction(undefined, undefined, [
256
+ ts.factory.createParameterDeclaration(undefined, undefined, ts.factory.createObjectBindingPattern([
257
+ ...Array.from(cbParams).map((param) => ts.factory.createBindingElement(undefined, undefined, ts.factory.createIdentifier(param), undefined)),
258
+ ])),
259
+ ], undefined, ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken), ts.factory.createParenthesizedExpression(ts.factory.createObjectLiteralExpression(relations, true)));
260
+ const initializer = this._callExp("relations", [
261
+ ts.factory.createIdentifier(tableVarName),
262
+ callback,
263
+ ]);
264
+ this.nodes.push(this._createExportedConst(camelCase(tableVarName, "relations"), initializer));
265
+ }
266
+ }
267
+ _generateTable(definition) {
268
+ this.drizzleImports.add("pgTable");
269
+ const tableName = toTableName(definition.name);
270
+ const tableVarName = toTableVarName(definition.name);
271
+ const columnProperties = [];
272
+ for (const field of definition.fields ?? []) {
273
+ if (this._shouldSkipField(field)) {
274
+ continue;
275
+ }
276
+ const columnExpr = this._createColumnExpression(field);
277
+ columnProperties.push(ts.factory.createPropertyAssignment(ts.factory.createIdentifier(field.name), columnExpr));
278
+ }
279
+ const initializer = this._callExp("pgTable", [
280
+ ts.factory.createStringLiteral(tableName),
281
+ ts.factory.createObjectLiteralExpression(columnProperties, true),
282
+ ]);
283
+ this.nodes.push(this._createExportedConst(tableVarName, initializer));
284
+ this._generateTableRelations(definition, tableVarName);
285
+ }
286
+ before() {
287
+ this.nodes = [];
288
+ this.drizzleImports.clear();
289
+ this.typeImports.clear();
290
+ }
291
+ match(definition) {
292
+ return (!isOperationNode(definition) &&
293
+ !isInternal(definition) &&
294
+ !isScalarNode(definition) &&
295
+ !isDirectiveDefinitionNode(definition));
296
+ }
297
+ generate(definition) {
298
+ if (isEnumNode(definition)) {
299
+ return this._generateEnum(definition);
300
+ }
301
+ if (isObjectNode(definition) && isModel(definition)) {
302
+ return this._generateTable(definition);
303
+ }
304
+ }
305
+ output() {
306
+ const headers = createFileHeaders();
307
+ const importNodes = [this._createNamedImport("drizzle-orm", ["relations"])];
308
+ if (this.drizzleImports.size > 0) {
309
+ importNodes.push(this._createNamedImport("drizzle-orm/pg-core", [...this.drizzleImports].sort()));
310
+ }
311
+ if (this.typeImports.size > 0) {
312
+ importNodes.push(this._createNamedImport("../models.typegen.js", [...this.typeImports].sort(), true));
313
+ }
314
+ const allNodes = [...headers, ...importNodes, ts.factory.createIdentifier("\n"), ...this.nodes];
315
+ const content = this._getContent(allNodes);
316
+ this.context.files.push({
317
+ type: "ts",
318
+ path: `drizzle/${this.options.fileName}`,
319
+ filename: this.options.fileName,
320
+ content,
321
+ });
322
+ return this.options.emitOutput ? { drizzleSchema: content } : {};
323
+ }
324
+ }
325
+ export const drizzleSchemaGeneratorPlugin = createPluginFactory(DrizzleSchemaGeneratorPlugin);
326
+ //# sourceMappingURL=DrizzleSchemaGeneratorPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleSchemaGeneratorPlugin.js","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { BuildInScalar } from "@gqlbase/shared/definition";
2
+ import { BaseScalarName } from "../../base/index.js";
3
+ import { JsonValue } from "@gqlbase/shared/codegen";
4
+ import { TypeHintValueType } from "@gqlbase/core/plugins";
5
+ export interface ScalarConfig {
6
+ type: string;
7
+ config?: Record<string, JsonValue>;
8
+ }
9
+ export interface DrizzleSchemaGeneratorPluginOptions {
10
+ dialect?: "postgresql" | "mysql" | "sqlite";
11
+ fileName?: string;
12
+ emitOutput?: boolean;
13
+ scalarMap?: Record<string, string | ScalarConfig>;
14
+ }
15
+ export declare const DEFAULT_OPTIONS: Required<Omit<DrizzleSchemaGeneratorPluginOptions, "scalarMap">> & {
16
+ scalarMap: Record<string, string>;
17
+ };
18
+ export declare const mergeOptions: (options?: DrizzleSchemaGeneratorPluginOptions) => {
19
+ scalarMap: {
20
+ [x: string]: string | ScalarConfig;
21
+ };
22
+ dialect: "postgresql" | "mysql" | "sqlite";
23
+ fileName: string;
24
+ emitOutput: boolean;
25
+ };
26
+ export declare const PG_BUILITIN_SCALAR_MAP: Record<BuildInScalar, string>;
27
+ /**
28
+ * Maps built-in GraphQL scalars and gqlbase base scalars to Drizzle pg-core column functions.
29
+ * Custom scalars (e.g. Decimal) must be provided via `options.scalarMap`.
30
+ */
31
+ export declare const PG_BASE_SCALAR_MAP: Record<BaseScalarName, string>;
32
+ /**
33
+ * Fallback mapping from @gqlbase_typehint values to Drizzle pg-core column functions.
34
+ */
35
+ export declare const TYPE_HINT_DRIZZLE_MAP: Record<TypeHintValueType, string>;
36
+ export declare function toTableName(typeName: string): string;
37
+ export declare function toTableVarName(typeName: string): string;
38
+ export declare function resolveScalarType(typeName: string, options: DrizzleSchemaGeneratorPluginOptions): ScalarConfig | null;
39
+ export declare const resolveTypeHintType: (typeHint: TypeHintValueType) => ScalarConfig;
40
+ //# sourceMappingURL=DrizzleSchemaGeneratorPlugin.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleSchemaGeneratorPlugin.utils.d.ts","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAgB,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,mCAAmC;IAClD,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC;CACnD;AAED,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC,GAAG;IAC/F,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAM1B,CAAC;AAEX,eAAO,MAAM,YAAY,GAAI,UAAS,mCAAwC;;;;aAflE,YAAY,GAAG,OAAO,GAAG,QAAQ;cAChC,MAAM;gBACJ,OAAO;CAmBrB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAMhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAW7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAOnE,CAAC;AAEF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mCAAmC,GAC3C,YAAY,GAAG,IAAI,CAoBrB;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,iBAAiB,KAAG,YAEjE,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { isBuildInScalar } from "@gqlbase/shared/definition";
2
+ import { snakeCase, pluralize, camelCase } from "@gqlbase/shared/format";
3
+ import { isBaseScalar } from "../../base/index.js";
4
+ export const DEFAULT_OPTIONS = {
5
+ dialect: "postgresql",
6
+ fileName: "schema.ts",
7
+ emitOutput: false,
8
+ scalarMap: {},
9
+ };
10
+ export const mergeOptions = (options = {}) => {
11
+ return {
12
+ ...DEFAULT_OPTIONS,
13
+ ...options,
14
+ scalarMap: { ...DEFAULT_OPTIONS.scalarMap, ...options.scalarMap },
15
+ };
16
+ };
17
+ export const PG_BUILITIN_SCALAR_MAP = {
18
+ ID: "uuid",
19
+ String: "text",
20
+ Int: "integer",
21
+ Float: "doublePrecision",
22
+ Boolean: "boolean",
23
+ };
24
+ /**
25
+ * Maps built-in GraphQL scalars and gqlbase base scalars to Drizzle pg-core column functions.
26
+ * Custom scalars (e.g. Decimal) must be provided via `options.scalarMap`.
27
+ */
28
+ export const PG_BASE_SCALAR_MAP = {
29
+ UUID: "uuid",
30
+ DateTime: "timestamp",
31
+ Date: "date",
32
+ Time: "time",
33
+ Timestamp: "integer",
34
+ URL: "text",
35
+ EmailAddress: "text",
36
+ PhoneNumber: "text",
37
+ IPAddress: "text",
38
+ JSON: "json",
39
+ };
40
+ /**
41
+ * Fallback mapping from @gqlbase_typehint values to Drizzle pg-core column functions.
42
+ */
43
+ export const TYPE_HINT_DRIZZLE_MAP = {
44
+ id: "uuid",
45
+ string: "text",
46
+ number: "doublePrecision",
47
+ boolean: "boolean",
48
+ object: "jsonb",
49
+ unknown: "text",
50
+ };
51
+ export function toTableName(typeName) {
52
+ return snakeCase(pluralize(typeName));
53
+ }
54
+ export function toTableVarName(typeName) {
55
+ return camelCase(pluralize(typeName));
56
+ }
57
+ export function resolveScalarType(typeName, options) {
58
+ if (options.scalarMap?.[typeName]) {
59
+ const mapping = options.scalarMap[typeName];
60
+ if (typeof mapping === "string") {
61
+ return { type: mapping };
62
+ }
63
+ else {
64
+ return mapping;
65
+ }
66
+ }
67
+ if (isBuildInScalar(typeName)) {
68
+ return { type: PG_BUILITIN_SCALAR_MAP[typeName] };
69
+ }
70
+ if (isBaseScalar(typeName)) {
71
+ return { type: PG_BASE_SCALAR_MAP[typeName] };
72
+ }
73
+ return null;
74
+ }
75
+ export const resolveTypeHintType = (typeHint) => {
76
+ return { type: TYPE_HINT_DRIZZLE_MAP[typeHint] };
77
+ };
78
+ //# sourceMappingURL=DrizzleSchemaGeneratorPlugin.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleSchemaGeneratorPlugin.utils.js","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/DrizzleSchemaGeneratorPlugin.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAkB,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAgBnE,MAAM,CAAC,MAAM,eAAe,GAExB;IACF,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,WAAW;IACrB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,EAAE;CACL,CAAC;AAEX,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAA+C,EAAE,EAAE,EAAE;IAChF,OAAO;QACL,GAAG,eAAe;QAClB,GAAG,OAAO;QACV,SAAS,EAAE,EAAE,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE;KAClE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAkC;IACnE,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,iBAAiB;IACxB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;IACpB,GAAG,EAAE,MAAM;IACX,YAAY,EAAE,MAAM;IACpB,WAAW,EAAE,MAAM;IACnB,SAAS,EAAE,MAAM;IACjB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsC;IACtE,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,OAA4C;IAE5C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAA2B,EAAgB,EAAE;IAC/E,OAAO,EAAE,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DrizzleSchemaGeneratorPlugin, drizzleSchemaGeneratorPlugin, } from "./DrizzleSchemaGeneratorPlugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DrizzleSchemaGeneratorPlugin, drizzleSchemaGeneratorPlugin, } from "./DrizzleSchemaGeneratorPlugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/drizzle/DrizzleSchemaGeneratorPlugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ITransformerContext, TransformerPluginBase } from "@gqlbase/core";
2
+ /**
3
+ * Provides utility directives for Drizzle schema generation.
4
+ */
5
+ export declare class DrizzleUtilitiesPlugin extends TransformerPluginBase {
6
+ constructor(context: ITransformerContext);
7
+ }
8
+ //# sourceMappingURL=DrizzleUtilitiesPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleUtilitiesPlugin.d.ts","sourceRoot":"","sources":["../../../src/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,OAAO,EAAE,mBAAmB;CAGzC"}
@@ -0,0 +1,10 @@
1
+ import { TransformerPluginBase } from "@gqlbase/core";
2
+ /**
3
+ * Provides utility directives for Drizzle schema generation.
4
+ */
5
+ export class DrizzleUtilitiesPlugin extends TransformerPluginBase {
6
+ constructor(context) {
7
+ super("DrizzleUtilitiesPlugin", context);
8
+ }
9
+ }
10
+ //# sourceMappingURL=DrizzleUtilitiesPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrizzleUtilitiesPlugin.js","sourceRoot":"","sources":["../../../src/drizzle/DrizzleUtilitiesPlugin/DrizzleUtilitiesPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3E;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,qBAAqB;IAC/D,YAAY,OAA4B;QACtC,KAAK,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { DrizzleSchemaGeneratorPlugin, drizzleSchemaGeneratorPlugin, } from "./DrizzleSchemaGeneratorPlugin/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DrizzleSchemaGeneratorPlugin, drizzleSchemaGeneratorPlugin, } from "./DrizzleSchemaGeneratorPlugin/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,yCAAyC,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { ITransformerContext, TransformerPluginBase } from "@gqlbase/core";
2
+ import { DefinitionNode } from "@gqlbase/core/definition";
3
+ import { ZodSchemaGeneratorPluginOptions } from "./ZodSchemaGeneratorPlugin.utils.js";
4
+ /**
5
+ * Generates Zod schemas for the defined types in the GraphQL schema. This can be used for runtime validation of data against the schema.
6
+ *
7
+ * @example
8
+ * ```graphql
9
+ * # schema.graphql
10
+ * enum UserRole {
11
+ * ADMIN
12
+ * USER
13
+ * }
14
+ *
15
+ * type User {
16
+ * id: ID!
17
+ * name: String! `@constraint(min: 3, max: 50)`
18
+ * email: String!
19
+ * role: UserRole!
20
+ * }
21
+ * ```
22
+ *
23
+ * ```typescript
24
+ * // generated/zod/validators.typegen.ts
25
+ * import { z } from "zod";
26
+ *
27
+ * export const UserRoleSchema = z.enum(["ADMIN", "USER"]);
28
+ *
29
+ * export const UserSchema = z.object({
30
+ * id: z.string(),
31
+ * name: z.string().min(3).max(50),
32
+ * email: z.string(),
33
+ * role: UserRoleSchema,
34
+ * });
35
+ * ```
36
+ */
37
+ export declare class ZodSchemaGeneratorPlugin extends TransformerPluginBase {
38
+ private nodes;
39
+ private options;
40
+ constructor(context: ITransformerContext, options?: ZodSchemaGeneratorPluginOptions);
41
+ private _getContent;
42
+ private _zCall;
43
+ private _chainCall;
44
+ private _parseZodExpression;
45
+ private _createScalarZodExpression;
46
+ private _applyConstraints;
47
+ private _applyNullable;
48
+ private _createOutputFieldZodExpression;
49
+ private _createInputFieldZodExpression;
50
+ private _createObjectFieldProperties;
51
+ private _createInputFieldProperties;
52
+ private _createSchemaConstDeclaration;
53
+ private _getSelfReferenceFields;
54
+ private _generateEnum;
55
+ private _generateObject;
56
+ private _generateInputObject;
57
+ private _generateUnion;
58
+ before(): void;
59
+ match(definition: DefinitionNode): boolean;
60
+ generate(definition: DefinitionNode): void;
61
+ output(): {
62
+ zodSchemas: string;
63
+ } | {
64
+ zodSchemas?: undefined;
65
+ };
66
+ }
67
+ export declare const zodSchemaGeneratorPlugin: (options?: ZodSchemaGeneratorPluginOptions | undefined) => import("@gqlbase/core").IPluginFactory;
68
+ //# sourceMappingURL=ZodSchemaGeneratorPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZodSchemaGeneratorPlugin.d.ts","sourceRoot":"","sources":["../../../src/zod/ZodSchemaGeneratorPlugin/ZodSchemaGeneratorPlugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAIhG,OAAO,EACL,cAAc,EAoBf,MAAM,0BAA0B,CAAC;AAWlC,OAAO,EAGL,+BAA+B,EAChC,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,qBAAa,wBAAyB,SAAQ,qBAAqB;IACjE,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,OAAO,CAA4C;gBAE/C,OAAO,EAAE,mBAAmB,EAAE,OAAO,GAAE,+BAAoC;IAKvF,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,0BAA0B;IA2ClC,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,+BAA+B;IA+BvC,OAAO,CAAC,8BAA8B;IAoCtC,OAAO,CAAC,4BAA4B;IAyBpC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,6BAA6B;IAsBrC,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,oBAAoB;IA6C5B,OAAO,CAAC,cAAc;IAiBf,MAAM;IAoBN,KAAK,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;IAS1C,QAAQ,CAAC,UAAU,EAAE,cAAc;IAsBnC,MAAM;;;;;CAYd;AAED,eAAO,MAAM,wBAAwB,mGAAgD,CAAC"}