@cedarjs/internal 2.8.1-next.0 → 2.8.1-next.116

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 (35) hide show
  1. package/dist/cjs/generate/graphqlCodeGen.d.ts.map +1 -1
  2. package/dist/cjs/generate/graphqlCodeGen.js +58 -24
  3. package/dist/cjs/generate/graphqlSchema.d.ts.map +1 -1
  4. package/dist/cjs/generate/graphqlSchema.js +9 -14
  5. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -1
  6. package/dist/cjs/generate/plugins/rw-typescript-resolvers/index.js +3 -3
  7. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts +3 -2
  8. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -1
  9. package/dist/cjs/generate/plugins/rw-typescript-resolvers/visitor.js +34 -26
  10. package/dist/cjs/index.d.ts +0 -1
  11. package/dist/cjs/index.d.ts.map +1 -1
  12. package/dist/cjs/index.js +0 -3
  13. package/dist/cjs/project.d.ts +0 -1
  14. package/dist/cjs/project.d.ts.map +1 -1
  15. package/dist/cjs/project.js +0 -10
  16. package/dist/cjs/routes.d.ts.map +1 -1
  17. package/dist/cjs/routes.js +2 -3
  18. package/dist/generate/graphqlCodeGen.d.ts.map +1 -1
  19. package/dist/generate/graphqlCodeGen.js +56 -22
  20. package/dist/generate/graphqlSchema.d.ts.map +1 -1
  21. package/dist/generate/graphqlSchema.js +10 -15
  22. package/dist/generate/plugins/rw-typescript-resolvers/index.d.ts.map +1 -1
  23. package/dist/generate/plugins/rw-typescript-resolvers/index.js +3 -3
  24. package/dist/generate/plugins/rw-typescript-resolvers/visitor.d.ts +3 -2
  25. package/dist/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -1
  26. package/dist/generate/plugins/rw-typescript-resolvers/visitor.js +35 -30
  27. package/dist/index.d.ts +0 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +0 -2
  30. package/dist/project.d.ts +0 -1
  31. package/dist/project.d.ts.map +1 -1
  32. package/dist/project.js +1 -10
  33. package/dist/routes.d.ts.map +1 -1
  34. package/dist/routes.js +2 -3
  35. package/package.json +21 -22
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlCodeGen.d.ts","sourceRoot":"","sources":["../../../src/generate/graphqlCodeGen.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAkB9D,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,CAmFvE,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,aAAa,CA0DvE,CAAA;AAiCD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;SACD,MAAM;GAQ5D;AAkHD,eAAO,MAAM,iBAAiB,4RAe7B,CAAA"}
1
+ {"version":3,"file":"graphqlCodeGen.d.ts","sourceRoot":"","sources":["../../../src/generate/graphqlCodeGen.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAkB9D,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;AA8JD,eAAO,MAAM,iBAAiB,4RAe7B,CAAA"}
@@ -35,7 +35,8 @@ __export(graphqlCodeGen_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(graphqlCodeGen_exports);
37
37
  var import_node_fs = __toESM(require("node:fs"), 1);
38
- var import_path = __toESM(require("path"), 1);
38
+ var import_node_path = __toESM(require("node:path"), 1);
39
+ var import_node_url = require("node:url");
39
40
  var addPlugin = __toESM(require("@graphql-codegen/add"), 1);
40
41
  var import_cli = require("@graphql-codegen/cli");
41
42
  var import_core = require("@graphql-codegen/core");
@@ -76,12 +77,12 @@ const generateTypeDefGraphQLApi = async () => {
76
77
  errors
77
78
  };
78
79
  }
79
- const filename = import_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
80
+ const filename = import_node_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
80
81
  const prismaModels = await getPrismaModels();
81
82
  const prismaImports = Object.keys(prismaModels).map((key) => {
82
83
  return `${key} as Prisma${key}`;
83
84
  });
84
- const prismaImportSource = (0, import_project.dbReexportsPrismaClient)() ? "src/lib/db" : "@prisma/client";
85
+ const prismaImportSource = "src/lib/db";
85
86
  const extraPlugins = [
86
87
  {
87
88
  name: "add",
@@ -128,7 +129,7 @@ const generateTypeDefGraphQLApi = async () => {
128
129
  }
129
130
  };
130
131
  const generateTypeDefGraphQLWeb = async () => {
131
- const filename = import_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
132
+ const filename = import_node_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
132
133
  const options = getLoadDocumentsOptions(filename);
133
134
  const documentsGlob = "./web/src/**/!(*.d).{ts,tsx,js,jsx}";
134
135
  let documents;
@@ -144,7 +145,7 @@ const generateTypeDefGraphQLWeb = async () => {
144
145
  {
145
146
  name: "add",
146
147
  options: {
147
- content: `import { Prisma } from "${(0, import_project.dbReexportsPrismaClient)() ? "$api/src/lib/db" : "@prisma/client"}"`,
148
+ content: `import { Prisma } from "$api/src/lib/db"`,
148
149
  placement: "prepend"
149
150
  },
150
151
  codegenPlugin: addPlugin
@@ -181,13 +182,14 @@ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
181
182
  const userCodegenConfig = await (0, import_cli.loadCodegenConfig)({
182
183
  configFilePath: (0, import_project_config.getPaths)().base
183
184
  });
185
+ const pluginConfig = await getPluginConfig(side);
184
186
  const mergedConfig = {
185
- ...await getPluginConfig(side),
187
+ ...pluginConfig,
186
188
  ...userCodegenConfig?.config?.config
187
189
  };
188
190
  const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
189
191
  const output = await (0, import_core.codegen)(options);
190
- import_node_fs.default.mkdirSync(import_path.default.dirname(filename), { recursive: true });
192
+ import_node_fs.default.mkdirSync(import_node_path.default.dirname(filename), { recursive: true });
191
193
  import_node_fs.default.writeFileSync(filename, output);
192
194
  return [filename];
193
195
  }
@@ -200,26 +202,58 @@ function getLoadDocumentsOptions(filename) {
200
202
  };
201
203
  return loadTypedefsConfig;
202
204
  }
203
- async function getPrismaClient(hasGenerated = false) {
204
- let localPrisma;
205
- if (hasGenerated) {
206
- const cacheBuster = `?t=${Date.now()}`;
207
- const prismaClientPath = (0, import_project_config.resolveGeneratedPrismaClient)({ mustExist: true });
208
- const { default: freshPrisma } = await import(`file://${prismaClientPath}${cacheBuster}`);
209
- localPrisma = freshPrisma;
210
- } else {
211
- const { default: packagePrisma } = await import("@prisma/client");
212
- localPrisma = packagePrisma;
205
+ async function importGeneratedPrismaClient() {
206
+ const cacheBuster = `?t=${Date.now()}`;
207
+ const { clientPath, error } = await (0, import_project_config.resolveGeneratedPrismaClient)();
208
+ if (!clientPath) {
209
+ throw new Error(error);
210
+ }
211
+ const fileUrl = (0, import_node_url.pathToFileURL)(clientPath).href + cacheBuster;
212
+ const freshPrisma = await import(fileUrl);
213
+ return freshPrisma;
214
+ }
215
+ function isModelNameRecord(value) {
216
+ if (typeof value !== "object" || value === null) {
217
+ return false;
218
+ }
219
+ return Object.values(value).every((entry) => typeof entry === "string");
220
+ }
221
+ function getModelName(mod) {
222
+ if (typeof mod !== "object" || mod === null || !("Prisma" in mod)) {
223
+ return null;
224
+ }
225
+ const prismaModule = mod.Prisma;
226
+ if (typeof prismaModule !== "object" || prismaModule === null || !("ModelName" in prismaModule)) {
227
+ return null;
228
+ }
229
+ const modelName = prismaModule.ModelName;
230
+ if (typeof modelName !== "object" || modelName === null) {
231
+ return null;
232
+ }
233
+ if (isModelNameRecord(modelName)) {
234
+ return modelName;
213
235
  }
214
- if (!localPrisma.ModelName) {
215
- if (hasGenerated) {
216
- return { ModelName: {} };
217
- } else {
218
- import_execa.default.sync("yarn", ["cedar", "prisma", "generate"]);
219
- return getPrismaClient(true);
236
+ return null;
237
+ }
238
+ async function getPrismaClient() {
239
+ try {
240
+ const localPrisma = await importGeneratedPrismaClient();
241
+ const modelName = getModelName(localPrisma);
242
+ if (modelName) {
243
+ return { ModelName: modelName };
220
244
  }
245
+ } catch {
246
+ }
247
+ import_execa.default.sync("yarn", ["cedar", "prisma", "generate"]);
248
+ try {
249
+ const freshPrisma = await importGeneratedPrismaClient();
250
+ const modelName = getModelName(freshPrisma);
251
+ if (modelName) {
252
+ return { ModelName: modelName };
253
+ }
254
+ } catch {
221
255
  }
222
- return localPrisma;
256
+ return { ModelName: {} };
223
257
  }
224
258
  async function getPrismaModels() {
225
259
  const localPrisma = await getPrismaClient();
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlSchema.d.ts","sourceRoot":"","sources":["../../../src/generate/graphqlSchema.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,qBAAqB;;;iBA6DP,MAAM;eAAS,OAAO;;EA8EhD,CAAA"}
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"}
@@ -36,16 +36,14 @@ var import_core = require("@graphql-codegen/core");
36
36
  var schemaAstPlugin = __toESM(require("@graphql-codegen/schema-ast"), 1);
37
37
  var import_code_file_loader = require("@graphql-tools/code-file-loader");
38
38
  var import_load = require("@graphql-tools/load");
39
- var import_internals = __toESM(require("@prisma/internals"), 1);
40
39
  var import_ansis = __toESM(require("ansis"), 1);
41
40
  var import_graphql = require("graphql");
42
41
  var import_termi_link = require("termi-link");
43
42
  var import_graphql_server = require("@cedarjs/graphql-server");
44
43
  var import_project_config = require("@cedarjs/project-config");
45
- const { getSchemaWithPath } = import_internals.default;
46
44
  const generateGraphQLSchema = async () => {
47
- const redwoodProjectPaths = (0, import_project_config.getPaths)();
48
- const redwoodProjectConfig = (0, import_project_config.getConfig)();
45
+ const cedarPaths = (0, import_project_config.getPaths)();
46
+ const cedarConfig = (0, import_project_config.getConfig)();
49
47
  const schemaPointerMap = {
50
48
  [(0, import_graphql.print)(import_graphql_server.rootSchema.schema)]: {},
51
49
  "graphql/**/*.sdl.{js,ts}": {},
@@ -57,7 +55,7 @@ const generateGraphQLSchema = async () => {
57
55
  "!subscriptions/**/*.spec.{js,ts}": {}
58
56
  };
59
57
  for (const [name, schema] of Object.entries(import_graphql_server.rootSchema.scalarSchemas)) {
60
- if (redwoodProjectConfig.graphql.includeScalars[name]) {
58
+ if (cedarConfig.graphql.includeScalars[name]) {
61
59
  schemaPointerMap[(0, import_graphql.print)(schema)] = {};
62
60
  }
63
61
  }
@@ -76,10 +74,10 @@ const generateGraphQLSchema = async () => {
76
74
  sort: true,
77
75
  convertExtensions: true,
78
76
  includeSources: true,
79
- cwd: redwoodProjectPaths.api.src,
77
+ cwd: cedarPaths.api.src,
80
78
  schema: Object.keys(schemaPointerMap),
81
79
  generates: {
82
- [redwoodProjectPaths.generated.schema]: {
80
+ [cedarPaths.generated.schema]: {
83
81
  plugins: ["schema-ast"]
84
82
  }
85
83
  },
@@ -96,10 +94,7 @@ const generateGraphQLSchema = async () => {
96
94
  if (e instanceof Error) {
97
95
  const match = e.message.match(/Unknown type: "(\w+)"/);
98
96
  const name = match?.[1];
99
- const schemaPath = await (0, import_project_config.getSchemaPath)(
100
- redwoodProjectPaths.api.prismaConfig
101
- );
102
- const result = await getSchemaWithPath(schemaPath);
97
+ const result = await (0, import_project_config.getPrismaSchemas)();
103
98
  const schemaPrisma = result.schemas.map(([, content]) => content).join("\n");
104
99
  const errorObject = {
105
100
  message: `Schema loading failed. ${e.message}`,
@@ -139,14 +134,14 @@ const generateGraphQLSchema = async () => {
139
134
  pluginMap: { "schema-ast": schemaAstPlugin },
140
135
  schema: {},
141
136
  schemaAst: loadedSchema,
142
- filename: redwoodProjectPaths.generated.schema,
137
+ filename: cedarPaths.generated.schema,
143
138
  documents: []
144
139
  };
145
140
  if (loadedSchema) {
146
141
  try {
147
142
  const schema = await (0, import_core.codegen)(options);
148
- import_node_fs.default.writeFileSync(redwoodProjectPaths.generated.schema, schema);
149
- return { schemaPath: redwoodProjectPaths.generated.schema, errors };
143
+ import_node_fs.default.writeFileSync(cedarPaths.generated.schema, schema);
144
+ return { schemaPath: cedarPaths.generated.schema, errors };
150
145
  } catch (e) {
151
146
  errors.push({
152
147
  message: `GraphQL Schema codegen failed`,
@@ -1 +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"}
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"}
@@ -25,12 +25,12 @@ module.exports = __toCommonJS(rw_typescript_resolvers_exports);
25
25
  var import_plugin_helpers = require("@graphql-codegen/plugin-helpers");
26
26
  var import_typescript_resolvers = require("@graphql-codegen/typescript-resolvers");
27
27
  var import_visitor = require("./visitor.js");
28
- const plugin = (schema, _documents, config) => {
28
+ const plugin = async (schema, _documents, config) => {
29
29
  const visitor = new import_visitor.RwTypeScriptResolversVisitor(config, schema);
30
30
  const visitorResult = (0, import_plugin_helpers.oldVisit)((0, import_plugin_helpers.getCachedDocumentNodeFromSchema)(schema), {
31
31
  leave: visitor
32
32
  });
33
- const { prepend, content } = (0, import_typescript_resolvers.plugin)(schema, [], config);
33
+ const { prepend = [], content } = await (0, import_typescript_resolvers.plugin)(schema, [], config);
34
34
  prepend.push(`export type OptArgsResolverFn<TResult, TParent = {}, TContext = {}, TArgs = {}> = (
35
35
  args?: TArgs,
36
36
  obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
@@ -44,7 +44,7 @@ const plugin = (schema, _documents, config) => {
44
44
  const visitorResultStart = splitContent.indexOf(
45
45
  visitorResult.definitions.filter((d) => typeof d === "string")[0].split("\n")[0]
46
46
  );
47
- const splitRootResolver = visitor.getRootResolver().split("\n");
47
+ const splitRootResolver = visitor.getRootResolver().content.split("\n");
48
48
  const visitorResultEnd = splitContent.findIndex(
49
49
  (line, index) => line === splitRootResolver[0] && splitContent[index + 1] === splitRootResolver[1]
50
50
  );
@@ -1,9 +1,10 @@
1
1
  import type { TypeScriptResolversPluginConfig } from '@graphql-codegen/typescript-resolvers';
2
2
  import { TypeScriptResolversVisitor } from '@graphql-codegen/typescript-resolvers';
3
+ import type { FieldDefinitionResult } from '@graphql-codegen/visitor-plugin-common';
3
4
  import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
4
5
  export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
5
6
  constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
6
- FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): (parentName: string) => string | null;
7
- ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
7
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): FieldDefinitionResult;
8
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string | null;
8
9
  }
9
10
  //# sourceMappingURL=visitor.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../../../src/generate/plugins/rw-typescript-resolvers/visitor.ts"],"names":[],"mappings":"AACA,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"}
@@ -25,17 +25,26 @@ var import_typescript_resolvers = require("@graphql-codegen/typescript-resolvers
25
25
  var import_visitor_plugin_common = require("@graphql-codegen/visitor-plugin-common");
26
26
  class RwTypeScriptResolversVisitor extends import_typescript_resolvers.TypeScriptResolversVisitor {
27
27
  constructor(pluginConfig, schema) {
28
- super(pluginConfig, schema);
28
+ super(pluginConfig, schema, {});
29
29
  }
30
30
  FieldDefinition(node, key, parent) {
31
31
  const hasArguments = node.arguments && node.arguments.length > 0;
32
32
  const superFieldDefinition = super.FieldDefinition(node, key, parent);
33
- return (parentName) => {
34
- const fieldDef = superFieldDefinition(parentName);
35
- if (!hasArguments && fieldDef?.includes(": Resolver<")) {
36
- return fieldDef.replace(": Resolver<", ": OptArgsResolverFn<");
33
+ return {
34
+ node: superFieldDefinition.node,
35
+ printContent: (parentNode, avoidResolverOptionals) => {
36
+ const result = superFieldDefinition.printContent(
37
+ parentNode,
38
+ avoidResolverOptionals
39
+ );
40
+ if (!hasArguments && result.value?.includes(": Resolver<")) {
41
+ return {
42
+ ...result,
43
+ value: result.value.replace(": Resolver<", ": OptArgsResolverFn<")
44
+ };
45
+ }
46
+ return result;
37
47
  }
38
- return fieldDef;
39
48
  };
40
49
  }
41
50
  // Original implementation is here:
@@ -45,36 +54,35 @@ class RwTypeScriptResolversVisitor extends import_typescript_resolvers.TypeScrip
45
54
  const name = this.convertName(node, {
46
55
  suffix: this.config.resolverTypeSuffix
47
56
  });
48
- const typeName = node.name;
57
+ const typeName = node.name.value;
49
58
  const parentType = this.getParentTypeToUse(typeName);
50
- const fieldsContent = (node.fields || []).map((f) => f(node.name));
51
- const isRootType = [
52
- this.schema.getQueryType()?.name,
53
- this.schema.getMutationType()?.name,
54
- this.schema.getSubscriptionType()?.name
55
- ].includes(typeName);
56
- if (!isRootType) {
57
- fieldsContent.push(
58
- (0, import_visitor_plugin_common.indent)(
59
- `${this.config.internalResolversPrefix}isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>${this.getPunctuation(
60
- "type"
61
- )}`
62
- )
63
- );
64
- }
59
+ const fieldsContent = (node.fields || []).map((f) => {
60
+ if ("printContent" in f && typeof f.printContent === "function") {
61
+ return f.printContent(node, false).value;
62
+ } else {
63
+ throw new Error("Unexpected field type");
64
+ }
65
+ });
65
66
  const blockRelationsResolver = new import_visitor_plugin_common.DeclarationBlock(
66
67
  this._declarationBlockConfig
67
68
  ).export().asKind("type").withName(
68
69
  name.replace("Resolvers", "RelationResolvers"),
69
70
  `<ContextType = ${this.config.contextType.type}, ${this.transformParentGenericType(parentType)}>`
70
71
  ).withBlock(
71
- fieldsContent.map(
72
- (content) => content.replace(
73
- /: (?:OptArgs)?Resolver(?:Fn)?/,
74
- "?: RequiredResolverFn"
72
+ fieldsContent.filter((content) => content !== null).map(
73
+ (content) => (
74
+ // In v5, fields may already carry an optional marker `?:`. The
75
+ // regex consumes the optional `?` so we don't emit a double `??`.
76
+ content.replace(
77
+ /\??: (?:OptArgs)?Resolver(?:Fn)?/,
78
+ "?: RequiredResolverFn"
79
+ )
75
80
  )
76
81
  ).join("\n")
77
82
  );
83
+ if (originalBlock === null) {
84
+ return null;
85
+ }
78
86
  return originalBlock + "\n" + blockRelationsResolver.string;
79
87
  }
80
88
  }
@@ -2,7 +2,6 @@ export * from '@cedarjs/project-config';
2
2
  export * from './ts2js.js';
3
3
  export * from './dev.js';
4
4
  export * from './routes.js';
5
- export { dbReexportsPrismaClient } from './project.js';
6
5
  export * from './files.js';
7
6
  export { generate } from './generate/generate.js';
8
7
  export { buildApi } from './build/api.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAE3B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA"}
package/dist/cjs/index.js CHANGED
@@ -20,7 +20,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var src_exports = {};
21
21
  __export(src_exports, {
22
22
  buildApi: () => import_api.buildApi,
23
- dbReexportsPrismaClient: () => import_project.dbReexportsPrismaClient,
24
23
  generate: () => import_generate.generate,
25
24
  listQueryTypeFieldsInProject: () => import_gql.listQueryTypeFieldsInProject
26
25
  });
@@ -29,7 +28,6 @@ __reExport(src_exports, require("@cedarjs/project-config"), module.exports);
29
28
  __reExport(src_exports, require("./ts2js.js"), module.exports);
30
29
  __reExport(src_exports, require("./dev.js"), module.exports);
31
30
  __reExport(src_exports, require("./routes.js"), module.exports);
32
- var import_project = require("./project.js");
33
31
  __reExport(src_exports, require("./files.js"), module.exports);
34
32
  var import_generate = require("./generate/generate.js");
35
33
  var import_api = require("./build/api.js");
@@ -39,7 +37,6 @@ var import_gql = require("./gql.js");
39
37
  // Annotate the CommonJS export names for ESM import in node:
40
38
  0 && (module.exports = {
41
39
  buildApi,
42
- dbReexportsPrismaClient,
43
40
  generate,
44
41
  listQueryTypeFieldsInProject,
45
42
  ...require("@cedarjs/project-config"),
@@ -5,5 +5,4 @@ export declare const getTsConfigs: () => {
5
5
  export declare const isTypeScriptProject: () => boolean;
6
6
  export declare const isServerFileSetup: () => boolean;
7
7
  export declare const isRealtimeSetup: () => boolean;
8
- export declare const dbReexportsPrismaClient: () => boolean;
9
8
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/project.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;CAuBxB,CAAA;AAED,eAAO,MAAM,mBAAmB,eAM/B,CAAA;AAED,eAAO,MAAM,iBAAiB,eAO7B,CAAA;AAED,eAAO,MAAM,eAAe,eAO3B,CAAA;AAED,eAAO,MAAM,uBAAuB,eAUnC,CAAA"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/project.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;CAuBxB,CAAA;AAED,eAAO,MAAM,mBAAmB,eAM/B,CAAA;AAED,eAAO,MAAM,iBAAiB,eAO7B,CAAA;AAED,eAAO,MAAM,eAAe,eAO3B,CAAA"}
@@ -28,7 +28,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
  var project_exports = {};
30
30
  __export(project_exports, {
31
- dbReexportsPrismaClient: () => dbReexportsPrismaClient,
32
31
  getTsConfigs: () => getTsConfigs,
33
32
  isRealtimeSetup: () => isRealtimeSetup,
34
33
  isServerFileSetup: () => isServerFileSetup,
@@ -74,17 +73,8 @@ const isRealtimeSetup = () => {
74
73
  );
75
74
  return import_node_fs.default.existsSync(realtimePath);
76
75
  };
77
- const dbReexportsPrismaClient = () => {
78
- const dbPath = (0, import_project_config.resolveFile)(import_path.default.join((0, import_project_config.getPaths)().api.lib, "db"));
79
- if (!dbPath) {
80
- return false;
81
- }
82
- const content = import_node_fs.default.readFileSync(dbPath, "utf-8");
83
- return /export\s+\*\s+from\s+['"]@prisma\/client['"]/.test(content);
84
- };
85
76
  // Annotate the CommonJS export names for ESM import in node:
86
77
  0 && (module.exports = {
87
- dbReexportsPrismaClient,
88
78
  getTsConfigs,
89
79
  isRealtimeSetup,
90
80
  isServerFileSetup,
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,WAgBxC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAE9B;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,SAAS,EAoC5C,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/routes.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,WAgBxC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAE9B;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,SAAS,EAmC5C,CAAA"}
@@ -40,7 +40,7 @@ var import_util = require("@cedarjs/router/dist/util");
40
40
  var import_structure = require("@cedarjs/structure");
41
41
  function getDuplicateRoutes() {
42
42
  const duplicateRoutes = [];
43
- const allRoutes = (0, import_structure.getProject)((0, import_project_config.getPaths)().base).router.routes;
43
+ const allRoutes = (0, import_structure.getProject)().router.routes;
44
44
  const uniqueNames = new Set(
45
45
  allRoutes.filter((route) => route.name !== void 0).map((route) => route.name)
46
46
  );
@@ -78,8 +78,7 @@ function warningForDuplicateRoutes() {
78
78
  return message.trimEnd();
79
79
  }
80
80
  const getProjectRoutes = () => {
81
- const rwProject = (0, import_structure.getProject)((0, import_project_config.getPaths)().base);
82
- const routes = rwProject.getRouter().routes;
81
+ const routes = (0, import_structure.getProject)().getRouter().routes;
83
82
  return routes.map((route) => {
84
83
  const { matchRegexString, routeParams } = route.isNotFound ? { matchRegexString: null, routeParams: null } : (0, import_util.getRouteRegexAndParams)(route.path);
85
84
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlCodeGen.d.ts","sourceRoot":"","sources":["../../src/generate/graphqlCodeGen.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAkB9D,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,CAmFvE,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,aAAa,CA0DvE,CAAA;AAiCD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM;SACD,MAAM;GAQ5D;AAkHD,eAAO,MAAM,iBAAiB,4RAe7B,CAAA"}
1
+ {"version":3,"file":"graphqlCodeGen.d.ts","sourceRoot":"","sources":["../../src/generate/graphqlCodeGen.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAkB9D,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;AA8JD,eAAO,MAAM,iBAAiB,4RAe7B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs";
2
- import path from "path";
2
+ import path from "node:path";
3
+ import { pathToFileURL } from "node:url";
3
4
  import * as addPlugin from "@graphql-codegen/add";
4
5
  import { loadCodegenConfig } from "@graphql-codegen/cli";
5
6
  import { codegen } from "@graphql-codegen/core";
@@ -15,7 +16,7 @@ import {
15
16
  getConfig,
16
17
  resolveGeneratedPrismaClient
17
18
  } from "@cedarjs/project-config";
18
- import { getTsConfigs, dbReexportsPrismaClient } from "../project.js";
19
+ import { getTsConfigs } from "../project.js";
19
20
  import * as rwTypescriptResolvers from "./plugins/rw-typescript-resolvers/index.js";
20
21
  var CodegenSide = /* @__PURE__ */ ((CodegenSide2) => {
21
22
  CodegenSide2[CodegenSide2["API"] = 0] = "API";
@@ -49,7 +50,7 @@ const generateTypeDefGraphQLApi = async () => {
49
50
  const prismaImports = Object.keys(prismaModels).map((key) => {
50
51
  return `${key} as Prisma${key}`;
51
52
  });
52
- const prismaImportSource = dbReexportsPrismaClient() ? "src/lib/db" : "@prisma/client";
53
+ const prismaImportSource = "src/lib/db";
53
54
  const extraPlugins = [
54
55
  {
55
56
  name: "add",
@@ -112,7 +113,7 @@ const generateTypeDefGraphQLWeb = async () => {
112
113
  {
113
114
  name: "add",
114
115
  options: {
115
- content: `import { Prisma } from "${dbReexportsPrismaClient() ? "$api/src/lib/db" : "@prisma/client"}"`,
116
+ content: `import { Prisma } from "$api/src/lib/db"`,
116
117
  placement: "prepend"
117
118
  },
118
119
  codegenPlugin: addPlugin
@@ -149,8 +150,9 @@ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
149
150
  const userCodegenConfig = await loadCodegenConfig({
150
151
  configFilePath: getPaths().base
151
152
  });
153
+ const pluginConfig = await getPluginConfig(side);
152
154
  const mergedConfig = {
153
- ...await getPluginConfig(side),
155
+ ...pluginConfig,
154
156
  ...userCodegenConfig?.config?.config
155
157
  };
156
158
  const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
@@ -168,26 +170,58 @@ function getLoadDocumentsOptions(filename) {
168
170
  };
169
171
  return loadTypedefsConfig;
170
172
  }
171
- async function getPrismaClient(hasGenerated = false) {
172
- let localPrisma;
173
- if (hasGenerated) {
174
- const cacheBuster = `?t=${Date.now()}`;
175
- const prismaClientPath = resolveGeneratedPrismaClient({ mustExist: true });
176
- const { default: freshPrisma } = await import(`file://${prismaClientPath}${cacheBuster}`);
177
- localPrisma = freshPrisma;
178
- } else {
179
- const { default: packagePrisma } = await import("@prisma/client");
180
- localPrisma = packagePrisma;
173
+ async function importGeneratedPrismaClient() {
174
+ const cacheBuster = `?t=${Date.now()}`;
175
+ const { clientPath, error } = await resolveGeneratedPrismaClient();
176
+ if (!clientPath) {
177
+ throw new Error(error);
178
+ }
179
+ const fileUrl = pathToFileURL(clientPath).href + cacheBuster;
180
+ const freshPrisma = await import(fileUrl);
181
+ return freshPrisma;
182
+ }
183
+ function isModelNameRecord(value) {
184
+ if (typeof value !== "object" || value === null) {
185
+ return false;
186
+ }
187
+ return Object.values(value).every((entry) => typeof entry === "string");
188
+ }
189
+ function getModelName(mod) {
190
+ if (typeof mod !== "object" || mod === null || !("Prisma" in mod)) {
191
+ return null;
192
+ }
193
+ const prismaModule = mod.Prisma;
194
+ if (typeof prismaModule !== "object" || prismaModule === null || !("ModelName" in prismaModule)) {
195
+ return null;
196
+ }
197
+ const modelName = prismaModule.ModelName;
198
+ if (typeof modelName !== "object" || modelName === null) {
199
+ return null;
200
+ }
201
+ if (isModelNameRecord(modelName)) {
202
+ return modelName;
181
203
  }
182
- if (!localPrisma.ModelName) {
183
- if (hasGenerated) {
184
- return { ModelName: {} };
185
- } else {
186
- execa.sync("yarn", ["cedar", "prisma", "generate"]);
187
- return getPrismaClient(true);
204
+ return null;
205
+ }
206
+ async function getPrismaClient() {
207
+ try {
208
+ const localPrisma = await importGeneratedPrismaClient();
209
+ const modelName = getModelName(localPrisma);
210
+ if (modelName) {
211
+ return { ModelName: modelName };
188
212
  }
213
+ } catch {
214
+ }
215
+ execa.sync("yarn", ["cedar", "prisma", "generate"]);
216
+ try {
217
+ const freshPrisma = await importGeneratedPrismaClient();
218
+ const modelName = getModelName(freshPrisma);
219
+ if (modelName) {
220
+ return { ModelName: modelName };
221
+ }
222
+ } catch {
189
223
  }
190
- return localPrisma;
224
+ return { ModelName: {} };
191
225
  }
192
226
  async function getPrismaModels() {
193
227
  const localPrisma = await getPrismaClient();
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlSchema.d.ts","sourceRoot":"","sources":["../../src/generate/graphqlSchema.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,qBAAqB;;;iBA6DP,MAAM;eAAS,OAAO;;EA8EhD,CAAA"}
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"}
@@ -3,7 +3,6 @@ import { codegen } from "@graphql-codegen/core";
3
3
  import * as schemaAstPlugin from "@graphql-codegen/schema-ast";
4
4
  import { CodeFileLoader } from "@graphql-tools/code-file-loader";
5
5
  import { loadSchema } from "@graphql-tools/load";
6
- import prismaInternals from "@prisma/internals";
7
6
  import ansis from "ansis";
8
7
  import { print } from "graphql";
9
8
  import { terminalLink } from "termi-link";
@@ -12,12 +11,11 @@ import {
12
11
  getPaths,
13
12
  getConfig,
14
13
  resolveFile,
15
- getSchemaPath
14
+ getPrismaSchemas
16
15
  } from "@cedarjs/project-config";
17
- const { getSchemaWithPath } = prismaInternals;
18
16
  const generateGraphQLSchema = async () => {
19
- const redwoodProjectPaths = getPaths();
20
- const redwoodProjectConfig = getConfig();
17
+ const cedarPaths = getPaths();
18
+ const cedarConfig = getConfig();
21
19
  const schemaPointerMap = {
22
20
  [print(rootSchema.schema)]: {},
23
21
  "graphql/**/*.sdl.{js,ts}": {},
@@ -29,7 +27,7 @@ const generateGraphQLSchema = async () => {
29
27
  "!subscriptions/**/*.spec.{js,ts}": {}
30
28
  };
31
29
  for (const [name, schema] of Object.entries(rootSchema.scalarSchemas)) {
32
- if (redwoodProjectConfig.graphql.includeScalars[name]) {
30
+ if (cedarConfig.graphql.includeScalars[name]) {
33
31
  schemaPointerMap[print(schema)] = {};
34
32
  }
35
33
  }
@@ -48,10 +46,10 @@ const generateGraphQLSchema = async () => {
48
46
  sort: true,
49
47
  convertExtensions: true,
50
48
  includeSources: true,
51
- cwd: redwoodProjectPaths.api.src,
49
+ cwd: cedarPaths.api.src,
52
50
  schema: Object.keys(schemaPointerMap),
53
51
  generates: {
54
- [redwoodProjectPaths.generated.schema]: {
52
+ [cedarPaths.generated.schema]: {
55
53
  plugins: ["schema-ast"]
56
54
  }
57
55
  },
@@ -68,10 +66,7 @@ const generateGraphQLSchema = async () => {
68
66
  if (e instanceof Error) {
69
67
  const match = e.message.match(/Unknown type: "(\w+)"/);
70
68
  const name = match?.[1];
71
- const schemaPath = await getSchemaPath(
72
- redwoodProjectPaths.api.prismaConfig
73
- );
74
- const result = await getSchemaWithPath(schemaPath);
69
+ const result = await getPrismaSchemas();
75
70
  const schemaPrisma = result.schemas.map(([, content]) => content).join("\n");
76
71
  const errorObject = {
77
72
  message: `Schema loading failed. ${e.message}`,
@@ -111,14 +106,14 @@ const generateGraphQLSchema = async () => {
111
106
  pluginMap: { "schema-ast": schemaAstPlugin },
112
107
  schema: {},
113
108
  schemaAst: loadedSchema,
114
- filename: redwoodProjectPaths.generated.schema,
109
+ filename: cedarPaths.generated.schema,
115
110
  documents: []
116
111
  };
117
112
  if (loadedSchema) {
118
113
  try {
119
114
  const schema = await codegen(options);
120
- fs.writeFileSync(redwoodProjectPaths.generated.schema, schema);
121
- return { schemaPath: redwoodProjectPaths.generated.schema, errors };
115
+ fs.writeFileSync(cedarPaths.generated.schema, schema);
116
+ return { schemaPath: cedarPaths.generated.schema, errors };
122
117
  } catch (e) {
123
118
  errors.push({
124
119
  message: `GraphQL Schema codegen failed`,
@@ -1 +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"}
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"}
@@ -4,12 +4,12 @@ import {
4
4
  } from "@graphql-codegen/plugin-helpers";
5
5
  import { plugin as originalPlugin } from "@graphql-codegen/typescript-resolvers";
6
6
  import { RwTypeScriptResolversVisitor } from "./visitor.js";
7
- const plugin = (schema, _documents, config) => {
7
+ const plugin = async (schema, _documents, config) => {
8
8
  const visitor = new RwTypeScriptResolversVisitor(config, schema);
9
9
  const visitorResult = oldVisit(getCachedDocumentNodeFromSchema(schema), {
10
10
  leave: visitor
11
11
  });
12
- const { prepend, content } = originalPlugin(schema, [], config);
12
+ const { prepend = [], content } = await originalPlugin(schema, [], config);
13
13
  prepend.push(`export type OptArgsResolverFn<TResult, TParent = {}, TContext = {}, TArgs = {}> = (
14
14
  args?: TArgs,
15
15
  obj?: { root: TParent; context: TContext; info: GraphQLResolveInfo }
@@ -23,7 +23,7 @@ const plugin = (schema, _documents, config) => {
23
23
  const visitorResultStart = splitContent.indexOf(
24
24
  visitorResult.definitions.filter((d) => typeof d === "string")[0].split("\n")[0]
25
25
  );
26
- const splitRootResolver = visitor.getRootResolver().split("\n");
26
+ const splitRootResolver = visitor.getRootResolver().content.split("\n");
27
27
  const visitorResultEnd = splitContent.findIndex(
28
28
  (line, index) => line === splitRootResolver[0] && splitContent[index + 1] === splitRootResolver[1]
29
29
  );
@@ -1,9 +1,10 @@
1
1
  import type { TypeScriptResolversPluginConfig } from '@graphql-codegen/typescript-resolvers';
2
2
  import { TypeScriptResolversVisitor } from '@graphql-codegen/typescript-resolvers';
3
+ import type { FieldDefinitionResult } from '@graphql-codegen/visitor-plugin-common';
3
4
  import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
4
5
  export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
5
6
  constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
6
- FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): (parentName: string) => string | null;
7
- ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
7
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): FieldDefinitionResult;
8
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string | null;
8
9
  }
9
10
  //# sourceMappingURL=visitor.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"visitor.d.ts","sourceRoot":"","sources":["../../../../src/generate/plugins/rw-typescript-resolvers/visitor.ts"],"names":[],"mappings":"AACA,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"}
@@ -1,21 +1,27 @@
1
1
  import { TypeScriptResolversVisitor } from "@graphql-codegen/typescript-resolvers";
2
- import {
3
- indent,
4
- DeclarationBlock
5
- } from "@graphql-codegen/visitor-plugin-common";
2
+ import { DeclarationBlock } from "@graphql-codegen/visitor-plugin-common";
6
3
  class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
7
4
  constructor(pluginConfig, schema) {
8
- super(pluginConfig, schema);
5
+ super(pluginConfig, schema, {});
9
6
  }
10
7
  FieldDefinition(node, key, parent) {
11
8
  const hasArguments = node.arguments && node.arguments.length > 0;
12
9
  const superFieldDefinition = super.FieldDefinition(node, key, parent);
13
- return (parentName) => {
14
- const fieldDef = superFieldDefinition(parentName);
15
- if (!hasArguments && fieldDef?.includes(": Resolver<")) {
16
- return fieldDef.replace(": Resolver<", ": OptArgsResolverFn<");
10
+ return {
11
+ node: superFieldDefinition.node,
12
+ printContent: (parentNode, avoidResolverOptionals) => {
13
+ const result = superFieldDefinition.printContent(
14
+ parentNode,
15
+ avoidResolverOptionals
16
+ );
17
+ if (!hasArguments && result.value?.includes(": Resolver<")) {
18
+ return {
19
+ ...result,
20
+ value: result.value.replace(": Resolver<", ": OptArgsResolverFn<")
21
+ };
22
+ }
23
+ return result;
17
24
  }
18
- return fieldDef;
19
25
  };
20
26
  }
21
27
  // Original implementation is here:
@@ -25,36 +31,35 @@ class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
25
31
  const name = this.convertName(node, {
26
32
  suffix: this.config.resolverTypeSuffix
27
33
  });
28
- const typeName = node.name;
34
+ const typeName = node.name.value;
29
35
  const parentType = this.getParentTypeToUse(typeName);
30
- const fieldsContent = (node.fields || []).map((f) => f(node.name));
31
- const isRootType = [
32
- this.schema.getQueryType()?.name,
33
- this.schema.getMutationType()?.name,
34
- this.schema.getSubscriptionType()?.name
35
- ].includes(typeName);
36
- if (!isRootType) {
37
- fieldsContent.push(
38
- indent(
39
- `${this.config.internalResolversPrefix}isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>${this.getPunctuation(
40
- "type"
41
- )}`
42
- )
43
- );
44
- }
36
+ const fieldsContent = (node.fields || []).map((f) => {
37
+ if ("printContent" in f && typeof f.printContent === "function") {
38
+ return f.printContent(node, false).value;
39
+ } else {
40
+ throw new Error("Unexpected field type");
41
+ }
42
+ });
45
43
  const blockRelationsResolver = new DeclarationBlock(
46
44
  this._declarationBlockConfig
47
45
  ).export().asKind("type").withName(
48
46
  name.replace("Resolvers", "RelationResolvers"),
49
47
  `<ContextType = ${this.config.contextType.type}, ${this.transformParentGenericType(parentType)}>`
50
48
  ).withBlock(
51
- fieldsContent.map(
52
- (content) => content.replace(
53
- /: (?:OptArgs)?Resolver(?:Fn)?/,
54
- "?: RequiredResolverFn"
49
+ fieldsContent.filter((content) => content !== null).map(
50
+ (content) => (
51
+ // In v5, fields may already carry an optional marker `?:`. The
52
+ // regex consumes the optional `?` so we don't emit a double `??`.
53
+ content.replace(
54
+ /\??: (?:OptArgs)?Resolver(?:Fn)?/,
55
+ "?: RequiredResolverFn"
56
+ )
55
57
  )
56
58
  ).join("\n")
57
59
  );
60
+ if (originalBlock === null) {
61
+ return null;
62
+ }
58
63
  return originalBlock + "\n" + blockRelationsResolver.string;
59
64
  }
60
65
  }
package/dist/index.d.ts CHANGED
@@ -2,7 +2,6 @@ export * from '@cedarjs/project-config';
2
2
  export * from './ts2js.js';
3
3
  export * from './dev.js';
4
4
  export * from './routes.js';
5
- export { dbReexportsPrismaClient } from './project.js';
6
5
  export * from './files.js';
7
6
  export { generate } from './generate/generate.js';
8
7
  export { buildApi } from './build/api.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAEtD,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA;AAEvC,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAE3B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA;AAErC,OAAO,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAA"}
package/dist/index.js CHANGED
@@ -2,7 +2,6 @@ export * from "@cedarjs/project-config";
2
2
  export * from "./ts2js.js";
3
3
  export * from "./dev.js";
4
4
  export * from "./routes.js";
5
- import { dbReexportsPrismaClient } from "./project.js";
6
5
  export * from "./files.js";
7
6
  import { generate } from "./generate/generate.js";
8
7
  import { buildApi } from "./build/api.js";
@@ -11,7 +10,6 @@ export * from "@cedarjs/babel-config";
11
10
  import { listQueryTypeFieldsInProject } from "./gql.js";
12
11
  export {
13
12
  buildApi,
14
- dbReexportsPrismaClient,
15
13
  generate,
16
14
  listQueryTypeFieldsInProject
17
15
  };
package/dist/project.d.ts CHANGED
@@ -5,5 +5,4 @@ export declare const getTsConfigs: () => {
5
5
  export declare const isTypeScriptProject: () => boolean;
6
6
  export declare const isServerFileSetup: () => boolean;
7
7
  export declare const isRealtimeSetup: () => boolean;
8
- export declare const dbReexportsPrismaClient: () => boolean;
9
8
  //# sourceMappingURL=project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;CAuBxB,CAAA;AAED,eAAO,MAAM,mBAAmB,eAM/B,CAAA;AAED,eAAO,MAAM,iBAAiB,eAO7B,CAAA;AAED,eAAO,MAAM,eAAe,eAO3B,CAAA;AAED,eAAO,MAAM,uBAAuB,eAUnC,CAAA"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY;;;CAuBxB,CAAA;AAED,eAAO,MAAM,mBAAmB,eAM/B,CAAA;AAED,eAAO,MAAM,iBAAiB,eAO7B,CAAA;AAED,eAAO,MAAM,eAAe,eAO3B,CAAA"}
package/dist/project.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import path from "path";
3
3
  import { parseConfigFileTextToJson } from "typescript";
4
- import { getPaths, resolveFile } from "@cedarjs/project-config";
4
+ import { getPaths } from "@cedarjs/project-config";
5
5
  const getTsConfigs = () => {
6
6
  const rwPaths = getPaths();
7
7
  const apiTsConfigPath = path.join(rwPaths.api.base, "tsconfig.json");
@@ -37,16 +37,7 @@ const isRealtimeSetup = () => {
37
37
  );
38
38
  return fs.existsSync(realtimePath);
39
39
  };
40
- const dbReexportsPrismaClient = () => {
41
- const dbPath = resolveFile(path.join(getPaths().api.lib, "db"));
42
- if (!dbPath) {
43
- return false;
44
- }
45
- const content = fs.readFileSync(dbPath, "utf-8");
46
- return /export\s+\*\s+from\s+['"]@prisma\/client['"]/.test(content);
47
- };
48
40
  export {
49
- dbReexportsPrismaClient,
50
41
  getTsConfigs,
51
42
  isRealtimeSetup,
52
43
  isServerFileSetup,
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,WAgBxC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAE9B;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,SAAS,EAoC5C,CAAA"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../src/routes.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CAyBvD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,WAgBxC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IACnD,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAE9B;AAED,MAAM,WAAW,SAAU,SAAQ,mBAAmB;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,SAAS,EAAE,OAAO,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,QAAO,SAAS,EAmC5C,CAAA"}
package/dist/routes.js CHANGED
@@ -5,7 +5,7 @@ import { getRouteRegexAndParams } from "@cedarjs/router/dist/util";
5
5
  import { getProject } from "@cedarjs/structure";
6
6
  function getDuplicateRoutes() {
7
7
  const duplicateRoutes = [];
8
- const allRoutes = getProject(getPaths().base).router.routes;
8
+ const allRoutes = getProject().router.routes;
9
9
  const uniqueNames = new Set(
10
10
  allRoutes.filter((route) => route.name !== void 0).map((route) => route.name)
11
11
  );
@@ -43,8 +43,7 @@ function warningForDuplicateRoutes() {
43
43
  return message.trimEnd();
44
44
  }
45
45
  const getProjectRoutes = () => {
46
- const rwProject = getProject(getPaths().base);
47
- const routes = rwProject.getRouter().routes;
46
+ const routes = getProject().getRouter().routes;
48
47
  return routes.map((route) => {
49
48
  const { matchRegexString, routeParams } = route.isNotFound ? { matchRegexString: null, routeParams: null } : getRouteRegexAndParams(route.path);
50
49
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedarjs/internal",
3
- "version": "2.8.1-next.0+f9966f3d1",
3
+ "version": "2.8.1-next.116+784d2c048",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/cedarjs/cedar.git",
@@ -145,30 +145,29 @@
145
145
  },
146
146
  "dependencies": {
147
147
  "@babel/core": "^7.26.10",
148
- "@babel/parser": "7.29.0",
148
+ "@babel/parser": "7.29.2",
149
149
  "@babel/plugin-transform-react-jsx": "7.28.6",
150
150
  "@babel/plugin-transform-typescript": "^7.26.8",
151
- "@babel/runtime-corejs3": "7.29.0",
152
151
  "@babel/traverse": "7.29.0",
153
- "@cedarjs/babel-config": "2.8.1-next.0+f9966f3d1",
154
- "@cedarjs/graphql-server": "2.8.1-next.0+f9966f3d1",
155
- "@cedarjs/project-config": "2.8.1-next.0+f9966f3d1",
156
- "@cedarjs/router": "2.8.1-next.0+f9966f3d1",
157
- "@graphql-codegen/add": "4.0.1",
158
- "@graphql-codegen/cli": "3.3.1",
159
- "@graphql-codegen/client-preset": "4.8.3",
160
- "@graphql-codegen/core": "3.1.0",
161
- "@graphql-codegen/fragment-matcher": "5.1.0",
162
- "@graphql-codegen/schema-ast": "3.0.1",
163
- "@graphql-codegen/typed-document-node": "5.1.2",
164
- "@graphql-codegen/typescript": "3.0.4",
165
- "@graphql-codegen/typescript-operations": "3.0.4",
166
- "@graphql-codegen/typescript-react-apollo": "3.3.7",
167
- "@graphql-codegen/typescript-resolvers": "3.2.1",
152
+ "@cedarjs/babel-config": "2.8.1-next.116+784d2c048",
153
+ "@cedarjs/graphql-server": "2.8.1-next.116+784d2c048",
154
+ "@cedarjs/project-config": "2.8.1-next.116+784d2c048",
155
+ "@cedarjs/router": "2.8.1-next.116+784d2c048",
156
+ "@cedarjs/structure": "2.8.1-next.116+784d2c048",
157
+ "@graphql-codegen/add": "6.0.0",
158
+ "@graphql-codegen/cli": "6.2.1",
159
+ "@graphql-codegen/client-preset": "5.2.4",
160
+ "@graphql-codegen/core": "5.0.1",
161
+ "@graphql-codegen/fragment-matcher": "6.0.0",
162
+ "@graphql-codegen/schema-ast": "5.0.1",
163
+ "@graphql-codegen/typed-document-node": "6.1.7",
164
+ "@graphql-codegen/typescript": "5.0.9",
165
+ "@graphql-codegen/typescript-operations": "5.0.9",
166
+ "@graphql-codegen/typescript-react-apollo": "4.4.1",
167
+ "@graphql-codegen/typescript-resolvers": "5.1.7",
168
168
  "@graphql-tools/documents": "1.0.1",
169
169
  "@sdl-codegen/node": "2.0.1",
170
170
  "ansis": "4.2.0",
171
- "core-js": "3.48.0",
172
171
  "deepmerge": "4.3.1",
173
172
  "esbuild": "0.21.5",
174
173
  "fast-glob": "3.3.3",
@@ -178,14 +177,14 @@
178
177
  "rimraf": "6.1.3",
179
178
  "source-map": "0.7.6",
180
179
  "string-env-interpolation": "1.0.1",
181
- "systeminformation": "5.31.2",
180
+ "systeminformation": "5.31.4",
182
181
  "termi-link": "1.1.0",
183
182
  "ts-node": "10.9.2",
184
183
  "typescript": "5.9.3"
185
184
  },
186
185
  "devDependencies": {
187
186
  "@arethetypeswrong/cli": "0.18.2",
188
- "@cedarjs/framework-tools": "2.8.1-next.1",
187
+ "@cedarjs/framework-tools": "2.8.1-next.116",
189
188
  "concurrently": "9.2.1",
190
189
  "graphql-tag": "2.12.6",
191
190
  "publint": "0.3.18",
@@ -195,5 +194,5 @@
195
194
  "publishConfig": {
196
195
  "access": "public"
197
196
  },
198
- "gitHead": "f9966f3d17f1740c9a1eeb90b30f0e6bd2655914"
197
+ "gitHead": "784d2c0484936b2d853e5b316d167602bd80d996"
199
198
  }