joist-graphql-codegen 0.1.536 → 1.0.0

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 (47) hide show
  1. package/build/generateEnumDetailResolvers.d.ts +2 -2
  2. package/build/generateEnumDetailResolvers.js +9 -6
  3. package/build/generateEnumDetailResolvers.js.map +1 -1
  4. package/build/generateEnumsGraphql.d.ts +2 -2
  5. package/build/generateEnumsGraphql.js +10 -5
  6. package/build/generateEnumsGraphql.js.map +1 -1
  7. package/build/generateGraphqlCodegen.d.ts +2 -2
  8. package/build/generateGraphqlCodegen.js +3 -4
  9. package/build/generateGraphqlCodegen.js.map +1 -1
  10. package/build/generateGraphqlCodegen.test.js +1 -1
  11. package/build/generateGraphqlCodegen.test.js.map +1 -1
  12. package/build/generateGraphqlSchemaFiles.js +82 -34
  13. package/build/generateGraphqlSchemaFiles.js.map +1 -1
  14. package/build/generateGraphqlSchemaFiles.test.js +177 -9
  15. package/build/generateGraphqlSchemaFiles.test.js.map +1 -1
  16. package/build/generateObjectResolvers.d.ts +12 -0
  17. package/build/generateObjectResolvers.js +58 -0
  18. package/build/generateObjectResolvers.js.map +1 -0
  19. package/build/generateSaveResolvers.d.ts +12 -0
  20. package/build/generateSaveResolvers.js +64 -0
  21. package/build/generateSaveResolvers.js.map +1 -0
  22. package/build/graphqlUtils.d.ts +17 -1
  23. package/build/graphqlUtils.js +68 -14
  24. package/build/graphqlUtils.js.map +1 -1
  25. package/build/history.js +3 -3
  26. package/build/history.js.map +1 -1
  27. package/build/index.d.ts +4 -2
  28. package/build/index.js +40 -7
  29. package/build/index.js.map +1 -1
  30. package/build/utils.d.ts +1 -0
  31. package/build/utils.js +15 -2
  32. package/build/utils.js.map +1 -1
  33. package/package.json +24 -11
  34. package/jest.config.js +0 -10
  35. package/package.json.bak +0 -25
  36. package/src/generateEnumDetailResolvers.ts +0 -31
  37. package/src/generateEnumsGraphql.ts +0 -20
  38. package/src/generateGraphqlCodegen.test.ts +0 -18
  39. package/src/generateGraphqlCodegen.ts +0 -39
  40. package/src/generateGraphqlSchemaFiles.test.ts +0 -225
  41. package/src/generateGraphqlSchemaFiles.ts +0 -154
  42. package/src/graphqlUtils.ts +0 -134
  43. package/src/history.ts +0 -19
  44. package/src/index.ts +0 -19
  45. package/src/utils.ts +0 -41
  46. package/tsconfig.json +0 -22
  47. package/tsconfig.tsbuildinfo +0 -5731
