@cedarjs/internal 0.6.0 → 0.6.1-next.51

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 (127) hide show
  1. package/dist/ast.d.ts.map +1 -1
  2. package/dist/ast.js +28 -64
  3. package/dist/build/api.js +22 -56
  4. package/dist/cjs/ast.d.ts +26 -0
  5. package/dist/cjs/ast.d.ts.map +1 -0
  6. package/dist/cjs/ast.js +201 -0
  7. package/dist/cjs/build/api.d.ts +6 -0
  8. package/dist/cjs/build/api.d.ts.map +1 -0
  9. package/dist/cjs/build/api.js +109 -0
  10. package/dist/cjs/cliLogger.d.ts +11 -0
  11. package/dist/cjs/cliLogger.d.ts.map +1 -0
  12. package/dist/cjs/cliLogger.js +36 -0
  13. package/dist/cjs/dev.d.ts +2 -0
  14. package/dist/cjs/dev.d.ts.map +1 -0
  15. package/dist/cjs/dev.js +41 -0
  16. package/dist/cjs/files.d.ts +56 -0
  17. package/dist/cjs/files.d.ts.map +1 -0
  18. package/dist/cjs/files.js +230 -0
  19. package/dist/cjs/generate/clientPreset.d.ts +17 -0
  20. package/dist/cjs/generate/clientPreset.d.ts.map +1 -0
  21. package/dist/cjs/generate/clientPreset.js +85 -0
  22. package/dist/cjs/generate/generate.d.ts +10 -0
  23. package/dist/cjs/generate/generate.d.ts.map +1 -0
  24. package/dist/cjs/generate/generate.js +91 -0
  25. package/dist/cjs/generate/graphqlCodeGen.d.ts +16 -0
  26. package/dist/cjs/generate/graphqlCodeGen.d.ts.map +1 -0
  27. package/dist/cjs/generate/graphqlCodeGen.js +346 -0
  28. package/dist/cjs/generate/graphqlSchema.d.ts +8 -0
  29. package/dist/cjs/generate/graphqlSchema.d.ts.map +1 -0
  30. package/dist/cjs/generate/graphqlSchema.js +154 -0
  31. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts +7 -0
  32. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -0
  33. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.js +65 -0
  34. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts +9 -0
  35. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -0
  36. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.js +84 -0
  37. package/dist/cjs/generate/possibleTypes.d.ts +36 -0
  38. package/dist/cjs/generate/possibleTypes.d.ts.map +1 -0
  39. package/dist/cjs/generate/possibleTypes.js +106 -0
  40. package/dist/cjs/generate/templates/all-currentUser.d.ts.template +30 -0
  41. package/dist/cjs/generate/templates/api-globImports.d.ts.template +9 -0
  42. package/dist/cjs/generate/templates/api-globalContext.d.ts.template +7 -0
  43. package/dist/cjs/generate/templates/api-scenarios.d.ts.template +10 -0
  44. package/dist/cjs/generate/templates/api-test-globals.d.ts.template +5 -0
  45. package/dist/cjs/generate/templates/mirror-cell.d.ts.template +13 -0
  46. package/dist/cjs/generate/templates/mirror-directoryNamedModule.d.ts.template +5 -0
  47. package/dist/cjs/generate/templates/web-routerRoutes.d.ts.template +20 -0
  48. package/dist/cjs/generate/templates/web-routesPages.d.ts.template +13 -0
  49. package/dist/cjs/generate/templates/web-test-globals.d.ts.template +7 -0
  50. package/dist/cjs/generate/templates.d.ts +6 -0
  51. package/dist/cjs/generate/templates.d.ts.map +1 -0
  52. package/dist/cjs/generate/templates.js +68 -0
  53. package/dist/cjs/generate/trustedDocuments.d.ts +3 -0
  54. package/dist/cjs/generate/trustedDocuments.d.ts.map +1 -0
  55. package/dist/cjs/generate/trustedDocuments.js +95 -0
  56. package/dist/cjs/generate/typeDefinitions.d.ts +30 -0
  57. package/dist/cjs/generate/typeDefinitions.d.ts.map +1 -0
  58. package/dist/cjs/generate/typeDefinitions.js +369 -0
  59. package/dist/cjs/generate/types.d.ts +6 -0
  60. package/dist/cjs/generate/types.d.ts.map +1 -0
  61. package/dist/cjs/generate/types.js +16 -0
  62. package/dist/cjs/generate/watch.d.ts +3 -0
  63. package/dist/cjs/generate/watch.d.ts.map +1 -0
  64. package/dist/cjs/generate/watch.js +124 -0
  65. package/dist/cjs/gql.d.ts +14 -0
  66. package/dist/cjs/gql.d.ts.map +1 -0
  67. package/dist/cjs/gql.js +108 -0
  68. package/dist/cjs/index.d.ts +11 -0
  69. package/dist/cjs/index.d.ts.map +1 -0
  70. package/dist/cjs/index.js +49 -0
  71. package/dist/cjs/jsx.d.ts +16 -0
  72. package/dist/cjs/jsx.d.ts.map +1 -0
  73. package/dist/cjs/jsx.js +101 -0
  74. package/dist/cjs/jsxAttributeValue.d.ts +2 -0
  75. package/dist/cjs/jsxAttributeValue.d.ts.map +1 -0
  76. package/dist/cjs/jsxAttributeValue.js +129 -0
  77. package/dist/cjs/package.json +1 -0
  78. package/dist/cjs/project.d.ts +8 -0
  79. package/dist/cjs/project.d.ts.map +1 -0
  80. package/dist/cjs/project.js +82 -0
  81. package/dist/cjs/routes.d.ts +42 -0
  82. package/dist/cjs/routes.d.ts.map +1 -0
  83. package/dist/cjs/routes.js +111 -0
  84. package/dist/cjs/ts2js.d.ts +40 -0
  85. package/dist/cjs/ts2js.d.ts.map +1 -0
  86. package/dist/cjs/ts2js.js +159 -0
  87. package/dist/cjs/validateSchema.d.ts +14 -0
  88. package/dist/cjs/validateSchema.d.ts.map +1 -0
  89. package/dist/cjs/validateSchema.js +194 -0
  90. package/dist/cliLogger.js +4 -28
  91. package/dist/dev.js +4 -38
  92. package/dist/files.d.ts.map +1 -1
  93. package/dist/files.js +46 -95
  94. package/dist/generate/clientPreset.js +17 -39
  95. package/dist/generate/generate.js +14 -39
  96. package/dist/generate/graphqlCodeGen.d.ts.map +1 -1
  97. package/dist/generate/graphqlCodeGen.js +49 -79
  98. package/dist/generate/graphqlSchema.d.ts.map +1 -1
  99. package/dist/generate/graphqlSchema.js +26 -59
  100. package/dist/generate/plugins/rw-typescript-resolvers/index.d.ts +4 -3
  101. package/dist/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -1
  102. package/dist/generate/plugins/rw-typescript-resolvers/index.js +11 -35
  103. package/dist/generate/plugins/rw-typescript-resolvers/visitor.js +10 -31
  104. package/dist/generate/possibleTypes.js +19 -53
  105. package/dist/generate/templates.d.ts.map +1 -1
  106. package/dist/generate/templates.js +14 -42
  107. package/dist/generate/trustedDocuments.js +13 -48
  108. package/dist/generate/typeDefinitions.d.ts +2 -2
  109. package/dist/generate/typeDefinitions.d.ts.map +1 -1
  110. package/dist/generate/typeDefinitions.js +83 -123
  111. package/dist/generate/types.js +0 -16
  112. package/dist/generate/watch.js +55 -63
  113. package/dist/gql.js +16 -42
  114. package/dist/index.d.ts +8 -8
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +13 -47
  117. package/dist/jsx.d.ts.map +1 -1
  118. package/dist/jsx.js +7 -40
  119. package/dist/jsxAttributeValue.js +2 -26
  120. package/dist/project.js +21 -58
  121. package/dist/routes.d.ts +1 -1
  122. package/dist/routes.d.ts.map +1 -1
  123. package/dist/routes.js +12 -48
  124. package/dist/ts2js.d.ts +1 -1
  125. package/dist/ts2js.js +33 -73
  126. package/dist/validateSchema.js +19 -47
  127. package/package.json +91 -31
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var graphqlCodeGen_exports = {};
30
+ __export(graphqlCodeGen_exports, {
31
+ generateTypeDefGraphQLApi: () => generateTypeDefGraphQLApi,
32
+ generateTypeDefGraphQLWeb: () => generateTypeDefGraphQLWeb,
33
+ getLoadDocumentsOptions: () => getLoadDocumentsOptions,
34
+ getResolverFnType: () => getResolverFnType
35
+ });
36
+ module.exports = __toCommonJS(graphqlCodeGen_exports);
37
+ var import_fs = __toESM(require("fs"), 1);
38
+ var import_path = __toESM(require("path"), 1);
39
+ var addPlugin = __toESM(require("@graphql-codegen/add"), 1);
40
+ var import_cli = require("@graphql-codegen/cli");
41
+ var import_core = require("@graphql-codegen/core");
42
+ var typescriptPlugin = __toESM(require("@graphql-codegen/typescript"), 1);
43
+ var typescriptOperations = __toESM(require("@graphql-codegen/typescript-operations"), 1);
44
+ var import_code_file_loader = require("@graphql-tools/code-file-loader");
45
+ var import_graphql_file_loader = require("@graphql-tools/graphql-file-loader");
46
+ var import_load = require("@graphql-tools/load");
47
+ var import_execa = __toESM(require("execa"), 1);
48
+ var import_graphql = require("graphql");
49
+ var import_project_config = require("@cedarjs/project-config");
50
+ var import_project = require("../project.js");
51
+ var rwTypescriptResolvers = __toESM(require("./plugins/rw-typescript-resolvers/index.js"), 1);
52
+ var CodegenSide = /* @__PURE__ */ ((CodegenSide2) => {
53
+ CodegenSide2[CodegenSide2["API"] = 0] = "API";
54
+ CodegenSide2[CodegenSide2["WEB"] = 1] = "WEB";
55
+ return CodegenSide2;
56
+ })(CodegenSide || {});
57
+ const generateTypeDefGraphQLApi = async () => {
58
+ const config = (0, import_project_config.getConfig)();
59
+ const errors = [];
60
+ if (config.experimental.useSDLCodeGenForGraphQLTypes) {
61
+ const paths = (0, import_project_config.getPaths)();
62
+ const sdlCodegen = await import("@sdl-codegen/node");
63
+ const dtsFiles = [];
64
+ try {
65
+ const output = await sdlCodegen.runFullCodegen("redwood", { paths });
66
+ dtsFiles.concat(output.paths);
67
+ } catch (e) {
68
+ if (e instanceof Error) {
69
+ errors.push({
70
+ message: e.message,
71
+ error: e
72
+ });
73
+ }
74
+ }
75
+ return {
76
+ typeDefFiles: dtsFiles,
77
+ errors
78
+ };
79
+ }
80
+ const filename = import_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
81
+ const prismaModels = await getPrismaModels();
82
+ const prismaImports = Object.keys(prismaModels).map((key) => {
83
+ return `${key} as Prisma${key}`;
84
+ });
85
+ const extraPlugins = [
86
+ {
87
+ name: "add",
88
+ options: {
89
+ content: [
90
+ 'import { Prisma } from "@prisma/client"',
91
+ "import { MergePrismaWithSdlTypes, MakeRelationsOptional } from '@cedarjs/api'",
92
+ `import { ${prismaImports.join(", ")} } from '@prisma/client'`
93
+ ],
94
+ placement: "prepend"
95
+ },
96
+ codegenPlugin: addPlugin
97
+ },
98
+ {
99
+ name: "print-mapped-models",
100
+ options: {},
101
+ codegenPlugin: printMappedModelsPlugin
102
+ },
103
+ {
104
+ name: "typescript-resolvers",
105
+ options: {},
106
+ codegenPlugin: rwTypescriptResolvers
107
+ }
108
+ ];
109
+ try {
110
+ return {
111
+ typeDefFiles: await runCodegenGraphQL(
112
+ [],
113
+ extraPlugins,
114
+ filename,
115
+ 0 /* API */
116
+ ),
117
+ errors
118
+ };
119
+ } catch (e) {
120
+ errors.push({
121
+ message: "Error: Could not generate GraphQL type definitions (api)",
122
+ error: e
123
+ });
124
+ return {
125
+ typeDefFiles: [],
126
+ errors
127
+ };
128
+ }
129
+ };
130
+ const generateTypeDefGraphQLWeb = async () => {
131
+ const filename = import_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
132
+ const options = getLoadDocumentsOptions(filename);
133
+ const documentsGlob = "./web/src/**/!(*.d).{ts,tsx,js,jsx}";
134
+ let documents;
135
+ try {
136
+ documents = await (0, import_load.loadDocuments)([documentsGlob], options);
137
+ } catch {
138
+ return {
139
+ typeDefFiles: [],
140
+ errors: []
141
+ };
142
+ }
143
+ const extraPlugins = [
144
+ {
145
+ name: "add",
146
+ options: {
147
+ content: 'import { Prisma } from "@prisma/client"',
148
+ placement: "prepend"
149
+ },
150
+ codegenPlugin: addPlugin
151
+ },
152
+ {
153
+ name: "typescript-operations",
154
+ options: {},
155
+ codegenPlugin: typescriptOperations
156
+ }
157
+ ];
158
+ const errors = [];
159
+ try {
160
+ return {
161
+ typeDefFiles: await runCodegenGraphQL(
162
+ documents,
163
+ extraPlugins,
164
+ filename,
165
+ 1 /* WEB */
166
+ ),
167
+ errors
168
+ };
169
+ } catch (e) {
170
+ errors.push({
171
+ message: "Error: Could not generate GraphQL type definitions (web)",
172
+ error: e
173
+ });
174
+ return {
175
+ typeDefFiles: [],
176
+ errors
177
+ };
178
+ }
179
+ };
180
+ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
181
+ const userCodegenConfig = await (0, import_cli.loadCodegenConfig)({
182
+ configFilePath: (0, import_project_config.getPaths)().base
183
+ });
184
+ const mergedConfig = {
185
+ ...await getPluginConfig(side),
186
+ ...userCodegenConfig?.config?.config
187
+ };
188
+ const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
189
+ const output = await (0, import_core.codegen)(options);
190
+ import_fs.default.mkdirSync(import_path.default.dirname(filename), { recursive: true });
191
+ import_fs.default.writeFileSync(filename, output);
192
+ return [filename];
193
+ }
194
+ function getLoadDocumentsOptions(filename) {
195
+ const loadTypedefsConfig = {
196
+ cwd: (0, import_project_config.getPaths)().base,
197
+ ignore: [import_path.default.join(process.cwd(), filename)],
198
+ loaders: [new import_code_file_loader.CodeFileLoader()],
199
+ sort: true
200
+ };
201
+ return loadTypedefsConfig;
202
+ }
203
+ async function getPrismaClient(hasGenerated = false) {
204
+ let localPrisma;
205
+ if (hasGenerated) {
206
+ const cacheBuster = `?t=${Date.now()}`;
207
+ const prismaClientPath = import_path.default.resolve(
208
+ process.cwd(),
209
+ "node_modules/.prisma/client/index.js"
210
+ );
211
+ const { default: freshPrisma } = await import(`file://${prismaClientPath}${cacheBuster}`);
212
+ localPrisma = freshPrisma;
213
+ } else {
214
+ const { default: packagePrisma } = await import("@prisma/client");
215
+ localPrisma = packagePrisma;
216
+ }
217
+ if (!localPrisma.ModelName) {
218
+ if (hasGenerated) {
219
+ return { ModelName: {} };
220
+ } else {
221
+ import_execa.default.sync("yarn rw prisma generate", { shell: true });
222
+ return getPrismaClient(true);
223
+ }
224
+ }
225
+ return localPrisma;
226
+ }
227
+ async function getPrismaModels() {
228
+ const localPrisma = await getPrismaClient();
229
+ const prismaModels = localPrisma.ModelName;
230
+ if (prismaModels.RW_DataMigration) {
231
+ delete prismaModels.RW_DataMigration;
232
+ }
233
+ return prismaModels;
234
+ }
235
+ async function getPluginConfig(side) {
236
+ const prismaModels = await getPrismaModels();
237
+ Object.keys(prismaModels).forEach((key) => {
238
+ prismaModels[key] = `MergePrismaWithSdlTypes<Prisma${key}, MakeRelationsOptional<${key}, AllMappedModels>, AllMappedModels>`;
239
+ });
240
+ const scalars = {
241
+ // We need these, otherwise these scalars are mapped to any
242
+ BigInt: "number",
243
+ // @Note: DateTime fields can be valid Date-strings, or the Date object in the api side. They're always strings on the web side.
244
+ DateTime: side === 1 /* WEB */ ? "string" : "Date | string",
245
+ Date: side === 1 /* WEB */ ? "string" : "Date | string",
246
+ JSON: "Prisma.JsonValue",
247
+ JSONObject: "Prisma.JsonObject",
248
+ Time: side === 1 /* WEB */ ? "string" : "Date | string",
249
+ Byte: "Buffer"
250
+ };
251
+ const config = (0, import_project_config.getConfig)();
252
+ if (config.graphql.includeScalars.File) {
253
+ scalars.File = "File";
254
+ }
255
+ const pluginConfig = {
256
+ makeResolverTypeCallable: true,
257
+ namingConvention: "keep",
258
+ // to allow camelCased query names
259
+ scalars,
260
+ // prevent type names being PetQueryQuery, RW generators already append
261
+ // Query/Mutation/etc
262
+ omitOperationSuffix: true,
263
+ showUnusedMappers: false,
264
+ customResolverFn: getResolverFnType(),
265
+ mappers: prismaModels,
266
+ avoidOptionals: {
267
+ // We do this, so that service tests can call resolvers without doing a null check
268
+ // see https://github.com/redwoodjs/redwood/pull/6222#issuecomment-1230156868
269
+ // Look at type or source https://shrtm.nu/2BA0 for possible config, not well documented
270
+ resolvers: true
271
+ },
272
+ contextType: `@cedarjs/graphql-server/dist/types#RedwoodGraphQLContext`
273
+ };
274
+ return pluginConfig;
275
+ }
276
+ const getResolverFnType = () => {
277
+ const tsConfig = (0, import_project.getTsConfigs)();
278
+ if (tsConfig.api?.compilerOptions?.strict) {
279
+ return `(
280
+ args: TArgs,
281
+ obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
282
+ ) => TResult | Promise<TResult>`;
283
+ } else {
284
+ return `(
285
+ args?: TArgs,
286
+ obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
287
+ ) => TResult | Promise<TResult>`;
288
+ }
289
+ };
290
+ const printMappedModelsPlugin = {
291
+ plugin: (schema, _documents, config) => {
292
+ const sdlTypesWhichAreMapped = Object.values(schema.getTypeMap()).filter((type) => {
293
+ return type.astNode?.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION;
294
+ }).filter((objectDefType) => {
295
+ const modelName = objectDefType.astNode?.name.value;
296
+ return modelName && modelName in config.mappers;
297
+ }).map((objectDefType) => objectDefType.astNode?.name.value);
298
+ return `type MaybeOrArrayOfMaybe<T> = T | Maybe<T> | Maybe<T>[];
299
+ type AllMappedModels = MaybeOrArrayOfMaybe<${sdlTypesWhichAreMapped.join(
300
+ " | "
301
+ )}>`;
302
+ }
303
+ };
304
+ function getCodegenOptions(documents, config, extraPlugins) {
305
+ const plugins = [
306
+ { typescript: { enumsAsTypes: true } },
307
+ ...extraPlugins.map((plugin) => ({ [plugin.name]: plugin.options }))
308
+ ];
309
+ const pluginMap = {
310
+ typescript: typescriptPlugin,
311
+ ...extraPlugins.reduce(
312
+ (acc, cur) => ({ ...acc, [cur.name]: cur.codegenPlugin }),
313
+ {}
314
+ )
315
+ };
316
+ const options = {
317
+ // The typescript plugin returns a string instead of writing to a file, so
318
+ // `filename` is not used
319
+ filename: "",
320
+ // `schemaAst` is used instead of `schema` if `schemaAst` is defined, and
321
+ // `schema` isn't. In the source for GenerateOptions they have this
322
+ // comment:
323
+ // Remove schemaAst and change schema to GraphQLSchema in the next major
324
+ // version
325
+ // When that happens we'll have have to remove our `schema` line, and
326
+ // rename `schemaAst` to `schema`
327
+ schema: void 0,
328
+ schemaAst: (0, import_load.loadSchemaSync)((0, import_project_config.getPaths)().generated.schema, {
329
+ loaders: [new import_graphql_file_loader.GraphQLFileLoader()],
330
+ sort: true
331
+ }),
332
+ documents,
333
+ config,
334
+ plugins,
335
+ pluginMap,
336
+ pluginContext: {}
337
+ };
338
+ return options;
339
+ }
340
+ // Annotate the CommonJS export names for ESM import in node:
341
+ 0 && (module.exports = {
342
+ generateTypeDefGraphQLApi,
343
+ generateTypeDefGraphQLWeb,
344
+ getLoadDocumentsOptions,
345
+ getResolverFnType
346
+ });
@@ -0,0 +1,8 @@
1
+ export declare const generateGraphQLSchema: () => Promise<{
2
+ schemaPath: string;
3
+ errors: {
4
+ message: string;
5
+ error: unknown;
6
+ }[];
7
+ }>;
8
+ //# sourceMappingURL=graphqlSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphqlSchema.d.ts","sourceRoot":"","sources":["../../../src/generate/graphqlSchema.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,qBAAqB;;;iBAyDP,MAAM;eAAS,OAAO;;EAyEhD,CAAA"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var graphqlSchema_exports = {};
30
+ __export(graphqlSchema_exports, {
31
+ generateGraphQLSchema: () => generateGraphQLSchema
32
+ });
33
+ module.exports = __toCommonJS(graphqlSchema_exports);
34
+ var import_fs = __toESM(require("fs"), 1);
35
+ var import_core = require("@graphql-codegen/core");
36
+ var schemaAstPlugin = __toESM(require("@graphql-codegen/schema-ast"), 1);
37
+ var import_code_file_loader = require("@graphql-tools/code-file-loader");
38
+ var import_load = require("@graphql-tools/load");
39
+ var import_internals = __toESM(require("@prisma/internals"), 1);
40
+ var import_ansis = __toESM(require("ansis"), 1);
41
+ var import_graphql = require("graphql");
42
+ var import_termi_link = require("termi-link");
43
+ var import_graphql_server = require("@cedarjs/graphql-server");
44
+ var import_project_config = require("@cedarjs/project-config");
45
+ const { getSchema } = import_internals.default;
46
+ const generateGraphQLSchema = async () => {
47
+ const redwoodProjectPaths = (0, import_project_config.getPaths)();
48
+ const redwoodProjectConfig = (0, import_project_config.getConfig)();
49
+ const schemaPointerMap = {
50
+ [(0, import_graphql.print)(import_graphql_server.rootSchema.schema)]: {},
51
+ "graphql/**/*.sdl.{js,ts}": {},
52
+ "directives/**/*.{js,ts}": {},
53
+ "subscriptions/**/*.{js,ts}": {}
54
+ };
55
+ for (const [name, schema] of Object.entries(import_graphql_server.rootSchema.scalarSchemas)) {
56
+ if (redwoodProjectConfig.graphql.includeScalars[name]) {
57
+ schemaPointerMap[(0, import_graphql.print)(schema)] = {};
58
+ }
59
+ }
60
+ if ((0, import_project_config.resolveFile)(`${(0, import_project_config.getPaths)().api.src}/server`)) {
61
+ try {
62
+ const { liveDirectiveTypeDefs } = await import("@cedarjs/realtime");
63
+ schemaPointerMap[liveDirectiveTypeDefs] = {};
64
+ } catch (error) {
65
+ if (error.code !== "ERR_MODULE_NOT_FOUND") {
66
+ throw error;
67
+ }
68
+ }
69
+ }
70
+ const loadSchemaConfig = {
71
+ assumeValidSDL: true,
72
+ sort: true,
73
+ convertExtensions: true,
74
+ includeSources: true,
75
+ cwd: redwoodProjectPaths.api.src,
76
+ schema: Object.keys(schemaPointerMap),
77
+ generates: {
78
+ [redwoodProjectPaths.generated.schema]: {
79
+ plugins: ["schema-ast"]
80
+ }
81
+ },
82
+ silent: false,
83
+ errorsOnly: false,
84
+ pluginContext: {},
85
+ loaders: [new import_code_file_loader.CodeFileLoader()]
86
+ };
87
+ let loadedSchema;
88
+ const errors = [];
89
+ try {
90
+ loadedSchema = await (0, import_load.loadSchema)(schemaPointerMap, loadSchemaConfig);
91
+ } catch (e) {
92
+ if (e instanceof Error) {
93
+ const match = e.message.match(/Unknown type: "(\w+)"/);
94
+ const name = match?.[1];
95
+ const schemaPrisma = (await getSchema(redwoodProjectPaths.api.dbSchema)).toString();
96
+ const errorObject = {
97
+ message: `Schema loading failed. ${e.message}`,
98
+ error: e
99
+ };
100
+ errors.push(errorObject);
101
+ if (name && schemaPrisma.includes(`model ${name}`)) {
102
+ errorObject.message = [
103
+ errorObject.message,
104
+ "",
105
+ ` ${import_ansis.default.bgYellow(` ${import_ansis.default.black.bold("Heads up")} `)}`,
106
+ "",
107
+ import_ansis.default.yellow(
108
+ ` It looks like you have a ${name} model in your Prisma schema.`
109
+ ),
110
+ import_ansis.default.yellow(
111
+ ` If it's part of a relation, you may have to generate SDL or scaffolding for ${name} too.`
112
+ ),
113
+ import_ansis.default.yellow(
114
+ ` So, if you haven't done that yet, ignore this error message and run the SDL or scaffold generator for ${name} now.`
115
+ ),
116
+ "",
117
+ import_ansis.default.yellow(
118
+ ` See the ${(0, import_termi_link.terminalLink)(
119
+ "Troubleshooting Generators",
120
+ "https://redwoodjs.com/docs/schema-relations#troubleshooting-generators"
121
+ )} section in our docs for more help.`
122
+ )
123
+ ].join("\n");
124
+ }
125
+ }
126
+ }
127
+ const options = {
128
+ config: {},
129
+ // no extra config needed for merged schema file generation
130
+ plugins: [{ "schema-ast": {} }],
131
+ pluginMap: { "schema-ast": schemaAstPlugin },
132
+ schema: {},
133
+ schemaAst: loadedSchema,
134
+ filename: redwoodProjectPaths.generated.schema,
135
+ documents: []
136
+ };
137
+ if (loadedSchema) {
138
+ try {
139
+ const schema = await (0, import_core.codegen)(options);
140
+ import_fs.default.writeFileSync(redwoodProjectPaths.generated.schema, schema);
141
+ return { schemaPath: redwoodProjectPaths.generated.schema, errors };
142
+ } catch (e) {
143
+ errors.push({
144
+ message: `GraphQL Schema codegen failed`,
145
+ error: e
146
+ });
147
+ }
148
+ }
149
+ return { schemaPath: "", errors };
150
+ };
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ generateGraphQLSchema
154
+ });
@@ -0,0 +1,7 @@
1
+ import type { Types, PluginFunction } from '@graphql-codegen/plugin-helpers';
2
+ import type { TypeScriptResolversPluginConfig } from '@graphql-codegen/typescript-resolvers';
3
+ import { RwTypeScriptResolversVisitor } from './visitor.js';
4
+ export declare const plugin: PluginFunction<TypeScriptResolversPluginConfig, Types.ComplexPluginOutput>;
5
+ export { RwTypeScriptResolversVisitor };
6
+ export type { TypeScriptResolversPluginConfig };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/generate/plugins/rw-typescript-resolvers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAK5E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAA;AAI5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAA;AAE3D,eAAO,MAAM,MAAM,EAAE,cAAc,CACjC,+BAA+B,EAC/B,KAAK,CAAC,mBAAmB,CAgF1B,CAAA;AAED,OAAO,EAAE,4BAA4B,EAAE,CAAA;AACvC,YAAY,EAAE,+BAA+B,EAAE,CAAA"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var rw_typescript_resolvers_exports = {};
20
+ __export(rw_typescript_resolvers_exports, {
21
+ RwTypeScriptResolversVisitor: () => import_visitor.RwTypeScriptResolversVisitor,
22
+ plugin: () => plugin
23
+ });
24
+ module.exports = __toCommonJS(rw_typescript_resolvers_exports);
25
+ var import_plugin_helpers = require("@graphql-codegen/plugin-helpers");
26
+ var import_typescript_resolvers = require("@graphql-codegen/typescript-resolvers");
27
+ var import_visitor = require("./visitor.js");
28
+ const plugin = (schema, _documents, config) => {
29
+ const visitor = new import_visitor.RwTypeScriptResolversVisitor(config, schema);
30
+ const visitorResult = (0, import_plugin_helpers.oldVisit)((0, import_plugin_helpers.getCachedDocumentNodeFromSchema)(schema), {
31
+ leave: visitor
32
+ });
33
+ const { prepend, content } = (0, import_typescript_resolvers.plugin)(schema, [], config);
34
+ prepend.push(`export type OptArgsResolverFn<TResult, TParent = {}, TContext = {}, TArgs = {}> = (
35
+ args?: TArgs,
36
+ obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
37
+ ) => TResult | Promise<TResult>
38
+
39
+ export type RequiredResolverFn<TResult, TParent = {}, TContext = {}, TArgs = {}> = (
40
+ args: TArgs,
41
+ obj: { root: TParent; context: TContext; info: GraphQLResolveInfo }
42
+ ) => TResult | Promise<TResult>`);
43
+ const splitContent = content.split("\n");
44
+ const visitorResultStart = splitContent.indexOf(
45
+ visitorResult.definitions.filter((d) => typeof d === "string")[0].split("\n")[0]
46
+ );
47
+ const splitRootResolver = visitor.getRootResolver().split("\n");
48
+ const visitorResultEnd = splitContent.findIndex(
49
+ (line, index) => line === splitRootResolver[0] && splitContent[index + 1] === splitRootResolver[1]
50
+ );
51
+ const newContent = [
52
+ ...splitContent.slice(0, visitorResultStart),
53
+ ...visitorResult.definitions.filter((d) => typeof d === "string"),
54
+ ...splitContent.slice(visitorResultEnd)
55
+ ];
56
+ return {
57
+ prepend,
58
+ content: newContent.join("\n")
59
+ };
60
+ };
61
+ // Annotate the CommonJS export names for ESM import in node:
62
+ 0 && (module.exports = {
63
+ RwTypeScriptResolversVisitor,
64
+ plugin
65
+ });
@@ -0,0 +1,9 @@
1
+ import type { TypeScriptResolversPluginConfig } from '@graphql-codegen/typescript-resolvers';
2
+ import { TypeScriptResolversVisitor } from '@graphql-codegen/typescript-resolvers';
3
+ import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
4
+ export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
5
+ constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
6
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): (parentName: string) => string | null;
7
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
8
+ }
9
+ //# sourceMappingURL=visitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../../../src/generate/plugins/rw-typescript-resolvers/visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAA;AAC5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAKlF,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACzB,MAAM,SAAS,CAAA;AAEhB,qBAAa,4BAA6B,SAAQ,0BAA0B;gBAExE,YAAY,EAAE,+BAA+B,EAC7C,MAAM,EAAE,aAAa;IAKvB,eAAe,CACb,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,MAAM,EAAE,GAAG,GACV,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI;IAuBxC,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM;CAgG7D"}