@cedarjs/internal 5.0.4-next.167 → 5.0.4

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 (143) hide show
  1. package/dist/ast.d.ts +0 -1
  2. package/dist/ast.d.ts.map +1 -1
  3. package/dist/ast.js +0 -21
  4. package/dist/build/api.d.ts +0 -2
  5. package/dist/build/api.d.ts.map +1 -1
  6. package/dist/build/api.js +39 -202
  7. package/dist/build/esbuild-plugin-cedar-context-wrapping.d.ts +4 -0
  8. package/dist/build/esbuild-plugin-cedar-context-wrapping.d.ts.map +1 -0
  9. package/dist/build/{esbuild-plugin-handler-als-wrapping.js → esbuild-plugin-cedar-context-wrapping.js} +12 -12
  10. package/dist/cjs/ast.d.ts +26 -0
  11. package/dist/cjs/ast.d.ts.map +1 -0
  12. package/dist/cjs/ast.js +201 -0
  13. package/dist/cjs/build/api.d.ts +7 -0
  14. package/dist/cjs/build/api.d.ts.map +1 -0
  15. package/dist/cjs/build/api.js +251 -0
  16. package/dist/cjs/build/esbuild-plugin-cedar-context-wrapping.d.ts +4 -0
  17. package/dist/cjs/build/esbuild-plugin-cedar-context-wrapping.d.ts.map +1 -0
  18. package/dist/cjs/build/esbuild-plugin-cedar-context-wrapping.js +59 -0
  19. package/dist/cjs/cliLogger.d.ts +11 -0
  20. package/dist/cjs/cliLogger.d.ts.map +1 -0
  21. package/dist/cjs/cliLogger.js +36 -0
  22. package/dist/cjs/dev.d.ts +2 -0
  23. package/dist/cjs/dev.d.ts.map +1 -0
  24. package/dist/cjs/dev.js +41 -0
  25. package/dist/cjs/files.d.ts +56 -0
  26. package/dist/cjs/files.d.ts.map +1 -0
  27. package/dist/cjs/files.js +230 -0
  28. package/dist/cjs/generate/clientPreset.d.ts +17 -0
  29. package/dist/cjs/generate/clientPreset.d.ts.map +1 -0
  30. package/dist/cjs/generate/clientPreset.js +84 -0
  31. package/dist/cjs/generate/generate.d.ts +10 -0
  32. package/dist/cjs/generate/generate.d.ts.map +1 -0
  33. package/dist/cjs/generate/generate.js +97 -0
  34. package/dist/cjs/generate/gqlormSchema.d.ts +113 -0
  35. package/dist/cjs/generate/gqlormSchema.d.ts.map +1 -0
  36. package/dist/cjs/generate/gqlormSchema.js +1061 -0
  37. package/dist/cjs/generate/graphqlCodeGen.d.ts +16 -0
  38. package/dist/cjs/generate/graphqlCodeGen.d.ts.map +1 -0
  39. package/dist/cjs/generate/graphqlCodeGen.js +380 -0
  40. package/dist/cjs/generate/graphqlSchema.d.ts +8 -0
  41. package/dist/cjs/generate/graphqlSchema.d.ts.map +1 -0
  42. package/dist/cjs/generate/graphqlSchema.js +157 -0
  43. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts +7 -0
  44. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -0
  45. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.js +65 -0
  46. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts +10 -0
  47. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -0
  48. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.js +92 -0
  49. package/dist/cjs/generate/possibleTypes.d.ts +36 -0
  50. package/dist/cjs/generate/possibleTypes.d.ts.map +1 -0
  51. package/dist/cjs/generate/possibleTypes.js +106 -0
  52. package/dist/cjs/generate/templates/all-currentUser.d.ts.template +30 -0
  53. package/dist/cjs/generate/templates/all-gqlorm.d.ts.template +7 -0
  54. package/dist/cjs/generate/templates/api-globImports.d.ts.template +9 -0
  55. package/dist/cjs/generate/templates/api-globalContext.d.ts.template +7 -0
  56. package/dist/cjs/generate/templates/api-scenarios.d.ts.template +10 -0
  57. package/dist/cjs/generate/templates/api-test-globals.d.ts.template +5 -0
  58. package/dist/cjs/generate/templates/mirror-cell.d.ts.template +13 -0
  59. package/dist/cjs/generate/templates/mirror-directoryNamedModule.d.ts.template +5 -0
  60. package/dist/cjs/generate/templates/web-routerRoutes.d.ts.template +20 -0
  61. package/dist/cjs/generate/templates/web-routesPages.d.ts.template +13 -0
  62. package/dist/cjs/generate/templates/web-test-globals.d.ts.template +7 -0
  63. package/dist/cjs/generate/templates.d.ts +6 -0
  64. package/dist/cjs/generate/templates.d.ts.map +1 -0
  65. package/dist/cjs/generate/templates.js +68 -0
  66. package/dist/cjs/generate/trustedDocuments.d.ts +3 -0
  67. package/dist/cjs/generate/trustedDocuments.d.ts.map +1 -0
  68. package/dist/cjs/generate/trustedDocuments.js +95 -0
  69. package/dist/cjs/generate/typeDefinitions.d.ts +31 -0
  70. package/dist/cjs/generate/typeDefinitions.d.ts.map +1 -0
  71. package/dist/cjs/generate/typeDefinitions.js +372 -0
  72. package/dist/cjs/generate/types.d.ts +6 -0
  73. package/dist/cjs/generate/types.d.ts.map +1 -0
  74. package/dist/cjs/generate/types.js +16 -0
  75. package/dist/cjs/generate/watch.d.ts +3 -0
  76. package/dist/cjs/generate/watch.d.ts.map +1 -0
  77. package/dist/cjs/generate/watch.js +132 -0
  78. package/dist/cjs/gql.d.ts +14 -0
  79. package/dist/cjs/gql.d.ts.map +1 -0
  80. package/dist/cjs/gql.js +108 -0
  81. package/dist/cjs/index.d.ts +11 -0
  82. package/dist/cjs/index.d.ts.map +1 -0
  83. package/dist/cjs/index.js +49 -0
  84. package/dist/cjs/jsx.d.ts +16 -0
  85. package/dist/cjs/jsx.d.ts.map +1 -0
  86. package/dist/cjs/jsx.js +101 -0
  87. package/dist/cjs/jsxAttributeValue.d.ts +2 -0
  88. package/dist/cjs/jsxAttributeValue.d.ts.map +1 -0
  89. package/dist/cjs/jsxAttributeValue.js +129 -0
  90. package/dist/cjs/package.json +1 -0
  91. package/dist/cjs/project.d.ts +8 -0
  92. package/dist/cjs/project.d.ts.map +1 -0
  93. package/dist/cjs/project.js +82 -0
  94. package/dist/cjs/routes.d.ts +42 -0
  95. package/dist/cjs/routes.d.ts.map +1 -0
  96. package/dist/cjs/routes.js +111 -0
  97. package/dist/cjs/ts2js.d.ts +40 -0
  98. package/dist/cjs/ts2js.d.ts.map +1 -0
  99. package/dist/cjs/ts2js.js +159 -0
  100. package/dist/cjs/validateSchema.d.ts +14 -0
  101. package/dist/cjs/validateSchema.d.ts.map +1 -0
  102. package/dist/cjs/validateSchema.js +195 -0
  103. package/dist/generate/clientPreset.d.ts.map +1 -1
  104. package/dist/generate/clientPreset.js +3 -10
  105. package/dist/generate/typeDefinitions.d.ts.map +1 -1
  106. package/dist/generate/typeDefinitions.js +1 -15
  107. package/dist/gql.d.ts +0 -20
  108. package/dist/gql.d.ts.map +1 -1
  109. package/dist/gql.js +0 -24
  110. package/package.json +80 -48
  111. package/dist/build/api-graphql-transforms.d.ts +0 -34
  112. package/dist/build/api-graphql-transforms.d.ts.map +0 -1
  113. package/dist/build/api-graphql-transforms.js +0 -119
  114. package/dist/build/auto-import.d.ts +0 -10
  115. package/dist/build/auto-import.d.ts.map +0 -1
  116. package/dist/build/auto-import.js +0 -120
  117. package/dist/build/directory-named-import.d.ts +0 -2
  118. package/dist/build/directory-named-import.d.ts.map +0 -1
  119. package/dist/build/directory-named-import.js +0 -26
  120. package/dist/build/esbuild-plugin-api-graphql.d.ts +0 -6
  121. package/dist/build/esbuild-plugin-api-graphql.d.ts.map +0 -1
  122. package/dist/build/esbuild-plugin-api-graphql.js +0 -80
  123. package/dist/build/esbuild-plugin-cedar-otel-wrapping.d.ts +0 -13
  124. package/dist/build/esbuild-plugin-cedar-otel-wrapping.d.ts.map +0 -1
  125. package/dist/build/esbuild-plugin-cedar-otel-wrapping.js +0 -180
  126. package/dist/build/esbuild-plugin-handler-als-wrapping.d.ts +0 -4
  127. package/dist/build/esbuild-plugin-handler-als-wrapping.d.ts.map +0 -1
  128. package/dist/build/esm-extensions.d.ts +0 -33
  129. package/dist/build/esm-extensions.d.ts.map +0 -1
  130. package/dist/build/esm-extensions.js +0 -37
  131. package/dist/build/import-dir.d.ts +0 -22
  132. package/dist/build/import-dir.d.ts.map +0 -1
  133. package/dist/build/import-dir.js +0 -54
  134. package/dist/build/job-path-injector.d.ts +0 -15
  135. package/dist/build/job-path-injector.d.ts.map +0 -1
  136. package/dist/build/job-path-injector.js +0 -69
  137. package/dist/build/src-alias.d.ts +0 -14
  138. package/dist/build/src-alias.d.ts.map +0 -1
  139. package/dist/build/src-alias.js +0 -17
  140. package/dist/build/tsconfig-paths.d.ts +0 -2
  141. package/dist/build/tsconfig-paths.d.ts.map +0 -1
  142. package/dist/build/tsconfig-paths.js +0 -72
  143. package/dist/generate/templates/mirror-cell-fragment.d.ts.template +0 -18