@@ -1,3 +1,3 @@
1
- import { CodeGenFile, EnumRows } from "joist-codegen";
1
+ import { CodeGenFile, EnumMetadata } from "joist-codegen";
2
2
  /** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
3
- export declare function generateEnumDetailResolvers(enums: EnumRows): CodeGenFile;
3
+ export declare function generateEnumDetailResolvers(enums: EnumMetadata): CodeGenFile;
@@ -9,18 +9,21 @@ const pluralize_1 = __importDefault(require("pluralize"));
9
9
  const ts_poet_1 = require("ts-poet");
10
10
  /** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
11
11
  function generateEnumDetailResolvers(enums) {
12
- const enumNames = Object.keys(enums).map((name) => change_case_1.pascalCase(name));
13
- const resolvers = enumNames.map((name) => {
14
- const type = ts_poet_1.imp(`${pluralize_1.default(name)}@src/entities`);
15
- return ts_poet_1.code `
12
+ const enumNames = Object.values(enums).map(({ name }) => name);
13
+ const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {
14
+ const type = (0, ts_poet_1.imp)(`${(0, pluralize_1.default)(name)}@src/entities`);
15
+ return (0, ts_poet_1.code) `
16
16
  ${name}Detail: {
17
17
  code: (root) => root,
18
18
  name: (root) => ${type}.getByCode(root).name,
19
+ ${extraPrimitives
20
+ .map((p) => (0, change_case_1.camelCase)(p.columnName))
21
+ .map((fieldName) => (0, ts_poet_1.code) `${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}
19
22
  },
20
23
  `;
21
24
  });
22
- const Resolvers = ts_poet_1.imp("Resolvers@src/generated/graphql-types");
23
- const contents = ts_poet_1.code `
25
+ const Resolvers = (0, ts_poet_1.imp)("Resolvers@src/generated/graphql-types");
26
+ const contents = (0, ts_poet_1.code) `
24
27
  type EnumDetails = ${enumNames.map((n) => `"${n}Detail"`).join(" | ")};
25
28
 
26
29
  export const enumResolvers: Pick<${Resolvers}, EnumDetails> = {
@@ -1 +1 @@
1
- {"version":3,"file":"generateEnumDetailResolvers.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAyC;AAEzC,0DAAkC;AAClC,qCAAoC;AAEpC,iHAAiH;AACjH,SAAgB,2BAA2B,CAAC,KAAe;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,aAAG,CAAC,GAAG,mBAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,cAAI,CAAA;QACP,IAAI;;0BAEc,IAAI;;KAEzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,aAAG,CAAC,uCAAuC,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,cAAI,CAAA;yBACE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;uCAElC,SAAS;QACxC,SAAS;;GAEd,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9E,CAAC;AAxBD,kEAwBC"}
1
+ {"version":3,"file":"generateEnumDetailResolvers.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":";;;;;;AAAA,6CAAwC;AAExC,0DAAkC;AAClC,qCAAoC;AAEpC,iHAAiH;AACjH,SAAgB,2BAA2B,CAAC,KAAmB;IAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE/D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,OAAO,IAAA,cAAI,EAAA;QACP,IAAI;;0BAEc,IAAI;UACpB,eAAe;aACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,uBAAS,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC;aACnC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,cAAI,EAAA,GAAG,SAAS,eAAe,IAAI,oBAAoB,SAAS,GAAG,CAAC;;KAE7F,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,IAAA,aAAG,EAAC,uCAAuC,CAAC,CAAC;IAE/D,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;yBACE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;uCAElC,SAAS;QACxC,SAAS;;GAEd,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9E,CAAC;AA3BD,kEA2BC"}
@@ -1,3 +1,3 @@
1
- import { CodeGenFile, EnumRows } from "joist-codegen";
1
+ import { CodeGenFile, EnumMetadata } from "joist-codegen";
2
2
  /** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
3
- export declare function generateEnumsGraphql(enums: EnumRows): Promise<CodeGenFile>;
3
+ export declare function generateEnumsGraphql(enums: EnumMetadata): Promise<CodeGenFile>;
@@ -5,16 +5,21 @@ const change_case_1 = require("change-case");
5
5
  const graphqlUtils_1 = require("./graphqlUtils");
6
6
  /** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
7
7
  async function generateEnumsGraphql(enums) {
8
- const contents = Object.entries(enums)
9
- .map(([_name, rows]) => {
10
- const name = change_case_1.pascalCase(_name);
8
+ const contents = Object.values(enums)
9
+ .map(({ name, rows, extraPrimitives }) => {
11
10
  const enumDecl = `enum ${name} { ${rows.map((r) => r.code).join(" ")} }`;
12
- const detailDecl = `type ${name}Detail { code: ${name}! name: String! }`;
11
+ const detailDecl = `type ${name}Detail { code: ${name}! name: String! ${extraPrimitives
12
+ // Not supporting jsonb columns in GraphQL enums for now...would be doable if we
13
+ // add a jsonb type --> GQL type mapping, or maybe even created that GQL type ourselves
14
+ // from a superstruct definition of the type.
15
+ .filter((p) => !(0, graphqlUtils_1.isJsonbColumn)(p))
16
+ .map((p) => `${(0, change_case_1.camelCase)(p.columnName)}: ${(0, graphqlUtils_1.mapTypescriptTypeToGraphQLType)(p.fieldName, p.fieldType)}!`)
17
+ .join(" ")} }`;
13
18
  return [enumDecl, "", detailDecl, ""];
14
19
  })
15
20
  .flat()
16
21
  .join("\n");
17
- const formatted = await graphqlUtils_1.formatGraphQL(contents);
22
+ const formatted = await (0, graphqlUtils_1.formatGraphQL)(contents);
18
23
  return { name: "../../schema/enums.graphql", overwrite: true, contents: formatted };
19
24
  }
20
25
  exports.generateEnumsGraphql = generateEnumsGraphql;
@@ -1 +1 @@
1
- {"version":3,"file":"generateEnumsGraphql.js","sourceRoot":"","sources":["../src/generateEnumsGraphql.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,iDAA+C;AAE/C,4FAA4F;AACrF,KAAK,UAAU,oBAAoB,CAAC,KAAe;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SACnC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,wBAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzE,MAAM,UAAU,GAAG,QAAQ,IAAI,kBAAkB,IAAI,mBAAmB,CAAC;QACzE,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;SACD,IAAI,EAAE;SACN,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,MAAM,4BAAa,CAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACtF,CAAC;AAdD,oDAcC"}
1
+ {"version":3,"file":"generateEnumsGraphql.js","sourceRoot":"","sources":["../src/generateEnumsGraphql.ts"],"names":[],"mappings":";;;AAAA,6CAAwC;AAExC,iDAAwH;AAExH,4FAA4F;AACrF,KAAK,UAAU,oBAAoB,CAAC,KAAmB;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;SAClC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE;QACvC,MAAM,QAAQ,GAAG,QAAQ,IAAI,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACzE,MAAM,UAAU,GAAG,QAAQ,IAAI,kBAAkB,IAAI,mBAAmB,eAAe;YACrF,gFAAgF;YAChF,uFAAuF;YACvF,6CAA6C;aAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAA,4BAAa,EAAC,CAAC,CAAC,CAAC;aAChC,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,IAAA,uBAAS,EAAC,CAAC,CAAC,UAAU,CAAC,KAAK,IAAA,6CAA8B,EAC3D,CAAC,CAAC,SAAS,EACX,CAAC,CAAC,SAAqC,CACxC,GAAG,CACP;aACA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACjB,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC;SACD,IAAI,EAAE;SACN,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,MAAM,IAAA,4BAAa,EAAC,QAAQ,CAAC,CAAC;IAEhD,OAAO,EAAE,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACtF,CAAC;AAzBD,oDAyBC"}
@@ -1,3 +1,3 @@
1
- import { CodeGenFile, EntityDbMetadata, EnumRows } from "joist-codegen";
1
+ import { CodeGenFile, EntityDbMetadata, EnumMetadata } from "joist-codegen";
2
2
  /** Generates a `graphql-codegen-joist.js` with the auto-generated mapped type/enum value settings. */
