@cedarjs/internal 2.8.1-next.116 → 2.8.1-rc.3

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 +24 -58
  3. package/dist/cjs/generate/graphqlSchema.d.ts.map +1 -1
  4. package/dist/cjs/generate/graphqlSchema.js +14 -9
  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 +2 -3
  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 +26 -34
  10. package/dist/cjs/index.d.ts +1 -0
  11. package/dist/cjs/index.d.ts.map +1 -1
  12. package/dist/cjs/index.js +3 -0
  13. package/dist/cjs/project.d.ts +1 -0
  14. package/dist/cjs/project.d.ts.map +1 -1
  15. package/dist/cjs/project.js +10 -0
  16. package/dist/cjs/routes.d.ts.map +1 -1
  17. package/dist/cjs/routes.js +3 -2
  18. package/dist/generate/graphqlCodeGen.d.ts.map +1 -1
  19. package/dist/generate/graphqlCodeGen.js +22 -56
  20. package/dist/generate/graphqlSchema.d.ts.map +1 -1
  21. package/dist/generate/graphqlSchema.js +15 -10
  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 +2 -3
  25. package/dist/generate/plugins/rw-typescript-resolvers/visitor.d.ts.map +1 -1
  26. package/dist/generate/plugins/rw-typescript-resolvers/visitor.js +30 -35
  27. package/dist/index.d.ts +1 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +2 -0
  30. package/dist/project.d.ts +1 -0
  31. package/dist/project.d.ts.map +1 -1
  32. package/dist/project.js +10 -1
  33. package/dist/routes.d.ts.map +1 -1
  34. package/dist/routes.js +3 -2
  35. package/package.json +22 -21
@@ -1 +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;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
+ {"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"}
@@ -35,8 +35,7 @@ __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_node_path = __toESM(require("node:path"), 1);
39
- var import_node_url = require("node:url");
38
+ var import_path = __toESM(require("path"), 1);
40
39
  var addPlugin = __toESM(require("@graphql-codegen/add"), 1);
41
40
  var import_cli = require("@graphql-codegen/cli");
42
41
  var import_core = require("@graphql-codegen/core");
@@ -77,12 +76,12 @@ const generateTypeDefGraphQLApi = async () => {
77
76
  errors
78
77
  };
79
78
  }
80
- const filename = import_node_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
79
+ const filename = import_path.default.join((0, import_project_config.getPaths)().api.types, "graphql.d.ts");
81
80
  const prismaModels = await getPrismaModels();
82
81
  const prismaImports = Object.keys(prismaModels).map((key) => {
83
82
  return `${key} as Prisma${key}`;
84
83
  });
85
- const prismaImportSource = "src/lib/db";
84
+ const prismaImportSource = (0, import_project.dbReexportsPrismaClient)() ? "src/lib/db" : "@prisma/client";
86
85
  const extraPlugins = [
87
86
  {
88
87
  name: "add",
@@ -129,7 +128,7 @@ const generateTypeDefGraphQLApi = async () => {
129
128
  }
130
129
  };
131
130
  const generateTypeDefGraphQLWeb = async () => {
132
- const filename = import_node_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
131
+ const filename = import_path.default.join((0, import_project_config.getPaths)().web.types, "graphql.d.ts");
133
132
  const options = getLoadDocumentsOptions(filename);
134
133
  const documentsGlob = "./web/src/**/!(*.d).{ts,tsx,js,jsx}";
135
134
  let documents;
@@ -145,7 +144,7 @@ const generateTypeDefGraphQLWeb = async () => {
145
144
  {
146
145
  name: "add",
147
146
  options: {
148
- content: `import { Prisma } from "$api/src/lib/db"`,
147
+ content: `import { Prisma } from "${(0, import_project.dbReexportsPrismaClient)() ? "$api/src/lib/db" : "@prisma/client"}"`,
149
148
  placement: "prepend"
150
149
  },
151
150
  codegenPlugin: addPlugin
@@ -182,14 +181,13 @@ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
182
181
  const userCodegenConfig = await (0, import_cli.loadCodegenConfig)({
183
182
  configFilePath: (0, import_project_config.getPaths)().base
184
183
  });
185
- const pluginConfig = await getPluginConfig(side);
186
184
  const mergedConfig = {
187
- ...pluginConfig,
185
+ ...await getPluginConfig(side),
188
186
  ...userCodegenConfig?.config?.config
189
187
  };
190
188
  const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
191
189
  const output = await (0, import_core.codegen)(options);
192
- import_node_fs.default.mkdirSync(import_node_path.default.dirname(filename), { recursive: true });
190
+ import_node_fs.default.mkdirSync(import_path.default.dirname(filename), { recursive: true });
193
191
  import_node_fs.default.writeFileSync(filename, output);
194
192
  return [filename];
195
193
  }
@@ -202,58 +200,26 @@ function getLoadDocumentsOptions(filename) {
202
200
  };
203
201
  return loadTypedefsConfig;
204
202
  }
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;
235
- }
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 };
244
- }
245
- } catch {
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;
246
213
  }
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 };
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);
253
220
  }