@@ -0,0 +1,16 @@
1
+ import type { LoadTypedefsOptions } from '@graphql-tools/load';
2
+ type TypeDefResult = {
3
+ typeDefFiles: string[];
4
+ errors: {
5
+ message: string;
6
+ error: unknown;
7
+ }[];
8
+ };
9
+ export declare const generateTypeDefGraphQLApi: () => Promise<TypeDefResult>;
10
+ export declare const generateTypeDefGraphQLWeb: () => Promise<TypeDefResult>;
11
+ export declare function getLoadDocumentsOptions(filename: string): LoadTypedefsOptions<{
12
+ cwd: string;
13
+ }>;
14
+ export declare const getResolverFnType: () => "(\n args: TArgs,\n obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }\n ) => TResult | Promise<TResult>" | "(\n args?: TArgs,\n obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }\n ) => TResult | Promise<TResult>";
15
+ export {};
16
+ //# sourceMappingURL=graphqlCodeGen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphqlCodeGen.d.ts","sourceRoot":"","sources":["../../../src/generate/graphqlCodeGen.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAmB9D,KAAK,aAAa,GAAG;IACnB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;CAC9C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,aAAa,CAiFvE,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,aAAa,CAwDvE,CAAA;AAmCD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;SACD,MAAM;GAQ5D;AAmKD,eAAO,MAAM,iBAAiB,4RAe7B,CAAA"}
@@ -0,0 +1,380 @@
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_node_fs = __toESM(require("node:fs"), 1);
38
+ var import_node_path = __toESM(require("node:path"), 1);
39
+ var import_node_url = require("node:url");
40
+ var addPlugin = __toESM(require("@graphql-codegen/add"), 1);
41
+ var import_cli = require("@graphql-codegen/cli");
42
+ var import_core = require("@graphql-codegen/core");
43
+ var typescriptPlugin = __toESM(require("@graphql-codegen/typescript"), 1);
44
+ var typescriptOperations = __toESM(require("@graphql-codegen/typescript-operations"), 1);
45
+ var import_code_file_loader = require("@graphql-tools/code-file-loader");
46
+ var import_graphql_file_loader = require("@graphql-tools/graphql-file-loader");
47
+ var import_load = require("@graphql-tools/load");
48
+ var import_execa = __toESM(require("execa"), 1);
49
+ var import_graphql = require("graphql");
50
+ var import_project_config = require("@cedarjs/project-config");
51
+ var import_packageManager = require("@cedarjs/project-config/packageManager");
52
+ var import_project = require("../project.js");
53
+ var rwTypescriptResolvers = __toESM(require("./plugins/rw-typescript-resolvers/index.js"), 1);
54
+ var CodegenSide = /* @__PURE__ */ ((CodegenSide2) => {
55
+ CodegenSide2[CodegenSide2["API"] = 0] = "API";
56
+ CodegenSide2[CodegenSide2["WEB"] = 1] = "WEB";
57
+ return CodegenSide2;
58
+ })(CodegenSide || {});
59
+ const generateTypeDefGraphQLApi = async () => {
60
+ const config = (0, import_project_config.getConfig)();
61
+ const errors = [];
62
+ if (config.experimental.useSDLCodeGenForGraphQLTypes) {
63
+ const paths = (0, import_project_config.getPaths)();
64
+ const sdlCodegen = await import("@sdl-codegen/node");
65
+ const dtsFiles = [];
66
+ try {
67
+ const output = await sdlCodegen.runFullCodegen("redwood", { paths });
68
+ dtsFiles.push(...output.paths);
69
+ } catch (e) {
70
+ if (e instanceof Error) {
71
+ errors.push({ message: e.message, error: e });
72
+ } else {
73
+ throw e;
74
+ }
75
+ }
76
+ return {
77
+ typeDefFiles: dtsFiles,
78
+ errors
79
+ };
80
+ }
81
+ const filename = import_node_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
82
+ const prismaModels = await getPrismaModels();
83
+ const prismaImports = Object.keys(prismaModels).map((key) => {
84
+ return `${key} as Prisma${key}`;
85
+ });
86
+ const prismaImportSource = "src/lib/db";
87
+ const extraPlugins = [
88
+ {
89
+ name: "add",
90
+ options: {
91
+ content: [
92
+ `import { Prisma } from "${prismaImportSource}"`,
93
+ "import { MergePrismaWithSdlTypes, MakeRelationsOptional } from '@cedarjs/api'",
94
+ `import { ${prismaImports.join(", ")} } from '${prismaImportSource}'`
95
+ ],
96
+ placement: "prepend"
97
+ },
98
+ codegenPlugin: addPlugin
99
+ },
100
+ {
101
+ name: "print-mapped-models",
102
+ options: {},
103
+ codegenPlugin: printMappedModelsPlugin
104
+ },
105
+ {
106
+ name: "typescript-resolvers",
107
+ options: {},
108
+ codegenPlugin: rwTypescriptResolvers
109
+ }
110
+ ];
111
+ try {
112
+ return {
113
+ typeDefFiles: await runCodegenGraphQL(
114
+ [],
115
+ extraPlugins,
116
+ filename,
117
+ 0 /* API */
118
+ ),
119
+ errors
120
+ };
121
+ } catch (e) {
122
+ errors.push({
123
+ message: "Error: Could not generate GraphQL type definitions (api)",
124
+ error: e
125
+ });
126
+ return {
127
+ typeDefFiles: [],
128
+ errors
129
+ };
130
+ }
131
+ };
132
+ const generateTypeDefGraphQLWeb = async () => {
133
+ const filename = import_node_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
134
+ const options = getLoadDocumentsOptions(filename);
135
+ const documentsGlob = "./web/src/**/!(*.d).{ts,tsx,js,jsx}";
136
+ let documents;
137
+ try {
138
+ documents = await (0, import_load.loadDocuments)([documentsGlob], options);
139
+ } catch {
140
+ return {
141
+ typeDefFiles: [],
142
+ errors: []
143
+ };
144
+ }
145
+ const extraPlugins = [
146
+ {
147
+ name: "add",
148
+ options: {
149
+ content: `import { Prisma } from "$api/src/lib/db"`,
150
+ placement: "prepend"
151
+ },
152
+ codegenPlugin: addPlugin
153
+ },
154
+ {
155
+ name: "typescript-operations",
156
+ options: {},
157
+ codegenPlugin: typescriptOperations
158
+ }
159
+ ];
160
+ const errors = [];
161
+ try {
162
+ return {
163
+ typeDefFiles: await runCodegenGraphQL(
164
+ documents,
165
+ extraPlugins,
166
+ filename,
167
+ 1 /* WEB */
168
+ ),
169
+ errors
170
+ };
171
+ } catch (e) {
172
+ errors.push({
173
+ message: "Error: Could not generate GraphQL type definitions (web)",
174
+ error: e
175
+ });
176
+ return {
177
+ typeDefFiles: [],
178
+ errors
179
+ };
180
+ }
181
+ };
182
+ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
183
+ const userCodegenConfig = await (0, import_cli.loadCodegenConfig)({
184
+ configFilePath: (0, import_project_config.getPaths)().base
185
+ });
186
+ const pluginConfig = await getPluginConfig(side);
187
+ const mergedConfig = {
188
+ ...pluginConfig,
189
+ ...userCodegenConfig?.config?.config
190
+ };
191
+ const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
192
+ const output = await (0, import_core.codegen)(options);
193
+ import_node_fs.default.mkdirSync(import_node_path.default.dirname(filename), { recursive: true });
194
+ import_node_fs.default.writeFileSync(filename, output);
195
+ return [filename];
196
+ }
197
+ function getLoadDocumentsOptions(filename) {
198
+ const loadTypedefsConfig = {
199
+ cwd: (0, import_project_config.getPaths)().base,
200
+ ignore: [filename],
201
+ loaders: [new import_code_file_loader.CodeFileLoader()],
202
+ sort: true
203
+ };
204
+ return loadTypedefsConfig;
205
+ }
206
+ async function importGeneratedPrismaClient() {
207
+ const cacheBuster = `?t=${Date.now()}`;
208
+ const { clientPath, error } = await (0, import_project_config.resolveGeneratedPrismaClient)();
209
+ if (!clientPath) {
210
+ throw new Error(error);
211
+ }
212
+ const fileUrl = (0, import_node_url.pathToFileURL)(clientPath).href + cacheBuster;
213
+ const freshPrisma = await import(fileUrl);
214
+ return freshPrisma;
215
+ }
216
+ function isModelNameRecord(value) {
217
+ if (typeof value !== "object" || value === null) {
218
+ return false;
219
+ }
220
+ return Object.values(value).every((entry) => typeof entry === "string");
221
+ }
222
+ function getModelName(mod) {
223
+ if (typeof mod !== "object" || mod === null || !("Prisma" in mod)) {
224
+ return null;
225
+ }
226
+ const prismaModule = mod.Prisma;
227
+ if (typeof prismaModule !== "object" || prismaModule === null || !("ModelName" in prismaModule)) {
228
+ return null;
229
+ }
230
+ const modelName = prismaModule.ModelName;
231
+ if (typeof modelName !== "object" || modelName === null) {
232
+ return null;
233
+ }
234
+ if (isModelNameRecord(modelName)) {
235
+ return modelName;
236
+ }
237
+ return null;
238
+ }
239
+ async function getPrismaClient() {
240
+ try {
241
+ const localPrisma = await importGeneratedPrismaClient();
242
+ const modelName = getModelName(localPrisma);
243
+ if (modelName) {
244
+ return { ModelName: modelName };
245
+ }
246
+ } catch {
247
+ }
248
+ const pm = (0, import_packageManager.getPackageManager)();
249
+ const pmExec = pm === "npm" ? "npx" : pm;
250
+ import_execa.default.sync(pmExec, ["cedar", "prisma", "generate"]);
251
+ try {
252
+ const freshPrisma = await importGeneratedPrismaClient();
253
+ const modelName = getModelName(freshPrisma);
254
+ if (modelName) {
255
+ return { ModelName: modelName };
256
+ }
257
+ } catch {
258
+ }
259
+ return { ModelName: {} };
260
+ }
261
+ async function getPrismaModels() {
262
+ const localPrisma = await getPrismaClient();
263
+ const prismaModels = localPrisma.ModelName;
264
+ if (prismaModels.RW_DataMigration) {
265
+ delete prismaModels.RW_DataMigration;
266
+ }
267
+ return prismaModels;
268
+ }
269
+ async function getPluginConfig(side) {
270
+ const prismaModels = await getPrismaModels();
271
+ Object.keys(prismaModels).forEach((key) => {
272
+ prismaModels[key] = `MergePrismaWithSdlTypes<Prisma${key}, MakeRelationsOptional<${key}, AllMappedModels>, AllMappedModels>`;
273
+ });
274
+ const scalars = {
275
+ // We need these, otherwise these scalars are mapped to any
276
+ BigInt: "number",
277
+ // @Note: DateTime fields can be valid Date-strings, or the Date object in the api side. They're always strings on the web side.
278
+ DateTime: side === 1 /* WEB */ ? "string" : "Date | string",
279
+ Date: side === 1 /* WEB */ ? "string" : "Date | string",
280
+ JSON: "Prisma.JsonValue",
281
+ JSONObject: "Prisma.JsonObject",
282
+ Time: side === 1 /* WEB */ ? "string" : "Date | string",
283
+ Byte: "Uint8Array"
284
+ };
285
+ const config = (0, import_project_config.getConfig)();
286
+ if (config.graphql.includeScalars.File) {
287
+ scalars.File = "File";
288
+ }
289
+ const pluginConfig = {
290
+ makeResolverTypeCallable: true,
291
+ namingConvention: "keep",
292
+ // to allow camelCased query names
293
+ scalars,
294
+ // prevent type names being PetQueryQuery, RW generators already append
295
+ // Query/Mutation/etc
296
+ omitOperationSuffix: true,
297
+ showUnusedMappers: false,
298
+ customResolverFn: getResolverFnType(),
299
+ mappers: prismaModels,
300
+ avoidOptionals: {
301
+ // We do this, so that service tests can call resolvers without doing a null check
302
+ // see https://github.com/redwoodjs/redwood/pull/6222#issuecomment-1230156868
303
+ // Look at type or source https://shrtm.nu/2BA0 for possible config, not well documented
304
+ resolvers: true
305
+ },
306
+ contextType: `@cedarjs/graphql-server/dist/types#CedarGraphQLContext`
307
+ };
308
+ return pluginConfig;
309
+ }
310
+ const getResolverFnType = () => {
311
+ const tsConfig = (0, import_project.getTsConfigs)();
312
+ if (tsConfig.api?.compilerOptions?.strict) {
313
+ return `(
314
+ args: TArgs,
315
+ obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
316
+ ) => TResult | Promise<TResult>`;
317
+ } else {
318
+ return `(
319
+ args?: TArgs,
320
+ obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
321
+ ) => TResult | Promise<TResult>`;
322
+ }
323
+ };
324
+ const printMappedModelsPlugin = {
325
+ plugin: (schema, _documents, config) => {
326
+ const sdlTypesWhichAreMapped = Object.values(schema.getTypeMap()).filter((type) => {
327
+ return type.astNode?.kind === import_graphql.Kind.OBJECT_TYPE_DEFINITION;
328
+ }).filter((objectDefType) => {
329
+ const modelName = objectDefType.astNode?.name.value;
330
+ return modelName && modelName in config.mappers;
331
+ }).map((objectDefType) => objectDefType.astNode?.name.value);
332
+ return `type MaybeOrArrayOfMaybe<T> = T | Maybe<T> | Maybe<T>[];
333
+ type AllMappedModels = MaybeOrArrayOfMaybe<${sdlTypesWhichAreMapped.join(
334
+ " | "
335
+ )}>`;
336
+ }
337
+ };
338
+ function getCodegenOptions(documents, config, extraPlugins) {
339
+ const plugins = [
340
+ { typescript: { enumsAsTypes: true } },
341
+ ...extraPlugins.map((plugin) => ({ [plugin.name]: plugin.options }))
342
+ ];
343
+ const pluginMap = {
344
+ typescript: typescriptPlugin,
345
+ ...extraPlugins.reduce(
346
+ (acc, cur) => ({ ...acc, [cur.name]: cur.codegenPlugin }),
347
+ {}
348
+ )
349
+ };
350
+ const options = {
351
+ // The typescript plugin returns a string instead of writing to a file, so
352
+ // `filename` is not used
353
+ filename: "",
354
+ // `schemaAst` is used instead of `schema` if `schemaAst` is defined, and
355
+ // `schema` isn't. In the source for GenerateOptions they have this
356
+ // comment:
357
+ // Remove schemaAst and change schema to GraphQLSchema in the next major
358
+ // version
359
+ // When that happens we'll have have to remove our `schema` line, and
360
+ // rename `schemaAst` to `schema`
361
+ schema: void 0,
362
+ schemaAst: (0, import_load.loadSchemaSync)((0, import_project_config.getPaths)().generated.schema, {
363
+ loaders: [new import_graphql_file_loader.GraphQLFileLoader()],
364
+ sort: true
365
+ }),
366
+ documents,
367
+ config,
368
+ plugins,
369
+ pluginMap,
370
+ pluginContext: {}
371
+ };
372
+ return options;
373
+ }
374
+ // Annotate the CommonJS export names for ESM import in node:
375
+ 0 && (module.exports = {
376
+ generateTypeDefGraphQLApi,
377
+ generateTypeDefGraphQLWeb,
378
+ getLoadDocumentsOptions,
379
+ getResolverFnType
380
+ });
@@ -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":"AAyBA,eAAO,MAAM,qBAAqB;;;iBA2DP,MAAM;eAAS,OAAO;;EA2EhD,CAAA"}
@@ -0,0 +1,157 @@
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_node_fs = __toESM(require("node: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_ansis = __toESM(require("ansis"), 1);
40
+ var import_graphql = require("graphql");
41
+ var import_termi_link = require("termi-link");
42
+ var import_graphql_server = require("@cedarjs/graphql-server");
43
+ var import_project_config = require("@cedarjs/project-config");
44
+ const generateGraphQLSchema = async () => {
45
+ const cedarPaths = (0, import_project_config.getPaths)();
46
+ const cedarConfig = (0, import_project_config.getConfig)();
47
+ const schemaPointerMap = {
48
+ [(0, import_graphql.print)(import_graphql_server.rootSchema.schema)]: {},
49
+ "graphql/**/*.sdl.{js,ts}": {},
50
+ "directives/**/*.{js,ts}": {},
51
+ "!directives/**/*.test.{js,ts}": {},
52
+ "!directives/**/*.spec.{js,ts}": {},
53
+ "subscriptions/**/*.{js,ts}": {},
54
+ "!subscriptions/**/*.test.{js,ts}": {},
55
+ "!subscriptions/**/*.spec.{js,ts}": {}
56
+ };
57
+ for (const [name, schema] of Object.entries(import_graphql_server.rootSchema.scalarSchemas)) {
58
+ if (cedarConfig.graphql.includeScalars[name]) {
59
+ schemaPointerMap[(0, import_graphql.print)(schema)] = {};
60
+ }
61
+ }
62
+ if ((0, import_project_config.resolveFile)(`${(0, import_project_config.getPaths)().api.src}/server`)) {
63
+ try {
64
+ const { liveDirectiveTypeDefs } = await import("@cedarjs/realtime");
65
+ schemaPointerMap[liveDirectiveTypeDefs] = {};
66
+ } catch (error) {
67
+ if (error.code !== "ERR_MODULE_NOT_FOUND") {
68
+ throw error;
69
+ }
70
+ }
71
+ }
72
+ const loadSchemaConfig = {
73
+ assumeValidSDL: true,
74
+ sort: true,
75
+ convertExtensions: true,
76
+ includeSources: true,
77
+ cwd: cedarPaths.api.src,
78
+ schema: Object.keys(schemaPointerMap),
79
+ generates: {
80
+ [cedarPaths.generated.schema]: {
81
+ plugins: ["schema-ast"]
82
+ }
83
+ },
84
+ silent: false,
85
+ errorsOnly: false,
86
+ pluginContext: {},
87
+ loaders: [new import_code_file_loader.CodeFileLoader()]
88
+ };
89
+ let loadedSchema;
90
+ const errors = [];
91
+ try {
92
+ loadedSchema = await (0, import_load.loadSchema)(schemaPointerMap, loadSchemaConfig);
93
+ } catch (e) {
94
+ if (e instanceof Error) {
95
+ const match = e.message.match(/Unknown type: "(\w+)"/);
96
+ const name = match?.[1];
97
+ const result = await (0, import_project_config.getPrismaSchemas)();
98
+ const schemaPrisma = result.schemas.map(([, content]) => content).join("\n");
99
+ const errorObject = {
100
+ message: `Schema loading failed. ${e.message}`,
101
+ error: e
102
+ };
103
+ errors.push(errorObject);
104
+ if (name && schemaPrisma.includes(`model ${name}`)) {
105
+ errorObject.message = [
106
+ errorObject.message,
107
+ "",
108
+ ` ${import_ansis.default.bgYellow(` ${import_ansis.default.black.bold("Heads up")} `)}`,
109
+ "",
110
+ import_ansis.default.yellow(
111
+ ` It looks like you have a ${name} model in your Prisma schema.`
112
+ ),
113
+ import_ansis.default.yellow(
114
+ ` If it's part of a relation, you may have to generate SDL or scaffolding for ${name} too.`
115
+ ),
116
+ import_ansis.default.yellow(
117
+ ` So, if you haven't done that yet, ignore this error message and run the SDL or scaffold generator for ${name} now.`
118
+ ),
119
+ "",
120
+ import_ansis.default.yellow(
121
+ ` See the ${(0, import_termi_link.terminalLink)(
122
+ "Troubleshooting Generators",
123
+ "https://cedarjs.com/docs/schema-relations#troubleshooting-generators"
124
+ )} section in our docs for more help.`
125
+ )
126
+ ].join("\n");
127
+ }
128
+ }
129
+ }
130
+ const options = {
131
+ config: {},
132
+ // no extra config needed for merged schema file generation
133
+ plugins: [{ "schema-ast": {} }],
134
+ pluginMap: { "schema-ast": schemaAstPlugin },
135
+ schema: {},
136
+ schemaAst: loadedSchema,
137
+ filename: cedarPaths.generated.schema,
138
+ documents: []
139
+ };
140
+ if (loadedSchema) {
141
+ try {
142
+ const schema = await (0, import_core.codegen)(options);
143
+ import_node_fs.default.writeFileSync(cedarPaths.generated.schema, schema);
144
+ return { schemaPath: cedarPaths.generated.schema, errors };
145
+ } catch (e) {
146
+ errors.push({
147
+ message: `GraphQL Schema codegen failed`,
148
+ error: e
149
+ });
150
+ }
151
+ }
152
+ return { schemaPath: "", errors };
153
+ };
154
+ // Annotate the CommonJS export names for ESM import in node:
155
+ 0 && (module.exports = {
156
+ generateGraphQLSchema
157
+ });
@@ -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,CA6E1B,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 = async (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 } = await (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().content.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,10 @@
1
+ import type { TypeScriptResolversPluginConfig } from '@graphql-codegen/typescript-resolvers';
2
+ import { TypeScriptResolversVisitor } from '@graphql-codegen/typescript-resolvers';
3
+ import type { FieldDefinitionResult } from '@graphql-codegen/visitor-plugin-common';
4
+ import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
5
+ export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
6
+ constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
7
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): FieldDefinitionResult;
8
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string | null;
9
+ }
10
+ //# 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;AAElF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AACnF,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;IAMvB,eAAe,CACb,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,GAAG,MAAM,EACpB,MAAM,EAAE,GAAG,GACV,qBAAqB;IAgCxB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI;CA6FpE"}