3
- export declare function generateGraphqlCodegen(entities: EntityDbMetadata[], enums: EnumRows): CodeGenFile;
3
+ export declare function generateGraphqlCodegen(entities: EntityDbMetadata[], enums: EnumMetadata): CodeGenFile;
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateGraphqlCodegen = void 0;
4
- const change_case_1 = require("change-case");
5
4
  const ts_poet_1 = require("ts-poet");
6
5
  /** Generates a `graphql-codegen-joist.js` with the auto-generated mapped type/enum value settings. */
7
6
  function generateGraphqlCodegen(entities, enums) {
8
- const enumNames = Object.keys(enums).map((name) => change_case_1.pascalCase(name));
7
+ const enumNames = Object.values(enums).map(({ name }) => name);
9
8
  // Combine the entity mapped types and enum detail mapped types
10
9
  const mappedTypes = sortObject(Object.fromEntries([
11
- ...entities.map(({ entity }) => [entity.name, `src/entities#${entity.idType.value}`]),
10
+ ...entities.map(({ entity }) => [entity.name, `src/entities#${entity.idType.symbol}`]),
12
11
  ...enumNames.map((name) => [`${name}Detail`, `src/entities#${name}`]),
13
12
  ]));
14
- const contents = ts_poet_1.code `
13
+ const contents = (0, ts_poet_1.code) `
15
14
  const mappers = {
16
15
  ${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
17
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"generateGraphqlCodegen.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAEzC,qCAA+B;AAE/B,sGAAsG;AACtG,SAAgB,sBAAsB,CAAC,QAA4B,EAAE,KAAe;IAClF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,+DAA+D;IAC/D,MAAM,WAAW,GAAG,UAAU,CAC5B,MAAM,CAAC,WAAW,CAAC;QACjB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACrF,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;KACtE,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,cAAI,CAAA;;QAEf,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC;;;;QAIxE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,mBAAmB,IAAI,IAAI,CAAC;;;;GAIhE,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,gCAAgC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAxBD,wDAwBC;AAED,SAAS,UAAU,CAAmB,GAAM;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,GAAG,CAAC,GAAc,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC,EAAG,EAAe,CAAM,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"generateGraphqlCodegen.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":";;;AACA,qCAA+B;AAE/B,sGAAsG;AACtG,SAAgB,sBAAsB,CAAC,QAA4B,EAAE,KAAmB;IACtF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAE/D,+DAA+D;IAC/D,MAAM,WAAW,GAAG,UAAU,CAC5B,MAAM,CAAC,WAAW,CAAC;QACjB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,EAAE,gBAAgB,IAAI,EAAE,CAAC,CAAC;KACtE,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;;QAEf,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC;;;;QAIxE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,mBAAmB,IAAI,IAAI,CAAC;;;;GAIhE,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,gCAAgC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC/E,CAAC;AAxBD,wDAwBC;AAED,SAAS,UAAU,CAAmB,GAAM;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,GAAG,CAAC,GAAc,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAc,CAAM,CAAC;AAC5B,CAAC"}
@@ -5,7 +5,7 @@ describe("generateGraphqlCodegen", () => {
5
5
  it("creates a json file", () => {
6
6
  const entities = [];
7
7
  const enums = {};
8
- const file = generateGraphqlCodegen_1.generateGraphqlCodegen(entities, enums);
8
+ const file = (0, generateGraphqlCodegen_1.generateGraphqlCodegen)(entities, enums);
9
9
  expect(file.contents.toString()).toMatchInlineSnapshot(`
10
10
  "const mappers = {};
11
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"generateGraphqlCodegen.test.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.test.ts"],"names":[],"mappings":";;AACA,qEAAkE;AAElE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,+CAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;;KAOtD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"generateGraphqlCodegen.test.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.test.ts"],"names":[],"mappings":";;AACA,qEAAkE;AAElE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,+CAAsB,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;;KAOtD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -17,30 +17,54 @@ async function generateGraphqlSchemaFiles(fs, entities) {
17
17
  // Generate all of the "ideal" fields based solely on the domain model
18
18
  const fields = [
19
19
  ...createEntityFields(entities),
20
+ ...createSaveMutation(entities),
20
21
  ...createSaveEntityInputFields(entities),
21
22
  ...createSaveEntityResultFields(entities),
22
23
  ];
24
+ const unions = createPolymorphicUnions(entities);
23
25
  // Load the history and filter out only "new" / not-yet-added-to-.graphql fields
24
- const history = await history_1.loadHistory(fs);
25
- const newFields = fields.filter(({ objectName, fieldName }) => { var _a; return !((_a = history[objectName]) === null || _a === void 0 ? void 0 : _a.includes(fieldName)); });
26
- if (newFields.length === 0) {
26
+ const history = await (0, history_1.loadHistory)(fs);
27
+ const newEntries = [
28
+ ...fields.filter(({ objectName, fieldName }) => !history[objectName]?.includes(fieldName)),
29
+ ...unions.filter(({ objectName, types }) => {
30
+ const set = new Set(history[objectName] ?? []);
31
+ return !(set.size === types.length && types.every((type) => set.has(type)));
32
+ }),
33
+ ];
34
+ if (newEntries.length === 0) {
27
35
  return;
28
36
  }
29
37
  // Update the `.graphql` files with our new types/fields
30
- await Promise.all(Object.entries(joist_utils_1.groupBy(newFields, (f) => f.file)).map(([file, fields]) => {
31
- return graphqlUtils_1.upsertIntoFile(fs, file, fields);
38
+ await Promise.all(Object.entries((0, joist_utils_1.groupBy)(newEntries, (f) => f.file)).map(([file, fields]) => {
39
+ return (0, graphqlUtils_1.upsertIntoFile)(fs, file, fields);
32
40
  }));
33
41
  // Record the current batch of fields back to the history file
34
- newFields.forEach(({ objectName, fieldName }) => {
35
- const fields = (history[objectName] = history[objectName] || []);
36
- if (!fields.includes(fieldName)) {
37
- fields.push(fieldName);
42
+ newEntries.forEach((entry) => {
43
+ if (entry.objectType === "union") {
44
+ const { objectName, types } = entry;
45
+ history[objectName] = types;
46
+ }
47
+ else {
48
+ const { objectName, fieldName } = entry;
49
+ const fields = (history[objectName] = history[objectName] || []);
50
+ if (!fields.includes(fieldName)) {
51
+ fields.push(fieldName);
52
+ }
38
53
  }
39
54
  });
40
- await history_1.writeHistory(fs, history);
55
+ await (0, history_1.writeHistory)(fs, history);
41
56
  }
42
57
  exports.generateGraphqlSchemaFiles = generateGraphqlSchemaFiles;
43
58
  /** Make all of the fields for `type Author`, `type Book`, etc. */
59
+ function createPolymorphicUnions(entities) {
60
+ return entities.flatMap((e) => {
61
+ const file = fileName(e);
62
+ return e.polymorphics.map(({ fieldType, components }) => {
63
+ return { file, objectType: "union", objectName: fieldType, types: components.map((c) => c.otherEntity.name) };
64
+ });
65
+ });
66
+ }
67
+ /** Make all of the fields for `type Author`, `type Book`, etc. */
44
68
  function createEntityFields(entities) {
45
69
  return entities.flatMap((e) => {
46
70
  const file = fileName(e);
@@ -48,12 +72,19 @@ function createEntityFields(entities) {
48
72
  const objectName = e.entity.name;
49
73
  const common = { file, objectType, objectName };
50
74
  const id = { ...common, fieldName: "id", fieldType: "ID!" };
51
- const primitives = e.primitives.map(({ fieldName, fieldType: tsType, notNull }) => {
52
- const fieldType = `${mapFieldTypeToGraphQLType(tsType)}${maybeRequired(notNull)}`;
75
+ const primitives = e.primitives
76
+ // jsonb columns have to be hand-mapped for now
77
+ .filter((p) => !(0, graphqlUtils_1.isJsonbColumn)(p))
78
+ .map(({ fieldName, fieldType: tsType, notNull }) => {
79
+ const fieldType = `${(0, graphqlUtils_1.mapTypescriptTypeToGraphQLType)(fieldName, tsType)}${maybeRequired(notNull)}`;
80
+ return { ...common, fieldName, fieldType };
81
+ });
82
+ const enums = e.enums.map(({ fieldName, enumType, notNull, isArray }) => {
83
+ const fieldType = isArray ? `[${enumType.symbol}!]!` : `${enumType.symbol}${maybeRequired(notNull)}`;
53
84
  return { ...common, fieldName, fieldType };
54
85
  });
55
- const enums = e.enums.map(({ fieldName, enumType, notNull }) => {
56
- const fieldType = `${enumType.value}${maybeRequired(notNull)}`;
86
+ const pgEnums = e.pgEnums.map(({ fieldName, enumType, notNull }) => {
87
+ const fieldType = `${enumType.symbol}${maybeRequired(notNull)}`;
57
88
  return { ...common, fieldName, fieldType };
58
89
  });
59
90
  const m2os = e.manyToOnes.map(({ fieldName, otherEntity, notNull }) => {
@@ -71,7 +102,27 @@ function createEntityFields(entities) {
71
102
  const o2os = e.oneToOnes.map(({ fieldName, otherEntity }) => {
72
103
  return { ...common, fieldName, fieldType: otherEntity.name };
73
104
  });
74
- return [id, ...primitives, ...enums, ...m2os, ...o2ms, ...m2ms, ...o2os];
105
+ const polys = e.polymorphics.map(({ fieldName, fieldType }) => {
106
+ return { ...common, fieldName, fieldType };
107
+ });
108
+ return [id, ...primitives, ...enums, ...pgEnums, ...m2os, ...o2ms, ...m2ms, ...o2os, ...polys];
109
+ });
110
+ }
111
+ /** Makes the `Mutations.save${entity}` placeholder. */
112
+ function createSaveMutation(entities) {
113
+ return entities.map((e) => {
114
+ const file = fileName(e);
115
+ const inputType = `Save${e.entity.name}Input`;
116
+ const outputType = `Save${e.entity.name}Result`;
117
+ return {
118
+ file,
119
+ objectType: "output",
120
+ objectName: "Mutation",
121
+ fieldName: `save${e.entity.name}`,
122
+ fieldType: `${outputType}!`,
123
+ argsString: `input: ${inputType}!`,
124
+ extends: true,
125
+ };
75
126
  });
76
127
  }
77
128
  /** Make all of the fields for `type SaveAuthorInput`, `type SaveBookBook`, etc. */
@@ -82,17 +133,26 @@ function createSaveEntityInputFields(entities) {
82
133
  const objectName = `Save${e.entity.name}Input`;
83
134
  const common = { file, objectType, objectName };
84
135
  const id = { ...common, fieldName: "id", fieldType: "ID" };
85
- const primitives = e.primitives.map(({ fieldName, fieldType: tsType }) => {
86
- const fieldType = `${mapFieldTypeToGraphQLType(tsType)}`;
136
+ const primitives = e.primitives
137
+ .filter((f) => f.derived === false)
138
+ .filter((p) => !(0, graphqlUtils_1.isJsonbColumn)(p))
139
+ .map(({ fieldName, fieldType: tsType }) => {
140
+ const fieldType = `${(0, graphqlUtils_1.mapTypescriptTypeToGraphQLType)(fieldName, tsType)}`;
87
141
  return { ...common, fieldName, fieldType };
88
142
  });
89
- const enums = e.enums.map(({ fieldName, enumType }) => {
90
- return { ...common, fieldName, fieldType: enumType.value };
143
+ const enums = e.enums.map(({ fieldName, enumType, isArray }) => {
144
+ return { ...common, fieldName, fieldType: isArray ? `[${enumType.symbol}!]` : enumType.symbol };
145
+ });
146
+ const pgEnums = e.pgEnums.map(({ fieldName, enumType }) => {
147
+ return { ...common, fieldName, fieldType: enumType.symbol };
91
148
  });
92
149
  const m2os = e.manyToOnes.map(({ fieldName }) => {
93
150
  return { ...common, fieldName: `${fieldName}Id`, fieldType: "ID" };
94
151
  });
95
- return [id, ...primitives, ...enums, ...m2os];
152
+ const polys = e.polymorphics.map(({ fieldName }) => {
153
+ return { ...common, fieldName: `${fieldName}Id`, fieldType: "ID" };
154
+ });
155
+ return [id, ...primitives, ...enums, ...pgEnums, ...m2os, ...polys];
96
156
  });
97
157
  }
98
158
  /** Makes the fields for `type SaveAuthorResult`, `type SaveBookResult`, etc. */
@@ -102,28 +162,16 @@ function createSaveEntityResultFields(entities) {
102
162
  const { entity: { name }, } = e;
103
163
  const objectType = "output";
104
164
  const objectName = `Save${name}Result`;
105
- const fieldName = change_case_1.camelCase(name);
165
+ const fieldName = (0, change_case_1.camelCase)(name);
106
166
  const entity = { file, objectType, objectName, fieldName, fieldType: `${name}!` };
107
167
  return [entity];
108
168
  });
109
169
  }
110
- function mapFieldTypeToGraphQLType(type) {
111
- switch (type) {
112
- case "string":
113
- return "String";
114
- case "boolean":
115
- return "Boolean";
116
- case "number":
117
- return "Int";
118
- default:
119
- return type;
120
- }
121
- }
122
170
  function maybeRequired(notNull) {
123
171
  return notNull ? "!" : "";
124
172
  }
125
173
  /** I.e. `Book` --> `books.graphql`. */
126
174
  function fileName(e) {
127
- return `${change_case_1.camelCase(e.entity.name)}.graphql`;
175
+ return `${(0, change_case_1.camelCase)(e.entity.name)}.graphql`;
128
176
  }
129
177
  //# sourceMappingURL=generateGraphqlSchemaFiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateGraphqlSchemaFiles.js","sourceRoot":"","sources":["../src/generateGraphqlSchemaFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateGraphqlSchemaFiles.js","sourceRoot":"","sources":["../src/generateGraphqlSchemaFiles.ts"],"names":[],"mappings":"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"}