254
- } catch {
255
221
  }
256
- return { ModelName: {} };
222
+ return localPrisma;
257
223
  }
258
224
  async function getPrismaModels() {
259
225
  const localPrisma = await getPrismaClient();
@@ -1 +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"}
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"}
@@ -36,14 +36,16 @@ 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);
39
40
  var import_ansis = __toESM(require("ansis"), 1);
40
41
  var import_graphql = require("graphql");
41
42
  var import_termi_link = require("termi-link");
42
43
  var import_graphql_server = require("@cedarjs/graphql-server");
43
44
  var import_project_config = require("@cedarjs/project-config");
45
+ const { getSchemaWithPath } = import_internals.default;
44
46
  const generateGraphQLSchema = async () => {
45
- const cedarPaths = (0, import_project_config.getPaths)();
46
- const cedarConfig = (0, import_project_config.getConfig)();
47
+ const redwoodProjectPaths = (0, import_project_config.getPaths)();
48
+ const redwoodProjectConfig = (0, import_project_config.getConfig)();
47
49
  const schemaPointerMap = {
48
50
  [(0, import_graphql.print)(import_graphql_server.rootSchema.schema)]: {},
49
51
  "graphql/**/*.sdl.{js,ts}": {},
@@ -55,7 +57,7 @@ const generateGraphQLSchema = async () => {
55
57
  "!subscriptions/**/*.spec.{js,ts}": {}
56
58
  };
57
59
  for (const [name, schema] of Object.entries(import_graphql_server.rootSchema.scalarSchemas)) {
58
- if (cedarConfig.graphql.includeScalars[name]) {
60
+ if (redwoodProjectConfig.graphql.includeScalars[name]) {
59
61
  schemaPointerMap[(0, import_graphql.print)(schema)] = {};
60
62
  }
61
63
  }
@@ -74,10 +76,10 @@ const generateGraphQLSchema = async () => {
74
76
  sort: true,
75
77
  convertExtensions: true,
76
78
  includeSources: true,
77
- cwd: cedarPaths.api.src,
79
+ cwd: redwoodProjectPaths.api.src,
78
80
  schema: Object.keys(schemaPointerMap),
79
81
  generates: {
80
- [cedarPaths.generated.schema]: {
82
+ [redwoodProjectPaths.generated.schema]: {
81
83
  plugins: ["schema-ast"]
82
84
  }
83
85
  },
@@ -94,7 +96,10 @@ const generateGraphQLSchema = async () => {
94
96
  if (e instanceof Error) {
95
97
  const match = e.message.match(/Unknown type: "(\w+)"/);
96
98
  const name = match?.[1];
97
- const result = await (0, import_project_config.getPrismaSchemas)();
99
+ const schemaPath = await (0, import_project_config.getSchemaPath)(
100
+ redwoodProjectPaths.api.prismaConfig
101
+ );
102
+ const result = await getSchemaWithPath(schemaPath);
98
103
  const schemaPrisma = result.schemas.map(([, content]) => content).join("\n");
99
104
  const errorObject = {
100
105
  message: `Schema loading failed. ${e.message}`,
@@ -134,14 +139,14 @@ const generateGraphQLSchema = async () => {
134
139
  pluginMap: { "schema-ast": schemaAstPlugin },
135
140
  schema: {},
136
141
  schemaAst: loadedSchema,
137
- filename: cedarPaths.generated.schema,
142
+ filename: redwoodProjectPaths.generated.schema,
138
143
  documents: []
139
144
  };
140
145
  if (loadedSchema) {
141
146
  try {
142
147
  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 };
148
+ import_node_fs.default.writeFileSync(redwoodProjectPaths.generated.schema, schema);
149
+ return { schemaPath: redwoodProjectPaths.generated.schema, errors };
145
150
  } catch (e) {
146
151
  errors.push({
147
152
  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,CA6E1B,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,CAgF1B,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 = async (schema, _documents, config) => {
28
+ const plugin = (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 } = await (0, import_typescript_resolvers.plugin)(schema, [], config);
33
+ const { prepend, content } = (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 = async (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().content.split("\n");
47
+ const splitRootResolver = visitor.getRootResolver().split("\n");
48
48
  const visitorResultEnd = splitContent.findIndex(
49
49
  (line, index) => line === splitRootResolver[0] && splitContent[index + 1] === splitRootResolver[1]
50
50
  );
@@ -1,10 +1,9 @@
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';
4
3
  import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
5
4
  export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
6
5
  constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
7
- FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): FieldDefinitionResult;
8
- ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string | null;
6
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): (parentName: string) => string | null;
7
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
9
8
  }
10
9
  //# 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":"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
+ {"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"}
@@ -25,26 +25,17 @@ 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 {
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;
33
+ return (parentName) => {
34
+ const fieldDef = superFieldDefinition(parentName);
35
+ if (!hasArguments && fieldDef?.includes(": Resolver<")) {
36
+ return fieldDef.replace(": Resolver<", ": OptArgsResolverFn<");
47
37
  }
38
+ return fieldDef;
48
39
  };
49
40
  }
50
41
  // Original implementation is here:
@@ -54,35 +45,36 @@ class RwTypeScriptResolversVisitor extends import_typescript_resolvers.TypeScrip
54
45
  const name = this.convertName(node, {
55
46
  suffix: this.config.resolverTypeSuffix
56
47
  });
57
- const typeName = node.name.value;
48
+ const typeName = node.name;
58
49
  const parentType = this.getParentTypeToUse(typeName);
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
- });
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
+ }
66
65
  const blockRelationsResolver = new import_visitor_plugin_common.DeclarationBlock(
67
66
  this._declarationBlockConfig
68
67
  ).export().asKind("type").withName(
69
68
  name.replace("Resolvers", "RelationResolvers"),
70
69
  `<ContextType = ${this.config.contextType.type}, ${this.transformParentGenericType(parentType)}>`
71
70
  ).withBlock(
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
- )
71
+ fieldsContent.map(
72
+ (content) => content.replace(
73
+ /: (?:OptArgs)?Resolver(?:Fn)?/,
74
+ "?: RequiredResolverFn"
80
75
  )
81
76
  ).join("\n")
82
77
  );
83
- if (originalBlock === null) {
84
- return null;
85
- }
86
78
  return originalBlock + "\n" + blockRelationsResolver.string;
87
79
  }
88
80
  }
@@ -2,6 +2,7 @@ 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';
5
6
  export * from './files.js';
6
7
  export { generate } from './generate/generate.js';
7
8
  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;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"}
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"}
package/dist/cjs/index.js CHANGED
@@ -20,6 +20,7 @@ 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,
23
24
  generate: () => import_generate.generate,
24
25
  listQueryTypeFieldsInProject: () => import_gql.listQueryTypeFieldsInProject
25
26
  });
@@ -28,6 +29,7 @@ __reExport(src_exports, require("@cedarjs/project-config"), module.exports);
28
29
  __reExport(src_exports, require("./ts2js.js"), module.exports);
29
30
  __reExport(src_exports, require("./dev.js"), module.exports);
30
31
  __reExport(src_exports, require("./routes.js"), module.exports);
32
+ var import_project = require("./project.js");
31
33
  __reExport(src_exports, require("./files.js"), module.exports);
32
34
  var import_generate = require("./generate/generate.js");
33
35
  var import_api = require("./build/api.js");
@@ -37,6 +39,7 @@ var import_gql = require("./gql.js");
37
39
  // Annotate the CommonJS export names for ESM import in node:
38
40
  0 && (module.exports = {
39
41
  buildApi,
42
+ dbReexportsPrismaClient,
40
43
  generate,
41
44
  listQueryTypeFieldsInProject,
42
45
  ...require("@cedarjs/project-config"),
@@ -5,4 +5,5 @@ 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;
8
9
  //# 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"}
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"}
@@ -28,6 +28,7 @@ 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,
31
32
  getTsConfigs: () => getTsConfigs,
32
33
  isRealtimeSetup: () => isRealtimeSetup,
33
34
  isServerFileSetup: () => isServerFileSetup,
@@ -73,8 +74,17 @@ const isRealtimeSetup = () => {
73
74
  );
74
75
  return import_node_fs.default.existsSync(realtimePath);
75
76
  };
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
+ };
76
85
  // Annotate the CommonJS export names for ESM import in node:
77
86
  0 && (module.exports = {
87
+ dbReexportsPrismaClient,
78
88
  getTsConfigs,
79
89
  isRealtimeSetup,
80
90
  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,EAmC5C,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,EAoC5C,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)().router.routes;
43
+ const allRoutes = (0, import_structure.getProject)((0, import_project_config.getPaths)().base).router.routes;
44
44
  const uniqueNames = new Set(
45
45
  allRoutes.filter((route) => route.name !== void 0).map((route) => route.name)
46
46
  );
@@ -78,7 +78,8 @@ function warningForDuplicateRoutes() {
78
78
  return message.trimEnd();
79
79
  }
80
80
  const getProjectRoutes = () => {
81
- const routes = (0, import_structure.getProject)().getRouter().routes;
81
+ const rwProject = (0, import_structure.getProject)((0, import_project_config.getPaths)().base);
82
+ const routes = rwProject.getRouter().routes;
82
83
  return routes.map((route) => {
83
84
  const { matchRegexString, routeParams } = route.isNotFound ? { matchRegexString: null, routeParams: null } : (0, import_util.getRouteRegexAndParams)(route.path);
84
85
  return {
@@ -1 +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;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
+ {"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,6 +1,5 @@
1
1
  import fs from "node:fs";
2
- import path from "node:path";
3
- import { pathToFileURL } from "node:url";
2
+ import path from "path";
4
3
  import * as addPlugin from "@graphql-codegen/add";
5
4
  import { loadCodegenConfig } from "@graphql-codegen/cli";
6
5
  import { codegen } from "@graphql-codegen/core";
@@ -16,7 +15,7 @@ import {
16
15
  getConfig,
17
16
  resolveGeneratedPrismaClient
18
17
  } from "@cedarjs/project-config";
19
- import { getTsConfigs } from "../project.js";
18
+ import { getTsConfigs, dbReexportsPrismaClient } from "../project.js";
20
19
  import * as rwTypescriptResolvers from "./plugins/rw-typescript-resolvers/index.js";
21
20
  var CodegenSide = /* @__PURE__ */ ((CodegenSide2) => {
22
21
  CodegenSide2[CodegenSide2["API"] = 0] = "API";
@@ -50,7 +49,7 @@ const generateTypeDefGraphQLApi = async () => {
50
49
  const prismaImports = Object.keys(prismaModels).map((key) => {
51
50
  return `${key} as Prisma${key}`;
52
51
  });
53
- const prismaImportSource = "src/lib/db";
52
+ const prismaImportSource = dbReexportsPrismaClient() ? "src/lib/db" : "@prisma/client";
54
53
  const extraPlugins = [
55
54
  {
56
55
  name: "add",
@@ -113,7 +112,7 @@ const generateTypeDefGraphQLWeb = async () => {
113
112
  {
114
113
  name: "add",
115
114
  options: {
116
- content: `import { Prisma } from "$api/src/lib/db"`,
115
+ content: `import { Prisma } from "${dbReexportsPrismaClient() ? "$api/src/lib/db" : "@prisma/client"}"`,
117
116
  placement: "prepend"
118
117
  },
119
118
  codegenPlugin: addPlugin
@@ -150,9 +149,8 @@ async function runCodegenGraphQL(documents, extraPlugins, filename, side) {
150
149
  const userCodegenConfig = await loadCodegenConfig({
151
150
  configFilePath: getPaths().base
152
151
  });
153
- const pluginConfig = await getPluginConfig(side);
154
152
  const mergedConfig = {
155
- ...pluginConfig,
153
+ ...await getPluginConfig(side),
156
154
  ...userCodegenConfig?.config?.config
157
155
  };
158
156
  const options = getCodegenOptions(documents, mergedConfig, extraPlugins);
@@ -170,58 +168,26 @@ function getLoadDocumentsOptions(filename) {
170
168
  };
171
169
  return loadTypedefsConfig;
172
170
  }
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;
203
- }
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 };
212
- }
213
- } catch {
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;
214
181
  }
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 };
182
+ if (!localPrisma.ModelName) {
183
+ if (hasGenerated) {
184
+ return { ModelName: {} };
185
+ } else {
186
+ execa.sync("yarn", ["cedar", "prisma", "generate"]);
187
+ return getPrismaClient(true);
221
188
  }
222
- } catch {
223
189
  }
224
- return { ModelName: {} };
190
+ return localPrisma;
225
191
  }
226
192
  async function getPrismaModels() {
227
193
  const localPrisma = await getPrismaClient();
@@ -1 +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"}
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"}
@@ -3,6 +3,7 @@ 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";
6
7
  import ansis from "ansis";
7
8
  import { print } from "graphql";
8
9
  import { terminalLink } from "termi-link";
@@ -11,11 +12,12 @@ import {
11
12
  getPaths,
12
13
  getConfig,
13
14
  resolveFile,
14
- getPrismaSchemas
15
+ getSchemaPath
15
16
  } from "@cedarjs/project-config";
17
+ const { getSchemaWithPath } = prismaInternals;
16
18
  const generateGraphQLSchema = async () => {
17
- const cedarPaths = getPaths();
18
- const cedarConfig = getConfig();
19
+ const redwoodProjectPaths = getPaths();
20
+ const redwoodProjectConfig = getConfig();
19
21
  const schemaPointerMap = {
20
22
  [print(rootSchema.schema)]: {},
21
23
  "graphql/**/*.sdl.{js,ts}": {},
@@ -27,7 +29,7 @@ const generateGraphQLSchema = async () => {
27
29
  "!subscriptions/**/*.spec.{js,ts}": {}
28
30
  };
29
31
  for (const [name, schema] of Object.entries(rootSchema.scalarSchemas)) {
30
- if (cedarConfig.graphql.includeScalars[name]) {
32
+ if (redwoodProjectConfig.graphql.includeScalars[name]) {
31
33
  schemaPointerMap[print(schema)] = {};
32
34
  }
33
35
  }
@@ -46,10 +48,10 @@ const generateGraphQLSchema = async () => {
46
48
  sort: true,
47
49
  convertExtensions: true,
48
50
  includeSources: true,
49
- cwd: cedarPaths.api.src,
51
+ cwd: redwoodProjectPaths.api.src,
50
52
  schema: Object.keys(schemaPointerMap),
51
53
  generates: {
52
- [cedarPaths.generated.schema]: {
54
+ [redwoodProjectPaths.generated.schema]: {
53
55
  plugins: ["schema-ast"]
54
56
  }
55
57
  },
@@ -66,7 +68,10 @@ const generateGraphQLSchema = async () => {
66
68
  if (e instanceof Error) {
67
69
  const match = e.message.match(/Unknown type: "(\w+)"/);
68
70
  const name = match?.[1];
69
- const result = await getPrismaSchemas();
71
+ const schemaPath = await getSchemaPath(
72
+ redwoodProjectPaths.api.prismaConfig
73
+ );
74
+ const result = await getSchemaWithPath(schemaPath);
70
75
  const schemaPrisma = result.schemas.map(([, content]) => content).join("\n");
71
76
  const errorObject = {
72
77
  message: `Schema loading failed. ${e.message}`,
@@ -106,14 +111,14 @@ const generateGraphQLSchema = async () => {
106
111
  pluginMap: { "schema-ast": schemaAstPlugin },
107
112
  schema: {},
108
113
  schemaAst: loadedSchema,
109
- filename: cedarPaths.generated.schema,
114
+ filename: redwoodProjectPaths.generated.schema,
110
115
  documents: []
111
116
  };
112
117
  if (loadedSchema) {
113
118
  try {
114
119
  const schema = await codegen(options);
115
- fs.writeFileSync(cedarPaths.generated.schema, schema);
116
- return { schemaPath: cedarPaths.generated.schema, errors };
120
+ fs.writeFileSync(redwoodProjectPaths.generated.schema, schema);
121
+ return { schemaPath: redwoodProjectPaths.generated.schema, errors };
117
122
  } catch (e) {
118
123
  errors.push({
119
124
  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,CA6E1B,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,CAgF1B,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 = async (schema, _documents, config) => {
7
+ const plugin = (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 } = await originalPlugin(schema, [], config);
12
+ const { prepend, content } = 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 = async (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().content.split("\n");
26
+ const splitRootResolver = visitor.getRootResolver().split("\n");
27
27
  const visitorResultEnd = splitContent.findIndex(
28
28
  (line, index) => line === splitRootResolver[0] && splitContent[index + 1] === splitRootResolver[1]
29
29
  );
@@ -1,10 +1,9 @@
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';
4
3
  import type { FieldDefinitionNode, GraphQLSchema, ObjectTypeDefinitionNode } from 'graphql';
5
4
  export declare class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
6
5
  constructor(pluginConfig: TypeScriptResolversPluginConfig, schema: GraphQLSchema);
7
- FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): FieldDefinitionResult;
8
- ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string | null;
6
+ FieldDefinition(node: FieldDefinitionNode, key: string | number, parent: any): (parentName: string) => string | null;
7
+ ObjectTypeDefinition(node: ObjectTypeDefinitionNode): string;
9
8
  }
10
9
  //# 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":"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
+ {"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,27 +1,21 @@
1
1
  import { TypeScriptResolversVisitor } from "@graphql-codegen/typescript-resolvers";
2
- import { DeclarationBlock } from "@graphql-codegen/visitor-plugin-common";
2
+ import {
3
+ indent,
4
+ DeclarationBlock
5
+ } from "@graphql-codegen/visitor-plugin-common";
3
6
  class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
4
7
  constructor(pluginConfig, schema) {
5
- super(pluginConfig, schema, {});
8
+ super(pluginConfig, schema);
6
9
  }
7
10
  FieldDefinition(node, key, parent) {
8
11
  const hasArguments = node.arguments && node.arguments.length > 0;
9
12
  const superFieldDefinition = super.FieldDefinition(node, key, parent);
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;
13
+ return (parentName) => {
14
+ const fieldDef = superFieldDefinition(parentName);
15
+ if (!hasArguments && fieldDef?.includes(": Resolver<")) {
16
+ return fieldDef.replace(": Resolver<", ": OptArgsResolverFn<");
24
17
  }
18
+ return fieldDef;
25
19
  };
26
20
  }
27
21
  // Original implementation is here:
@@ -31,35 +25,36 @@ class RwTypeScriptResolversVisitor extends TypeScriptResolversVisitor {
31
25
  const name = this.convertName(node, {
32
26
  suffix: this.config.resolverTypeSuffix
33
27
  });
34
- const typeName = node.name.value;
28
+ const typeName = node.name;
35
29
  const parentType = this.getParentTypeToUse(typeName);
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
- });
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
+ }
43
45
  const blockRelationsResolver = new DeclarationBlock(
44
46
  this._declarationBlockConfig
45
47
  ).export().asKind("type").withName(
46
48
  name.replace("Resolvers", "RelationResolvers"),
47
49
  `<ContextType = ${this.config.contextType.type}, ${this.transformParentGenericType(parentType)}>`
48
50
  ).withBlock(
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
- )
51
+ fieldsContent.map(
52
+ (content) => content.replace(
53
+ /: (?:OptArgs)?Resolver(?:Fn)?/,
54
+ "?: RequiredResolverFn"
57
55
  )
58
56
  ).join("\n")
59
57
  );
60
- if (originalBlock === null) {
61
- return null;
62
- }
63
58
  return originalBlock + "\n" + blockRelationsResolver.string;
64
59
  }
65
60
  }
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ 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';
5
6
  export * from './files.js';
6
7
  export { generate } from './generate/generate.js';
7
8
  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;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"}
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"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@ 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";
5
6
  export * from "./files.js";
6
7
  import { generate } from "./generate/generate.js";
7
8
  import { buildApi } from "./build/api.js";
@@ -10,6 +11,7 @@ export * from "@cedarjs/babel-config";
10
11
  import { listQueryTypeFieldsInProject } from "./gql.js";
11
12
  export {
12
13
  buildApi,
14
+ dbReexportsPrismaClient,
13
15
  generate,
14
16
  listQueryTypeFieldsInProject
15
17
  };
package/dist/project.d.ts CHANGED
@@ -5,4 +5,5 @@ 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;
8
9
  //# 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"}
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"}
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 } from "@cedarjs/project-config";
4
+ import { getPaths, resolveFile } 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,7 +37,16 @@ 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
+ };
40
48
  export {
49
+ dbReexportsPrismaClient,
41
50
  getTsConfigs,
42
51
  isRealtimeSetup,
43
52
  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,EAmC5C,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,EAoC5C,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().router.routes;
8
+ const allRoutes = getProject(getPaths().base).router.routes;
9
9
  const uniqueNames = new Set(
10
10
  allRoutes.filter((route) => route.name !== void 0).map((route) => route.name)
11
11
  );
@@ -43,7 +43,8 @@ function warningForDuplicateRoutes() {
43
43
  return message.trimEnd();
44
44
  }
45
45
  const getProjectRoutes = () => {
46
- const routes = getProject().getRouter().routes;
46
+ const rwProject = getProject(getPaths().base);
47
+ const routes = rwProject.getRouter().routes;
47
48
  return routes.map((route) => {
48
49
  const { matchRegexString, routeParams } = route.isNotFound ? { matchRegexString: null, routeParams: null } : getRouteRegexAndParams(route.path);
49
50
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cedarjs/internal",
3
- "version": "2.8.1-next.116+784d2c048",
3
+ "version": "2.8.1-rc.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/cedarjs/cedar.git",
@@ -145,29 +145,30 @@
145
145
  },
146
146
  "dependencies": {
147
147
  "@babel/core": "^7.26.10",
148
- "@babel/parser": "7.29.2",
148
+ "@babel/parser": "7.29.0",
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",
151
152
  "@babel/traverse": "7.29.0",
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",
153
+ "@cedarjs/babel-config": "2.8.1-rc.3",
154
+ "@cedarjs/graphql-server": "2.8.1-rc.3",
155
+ "@cedarjs/project-config": "2.8.1-rc.3",
156
+ "@cedarjs/router": "2.8.1-rc.3",
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",
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",
171
172
  "deepmerge": "4.3.1",
172
173
  "esbuild": "0.21.5",
173
174
  "fast-glob": "3.3.3",
@@ -177,14 +178,14 @@
177
178
  "rimraf": "6.1.3",
178
179
  "source-map": "0.7.6",
179
180
  "string-env-interpolation": "1.0.1",
180
- "systeminformation": "5.31.4",
181
+ "systeminformation": "5.31.2",
181
182
  "termi-link": "1.1.0",
182
183
  "ts-node": "10.9.2",
183
184
  "typescript": "5.9.3"
184
185
  },
185
186
  "devDependencies": {
186
187
  "@arethetypeswrong/cli": "0.18.2",
187
- "@cedarjs/framework-tools": "2.8.1-next.116",
188
+ "@cedarjs/framework-tools": "2.8.1-rc.3",
188
189
  "concurrently": "9.2.1",
189
190
  "graphql-tag": "2.12.6",
190
191
  "publint": "0.3.18",
@@ -194,5 +195,5 @@
194
195
  "publishConfig": {
195
196
  "access": "public"
196
197
  },
197
- "gitHead": "784d2c0484936b2d853e5b316d167602bd80d996"
198
+ "gitHead": "f778a5b70b97c0b129246e918083f42c63a6dc0a"
198
199
  }