joist-graphql-codegen 2.3.0-next.41 → 2.3.0-next.43

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 (125) hide show
  1. package/build/_virtual/_rolldown/runtime.cjs +23 -0
  2. package/build/generateEnumDetailResolvers.cjs +40 -0
  3. package/build/generateEnumDetailResolvers.cjs.map +1 -0
  4. package/build/generateEnumDetailResolvers.d.cts +8 -0
  5. package/build/generateEnumDetailResolvers.d.cts.map +1 -0
  6. package/build/generateEnumDetailResolvers.d.mts +8 -0
  7. package/build/generateEnumDetailResolvers.d.mts.map +1 -0
  8. package/build/generateEnumDetailResolvers.js +23 -23
  9. package/build/generateEnumDetailResolvers.js.map +1 -1
  10. package/build/generateEnumsGraphql.cjs +29 -0
  11. package/build/generateEnumsGraphql.cjs.map +1 -0
  12. package/build/generateEnumsGraphql.d.cts +8 -0
  13. package/build/generateEnumsGraphql.d.cts.map +1 -0
  14. package/build/generateEnumsGraphql.d.mts +8 -0
  15. package/build/generateEnumsGraphql.d.mts.map +1 -0
  16. package/build/generateEnumsGraphql.js +24 -27
  17. package/build/generateEnumsGraphql.js.map +1 -1
  18. package/build/generateGraphqlCodegen.cjs +54 -0
  19. package/build/generateGraphqlCodegen.cjs.map +1 -0
  20. package/build/generateGraphqlCodegen.d.cts +8 -0
  21. package/build/generateGraphqlCodegen.d.cts.map +1 -0
  22. package/build/generateGraphqlCodegen.d.mts +8 -0
  23. package/build/generateGraphqlCodegen.d.mts.map +1 -0
  24. package/build/generateGraphqlCodegen.js +28 -30
  25. package/build/generateGraphqlCodegen.js.map +1 -1
  26. package/build/generateGraphqlSchemaFiles.cjs +491 -0
  27. package/build/generateGraphqlSchemaFiles.cjs.map +1 -0
  28. package/build/{generateGraphqlSchemaFiles.d.ts → generateGraphqlSchemaFiles.d.cts} +6 -2
  29. package/build/generateGraphqlSchemaFiles.d.cts.map +1 -0
  30. package/build/generateGraphqlSchemaFiles.d.mts +15 -0
  31. package/build/generateGraphqlSchemaFiles.d.mts.map +1 -0
  32. package/build/generateGraphqlSchemaFiles.js +444 -286
  33. package/build/generateGraphqlSchemaFiles.js.map +1 -1
  34. package/build/generateObjectResolvers.cjs +70 -0
  35. package/build/generateObjectResolvers.cjs.map +1 -0
  36. package/build/{generateObjectResolvers.d.ts → generateObjectResolvers.d.cts} +5 -1
  37. package/build/generateObjectResolvers.d.cts.map +1 -0
  38. package/build/generateObjectResolvers.d.mts +17 -0
  39. package/build/generateObjectResolvers.d.mts.map +1 -0
  40. package/build/generateObjectResolvers.js +48 -38
  41. package/build/generateObjectResolvers.js.map +1 -1
  42. package/build/generateQueryPageResolvers.cjs +51 -0
  43. package/build/generateQueryPageResolvers.cjs.map +1 -0
  44. package/build/generateQueryPageResolvers.d.cts +8 -0
  45. package/build/generateQueryPageResolvers.d.cts.map +1 -0
  46. package/build/generateQueryPageResolvers.d.mts +8 -0
  47. package/build/generateQueryPageResolvers.d.mts.map +1 -0
  48. package/build/generateQueryPageResolvers.js +31 -35
  49. package/build/generateQueryPageResolvers.js.map +1 -1
  50. package/build/generateQueryResolvers.cjs +55 -0
  51. package/build/generateQueryResolvers.cjs.map +1 -0
  52. package/build/generateQueryResolvers.d.cts +10 -0
  53. package/build/generateQueryResolvers.d.cts.map +1 -0
  54. package/build/generateQueryResolvers.d.mts +10 -0
  55. package/build/generateQueryResolvers.d.mts.map +1 -0
  56. package/build/generateQueryResolvers.js +38 -36
  57. package/build/generateQueryResolvers.js.map +1 -1
  58. package/build/generateResolverUtils.cjs +36 -0
  59. package/build/generateResolverUtils.cjs.map +1 -0
  60. package/build/generateResolverUtils.d.cts +8 -0
  61. package/build/generateResolverUtils.d.cts.map +1 -0
  62. package/build/generateResolverUtils.d.mts +8 -0
  63. package/build/generateResolverUtils.d.mts.map +1 -0
  64. package/build/generateResolverUtils.js +25 -26
  65. package/build/generateResolverUtils.js.map +1 -1
  66. package/build/generateSaveResolvers.cjs +57 -0
  67. package/build/generateSaveResolvers.cjs.map +1 -0
  68. package/build/{generateSaveResolvers.d.ts → generateSaveResolvers.d.cts} +5 -1
  69. package/build/generateSaveResolvers.d.cts.map +1 -0
  70. package/build/generateSaveResolvers.d.mts +17 -0
  71. package/build/generateSaveResolvers.d.mts.map +1 -0
  72. package/build/generateSaveResolvers.js +39 -40
  73. package/build/generateSaveResolvers.js.map +1 -1
  74. package/build/graphqlUtils.cjs +160 -0
  75. package/build/graphqlUtils.cjs.map +1 -0
  76. package/build/graphqlUtils.d.cts +31 -0
  77. package/build/graphqlUtils.d.cts.map +1 -0
  78. package/build/graphqlUtils.d.mts +31 -0
  79. package/build/graphqlUtils.d.mts.map +1 -0
  80. package/build/graphqlUtils.js +120 -218
  81. package/build/graphqlUtils.js.map +1 -1
  82. package/build/history.cjs +25 -0
  83. package/build/history.cjs.map +1 -0
  84. package/build/history.d.cts +9 -0
  85. package/build/history.d.cts.map +1 -0
  86. package/build/history.d.mts +9 -0
  87. package/build/history.d.mts.map +1 -0
  88. package/build/history.js +17 -14
  89. package/build/history.js.map +1 -1
  90. package/build/index.cjs +57 -0
  91. package/build/index.cjs.map +1 -0
  92. package/build/index.d.cts +7 -0
  93. package/build/index.d.cts.map +1 -0
  94. package/build/index.d.mts +7 -0
  95. package/build/index.d.mts.map +1 -0
  96. package/build/index.js +48 -54
  97. package/build/index.js.map +1 -1
  98. package/build/testUtils.cjs +181 -0
  99. package/build/testUtils.cjs.map +1 -0
  100. package/build/testUtils.d.cts +20 -0
  101. package/build/testUtils.d.cts.map +1 -0
  102. package/build/testUtils.d.mts +20 -0
  103. package/build/testUtils.d.mts.map +1 -0
  104. package/build/testUtils.js +152 -158
  105. package/build/testUtils.js.map +1 -1
  106. package/build/utils.cjs +51 -0
  107. package/build/utils.cjs.map +1 -0
  108. package/build/utils.d.cts +16 -0
  109. package/build/utils.d.cts.map +1 -0
  110. package/build/utils.d.mts +16 -0
  111. package/build/utils.d.mts.map +1 -0
  112. package/build/utils.js +37 -49
  113. package/build/utils.js.map +1 -1
  114. package/package.json +28 -5
  115. package/build/generateEnumDetailResolvers.d.ts +0 -4
  116. package/build/generateEnumsGraphql.d.ts +0 -4
  117. package/build/generateGraphqlCodegen.d.ts +0 -4
  118. package/build/generateQueryPageResolvers.d.ts +0 -4
  119. package/build/generateQueryResolvers.d.ts +0 -6
  120. package/build/generateResolverUtils.d.ts +0 -4
  121. package/build/graphqlUtils.d.ts +0 -27
  122. package/build/history.d.ts +0 -5
  123. package/build/index.d.ts +0 -3
  124. package/build/testUtils.d.ts +0 -24
  125. package/build/utils.d.ts +0 -12
