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.
- package/build/_virtual/_rolldown/runtime.cjs +23 -0
- package/build/generateEnumDetailResolvers.cjs +40 -0
- package/build/generateEnumDetailResolvers.cjs.map +1 -0
- package/build/generateEnumDetailResolvers.d.cts +8 -0
- package/build/generateEnumDetailResolvers.d.cts.map +1 -0
- package/build/generateEnumDetailResolvers.d.mts +8 -0
- package/build/generateEnumDetailResolvers.d.mts.map +1 -0
- package/build/generateEnumDetailResolvers.js +23 -23
- package/build/generateEnumDetailResolvers.js.map +1 -1
- package/build/generateEnumsGraphql.cjs +29 -0
- package/build/generateEnumsGraphql.cjs.map +1 -0
- package/build/generateEnumsGraphql.d.cts +8 -0
- package/build/generateEnumsGraphql.d.cts.map +1 -0
- package/build/generateEnumsGraphql.d.mts +8 -0
- package/build/generateEnumsGraphql.d.mts.map +1 -0
- package/build/generateEnumsGraphql.js +24 -27
- package/build/generateEnumsGraphql.js.map +1 -1
- package/build/generateGraphqlCodegen.cjs +54 -0
- package/build/generateGraphqlCodegen.cjs.map +1 -0
- package/build/generateGraphqlCodegen.d.cts +8 -0
- package/build/generateGraphqlCodegen.d.cts.map +1 -0
- package/build/generateGraphqlCodegen.d.mts +8 -0
- package/build/generateGraphqlCodegen.d.mts.map +1 -0
- package/build/generateGraphqlCodegen.js +28 -30
- package/build/generateGraphqlCodegen.js.map +1 -1
- package/build/generateGraphqlSchemaFiles.cjs +491 -0
- package/build/generateGraphqlSchemaFiles.cjs.map +1 -0
- package/build/{generateGraphqlSchemaFiles.d.ts → generateGraphqlSchemaFiles.d.cts} +6 -2
- package/build/generateGraphqlSchemaFiles.d.cts.map +1 -0
- package/build/generateGraphqlSchemaFiles.d.mts +15 -0
- package/build/generateGraphqlSchemaFiles.d.mts.map +1 -0
- package/build/generateGraphqlSchemaFiles.js +444 -286
- package/build/generateGraphqlSchemaFiles.js.map +1 -1
- package/build/generateObjectResolvers.cjs +70 -0
- package/build/generateObjectResolvers.cjs.map +1 -0
- package/build/{generateObjectResolvers.d.ts → generateObjectResolvers.d.cts} +5 -1
- package/build/generateObjectResolvers.d.cts.map +1 -0
- package/build/generateObjectResolvers.d.mts +17 -0
- package/build/generateObjectResolvers.d.mts.map +1 -0
- package/build/generateObjectResolvers.js +48 -38
- package/build/generateObjectResolvers.js.map +1 -1
- package/build/generateQueryPageResolvers.cjs +51 -0
- package/build/generateQueryPageResolvers.cjs.map +1 -0
- package/build/generateQueryPageResolvers.d.cts +8 -0
- package/build/generateQueryPageResolvers.d.cts.map +1 -0
- package/build/generateQueryPageResolvers.d.mts +8 -0
- package/build/generateQueryPageResolvers.d.mts.map +1 -0
- package/build/generateQueryPageResolvers.js +31 -35
- package/build/generateQueryPageResolvers.js.map +1 -1
- package/build/generateQueryResolvers.cjs +55 -0
- package/build/generateQueryResolvers.cjs.map +1 -0
- package/build/generateQueryResolvers.d.cts +10 -0
- package/build/generateQueryResolvers.d.cts.map +1 -0
- package/build/generateQueryResolvers.d.mts +10 -0
- package/build/generateQueryResolvers.d.mts.map +1 -0
- package/build/generateQueryResolvers.js +38 -36
- package/build/generateQueryResolvers.js.map +1 -1
- package/build/generateResolverUtils.cjs +36 -0
- package/build/generateResolverUtils.cjs.map +1 -0
- package/build/generateResolverUtils.d.cts +8 -0
- package/build/generateResolverUtils.d.cts.map +1 -0
- package/build/generateResolverUtils.d.mts +8 -0
- package/build/generateResolverUtils.d.mts.map +1 -0
- package/build/generateResolverUtils.js +25 -26
- package/build/generateResolverUtils.js.map +1 -1
- package/build/generateSaveResolvers.cjs +57 -0
- package/build/generateSaveResolvers.cjs.map +1 -0
- package/build/{generateSaveResolvers.d.ts → generateSaveResolvers.d.cts} +5 -1
- package/build/generateSaveResolvers.d.cts.map +1 -0
- package/build/generateSaveResolvers.d.mts +17 -0
- package/build/generateSaveResolvers.d.mts.map +1 -0
- package/build/generateSaveResolvers.js +39 -40
- package/build/generateSaveResolvers.js.map +1 -1
- package/build/graphqlUtils.cjs +160 -0
- package/build/graphqlUtils.cjs.map +1 -0
- package/build/graphqlUtils.d.cts +31 -0
- package/build/graphqlUtils.d.cts.map +1 -0
- package/build/graphqlUtils.d.mts +31 -0
- package/build/graphqlUtils.d.mts.map +1 -0
- package/build/graphqlUtils.js +120 -218
- package/build/graphqlUtils.js.map +1 -1
- package/build/history.cjs +25 -0
- package/build/history.cjs.map +1 -0
- package/build/history.d.cts +9 -0
- package/build/history.d.cts.map +1 -0
- package/build/history.d.mts +9 -0
- package/build/history.d.mts.map +1 -0
- package/build/history.js +17 -14
- package/build/history.js.map +1 -1
- package/build/index.cjs +57 -0
- package/build/index.cjs.map +1 -0
- package/build/index.d.cts +7 -0
- package/build/index.d.cts.map +1 -0
- package/build/index.d.mts +7 -0
- package/build/index.d.mts.map +1 -0
- package/build/index.js +48 -54
- package/build/index.js.map +1 -1
- package/build/testUtils.cjs +181 -0
- package/build/testUtils.cjs.map +1 -0
- package/build/testUtils.d.cts +20 -0
- package/build/testUtils.d.cts.map +1 -0
- package/build/testUtils.d.mts +20 -0
- package/build/testUtils.d.mts.map +1 -0
- package/build/testUtils.js +152 -158
- package/build/testUtils.js.map +1 -1
- package/build/utils.cjs +51 -0
- package/build/utils.cjs.map +1 -0
- package/build/utils.d.cts +16 -0
- package/build/utils.d.cts.map +1 -0
- package/build/utils.d.mts +16 -0
- package/build/utils.d.mts.map +1 -0
- package/build/utils.js +37 -49
- package/build/utils.js.map +1 -1
- package/package.json +28 -5
- package/build/generateEnumDetailResolvers.d.ts +0 -4
- package/build/generateEnumsGraphql.d.ts +0 -4
- package/build/generateGraphqlCodegen.d.ts +0 -4
- package/build/generateQueryPageResolvers.d.ts +0 -4
- package/build/generateQueryResolvers.d.ts +0 -6
- package/build/generateResolverUtils.d.ts +0 -4
- package/build/graphqlUtils.d.ts +0 -27
- package/build/history.d.ts +0 -5
- package/build/index.d.ts +0 -3
- package/build/testUtils.d.ts +0 -24
- package/build/utils.d.ts +0 -12
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
|
|
3
|
+
const require_utils = require("./utils.cjs");
|
|
4
|
+
let change_case = require("change-case");
|
|
5
|
+
require("joist-codegen");
|
|
6
|
+
let pluralize = require("pluralize");
|
|
7
|
+
pluralize = require_runtime.__toESM(pluralize, 1);
|
|
8
|
+
let ts_poet = require("ts-poet");
|
|
9
|
+
//#region src/generateEnumDetailResolvers.ts
|
|
10
|
+
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
11
|
+
function generateEnumDetailResolvers(config, enums) {
|
|
12
|
+
const entitiesPath = require_utils.getEntitiesImportPath(config);
|
|
13
|
+
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
14
|
+
const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {
|
|
15
|
+
const type = (0, ts_poet.imp)(`${(0, pluralize.default)(name)}@${entitiesPath}`);
|
|
16
|
+
return ts_poet.code`
|
|
17
|
+
${name}Detail: {
|
|
18
|
+
code: (root) => root,
|
|
19
|
+
name: (root) => ${type}.getByCode(root).name,
|
|
20
|
+
${extraPrimitives.map((p) => (0, change_case.camelCase)(p.columnName)).map((fieldName) => ts_poet.code`${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}
|
|
21
|
+
},
|
|
22
|
+
`;
|
|
23
|
+
});
|
|
24
|
+
const Resolvers = (0, ts_poet.imp)("t:Resolvers@src/generated/graphql-types.ts");
|
|
25
|
+
return {
|
|
26
|
+
name: "../resolvers/enumResolvers.ts",
|
|
27
|
+
overwrite: true,
|
|
28
|
+
contents: ts_poet.code`
|
|
29
|
+
type EnumDetails = ${enumNames.length === 0 ? "never" : enumNames.map((n) => `"${n}Detail"`).join(" | ")};
|
|
30
|
+
|
|
31
|
+
export const enumResolvers: Pick<${Resolvers}, EnumDetails> = {
|
|
32
|
+
${resolvers}
|
|
33
|
+
};
|
|
34
|
+
`
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.generateEnumDetailResolvers = generateEnumDetailResolvers;
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=generateEnumDetailResolvers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.cjs","names":["getEntitiesImportPath","imp","camelCase","code"],"sources":["../src/generateEnumDetailResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type EnumMetadata } from \"joist-codegen\";\nimport pluralize from \"pluralize\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\n/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's \"enum detail\" types. */\nexport function generateEnumDetailResolvers(config: Config, enums: EnumMetadata): CodegenFile {\n const entitiesPath = getEntitiesImportPath(config);\n const enumNames = Object.values(enums).map(({ name }) => name);\n\n const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {\n const type = imp(`${pluralize(name)}@${entitiesPath}`);\n return code`\n ${name}Detail: {\n code: (root) => root,\n name: (root) => ${type}.getByCode(root).name,\n ${extraPrimitives\n .map((p) => camelCase(p.columnName))\n .map((fieldName) => code`${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}\n },\n `;\n });\n\n const Resolvers = imp(\"t:Resolvers@src/generated/graphql-types.ts\");\n\n const contents = code`\n type EnumDetails = ${enumNames.length === 0 ? \"never\" : enumNames.map((n) => `\"${n}Detail\"`).join(\" | \")};\n\n export const enumResolvers: Pick<${Resolvers}, EnumDetails> = {\n ${resolvers}\n };\n `;\n\n return { name: \"../resolvers/enumResolvers.ts\", overwrite: true, contents };\n}\n"],"mappings":";;;;;;;;;;AAQA,SAAgB,4BAA4B,QAAgB,OAAkC;CAC5F,MAAM,eAAeA,cAAAA,sBAAsB,MAAM;CACjD,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI;CAE7D,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,sBAAsB;EACxE,MAAM,QAAA,GAAOC,QAAAA,IAAAA,CAAI,IAAA,GAAG,UAAA,QAAA,CAAU,IAAI,EAAE,GAAG,cAAc;EACrD,OAAO,QAAA,IAAI;QACP,KAAK;;0BAEa,KAAK;UACrB,gBACC,KAAK,OAAA,GAAMC,YAAAA,UAAAA,CAAU,EAAE,UAAU,CAAC,CAAC,CACnC,KAAK,cAAc,QAAA,IAAI,GAAG,UAAU,cAAc,KAAK,mBAAmB,UAAU,EAAE,EAAE;;;CAGjG,CAAC;CAED,MAAM,aAAA,GAAYD,QAAAA,IAAAA,CAAI,4CAA4C;CAUlE,OAAO;EAAE,MAAM;EAAiC,WAAW;EAAM,UARhDE,QAAAA,IAAI;yBACE,UAAU,WAAW,IAAI,UAAU,UAAU,KAAK,MAAM,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,EAAE;;uCAEtE,UAAU;QACzC,UAAU;;;CAI0D;AAC5E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config, EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateEnumDetailResolvers.d.ts
|
|
4
|
+
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
5
|
+
declare function generateEnumDetailResolvers(config: Config, enums: EnumMetadata): CodegenFile;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateEnumDetailResolvers };
|
|
8
|
+
//# sourceMappingURL=generateEnumDetailResolvers.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.d.cts","names":[],"sources":["../src/generateEnumDetailResolvers.ts"],"mappings":";;;;iBAQgB,4BAA4B,QAAQ,QAAQ,OAAO,eAAe"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config, EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateEnumDetailResolvers.d.ts
|
|
4
|
+
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
5
|
+
declare function generateEnumDetailResolvers(config: Config, enums: EnumMetadata): CodegenFile;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateEnumDetailResolvers };
|
|
8
|
+
//# sourceMappingURL=generateEnumDetailResolvers.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.d.mts","names":[],"sources":["../src/generateEnumDetailResolvers.ts"],"mappings":";;;;iBAQgB,4BAA4B,QAAQ,QAAQ,OAAO,eAAe"}
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const change_case_1 = require("change-case");
|
|
8
|
-
const pluralize_1 = __importDefault(require("pluralize"));
|
|
9
|
-
const ts_poet_1 = require("ts-poet");
|
|
10
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { getEntitiesImportPath } from "./utils.js";
|
|
2
|
+
import { camelCase } from "change-case";
|
|
3
|
+
import "joist-codegen";
|
|
4
|
+
import pluralize from "pluralize";
|
|
5
|
+
import { code, imp } from "ts-poet";
|
|
6
|
+
//#region src/generateEnumDetailResolvers.ts
|
|
11
7
|
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
12
8
|
function generateEnumDetailResolvers(config, enums) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
const entitiesPath = getEntitiesImportPath(config);
|
|
10
|
+
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
11
|
+
const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {
|
|
12
|
+
const type = imp(`${pluralize(name)}@${entitiesPath}`);
|
|
13
|
+
return code`
|
|
18
14
|
${name}Detail: {
|
|
19
15
|
code: (root) => root,
|
|
20
16
|
name: (root) => ${type}.getByCode(root).name,
|
|
21
|
-
${extraPrimitives
|
|
22
|
-
.map((p) => (0, change_case_1.camelCase)(p.columnName))
|
|
23
|
-
.map((fieldName) => (0, ts_poet_1.code) `${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}
|
|
17
|
+
${extraPrimitives.map((p) => camelCase(p.columnName)).map((fieldName) => code`${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}
|
|
24
18
|
},
|
|
25
19
|
`;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
});
|
|
21
|
+
const Resolvers = imp("t:Resolvers@src/generated/graphql-types.ts");
|
|
22
|
+
return {
|
|
23
|
+
name: "../resolvers/enumResolvers.ts",
|
|
24
|
+
overwrite: true,
|
|
25
|
+
contents: code`
|
|
29
26
|
type EnumDetails = ${enumNames.length === 0 ? "never" : enumNames.map((n) => `"${n}Detail"`).join(" | ")};
|
|
30
27
|
|
|
31
28
|
export const enumResolvers: Pick<${Resolvers}, EnumDetails> = {
|
|
32
29
|
${resolvers}
|
|
33
30
|
};
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
`
|
|
32
|
+
};
|
|
36
33
|
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { generateEnumDetailResolvers };
|
|
36
|
+
|
|
37
37
|
//# sourceMappingURL=generateEnumDetailResolvers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateEnumDetailResolvers.js","
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.js","names":[],"sources":["../src/generateEnumDetailResolvers.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type Config, type EnumMetadata } from \"joist-codegen\";\nimport pluralize from \"pluralize\";\nimport { type CodegenFile, code, imp } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\n/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's \"enum detail\" types. */\nexport function generateEnumDetailResolvers(config: Config, enums: EnumMetadata): CodegenFile {\n const entitiesPath = getEntitiesImportPath(config);\n const enumNames = Object.values(enums).map(({ name }) => name);\n\n const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {\n const type = imp(`${pluralize(name)}@${entitiesPath}`);\n return code`\n ${name}Detail: {\n code: (root) => root,\n name: (root) => ${type}.getByCode(root).name,\n ${extraPrimitives\n .map((p) => camelCase(p.columnName))\n .map((fieldName) => code`${fieldName}: (root) => ${type}.getByCode(root).${fieldName},`)}\n },\n `;\n });\n\n const Resolvers = imp(\"t:Resolvers@src/generated/graphql-types.ts\");\n\n const contents = code`\n type EnumDetails = ${enumNames.length === 0 ? \"never\" : enumNames.map((n) => `\"${n}Detail\"`).join(\" | \")};\n\n export const enumResolvers: Pick<${Resolvers}, EnumDetails> = {\n ${resolvers}\n };\n `;\n\n return { name: \"../resolvers/enumResolvers.ts\", overwrite: true, contents };\n}\n"],"mappings":";;;;;;;AAQA,SAAgB,4BAA4B,QAAgB,OAAkC;CAC5F,MAAM,eAAe,sBAAsB,MAAM;CACjD,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI;CAE7D,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,sBAAsB;EACxE,MAAM,OAAO,IAAI,GAAG,UAAU,IAAI,EAAE,GAAG,cAAc;EACrD,OAAO,IAAI;QACP,KAAK;;0BAEa,KAAK;UACrB,gBACC,KAAK,MAAM,UAAU,EAAE,UAAU,CAAC,CAAC,CACnC,KAAK,cAAc,IAAI,GAAG,UAAU,cAAc,KAAK,mBAAmB,UAAU,EAAE,EAAE;;;CAGjG,CAAC;CAED,MAAM,YAAY,IAAI,4CAA4C;CAUlE,OAAO;EAAE,MAAM;EAAiC,WAAW;EAAM,UARhD,IAAI;yBACE,UAAU,WAAW,IAAI,UAAU,UAAU,KAAK,MAAM,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,EAAE;;uCAEtE,UAAU;QACzC,UAAU;;;CAI0D;AAC5E"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_graphqlUtils = require("./graphqlUtils.cjs");
|
|
3
|
+
let change_case = require("change-case");
|
|
4
|
+
require("joist-codegen");
|
|
5
|
+
require("ts-poet");
|
|
6
|
+
//#region src/generateEnumsGraphql.ts
|
|
7
|
+
/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
|
|
8
|
+
async function generateEnumsGraphql(enums) {
|
|
9
|
+
const contents = Object.values(enums).map(({ name, rows, extraPrimitives }) => {
|
|
10
|
+
return [
|
|
11
|
+
`enum ${name} { ${rows.map((r) => r.code).join(" ")} }`,
|
|
12
|
+
"",
|
|
13
|
+
`type ${name}Detail { code: ${name}! name: String! ${extraPrimitives.filter((p) => !require_graphqlUtils.isJsonbColumn(p)).map((p) => `${(0, change_case.camelCase)(p.columnName)}: ${require_graphqlUtils.mapTypescriptTypeToGraphQLType(p.fieldName, p.fieldType)}!`).join(" ")} }`,
|
|
14
|
+
""
|
|
15
|
+
];
|
|
16
|
+
}).flat();
|
|
17
|
+
const allEnumDetails = Object.values(enums).length > 0 ? `type AllEnumDetails {
|
|
18
|
+
${Object.values(enums).map(({ name }) => `${(0, change_case.camelCase)(name)}: [${name}Detail!]!`).join("\n")}
|
|
19
|
+
}` : "";
|
|
20
|
+
return {
|
|
21
|
+
name: "../../schema/enums.graphql",
|
|
22
|
+
overwrite: true,
|
|
23
|
+
contents: await require_graphqlUtils.formatGraphQL([...contents, allEnumDetails].join("\n"))
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
exports.generateEnumsGraphql = generateEnumsGraphql;
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=generateEnumsGraphql.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumsGraphql.cjs","names":["isJsonbColumn","camelCase","mapTypescriptTypeToGraphQLType","formatGraphQL"],"sources":["../src/generateEnumsGraphql.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type EnumMetadata } from \"joist-codegen\";\nimport { type CodegenFile } from \"ts-poet\";\n\nimport {\n type SupportedTypescriptTypes,\n formatGraphQL,\n isJsonbColumn,\n mapTypescriptTypeToGraphQLType,\n} from \"./graphqlUtils.ts\";\n\n/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */\nexport async function generateEnumsGraphql(enums: EnumMetadata): Promise<CodegenFile> {\n const contents = Object.values(enums)\n .map(({ name, rows, extraPrimitives }) => {\n const enumDecl = `enum ${name} { ${rows.map((r) => r.code).join(\" \")} }`;\n const detailDecl = `type ${name}Detail { code: ${name}! name: String! ${extraPrimitives\n // Not supporting jsonb columns in GraphQL enums for now...would be doable if we\n // add a jsonb type --> GQL type mapping, or maybe even created that GQL type ourselves\n // from a superstruct definition of the type.\n .filter((p) => !isJsonbColumn(p))\n .map(\n (p) =>\n `${camelCase(p.columnName)}: ${mapTypescriptTypeToGraphQLType(\n p.fieldName,\n p.fieldType as SupportedTypescriptTypes,\n )}!`,\n )\n .join(\" \")} }`;\n return [enumDecl, \"\", detailDecl, \"\"];\n })\n .flat();\n\n const allEnumDetails =\n Object.values(enums).length > 0\n ? `type AllEnumDetails {\n ${Object.values(enums)\n .map(({ name }) => `${camelCase(name)}: [${name}Detail!]!`)\n .join(\"\\n\")} \n }`\n : \"\";\n\n const formatted = await formatGraphQL([...contents, allEnumDetails].join(\"\\n\"));\n\n return { name: \"../../schema/enums.graphql\", overwrite: true, contents: formatted };\n}\n"],"mappings":";;;;;;;AAYA,eAAsB,qBAAqB,OAA2C;CACpF,MAAM,WAAW,OAAO,OAAO,KAAK,CAAC,CAClC,KAAK,EAAE,MAAM,MAAM,sBAAsB;EAexC,OAAO;GAAC,QAdiB,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE;GAcnD;GAAI,QAbK,KAAK,iBAAiB,KAAK,kBAAkB,gBAIrE,QAAQ,MAAM,CAACA,qBAAAA,cAAc,CAAC,CAAC,CAAC,CAChC,KACE,MACC,IAAA,GAAGC,YAAAA,UAAAA,CAAU,EAAE,UAAU,EAAE,IAAIC,qBAAAA,+BAC7B,EAAE,WACF,EAAE,SACJ,EAAE,EACN,CAAC,CACA,KAAK,GAAG,EAAE;GACqB;EAAE;CACtC,CAAC,CAAC,CACD,KAAK;CAER,MAAM,iBACJ,OAAO,OAAO,KAAK,CAAC,CAAC,SAAS,IAC1B;QACA,OAAO,OAAO,KAAK,CAAC,CACnB,KAAK,EAAE,WAAW,IAAA,GAAGD,YAAAA,UAAAA,CAAU,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAC1D,KAAK,IAAI,EAAE;SAEZ;CAIN,OAAO;EAAE,MAAM;EAA8B,WAAW;EAAM,UAAU,MAFhDE,qBAAAA,cAAc,CAAC,GAAG,UAAU,cAAc,CAAC,CAAC,KAAK,IAAI,CAAC;CAEI;AACpF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateEnumsGraphql.d.ts
|
|
4
|
+
/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
|
|
5
|
+
declare function generateEnumsGraphql(enums: EnumMetadata): Promise<CodegenFile>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateEnumsGraphql };
|
|
8
|
+
//# sourceMappingURL=generateEnumsGraphql.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumsGraphql.d.cts","names":[],"sources":["../src/generateEnumsGraphql.ts"],"mappings":";;;;iBAYsB,qBAAqB,OAAO,eAAe,QAAQ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateEnumsGraphql.d.ts
|
|
4
|
+
/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
|
|
5
|
+
declare function generateEnumsGraphql(enums: EnumMetadata): Promise<CodegenFile>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateEnumsGraphql };
|
|
8
|
+
//# sourceMappingURL=generateEnumsGraphql.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateEnumsGraphql.d.mts","names":[],"sources":["../src/generateEnumsGraphql.ts"],"mappings":";;;;iBAYsB,qBAAqB,OAAO,eAAe,QAAQ"}
|
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { formatGraphQL, isJsonbColumn, mapTypescriptTypeToGraphQLType } from "./graphqlUtils.js";
|
|
2
|
+
import { camelCase } from "change-case";
|
|
3
|
+
import "joist-codegen";
|
|
4
|
+
import "ts-poet";
|
|
5
|
+
//#region src/generateEnumsGraphql.ts
|
|
6
6
|
/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */
|
|
7
7
|
async function generateEnumsGraphql(enums) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
.map(({ name }) => `${(0, change_case_1.camelCase)(name)}: [${name}Detail!]!`)
|
|
25
|
-
.join("\n")}
|
|
26
|
-
}`
|
|
27
|
-
: "";
|
|
28
|
-
const formatted = await (0, graphqlUtils_1.formatGraphQL)([...contents, allEnumDetails].join("\n"));
|
|
29
|
-
return { name: "../../schema/enums.graphql", overwrite: true, contents: formatted };
|
|
8
|
+
const contents = Object.values(enums).map(({ name, rows, extraPrimitives }) => {
|
|
9
|
+
return [
|
|
10
|
+
`enum ${name} { ${rows.map((r) => r.code).join(" ")} }`,
|
|
11
|
+
"",
|
|
12
|
+
`type ${name}Detail { code: ${name}! name: String! ${extraPrimitives.filter((p) => !isJsonbColumn(p)).map((p) => `${camelCase(p.columnName)}: ${mapTypescriptTypeToGraphQLType(p.fieldName, p.fieldType)}!`).join(" ")} }`,
|
|
13
|
+
""
|
|
14
|
+
];
|
|
15
|
+
}).flat();
|
|
16
|
+
const allEnumDetails = Object.values(enums).length > 0 ? `type AllEnumDetails {
|
|
17
|
+
${Object.values(enums).map(({ name }) => `${camelCase(name)}: [${name}Detail!]!`).join("\n")}
|
|
18
|
+
}` : "";
|
|
19
|
+
return {
|
|
20
|
+
name: "../../schema/enums.graphql",
|
|
21
|
+
overwrite: true,
|
|
22
|
+
contents: await formatGraphQL([...contents, allEnumDetails].join("\n"))
|
|
23
|
+
};
|
|
30
24
|
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { generateEnumsGraphql };
|
|
27
|
+
|
|
31
28
|
//# sourceMappingURL=generateEnumsGraphql.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateEnumsGraphql.js","
|
|
1
|
+
{"version":3,"file":"generateEnumsGraphql.js","names":[],"sources":["../src/generateEnumsGraphql.ts"],"sourcesContent":["import { camelCase } from \"change-case\";\nimport { type EnumMetadata } from \"joist-codegen\";\nimport { type CodegenFile } from \"ts-poet\";\n\nimport {\n type SupportedTypescriptTypes,\n formatGraphQL,\n isJsonbColumn,\n mapTypescriptTypeToGraphQLType,\n} from \"./graphqlUtils.ts\";\n\n/** Generates a `schema/enums.graphql` with GQL enums that match all of our domain enums. */\nexport async function generateEnumsGraphql(enums: EnumMetadata): Promise<CodegenFile> {\n const contents = Object.values(enums)\n .map(({ name, rows, extraPrimitives }) => {\n const enumDecl = `enum ${name} { ${rows.map((r) => r.code).join(\" \")} }`;\n const detailDecl = `type ${name}Detail { code: ${name}! name: String! ${extraPrimitives\n // Not supporting jsonb columns in GraphQL enums for now...would be doable if we\n // add a jsonb type --> GQL type mapping, or maybe even created that GQL type ourselves\n // from a superstruct definition of the type.\n .filter((p) => !isJsonbColumn(p))\n .map(\n (p) =>\n `${camelCase(p.columnName)}: ${mapTypescriptTypeToGraphQLType(\n p.fieldName,\n p.fieldType as SupportedTypescriptTypes,\n )}!`,\n )\n .join(\" \")} }`;\n return [enumDecl, \"\", detailDecl, \"\"];\n })\n .flat();\n\n const allEnumDetails =\n Object.values(enums).length > 0\n ? `type AllEnumDetails {\n ${Object.values(enums)\n .map(({ name }) => `${camelCase(name)}: [${name}Detail!]!`)\n .join(\"\\n\")} \n }`\n : \"\";\n\n const formatted = await formatGraphQL([...contents, allEnumDetails].join(\"\\n\"));\n\n return { name: \"../../schema/enums.graphql\", overwrite: true, contents: formatted };\n}\n"],"mappings":";;;;;;AAYA,eAAsB,qBAAqB,OAA2C;CACpF,MAAM,WAAW,OAAO,OAAO,KAAK,CAAC,CAClC,KAAK,EAAE,MAAM,MAAM,sBAAsB;EAexC,OAAO;GAAC,QAdiB,KAAK,KAAK,KAAK,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE;GAcnD;GAAI,QAbK,KAAK,iBAAiB,KAAK,kBAAkB,gBAIrE,QAAQ,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAChC,KACE,MACC,GAAG,UAAU,EAAE,UAAU,EAAE,IAAI,+BAC7B,EAAE,WACF,EAAE,SACJ,EAAE,EACN,CAAC,CACA,KAAK,GAAG,EAAE;GACqB;EAAE;CACtC,CAAC,CAAC,CACD,KAAK;CAER,MAAM,iBACJ,OAAO,OAAO,KAAK,CAAC,CAAC,SAAS,IAC1B;QACA,OAAO,OAAO,KAAK,CAAC,CACnB,KAAK,EAAE,WAAW,GAAG,UAAU,IAAI,EAAE,KAAK,KAAK,UAAU,CAAC,CAC1D,KAAK,IAAI,EAAE;SAEZ;CAIN,OAAO;EAAE,MAAM;EAA8B,WAAW;EAAM,UAAU,MAFhD,cAAc,CAAC,GAAG,UAAU,cAAc,CAAC,CAAC,KAAK,IAAI,CAAC;CAEI;AACpF"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_utils = require("./utils.cjs");
|
|
3
|
+
require("joist-codegen");
|
|
4
|
+
let ts_poet = require("ts-poet");
|
|
5
|
+
//#region src/generateGraphqlCodegen.ts
|
|
6
|
+
/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */
|
|
7
|
+
function generateGraphqlCodegen(config, entities, enums) {
|
|
8
|
+
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
9
|
+
const pgEnumNames = Array.from(new Set(entities.flatMap(({ pgEnums }) => pgEnums.map(({ enumName }) => enumName))));
|
|
10
|
+
const entitiesMapperImportPath = require_utils.getEntitiesImportPath(config).replace(/\.ts$/, "");
|
|
11
|
+
const pageInfoMapperPath = config.esm ? "joist-graphql-resolver-utils/index" : "joist-graphql-resolver-utils";
|
|
12
|
+
const pageInfoMapper = (config.paginationStyle ?? "cursor") === "limit" ? `${pageInfoMapperPath}#LimitPageInfo` : `${pageInfoMapperPath}#CursorPageInfo`;
|
|
13
|
+
const mappedTypes = sortObject(Object.fromEntries([
|
|
14
|
+
...entities.map(({ entity }) => [entity.name, `${entitiesMapperImportPath}#${entity.name}`]),
|
|
15
|
+
...enumNames.map((name) => [`${name}Detail`, `${entitiesMapperImportPath}#${name}`]),
|
|
16
|
+
["PageInfo", pageInfoMapper]
|
|
17
|
+
]));
|
|
18
|
+
const contents = config.esm ? ts_poet.code`
|
|
19
|
+
export const mappers = {
|
|
20
|
+
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export const enumValues = {
|
|
24
|
+
${enumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
25
|
+
${pgEnumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
26
|
+
};
|
|
27
|
+
` : ts_poet.code`
|
|
28
|
+
const mappers = {
|
|
29
|
+
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const enumValues = {
|
|
33
|
+
${enumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
34
|
+
${pgEnumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
module.exports = { mappers, enumValues };
|
|
38
|
+
`;
|
|
39
|
+
return {
|
|
40
|
+
name: `../../graphql-codegen-joist.${config.esm ? "mjs" : "js"}`,
|
|
41
|
+
overwrite: true,
|
|
42
|
+
contents
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function sortObject(obj) {
|
|
46
|
+
return Object.keys(obj).sort().reduce((acc, key) => {
|
|
47
|
+
acc[key] = obj[key];
|
|
48
|
+
return acc;
|
|
49
|
+
}, {});
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.generateGraphqlCodegen = generateGraphqlCodegen;
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=generateGraphqlCodegen.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.cjs","names":["getEntitiesImportPath"],"sources":["../src/generateGraphqlCodegen.ts"],"sourcesContent":["import { type Config, type EntityDbMetadata, type EnumMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\n/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */\nexport function generateGraphqlCodegen(config: Config, entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile {\n const enumNames = Object.values(enums).map(({ name }) => name);\n const pgEnumNames = Array.from(new Set(entities.flatMap(({ pgEnums }) => pgEnums.map(({ enumName }) => enumName))));\n\n // Combine the entity mapped types and enum detail mapped types\n const entitiesMapperImportPath = getEntitiesImportPath(config).replace(/\\.ts$/, \"\"); // Keep compatibility with the expected mapper format (no file extension)\n const pageInfoMapperPath = config.esm ? \"joist-graphql-resolver-utils/index\" : \"joist-graphql-resolver-utils\";\n const pageInfoMapper =\n (config.paginationStyle ?? \"cursor\") === \"limit\"\n ? `${pageInfoMapperPath}#LimitPageInfo`\n : `${pageInfoMapperPath}#CursorPageInfo`;\n const mappedTypes = sortObject(\n Object.fromEntries([\n ...entities.map(({ entity }) => [entity.name, `${entitiesMapperImportPath}#${entity.name}`]),\n ...enumNames.map((name) => [`${name}Detail`, `${entitiesMapperImportPath}#${name}`]),\n [\"PageInfo\", pageInfoMapper],\n ]),\n );\n\n const contents = config.esm\n ? code`\n export const mappers = {\n ${Object.entries(mappedTypes).map(([key, value]) => `${key}: \"${value}\",`)}\n };\n\n export const enumValues = {\n ${enumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n ${pgEnumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n };\n `\n : code`\n const mappers = {\n ${Object.entries(mappedTypes).map(([key, value]) => `${key}: \"${value}\",`)}\n };\n\n const enumValues = {\n ${enumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n ${pgEnumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n };\n\n module.exports = { mappers, enumValues };\n `;\n\n const ext = config.esm ? \"mjs\" : \"js\";\n return { name: `../../graphql-codegen-joist.${ext}`, overwrite: true, contents };\n}\n\nfunction sortObject<T extends object>(obj: T): T {\n return Object.keys(obj)\n .sort()\n .reduce(\n (acc, key) => {\n acc[key as keyof T] = obj[key as keyof T];\n return acc;\n },\n {} as any as T,\n ) as T;\n}\n"],"mappings":";;;;;;AAMA,SAAgB,uBAAuB,QAAgB,UAA8B,OAAkC;CACrH,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI;CAC7D,MAAM,cAAc,MAAM,KAAK,IAAI,IAAI,SAAS,SAAS,EAAE,cAAc,QAAQ,KAAK,EAAE,eAAe,QAAQ,CAAC,CAAC,CAAC;CAGlH,MAAM,2BAA2BA,cAAAA,sBAAsB,MAAM,CAAC,CAAC,QAAQ,SAAS,EAAE;CAClF,MAAM,qBAAqB,OAAO,MAAM,uCAAuC;CAC/E,MAAM,kBACH,OAAO,mBAAmB,cAAc,UACrC,GAAG,mBAAmB,kBACtB,GAAG,mBAAmB;CAC5B,MAAM,cAAc,WAClB,OAAO,YAAY;EACjB,GAAG,SAAS,KAAK,EAAE,aAAa,CAAC,OAAO,MAAM,GAAG,yBAAyB,GAAG,OAAO,MAAM,CAAC;EAC3F,GAAG,UAAU,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,GAAG,yBAAyB,GAAG,MAAM,CAAC;EACnF,CAAC,YAAY,cAAc;CAC7B,CAAC,CACH;CAEA,MAAM,WAAW,OAAO,MACpB,QAAA,IAAI;;YAEE,OAAO,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE;;;;YAIzE,UAAU,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;YAC3E,YAAY,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;;UAGnF,QAAA,IAAI;;YAEE,OAAO,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE;;;;YAIzE,UAAU,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;YAC3E,YAAY,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;;;;;CAOvF,OAAO;EAAE,MAAM,+BADH,OAAO,MAAM,QAAQ;EACoB,WAAW;EAAM;CAAS;AACjF;AAEA,SAAS,WAA6B,KAAW;CAC/C,OAAO,OAAO,KAAK,GAAG,CAAC,CACpB,KAAK,CAAC,CACN,QACE,KAAK,QAAQ;EACZ,IAAI,OAAkB,IAAI;EAC1B,OAAO;CACT,GACA,CAAC,CACH;AACJ"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config, EntityDbMetadata, EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateGraphqlCodegen.d.ts
|
|
4
|
+
/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */
|
|
5
|
+
declare function generateGraphqlCodegen(config: Config, entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateGraphqlCodegen };
|
|
8
|
+
//# sourceMappingURL=generateGraphqlCodegen.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.d.cts","names":[],"sources":["../src/generateGraphqlCodegen.ts"],"mappings":";;;;iBAMgB,uBAAuB,QAAQ,QAAQ,UAAU,oBAAoB,OAAO,eAAe"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Config, EntityDbMetadata, EnumMetadata } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
3
|
+
//#region src/generateGraphqlCodegen.d.ts
|
|
4
|
+
/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */
|
|
5
|
+
declare function generateGraphqlCodegen(config: Config, entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { generateGraphqlCodegen };
|
|
8
|
+
//# sourceMappingURL=generateGraphqlCodegen.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.d.mts","names":[],"sources":["../src/generateGraphqlCodegen.ts"],"mappings":";;;;iBAMgB,uBAAuB,QAAQ,QAAQ,UAAU,oBAAoB,OAAO,eAAe"}
|
|
@@ -1,25 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { getEntitiesImportPath } from "./utils.js";
|
|
2
|
+
import "joist-codegen";
|
|
3
|
+
import { code } from "ts-poet";
|
|
4
|
+
//#region src/generateGraphqlCodegen.ts
|
|
6
5
|
/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */
|
|
7
6
|
function generateGraphqlCodegen(config, entities, enums) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
["PageInfo", pageInfoMapper],
|
|
20
|
-
]));
|
|
21
|
-
const contents = config.esm
|
|
22
|
-
? (0, ts_poet_1.code) `
|
|
7
|
+
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
8
|
+
const pgEnumNames = Array.from(new Set(entities.flatMap(({ pgEnums }) => pgEnums.map(({ enumName }) => enumName))));
|
|
9
|
+
const entitiesMapperImportPath = getEntitiesImportPath(config).replace(/\.ts$/, "");
|
|
10
|
+
const pageInfoMapperPath = config.esm ? "joist-graphql-resolver-utils/index" : "joist-graphql-resolver-utils";
|
|
11
|
+
const pageInfoMapper = (config.paginationStyle ?? "cursor") === "limit" ? `${pageInfoMapperPath}#LimitPageInfo` : `${pageInfoMapperPath}#CursorPageInfo`;
|
|
12
|
+
const mappedTypes = sortObject(Object.fromEntries([
|
|
13
|
+
...entities.map(({ entity }) => [entity.name, `${entitiesMapperImportPath}#${entity.name}`]),
|
|
14
|
+
...enumNames.map((name) => [`${name}Detail`, `${entitiesMapperImportPath}#${name}`]),
|
|
15
|
+
["PageInfo", pageInfoMapper]
|
|
16
|
+
]));
|
|
17
|
+
const contents = config.esm ? code`
|
|
23
18
|
export const mappers = {
|
|
24
19
|
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
25
20
|
};
|
|
@@ -28,8 +23,7 @@ function generateGraphqlCodegen(config, entities, enums) {
|
|
|
28
23
|
${enumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
29
24
|
${pgEnumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
30
25
|
};
|
|
31
|
-
`
|
|
32
|
-
: (0, ts_poet_1.code) `
|
|
26
|
+
` : code`
|
|
33
27
|
const mappers = {
|
|
34
28
|
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
35
29
|
};
|
|
@@ -41,15 +35,19 @@ function generateGraphqlCodegen(config, entities, enums) {
|
|
|
41
35
|
|
|
42
36
|
module.exports = { mappers, enumValues };
|
|
43
37
|
`;
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
return {
|
|
39
|
+
name: `../../graphql-codegen-joist.${config.esm ? "mjs" : "js"}`,
|
|
40
|
+
overwrite: true,
|
|
41
|
+
contents
|
|
42
|
+
};
|
|
46
43
|
}
|
|
47
44
|
function sortObject(obj) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return acc;
|
|
53
|
-
}, {});
|
|
45
|
+
return Object.keys(obj).sort().reduce((acc, key) => {
|
|
46
|
+
acc[key] = obj[key];
|
|
47
|
+
return acc;
|
|
48
|
+
}, {});
|
|
54
49
|
}
|
|
50
|
+
//#endregion
|
|
51
|
+
export { generateGraphqlCodegen };
|
|
52
|
+
|
|
55
53
|
//# sourceMappingURL=generateGraphqlCodegen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGraphqlCodegen.js","
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.js","names":[],"sources":["../src/generateGraphqlCodegen.ts"],"sourcesContent":["import { type Config, type EntityDbMetadata, type EnumMetadata } from \"joist-codegen\";\nimport { type CodegenFile, code } from \"ts-poet\";\n\nimport { getEntitiesImportPath } from \"./utils.ts\";\n\n/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */\nexport function generateGraphqlCodegen(config: Config, entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile {\n const enumNames = Object.values(enums).map(({ name }) => name);\n const pgEnumNames = Array.from(new Set(entities.flatMap(({ pgEnums }) => pgEnums.map(({ enumName }) => enumName))));\n\n // Combine the entity mapped types and enum detail mapped types\n const entitiesMapperImportPath = getEntitiesImportPath(config).replace(/\\.ts$/, \"\"); // Keep compatibility with the expected mapper format (no file extension)\n const pageInfoMapperPath = config.esm ? \"joist-graphql-resolver-utils/index\" : \"joist-graphql-resolver-utils\";\n const pageInfoMapper =\n (config.paginationStyle ?? \"cursor\") === \"limit\"\n ? `${pageInfoMapperPath}#LimitPageInfo`\n : `${pageInfoMapperPath}#CursorPageInfo`;\n const mappedTypes = sortObject(\n Object.fromEntries([\n ...entities.map(({ entity }) => [entity.name, `${entitiesMapperImportPath}#${entity.name}`]),\n ...enumNames.map((name) => [`${name}Detail`, `${entitiesMapperImportPath}#${name}`]),\n [\"PageInfo\", pageInfoMapper],\n ]),\n );\n\n const contents = config.esm\n ? code`\n export const mappers = {\n ${Object.entries(mappedTypes).map(([key, value]) => `${key}: \"${value}\",`)}\n };\n\n export const enumValues = {\n ${enumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n ${pgEnumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n };\n `\n : code`\n const mappers = {\n ${Object.entries(mappedTypes).map(([key, value]) => `${key}: \"${value}\",`)}\n };\n\n const enumValues = {\n ${enumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n ${pgEnumNames.map((name) => `${name}: \"${entitiesMapperImportPath}#${name}\",`)}\n };\n\n module.exports = { mappers, enumValues };\n `;\n\n const ext = config.esm ? \"mjs\" : \"js\";\n return { name: `../../graphql-codegen-joist.${ext}`, overwrite: true, contents };\n}\n\nfunction sortObject<T extends object>(obj: T): T {\n return Object.keys(obj)\n .sort()\n .reduce(\n (acc, key) => {\n acc[key as keyof T] = obj[key as keyof T];\n return acc;\n },\n {} as any as T,\n ) as T;\n}\n"],"mappings":";;;;;AAMA,SAAgB,uBAAuB,QAAgB,UAA8B,OAAkC;CACrH,MAAM,YAAY,OAAO,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI;CAC7D,MAAM,cAAc,MAAM,KAAK,IAAI,IAAI,SAAS,SAAS,EAAE,cAAc,QAAQ,KAAK,EAAE,eAAe,QAAQ,CAAC,CAAC,CAAC;CAGlH,MAAM,2BAA2B,sBAAsB,MAAM,CAAC,CAAC,QAAQ,SAAS,EAAE;CAClF,MAAM,qBAAqB,OAAO,MAAM,uCAAuC;CAC/E,MAAM,kBACH,OAAO,mBAAmB,cAAc,UACrC,GAAG,mBAAmB,kBACtB,GAAG,mBAAmB;CAC5B,MAAM,cAAc,WAClB,OAAO,YAAY;EACjB,GAAG,SAAS,KAAK,EAAE,aAAa,CAAC,OAAO,MAAM,GAAG,yBAAyB,GAAG,OAAO,MAAM,CAAC;EAC3F,GAAG,UAAU,KAAK,SAAS,CAAC,GAAG,KAAK,SAAS,GAAG,yBAAyB,GAAG,MAAM,CAAC;EACnF,CAAC,YAAY,cAAc;CAC7B,CAAC,CACH;CAEA,MAAM,WAAW,OAAO,MACpB,IAAI;;YAEE,OAAO,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE;;;;YAIzE,UAAU,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;YAC3E,YAAY,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;;UAGnF,IAAI;;YAEE,OAAO,QAAQ,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,GAAG,EAAE;;;;YAIzE,UAAU,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;YAC3E,YAAY,KAAK,SAAS,GAAG,KAAK,KAAK,yBAAyB,GAAG,KAAK,GAAG,EAAE;;;;;CAOvF,OAAO;EAAE,MAAM,+BADH,OAAO,MAAM,QAAQ;EACoB,WAAW;EAAM;CAAS;AACjF;AAEA,SAAS,WAA6B,KAAW;CAC/C,OAAO,OAAO,KAAK,GAAG,CAAC,CACpB,KAAK,CAAC,CACN,QACE,KAAK,QAAQ;EACZ,IAAI,OAAkB,IAAI;EAC1B,OAAO;CACT,GACA,CAAC,CACH;AACJ"}
|