@@ -0,0 +1,10 @@
1
+ import { Config, DbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateQueryResolvers.d.ts
4
+ /**
5
+ * Generates top-level query resolvers.
6
+ */
7
+ declare function generateQueryResolvers(config: Config, db: DbMetadata): CodegenFile[];
8
+ //#endregion
9
+ export { generateQueryResolvers };
10
+ //# sourceMappingURL=generateQueryResolvers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateQueryResolvers.d.mts","names":[],"sources":["../src/generateQueryResolvers.ts"],"mappings":";;;;;;iBAYgB,uBAAuB,QAAQ,QAAQ,IAAI,aAAa"}
@@ -1,52 +1,54 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateQueryResolvers = generateQueryResolvers;
4
- const change_case_1 = require("change-case");
5
- const ts_poet_1 = require("ts-poet");
6
- const utils_1 = require("./utils");
7
- const queryResolvers = (0, ts_poet_1.imp)("t:QueryResolvers@src/generated/graphql-types.ts");
8
- const makeRunQuery = (0, ts_poet_1.imp)("makeRunQuery@src/resolvers/testUtils.ts");
1
+ import { getEntitiesImportPath } from "./utils.js";
2
+ import { camelCase, sentenceCase } from "change-case";
3
+ import "joist-codegen";
4
+ import { code, imp } from "ts-poet";
5
+ //#region src/generateQueryResolvers.ts
6
+ const queryResolvers = imp("t:QueryResolvers@src/generated/graphql-types.ts");
7
+ const makeRunQuery = imp("makeRunQuery@src/resolvers/testUtils.ts");
9
8
  /**
10
- * Generates top-level query resolvers.
11
- */
9
+ * Generates top-level query resolvers.
10
+ */
12
11
  function generateQueryResolvers(config, db) {
13
- const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
14
- const resolvers = db.entities.map((e) => {
15
- const { name } = e;
16
- const camelName = (0, change_case_1.camelCase)(name);
17
- const type = (0, ts_poet_1.imp)(`${name}@${entitiesPath}`);
18
- return {
19
- name: `resolvers/${camelName}/${camelName}Query.ts`,
20
- overwrite: false,
21
- contents: (0, ts_poet_1.code) `
12
+ const entitiesPath = getEntitiesImportPath(config);
13
+ const resolvers = db.entities.map((e) => {
14
+ const { name } = e;
15
+ const camelName = camelCase(name);
16
+ const type = imp(`${name}@${entitiesPath}`);
17
+ return {
18
+ name: `resolvers/${camelName}/${camelName}Query.ts`,
19
+ overwrite: false,
20
+ contents: code`
22
21
  export const ${camelName}: Pick<${queryResolvers}, "${camelName}"> = {
23
22
  async ${camelName}(_, args, ctx) {
24
23
  return ctx.em.load(${type}, args.id);
25
24
  },
26
25
  };
27
- `,
28
- };
29
- });
30
- const testFiles = db.entities.map((e) => {
31
- const { name, tagName } = e;
32
- const camelName = (0, change_case_1.camelCase)(name);
33
- const resolverConst = (0, ts_poet_1.imp)(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);
34
- return {
35
- name: `resolvers/${camelName}/${camelName}Query.test.ts`,
36
- overwrite: false,
37
- contents: (0, ts_poet_1.code) `
26
+ `
27
+ };
28
+ });
29
+ const testFiles = db.entities.map((e) => {
30
+ const { name, tagName } = e;
31
+ const camelName = camelCase(name);
32
+ const resolverConst = imp(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);
33
+ return {
34
+ name: `resolvers/${camelName}/${camelName}Query.test.ts`,
35
+ overwrite: false,
36
+ contents: code`
38
37
  describe("${camelName}", () => {
39
- it.withCtx("returns a ${(0, change_case_1.sentenceCase)(name)}", async (ctx) => {
40
- const ${tagName} = ${(0, ts_poet_1.imp)(`new${name}@${entitiesPath}`)}(ctx.em);
38
+ it.withCtx("returns a ${sentenceCase(name)}", async (ctx) => {
39
+ const ${tagName} = ${imp(`new${name}@${entitiesPath}`)}(ctx.em);
41
40
  const result = await run(ctx, () => ({ id: ${tagName}.id }));
42
41
  expect(result).toMatchEntity(${tagName});
43
42
  });
44
43
  });
45
44
 
46
45
  const run = ${makeRunQuery}(${resolverConst});
47
- `,
48
- };
49
- });
50
- return [...resolvers, ...testFiles];
46
+ `
47
+ };
48
+ });
49
+ return [...resolvers, ...testFiles];
51
50
  }
51
+ //#endregion
52
+ export { generateQueryResolvers };
53
+
52
54
  //# sourceMappingURL=generateQueryResolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateQueryResolvers.js","sourceRoot":"","sources":["../src/generateQueryResolvers.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AAEtD,qCAAiD;AAEjD,mCAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,iDAAiD,CAAC,CAAC;AAC9E,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,yCAAyC,CAAC,CAAC;AAEpE;;GAEG;AACH,gCAAuC,MAAc,EAAE,EAAc;IACnE,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,UAAU;YACnD,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;yBACK,SAAS,UAAU,cAAc,MAAM,SAAS;oBACrD,SAAS;mCACM,IAAI;;;SAG9B;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACtC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,GAAG,SAAS,kBAAkB,SAAS,IAAI,SAAS,UAAU,CAAC,CAAC;QAC1F,OAAO;YACL,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,eAAe;YACxD,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;oBACA,SAAS;kCACK,IAAA,0BAAY,EAAC,IAAI,CAAC;oBAChC,OAAO,MAAM,IAAA,aAAG,EAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;yDACT,OAAO;2CACrB,OAAO;;;;sBAI5B,YAAY,IAAI,aAAa;OAC5C;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"generateQueryResolvers.js","names":[],"sources":["../src/generateQueryResolvers.ts"],"sourcesContent":["import { camelCase, sentenceCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst queryResolvers = imp(\"t:QueryResolvers@src/generated/graphql-types.ts\");\nconst makeRunQuery = imp(\"makeRunQuery@src/resolvers/testUtils.ts\");\n\n/**\n * Generates top-level query resolvers.\n */\nexport function generateQueryResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n const resolvers = db.entities.map((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const type = imp(`${name}@${entitiesPath}`);\n return {\n name: `resolvers/${camelName}/${camelName}Query.ts`,\n overwrite: false,\n contents: code`\n export const ${camelName}: Pick<${queryResolvers}, \"${camelName}\"> = {\n async ${camelName}(_, args, ctx) {\n return ctx.em.load(${type}, args.id);\n },\n };\n `,\n };\n });\n\n const testFiles = db.entities.map((e) => {\n const { name, tagName } = e;\n const camelName = camelCase(name);\n const resolverConst = imp(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);\n return {\n name: `resolvers/${camelName}/${camelName}Query.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"${camelName}\", () => {\n it.withCtx(\"returns a ${sentenceCase(name)}\", async (ctx) => {\n const ${tagName} = ${imp(`new${name}@${entitiesPath}`)}(ctx.em);\n const result = await run(ctx, () => ({ id: ${tagName}.id }));\n expect(result).toMatchEntity(${tagName});\n });\n });\n\n const run = ${makeRunQuery}(${resolverConst});\n `,\n };\n });\n\n return [...resolvers, ...testFiles];\n}\n"],"mappings":";;;;;AAMA,MAAM,iBAAiB,IAAI,iDAAiD;AAC5E,MAAM,eAAe,IAAI,yCAAyC;;;;AAKlE,SAAgB,uBAAuB,QAAgB,IAA+B;CACpF,MAAM,eAAe,sBAAsB,MAAM;CACjD,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM;EACvC,MAAM,EAAE,SAAS;EACjB,MAAM,YAAY,UAAU,IAAI;EAChC,MAAM,OAAO,IAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,OAAO;GACL,MAAM,aAAa,UAAU,GAAG,UAAU;GAC1C,WAAW;GACX,UAAU,IAAI;yBACK,UAAU,SAAS,eAAe,KAAK,UAAU;oBACtD,UAAU;mCACK,KAAK;;;;EAIpC;CACF,CAAC;CAED,MAAM,YAAY,GAAG,SAAS,KAAK,MAAM;EACvC,MAAM,EAAE,MAAM,YAAY;EAC1B,MAAM,YAAY,UAAU,IAAI;EAChC,MAAM,gBAAgB,IAAI,GAAG,UAAU,iBAAiB,UAAU,GAAG,UAAU,SAAS;EACxF,OAAO;GACL,MAAM,aAAa,UAAU,GAAG,UAAU;GAC1C,WAAW;GACX,UAAU,IAAI;oBACA,UAAU;kCACI,aAAa,IAAI,EAAE;oBACjC,QAAQ,KAAK,IAAI,MAAM,KAAK,GAAG,cAAc,EAAE;yDACV,QAAQ;2CACtB,QAAQ;;;;sBAI7B,aAAa,GAAG,cAAc;;EAEhD;CACF,CAAC;CAED,OAAO,CAAC,GAAG,WAAW,GAAG,SAAS;AACpC"}
@@ -0,0 +1,36 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("joist-codegen");
3
+ let ts_poet = require("ts-poet");
4
+ //#region src/generateResolverUtils.ts
5
+ /** Generates project-level resolver utility exports. */
6
+ function generateResolverUtils(config) {
7
+ const paginate = (config.paginationStyle ?? "cursor") === "limit" ? "paginateLimit" : "paginateCursor";
8
+ return [{
9
+ name: "resolvers/utils.ts",
10
+ overwrite: false,
11
+ contents: ts_poet.code`
12
+ export {
13
+ ${(0, ts_poet.imp)("entityResolver@joist-graphql-resolver-utils")},
14
+ ${(0, ts_poet.imp)(`${paginate}@joist-graphql-resolver-utils`)} as paginate,
15
+ ${(0, ts_poet.imp)("saveEntity@joist-graphql-resolver-utils")},
16
+ };
17
+ `
18
+ }, {
19
+ name: "resolvers/testUtils.ts",
20
+ overwrite: false,
21
+ contents: ts_poet.code`
22
+ import { type Context, run } from "joist-test-utils";
23
+
24
+ export { run };
25
+
26
+ export const makeRunInputMutation: ${(0, ts_poet.imp)("t:MakeRunInputMutation@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet.imp)("makeMakeRunInputMutation@joist-graphql-resolver-utils/tests")}(run);
27
+ export const makeRunObjectField: ${(0, ts_poet.imp)("t:MakeRunObjectField@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet.imp)("makeMakeRunObjectField@joist-graphql-resolver-utils/tests")}(run);
28
+ export const makeRunObjectFields: ${(0, ts_poet.imp)("t:MakeRunObjectFields@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet.imp)("makeMakeRunObjectFields@joist-graphql-resolver-utils/tests")}(run);
29
+ export const makeRunQuery: ${(0, ts_poet.imp)("t:MakeRunQuery@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet.imp)("makeMakeRunQuery@joist-graphql-resolver-utils/tests")}(run);
30
+ `
31
+ }];
32
+ }
33
+ //#endregion
34
+ exports.generateResolverUtils = generateResolverUtils;
35
+
36
+ //# sourceMappingURL=generateResolverUtils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateResolverUtils.cjs","names":["imp"],"sources":["../src/generateResolverUtils.ts"],"sourcesContent":["import { type Config } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\n/** Generates project-level resolver utility exports. */\nexport function generateResolverUtils(config: Config): CodegenFile[] {\n const paginate = (config.paginationStyle ?? \"cursor\") === \"limit\" ? \"paginateLimit\" : \"paginateCursor\";\n return [\n {\n name: \"resolvers/utils.ts\",\n overwrite: false,\n contents: code`\n export {\n ${imp(\"entityResolver@joist-graphql-resolver-utils\")},\n ${imp(`${paginate}@joist-graphql-resolver-utils`)} as paginate,\n ${imp(\"saveEntity@joist-graphql-resolver-utils\")},\n };\n `,\n },\n {\n name: \"resolvers/testUtils.ts\",\n overwrite: false,\n contents: code`\n import { type Context, run } from \"joist-test-utils\";\n\n export { run };\n\n export const makeRunInputMutation: ${imp(\"t:MakeRunInputMutation@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunInputMutation@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunObjectField: ${imp(\"t:MakeRunObjectField@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunObjectField@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunObjectFields: ${imp(\"t:MakeRunObjectFields@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunObjectFields@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunQuery: ${imp(\"t:MakeRunQuery@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunQuery@joist-graphql-resolver-utils/tests\")}(run);\n `,\n },\n ];\n}\n"],"mappings":";;;;;AAIA,SAAgB,sBAAsB,QAA+B;CACnE,MAAM,YAAY,OAAO,mBAAmB,cAAc,UAAU,kBAAkB;CACtF,OAAO,CACL;EACE,MAAM;EACN,WAAW;EACX,UAAU,QAAA,IAAI;;aAERA,GAAAA,QAAAA,IAAAA,CAAI,6CAA6C,EAAE;aACnDA,GAAAA,QAAAA,IAAAA,CAAI,GAAG,SAAS,8BAA8B,EAAE;aAChDA,GAAAA,QAAAA,IAAAA,CAAI,yCAAyC,EAAE;;;CAGvD,GACA;EACE,MAAM;EACN,WAAW;EACX,UAAU,QAAA,IAAI;;;;;8CAKyBA,GAAAA,QAAAA,IAAAA,CAAI,2DAA2D,EAAE,eAAA,GAAcA,QAAAA,IAAAA,CAAI,6DAA6D,EAAE;4CACpJA,GAAAA,QAAAA,IAAAA,CAAI,yDAAyD,EAAE,eAAA,GAAcA,QAAAA,IAAAA,CAAI,2DAA2D,EAAE;6CAC7IA,GAAAA,QAAAA,IAAAA,CAAI,0DAA0D,EAAE,eAAA,GAAcA,QAAAA,IAAAA,CAAI,4DAA4D,EAAE;sCACvJA,GAAAA,QAAAA,IAAAA,CAAI,mDAAmD,EAAE,eAAA,GAAcA,QAAAA,IAAAA,CAAI,qDAAqD,EAAE;;CAEnK,CACF;AACF"}
@@ -0,0 +1,8 @@
1
+ import { Config } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateResolverUtils.d.ts
4
+ /** Generates project-level resolver utility exports. */
5
+ declare function generateResolverUtils(config: Config): CodegenFile[];
6
+ //#endregion
7
+ export { generateResolverUtils };
8
+ //# sourceMappingURL=generateResolverUtils.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateResolverUtils.d.cts","names":[],"sources":["../src/generateResolverUtils.ts"],"mappings":";;;;iBAIgB,sBAAsB,QAAQ,SAAS"}
@@ -0,0 +1,8 @@
1
+ import { Config } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateResolverUtils.d.ts
4
+ /** Generates project-level resolver utility exports. */
5
+ declare function generateResolverUtils(config: Config): CodegenFile[];
6
+ //#endregion
7
+ export { generateResolverUtils };
8
+ //# sourceMappingURL=generateResolverUtils.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateResolverUtils.d.mts","names":[],"sources":["../src/generateResolverUtils.ts"],"mappings":";;;;iBAIgB,sBAAsB,QAAQ,SAAS"}
@@ -1,36 +1,35 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateResolverUtils = generateResolverUtils;
4
- const ts_poet_1 = require("ts-poet");
1
+ import "joist-codegen";
2
+ import { code, imp } from "ts-poet";
3
+ //#region src/generateResolverUtils.ts
5
4
  /** Generates project-level resolver utility exports. */
6
5
  function generateResolverUtils(config) {
7
- const paginate = (config.paginationStyle ?? "cursor") === "limit" ? "paginateLimit" : "paginateCursor";
8
- return [
9
- {
10
- name: "resolvers/utils.ts",
11
- overwrite: false,
12
- contents: (0, ts_poet_1.code) `
6
+ const paginate = (config.paginationStyle ?? "cursor") === "limit" ? "paginateLimit" : "paginateCursor";
7
+ return [{
8
+ name: "resolvers/utils.ts",
9
+ overwrite: false,
10
+ contents: code`
13
11
  export {
14
- ${(0, ts_poet_1.imp)("entityResolver@joist-graphql-resolver-utils")},
15
- ${(0, ts_poet_1.imp)(`${paginate}@joist-graphql-resolver-utils`)} as paginate,
16
- ${(0, ts_poet_1.imp)("saveEntity@joist-graphql-resolver-utils")},
12
+ ${imp("entityResolver@joist-graphql-resolver-utils")},
13
+ ${imp(`${paginate}@joist-graphql-resolver-utils`)} as paginate,
14
+ ${imp("saveEntity@joist-graphql-resolver-utils")},
17
15
  };
18
- `,
19
- },
20
- {
21
- name: "resolvers/testUtils.ts",
22
- overwrite: false,
23
- contents: (0, ts_poet_1.code) `
16
+ `
17
+ }, {
18
+ name: "resolvers/testUtils.ts",
19
+ overwrite: false,
20
+ contents: code`
24
21
  import { type Context, run } from "joist-test-utils";
25
22
 
26
23
  export { run };
27
24
 
28
- export const makeRunInputMutation: ${(0, ts_poet_1.imp)("t:MakeRunInputMutation@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet_1.imp)("makeMakeRunInputMutation@joist-graphql-resolver-utils/tests")}(run);
29
- export const makeRunObjectField: ${(0, ts_poet_1.imp)("t:MakeRunObjectField@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet_1.imp)("makeMakeRunObjectField@joist-graphql-resolver-utils/tests")}(run);
30
- export const makeRunObjectFields: ${(0, ts_poet_1.imp)("t:MakeRunObjectFields@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet_1.imp)("makeMakeRunObjectFields@joist-graphql-resolver-utils/tests")}(run);
31
- export const makeRunQuery: ${(0, ts_poet_1.imp)("t:MakeRunQuery@joist-graphql-resolver-utils/tests")}<Context> = ${(0, ts_poet_1.imp)("makeMakeRunQuery@joist-graphql-resolver-utils/tests")}(run);
32
- `,
33
- },
34
- ];
25
+ export const makeRunInputMutation: ${imp("t:MakeRunInputMutation@joist-graphql-resolver-utils/tests")}<Context> = ${imp("makeMakeRunInputMutation@joist-graphql-resolver-utils/tests")}(run);
26
+ export const makeRunObjectField: ${imp("t:MakeRunObjectField@joist-graphql-resolver-utils/tests")}<Context> = ${imp("makeMakeRunObjectField@joist-graphql-resolver-utils/tests")}(run);
27
+ export const makeRunObjectFields: ${imp("t:MakeRunObjectFields@joist-graphql-resolver-utils/tests")}<Context> = ${imp("makeMakeRunObjectFields@joist-graphql-resolver-utils/tests")}(run);
28
+ export const makeRunQuery: ${imp("t:MakeRunQuery@joist-graphql-resolver-utils/tests")}<Context> = ${imp("makeMakeRunQuery@joist-graphql-resolver-utils/tests")}(run);
29
+ `
30
+ }];
35
31
  }
32
+ //#endregion
33
+ export { generateResolverUtils };
34
+
36
35
  //# sourceMappingURL=generateResolverUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateResolverUtils.js","sourceRoot":"","sources":["../src/generateResolverUtils.ts"],"names":[],"mappings":";;;AACA,qCAAiD;AAEjD,wDAAwD;AACxD,+BAAsC,MAAc;IAClD,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,eAAe,IAAI,QAAQ,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACvG,OAAO;QACL;YACE,IAAI,EAAE,oBAAoB;YAC1B,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;;YAER,IAAA,aAAG,EAAC,6CAA6C,CAAC;YAClD,IAAA,aAAG,EAAC,GAAG,QAAQ,+BAA+B,CAAC;YAC/C,IAAA,aAAG,EAAC,yCAAyC,CAAC;;OAEnD;SACF;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;;;;;6CAKyB,IAAA,aAAG,EAAC,2DAA2D,CAAC,eAAe,IAAA,aAAG,EAAC,6DAA6D,CAAC;2CACnJ,IAAA,aAAG,EAAC,yDAAyD,CAAC,eAAe,IAAA,aAAG,EAAC,2DAA2D,CAAC;4CAC5I,IAAA,aAAG,EAAC,0DAA0D,CAAC,eAAe,IAAA,aAAG,EAAC,4DAA4D,CAAC;qCACtJ,IAAA,aAAG,EAAC,mDAAmD,CAAC,eAAe,IAAA,aAAG,EAAC,qDAAqD,CAAC;OAC/J;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generateResolverUtils.js","names":[],"sources":["../src/generateResolverUtils.ts"],"sourcesContent":["import { type Config } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\n/** Generates project-level resolver utility exports. */\nexport function generateResolverUtils(config: Config): CodegenFile[] {\n const paginate = (config.paginationStyle ?? \"cursor\") === \"limit\" ? \"paginateLimit\" : \"paginateCursor\";\n return [\n {\n name: \"resolvers/utils.ts\",\n overwrite: false,\n contents: code`\n export {\n ${imp(\"entityResolver@joist-graphql-resolver-utils\")},\n ${imp(`${paginate}@joist-graphql-resolver-utils`)} as paginate,\n ${imp(\"saveEntity@joist-graphql-resolver-utils\")},\n };\n `,\n },\n {\n name: \"resolvers/testUtils.ts\",\n overwrite: false,\n contents: code`\n import { type Context, run } from \"joist-test-utils\";\n\n export { run };\n\n export const makeRunInputMutation: ${imp(\"t:MakeRunInputMutation@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunInputMutation@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunObjectField: ${imp(\"t:MakeRunObjectField@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunObjectField@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunObjectFields: ${imp(\"t:MakeRunObjectFields@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunObjectFields@joist-graphql-resolver-utils/tests\")}(run);\n export const makeRunQuery: ${imp(\"t:MakeRunQuery@joist-graphql-resolver-utils/tests\")}<Context> = ${imp(\"makeMakeRunQuery@joist-graphql-resolver-utils/tests\")}(run);\n `,\n },\n ];\n}\n"],"mappings":";;;;AAIA,SAAgB,sBAAsB,QAA+B;CACnE,MAAM,YAAY,OAAO,mBAAmB,cAAc,UAAU,kBAAkB;CACtF,OAAO,CACL;EACE,MAAM;EACN,WAAW;EACX,UAAU,IAAI;;YAER,IAAI,6CAA6C,EAAE;YACnD,IAAI,GAAG,SAAS,8BAA8B,EAAE;YAChD,IAAI,yCAAyC,EAAE;;;CAGvD,GACA;EACE,MAAM;EACN,WAAW;EACX,UAAU,IAAI;;;;;6CAKyB,IAAI,2DAA2D,EAAE,cAAc,IAAI,6DAA6D,EAAE;2CACpJ,IAAI,yDAAyD,EAAE,cAAc,IAAI,2DAA2D,EAAE;4CAC7I,IAAI,0DAA0D,EAAE,cAAc,IAAI,4DAA4D,EAAE;qCACvJ,IAAI,mDAAmD,EAAE,cAAc,IAAI,qDAAqD,EAAE;;CAEnK,CACF;AACF"}
@@ -0,0 +1,57 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_utils = require("./utils.cjs");
3
+ let change_case = require("change-case");
4
+ require("joist-codegen");
5
+ let ts_poet = require("ts-poet");
6
+ //#region src/generateSaveResolvers.ts
7
+ const saveEntity = (0, ts_poet.imp)("saveEntity@src/resolvers/utils.ts");
8
+ const mutationResolvers = (0, ts_poet.imp)("t:MutationResolvers@src/generated/graphql-types.ts");
9
+ const makeRunInputMutation = (0, ts_poet.imp)("makeRunInputMutation@src/resolvers/testUtils.ts");
10
+ /**
11
+ * Generates a save resolver.
12
+ *
13
+ * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`
14
+ * will run first and put these Joist-aware resolvers in place first.
15
+ *
16
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
17
+ *
18
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
19
+ */
20
+ function generateSaveResolvers(config, db) {
21
+ const entitiesPath = require_utils.getEntitiesImportPath(config);
22
+ return db.entities.flatMap((e) => {
23
+ const { name } = e;
24
+ const camelName = (0, change_case.camelCase)(name);
25
+ const type = (0, ts_poet.imp)(`${name}@${entitiesPath}`);
26
+ const fileName = `save${name}Mutation`;
27
+ const resolverConst = (0, ts_poet.imp)(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);
28
+ return [{
29
+ name: `resolvers/${camelName}/${fileName}.ts`,
30
+ overwrite: false,
31
+ contents: ts_poet.code`
32
+ export const save${name}: Pick<${mutationResolvers}, "save${name}"> = {
33
+ async save${name}(_, args, ctx) {
34
+ return { ${camelName}: await ${saveEntity}(ctx, ${type}, args.input) };
35
+ },
36
+ };
37
+ `
38
+ }, {
39
+ name: `resolvers/${camelName}/${fileName}.test.ts`,
40
+ overwrite: false,
41
+ contents: ts_poet.code`
42
+ describe("save${name}", () => {
43
+ it.withCtx("can create", async (ctx) => {
44
+ const result = await runSave(ctx, () => ({}));
45
+ expect(result).toBeDefined()
46
+ });
47
+ });
48
+
49
+ const runSave = ${makeRunInputMutation}(${resolverConst});
50
+ `
51
+ }];
52
+ });
53
+ }
54
+ //#endregion
55
+ exports.generateSaveResolvers = generateSaveResolvers;
56
+
57
+ //# sourceMappingURL=generateSaveResolvers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSaveResolvers.cjs","names":["imp","getEntitiesImportPath","camelCase"],"sources":["../src/generateSaveResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst saveEntity = imp(\"saveEntity@src/resolvers/utils.ts\");\nconst mutationResolvers = imp(\"t:MutationResolvers@src/generated/graphql-types.ts\");\nconst makeRunInputMutation = imp(\"makeRunInputMutation@src/resolvers/testUtils.ts\");\n\n/**\n * Generates a save resolver.\n *\n * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`\n * will run first and put these Joist-aware resolvers in place first.\n *\n * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.\n *\n * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding\n */\nexport function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n return db.entities.flatMap((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const type = imp(`${name}@${entitiesPath}`);\n const fileName = `save${name}Mutation`;\n const resolverConst = imp(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);\n return [\n {\n name: `resolvers/${camelName}/${fileName}.ts`,\n overwrite: false,\n contents: code`\n export const save${name}: Pick<${mutationResolvers}, \"save${name}\"> = {\n async save${name}(_, args, ctx) {\n return { ${camelName}: await ${saveEntity}(ctx, ${type}, args.input) };\n },\n };\n `,\n },\n {\n name: `resolvers/${camelName}/${fileName}.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"save${name}\", () => {\n it.withCtx(\"can create\", async (ctx) => {\n const result = await runSave(ctx, () => ({}));\n expect(result).toBeDefined()\n });\n });\n\n const runSave = ${makeRunInputMutation}(${resolverConst});\n `,\n },\n ];\n });\n}\n"],"mappings":";;;;;;AAMA,MAAM,cAAA,GAAaA,QAAAA,IAAAA,CAAI,mCAAmC;AAC1D,MAAM,qBAAA,GAAoBA,QAAAA,IAAAA,CAAI,oDAAoD;AAClF,MAAM,wBAAA,GAAuBA,QAAAA,IAAAA,CAAI,iDAAiD;;;;;;;;;;;AAYlF,SAAgB,sBAAsB,QAAgB,IAA+B;CACnF,MAAM,eAAeC,cAAAA,sBAAsB,MAAM;CACjD,OAAO,GAAG,SAAS,SAAS,MAAM;EAChC,MAAM,EAAE,SAAS;EACjB,MAAM,aAAA,GAAYC,YAAAA,UAAAA,CAAU,IAAI;EAChC,MAAM,QAAA,GAAOF,QAAAA,IAAAA,CAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,MAAM,WAAW,OAAO,KAAK;EAC7B,MAAM,iBAAA,GAAgBA,QAAAA,IAAAA,CAAI,OAAO,KAAK,iBAAiB,UAAU,GAAG,SAAS,IAAI;EACjF,OAAO,CACL;GACE,MAAM,aAAa,UAAU,GAAG,SAAS;GACzC,WAAW;GACX,UAAU,QAAA,IAAI;6BACO,KAAK,SAAS,kBAAkB,SAAS,KAAK;wBACnD,KAAK;yBACJ,UAAU,UAAU,WAAW,QAAQ,KAAK;;;;EAI/D,GACA;GACE,MAAM,aAAa,UAAU,GAAG,SAAS;GACzC,WAAW;GACX,UAAU,QAAA,IAAI;wBACE,KAAK;;;;;;;0BAOH,qBAAqB,GAAG,cAAc;;EAE1D,CACF;CACF,CAAC;AACH"}
@@ -1,5 +1,6 @@
1
1
  import { Config, DbMetadata } from "joist-codegen";
2
2
  import { CodegenFile } from "ts-poet";
3
+ //#region src/generateSaveResolvers.d.ts
3
4
  /**
4
5
  * Generates a save resolver.
5
6
  *
@@ -10,4 +11,7 @@ import { CodegenFile } from "ts-poet";
10
11
  *
11
12
  * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
12
13
  */
13
- export declare function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[];
14
+ declare function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[];
15
+ //#endregion
16
+ export { generateSaveResolvers };
17
+ //# sourceMappingURL=generateSaveResolvers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSaveResolvers.d.cts","names":[],"sources":["../src/generateSaveResolvers.ts"],"mappings":";;;;;;;;;;;;;iBAoBgB,sBAAsB,QAAQ,QAAQ,IAAI,aAAa"}
@@ -0,0 +1,17 @@
1
+ import { Config, DbMetadata } from "joist-codegen";
2
+ import { CodegenFile } from "ts-poet";
3
+ //#region src/generateSaveResolvers.d.ts
4
+ /**
5
+ * Generates a save resolver.
6
+ *
7
+ * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`
8
+ * will run first and put these Joist-aware resolvers in place first.
9
+ *
10
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
11
+ *
12
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
13
+ */
14
+ declare function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[];
15
+ //#endregion
16
+ export { generateSaveResolvers };
17
+ //# sourceMappingURL=generateSaveResolvers.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateSaveResolvers.d.mts","names":[],"sources":["../src/generateSaveResolvers.ts"],"mappings":";;;;;;;;;;;;;iBAoBgB,sBAAsB,QAAQ,QAAQ,IAAI,aAAa"}
@@ -1,46 +1,43 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateSaveResolvers = generateSaveResolvers;
4
- const change_case_1 = require("change-case");
5
- const ts_poet_1 = require("ts-poet");
6
- const utils_1 = require("./utils");
7
- const saveEntity = (0, ts_poet_1.imp)("saveEntity@src/resolvers/utils.ts");
8
- const mutationResolvers = (0, ts_poet_1.imp)("t:MutationResolvers@src/generated/graphql-types.ts");
9
- const makeRunInputMutation = (0, ts_poet_1.imp)("makeRunInputMutation@src/resolvers/testUtils.ts");
1
+ import { getEntitiesImportPath } from "./utils.js";
2
+ import { camelCase } from "change-case";
3
+ import "joist-codegen";
4
+ import { code, imp } from "ts-poet";
5
+ //#region src/generateSaveResolvers.ts
6
+ const saveEntity = imp("saveEntity@src/resolvers/utils.ts");
7
+ const mutationResolvers = imp("t:MutationResolvers@src/generated/graphql-types.ts");
8
+ const makeRunInputMutation = imp("makeRunInputMutation@src/resolvers/testUtils.ts");
10
9
  /**
11
- * Generates a save resolver.
12
- *
13
- * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`
14
- * will run first and put these Joist-aware resolvers in place first.
15
- *
16
- * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
17
- *
18
- * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
19
- */
10
+ * Generates a save resolver.
11
+ *
12
+ * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`
13
+ * will run first and put these Joist-aware resolvers in place first.
14
+ *
15
+ * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.
16
+ *
17
+ * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
18
+ */
20
19
  function generateSaveResolvers(config, db) {
21
- const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
22
- return db.entities.flatMap((e) => {
23
- const { name } = e;
24
- const camelName = (0, change_case_1.camelCase)(name);
25
- const type = (0, ts_poet_1.imp)(`${name}@${entitiesPath}`);
26
- const fileName = `save${name}Mutation`;
27
- const resolverConst = (0, ts_poet_1.imp)(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);
28
- return [
29
- {
30
- name: `resolvers/${camelName}/${fileName}.ts`,
31
- overwrite: false,
32
- contents: (0, ts_poet_1.code) `
20
+ const entitiesPath = getEntitiesImportPath(config);
21
+ return db.entities.flatMap((e) => {
22
+ const { name } = e;
23
+ const camelName = camelCase(name);
24
+ const type = imp(`${name}@${entitiesPath}`);
25
+ const fileName = `save${name}Mutation`;
26
+ const resolverConst = imp(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);
27
+ return [{
28
+ name: `resolvers/${camelName}/${fileName}.ts`,
29
+ overwrite: false,
30
+ contents: code`
33
31
  export const save${name}: Pick<${mutationResolvers}, "save${name}"> = {
34
32
  async save${name}(_, args, ctx) {
35
33
  return { ${camelName}: await ${saveEntity}(ctx, ${type}, args.input) };
36
34
  },
37
35
  };
38
- `,
39
- },
40
- {
41
- name: `resolvers/${camelName}/${fileName}.test.ts`,
42
- overwrite: false,
43
- contents: (0, ts_poet_1.code) `
36
+ `
37
+ }, {
38
+ name: `resolvers/${camelName}/${fileName}.test.ts`,
39
+ overwrite: false,
40
+ contents: code`
44
41
  describe("save${name}", () => {
45
42
  it.withCtx("can create", async (ctx) => {
46
43
  const result = await runSave(ctx, () => ({}));
@@ -49,9 +46,11 @@ function generateSaveResolvers(config, db) {
49
46
  });
50
47
 
51
48
  const runSave = ${makeRunInputMutation}(${resolverConst});
52
- `,
53
- },
54
- ];
55
- });
49
+ `
50
+ }];
51
+ });
56
52
  }
53
+ //#endregion
54
+ export { generateSaveResolvers };
55
+
57
56
  //# sourceMappingURL=generateSaveResolvers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateSaveResolvers.js","sourceRoot":"","sources":["../src/generateSaveResolvers.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAExC,qCAAiD;AAEjD,mCAAgD;AAEhD,MAAM,UAAU,GAAG,IAAA,aAAG,EAAC,mCAAmC,CAAC,CAAC;AAC5D,MAAM,iBAAiB,GAAG,IAAA,aAAG,EAAC,oDAAoD,CAAC,CAAC;AACpF,MAAM,oBAAoB,GAAG,IAAA,aAAG,EAAC,iDAAiD,CAAC,CAAC;AAEpF;;;;;;;;;GASG;AACH,+BAAsC,MAAc,EAAE,EAAc;IAClE,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,IAAI,UAAU,CAAC;QACvC,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,OAAO,IAAI,kBAAkB,SAAS,IAAI,QAAQ,KAAK,CAAC,CAAC;QACnF,OAAO;YACL;gBACE,IAAI,EAAE,aAAa,SAAS,IAAI,QAAQ,KAAK;gBAC7C,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;6BACO,IAAI,UAAU,iBAAiB,UAAU,IAAI;wBAClD,IAAI;yBACH,SAAS,WAAW,UAAU,SAAS,IAAI;;;SAG3D;aACF;YACD;gBACE,IAAI,EAAE,aAAa,SAAS,IAAI,QAAQ,UAAU;gBAClD,SAAS,EAAE,KAAK;gBAChB,QAAQ,EAAE,IAAA,cAAI,EAAA;wBACE,IAAI;;;;;;;0BAOF,oBAAoB,IAAI,aAAa;OACxD;aACA;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"generateSaveResolvers.js","names":[],"sources":["../src/generateSaveResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type DbMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\nconst saveEntity = imp(\"saveEntity@src/resolvers/utils.ts\");\nconst mutationResolvers = imp(\"t:MutationResolvers@src/generated/graphql-types.ts\");\nconst makeRunInputMutation = imp(\"makeRunInputMutation@src/resolvers/testUtils.ts\");\n\n/**\n * Generates a save resolver.\n *\n * This basically preempts the Joist-agnostic resolvers generated by [1] b/c `joist-codegen`\n * will run first and put these Joist-aware resolvers in place first.\n *\n * Then when [1] runs, it will only output resolver scaffolding for non-entity resolvers.\n *\n * [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding\n */\nexport function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[] {\n const entitiesPath = getEntitiesImportPath(config);\n return db.entities.flatMap((e) => {\n const { name } = e;\n const camelName = camelCase(name);\n const type = imp(`${name}@${entitiesPath}`);\n const fileName = `save${name}Mutation`;\n const resolverConst = imp(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);\n return [\n {\n name: `resolvers/${camelName}/${fileName}.ts`,\n overwrite: false,\n contents: code`\n export const save${name}: Pick<${mutationResolvers}, \"save${name}\"> = {\n async save${name}(_, args, ctx) {\n return { ${camelName}: await ${saveEntity}(ctx, ${type}, args.input) };\n },\n };\n `,\n },\n {\n name: `resolvers/${camelName}/${fileName}.test.ts`,\n overwrite: false,\n contents: code`\n describe(\"save${name}\", () => {\n it.withCtx(\"can create\", async (ctx) => {\n const result = await runSave(ctx, () => ({}));\n expect(result).toBeDefined()\n });\n });\n\n const runSave = ${makeRunInputMutation}(${resolverConst});\n `,\n },\n ];\n });\n}\n"],"mappings":";;;;;AAMA,MAAM,aAAa,IAAI,mCAAmC;AAC1D,MAAM,oBAAoB,IAAI,oDAAoD;AAClF,MAAM,uBAAuB,IAAI,iDAAiD;;;;;;;;;;;AAYlF,SAAgB,sBAAsB,QAAgB,IAA+B;CACnF,MAAM,eAAe,sBAAsB,MAAM;CACjD,OAAO,GAAG,SAAS,SAAS,MAAM;EAChC,MAAM,EAAE,SAAS;EACjB,MAAM,YAAY,UAAU,IAAI;EAChC,MAAM,OAAO,IAAI,GAAG,KAAK,GAAG,cAAc;EAC1C,MAAM,WAAW,OAAO,KAAK;EAC7B,MAAM,gBAAgB,IAAI,OAAO,KAAK,iBAAiB,UAAU,GAAG,SAAS,IAAI;EACjF,OAAO,CACL;GACE,MAAM,aAAa,UAAU,GAAG,SAAS;GACzC,WAAW;GACX,UAAU,IAAI;6BACO,KAAK,SAAS,kBAAkB,SAAS,KAAK;wBACnD,KAAK;yBACJ,UAAU,UAAU,WAAW,QAAQ,KAAK;;;;EAI/D,GACA;GACE,MAAM,aAAa,UAAU,GAAG,SAAS;GACzC,WAAW;GACX,UAAU,IAAI;wBACE,KAAK;;;;;;;0BAOH,qBAAqB,GAAG,cAAc;;EAE1D,CACF;CACF,CAAC;AACH"}