joist-graphql-codegen 1.274.5 → 1.275.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.
- package/build/generateEnumDetailResolvers.d.ts +2 -2
- package/build/generateEnumDetailResolvers.d.ts.map +1 -1
- package/build/generateEnumDetailResolvers.js +5 -3
- package/build/generateEnumDetailResolvers.js.map +1 -1
- package/build/generateEnumDetailResolvers.test.js +24 -7
- package/build/generateEnumDetailResolvers.test.js.map +1 -1
- package/build/generateGraphqlCodegen.d.ts +3 -3
- package/build/generateGraphqlCodegen.d.ts.map +1 -1
- package/build/generateGraphqlCodegen.js +27 -14
- package/build/generateGraphqlCodegen.js.map +1 -1
- package/build/generateGraphqlCodegen.test.js +14 -2
- package/build/generateGraphqlCodegen.test.js.map +1 -1
- package/build/generateObjectResolvers.d.ts.map +1 -1
- package/build/generateObjectResolvers.js +9 -7
- package/build/generateObjectResolvers.js.map +1 -1
- package/build/generateQueryResolvers.d.ts +2 -2
- package/build/generateQueryResolvers.d.ts.map +1 -1
- package/build/generateQueryResolvers.js +7 -6
- package/build/generateQueryResolvers.js.map +1 -1
- package/build/generateQueryResolvers.test.js +22 -9
- package/build/generateQueryResolvers.test.js.map +1 -1
- package/build/generateSaveResolvers.d.ts +2 -2
- package/build/generateSaveResolvers.d.ts.map +1 -1
- package/build/generateSaveResolvers.js +8 -6
- package/build/generateSaveResolvers.js.map +1 -1
- package/build/generateSaveResolvers.test.js +30 -11
- package/build/generateSaveResolvers.test.js.map +1 -1
- package/build/index.js +10 -6
- package/build/index.js.map +1 -1
- package/build/testUtils.d.ts +7 -1
- package/build/testUtils.d.ts.map +1 -1
- package/build/testUtils.js +16 -0
- package/build/testUtils.js.map +1 -1
- package/build/utils.d.ts +3 -0
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +8 -0
- package/build/utils.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EnumMetadata } from "joist-codegen";
|
|
1
|
+
import { Config, EnumMetadata } from "joist-codegen";
|
|
2
2
|
import { CodegenFile } from "ts-poet";
|
|
3
3
|
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
4
|
-
export declare function generateEnumDetailResolvers(enums: EnumMetadata): CodegenFile;
|
|
4
|
+
export declare function generateEnumDetailResolvers(config: Config, enums: EnumMetadata): CodegenFile;
|
|
5
5
|
//# sourceMappingURL=generateEnumDetailResolvers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateEnumDetailResolvers.d.ts","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.d.ts","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAQ,WAAW,EAAO,MAAM,SAAS,CAAC;AAGjD,iHAAiH;AACjH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,CA4B5F"}
|
|
@@ -7,11 +7,13 @@ exports.generateEnumDetailResolvers = generateEnumDetailResolvers;
|
|
|
7
7
|
const change_case_1 = require("change-case");
|
|
8
8
|
const pluralize_1 = __importDefault(require("pluralize"));
|
|
9
9
|
const ts_poet_1 = require("ts-poet");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
10
11
|
/** Generates a `src/resolvers/enumResolvers.ts` with a resolver for each of our domain's "enum detail" types. */
|
|
11
|
-
function generateEnumDetailResolvers(enums) {
|
|
12
|
+
function generateEnumDetailResolvers(config, enums) {
|
|
13
|
+
const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
|
|
12
14
|
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
13
15
|
const resolvers = Object.values(enums).map(({ name, extraPrimitives }) => {
|
|
14
|
-
const type = (0, ts_poet_1.imp)(`${(0, pluralize_1.default)(name)}
|
|
16
|
+
const type = (0, ts_poet_1.imp)(`${(0, pluralize_1.default)(name)}@${entitiesPath}`);
|
|
15
17
|
return (0, ts_poet_1.code) `
|
|
16
18
|
${name}Detail: {
|
|
17
19
|
code: (root) => root,
|
|
@@ -22,7 +24,7 @@ function generateEnumDetailResolvers(enums) {
|
|
|
22
24
|
},
|
|
23
25
|
`;
|
|
24
26
|
});
|
|
25
|
-
const Resolvers = (0, ts_poet_1.imp)("Resolvers@src/generated/graphql-types");
|
|
27
|
+
const Resolvers = (0, ts_poet_1.imp)("t:Resolvers@src/generated/graphql-types.ts");
|
|
26
28
|
const contents = (0, ts_poet_1.code) `
|
|
27
29
|
type EnumDetails = ${enumNames.length === 0 ? "never" : enumNames.map((n) => `"${n}Detail"`).join(" | ")};
|
|
28
30
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateEnumDetailResolvers.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.ts"],"names":[],"mappings":";;;;;AAOA,kEA4BC;AAnCD,6CAAwC;AAExC,0DAAkC;AAClC,qCAAiD;AACjD,mCAAgD;AAEhD,iHAAiH;AACjH,SAAgB,2BAA2B,CAAC,MAAc,EAAE,KAAmB;IAC7E,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,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,IAAI,YAAY,EAAE,CAAC,CAAC;QACvD,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,4CAA4C,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;yBACE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;;uCAErE,SAAS;QACxC,SAAS;;GAEd,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const generateEnumDetailResolvers_1 = require("./generateEnumDetailResolvers");
|
|
4
|
+
const testUtils_1 = require("./testUtils");
|
|
4
5
|
describe("generateEnumDetailResolvers", () => {
|
|
5
|
-
it(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
it.each([
|
|
7
|
+
{
|
|
8
|
+
desc: "no extensions for non-ESM",
|
|
9
|
+
config: { esm: false },
|
|
10
|
+
graphqlTypesImport: "src/generated/graphql-types",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
desc: ".js extensions for ESM",
|
|
14
|
+
config: { esm: true, allowImportingTsExtensions: false },
|
|
15
|
+
graphqlTypesImport: "src/generated/graphql-types.js",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
desc: ".ts extensions for ESM with allowImportingTsExtensions",
|
|
19
|
+
config: { esm: true, allowImportingTsExtensions: true },
|
|
20
|
+
graphqlTypesImport: "src/generated/graphql-types.ts",
|
|
21
|
+
},
|
|
22
|
+
])("generates file with $desc", async ({ config, graphqlTypesImport }) => {
|
|
23
|
+
const file = await (0, generateEnumDetailResolvers_1.generateEnumDetailResolvers)(config, {});
|
|
24
|
+
expect((0, testUtils_1.renderCodegenFile)(file, config)).toMatchInlineSnapshot(`
|
|
25
|
+
"import type { Resolvers } from "${graphqlTypesImport}";
|
|
9
26
|
|
|
10
|
-
|
|
27
|
+
type EnumDetails = never;
|
|
11
28
|
|
|
12
|
-
|
|
13
|
-
|
|
29
|
+
export const enumResolvers: Pick<Resolvers, EnumDetails> = {};
|
|
30
|
+
"
|
|
14
31
|
`);
|
|
15
32
|
});
|
|
16
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateEnumDetailResolvers.test.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.test.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateEnumDetailResolvers.test.js","sourceRoot":"","sources":["../src/generateEnumDetailResolvers.test.ts"],"names":[],"mappings":";;AACA,+EAA4E;AAC5E,2CAAgD;AAEhD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,IAAI,CAAC;QACN;YACE,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAY;YAChC,kBAAkB,EAAE,6BAA6B;SAClD;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAY;YAClE,kBAAkB,EAAE,gCAAgC;SACrD;QACD;YACE,IAAI,EAAE,wDAAwD;YAC9D,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAY;YACjE,kBAAkB,EAAE,gCAAgC;SACrD;KACF,CAAC,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE;QACvE,MAAM,IAAI,GAAG,MAAM,IAAA,yDAA2B,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAA,6BAAiB,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;wCAC1B,kBAAkB;;;;;;KAMrD,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { EntityDbMetadata, EnumMetadata } from "joist-codegen";
|
|
1
|
+
import { Config, EntityDbMetadata, EnumMetadata } from "joist-codegen";
|
|
2
2
|
import { CodegenFile } from "ts-poet";
|
|
3
|
-
/** Generates a `graphql-codegen-joist.js` with the auto-generated mapped type/enum value settings. */
|
|
4
|
-
export declare function generateGraphqlCodegen(entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile;
|
|
3
|
+
/** Generates a `graphql-codegen-joist.js` (or .mjs for ESM) with the auto-generated mapped type/enum value settings. */
|
|
4
|
+
export declare function generateGraphqlCodegen(config: Config, entities: EntityDbMetadata[], enums: EnumMetadata): CodegenFile;
|
|
5
5
|
//# sourceMappingURL=generateGraphqlCodegen.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGraphqlCodegen.d.ts","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.d.ts","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAQ,MAAM,SAAS,CAAC;AAG5C,wHAAwH;AACxH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,YAAY,GAAG,WAAW,CAoCrH"}
|
|
@@ -2,26 +2,39 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generateGraphqlCodegen = generateGraphqlCodegen;
|
|
4
4
|
const ts_poet_1 = require("ts-poet");
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
const utils_1 = require("./utils");
|
|
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) {
|
|
7
8
|
const enumNames = Object.values(enums).map(({ name }) => name);
|
|
8
9
|
// Combine the entity mapped types and enum detail mapped types
|
|
10
|
+
const entitiesMapperImportPath = (0, utils_1.getEntitiesImportPath)(config).replace(/\.ts$/, ""); // Keep compatibility with the expected mapper format (no file extension)
|
|
9
11
|
const mappedTypes = sortObject(Object.fromEntries([
|
|
10
|
-
...entities.map(({ entity }) => [entity.name,
|
|
11
|
-
...enumNames.map((name) => [`${name}Detail`,
|
|
12
|
+
...entities.map(({ entity }) => [entity.name, `${entitiesMapperImportPath}#${entity.name}`]),
|
|
13
|
+
...enumNames.map((name) => [`${name}Detail`, `${entitiesMapperImportPath}#${name}`]),
|
|
12
14
|
]));
|
|
13
|
-
const contents =
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
const contents = config.esm
|
|
16
|
+
? (0, ts_poet_1.code) `
|
|
17
|
+
export const mappers = {
|
|
18
|
+
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
19
|
+
};
|
|
17
20
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
export const enumValues = {
|
|
22
|
+
${enumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
23
|
+
};
|
|
24
|
+
`
|
|
25
|
+
: (0, ts_poet_1.code) `
|
|
26
|
+
const mappers = {
|
|
27
|
+
${Object.entries(mappedTypes).map(([key, value]) => `${key}: "${value}",`)}
|
|
28
|
+
};
|
|
21
29
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
const enumValues = {
|
|
31
|
+
${enumNames.map((name) => `${name}: "${entitiesMapperImportPath}#${name}",`)}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
module.exports = { mappers, enumValues };
|
|
35
|
+
`;
|
|
36
|
+
const ext = config.esm ? "mjs" : "js";
|
|
37
|
+
return { name: `../../graphql-codegen-joist.${ext}`, overwrite: true, contents };
|
|
25
38
|
}
|
|
26
39
|
function sortObject(obj) {
|
|
27
40
|
return Object.keys(obj)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGraphqlCodegen.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.ts"],"names":[],"mappings":";;AAKA,wDAoCC;AAxCD,qCAA4C;AAC5C,mCAAgD;AAEhD,wHAAwH;AACxH,SAAgB,sBAAsB,CAAC,MAAc,EAAE,QAA4B,EAAE,KAAmB;IACtG,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,wBAAwB,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,yEAAyE;IAC9J,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,GAAG,wBAAwB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,QAAQ,EAAE,GAAG,wBAAwB,IAAI,IAAI,EAAE,CAAC,CAAC;KACrF,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG;QACzB,CAAC,CAAC,IAAA,cAAI,EAAA;;YAEE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC;;;;YAIxE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,wBAAwB,IAAI,IAAI,IAAI,CAAC;;OAE/E;QACH,CAAC,CAAC,IAAA,cAAI,EAAA;;YAEE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC;;;;YAIxE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,wBAAwB,IAAI,IAAI,IAAI,CAAC;;;;OAI/E,CAAC;IAEN,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,+BAA+B,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CAAmB,GAAM;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,IAAI,EAAE;SACN,MAAM,CACL,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,GAAG,CAAC,GAAc,CAAC,GAAG,GAAG,CAAC,GAAc,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAc,CACV,CAAC;AACX,CAAC"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const generateGraphqlCodegen_1 = require("./generateGraphqlCodegen");
|
|
4
4
|
describe("generateGraphqlCodegen", () => {
|
|
5
|
-
it("creates a
|
|
5
|
+
it("creates a cjs file by default", async () => {
|
|
6
6
|
const entities = [];
|
|
7
7
|
const enums = {};
|
|
8
|
-
const file = (0, 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
|
|
|
@@ -15,5 +15,17 @@ describe("generateGraphqlCodegen", () => {
|
|
|
15
15
|
"
|
|
16
16
|
`);
|
|
17
17
|
});
|
|
18
|
+
it("creates an mjs file when esm is true", async () => {
|
|
19
|
+
const entities = [];
|
|
20
|
+
const enums = {};
|
|
21
|
+
const file = (0, generateGraphqlCodegen_1.generateGraphqlCodegen)({ esm: true }, entities, enums);
|
|
22
|
+
expect(file.name).toBe("../../graphql-codegen-joist.mjs");
|
|
23
|
+
expect(file.contents.toString()).toMatchInlineSnapshot(`
|
|
24
|
+
"export const mappers = {};
|
|
25
|
+
|
|
26
|
+
export const enumValues = {};
|
|
27
|
+
"
|
|
28
|
+
`);
|
|
29
|
+
});
|
|
18
30
|
});
|
|
19
31
|
//# sourceMappingURL=generateGraphqlCodegen.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateGraphqlCodegen.test.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.test.ts"],"names":[],"mappings":";;AAEA,qEAAkE;AAElE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"generateGraphqlCodegen.test.js","sourceRoot":"","sources":["../src/generateGraphqlCodegen.test.ts"],"names":[],"mappings":";;AAEA,qEAAkE;AAElE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,+CAAsB,EAAC,EAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,CAAE,IAAI,CAAC,QAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;;;KAOhE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAA,+CAAsB,EAAC,EAAE,GAAG,EAAE,IAAI,EAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC1D,MAAM,CAAE,IAAI,CAAC,QAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB,CAAC;;;;;KAKhE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateObjectResolvers.d.ts","sourceRoot":"","sources":["../src/generateObjectResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAa,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"generateObjectResolvers.d.ts","sourceRoot":"","sources":["../src/generateObjectResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAa,MAAM,SAAS,CAAC;AAOjD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAAG,WAAW,EAAE,CA0CnG"}
|
|
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateObjectResolvers = generateObjectResolvers;
|
|
4
4
|
const change_case_1 = require("change-case");
|
|
5
5
|
const ts_poet_1 = require("ts-poet");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const entityResolver = (0, ts_poet_1.imp)("entityResolver@src/resolvers/utils.ts");
|
|
8
|
+
const makeRunObjectFields = (0, ts_poet_1.imp)("makeRunObjectFields@src/resolvers/testUtils.ts");
|
|
9
|
+
const makeRunObjectField = (0, ts_poet_1.imp)("makeRunObjectField@src/resolvers/testUtils.ts");
|
|
9
10
|
/**
|
|
10
11
|
* Generates a base resolver using the entityResolver utility.
|
|
11
12
|
*
|
|
@@ -17,10 +18,11 @@ const makeRunObjectField = (0, ts_poet_1.imp)("makeRunObjectField@src/resolvers/
|
|
|
17
18
|
* [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
|
|
18
19
|
*/
|
|
19
20
|
function generateObjectResolvers(config, entities) {
|
|
21
|
+
const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
|
|
20
22
|
const resolvers = entities.map((e) => {
|
|
21
23
|
const camelName = (0, change_case_1.camelCase)(e.name);
|
|
22
|
-
const type = (0, ts_poet_1.imp)(`${e.name}
|
|
23
|
-
const resolverType = (0, ts_poet_1.imp)(
|
|
24
|
+
const type = (0, ts_poet_1.imp)(`${e.name}@${entitiesPath}`);
|
|
25
|
+
const resolverType = (0, ts_poet_1.imp)(`t:${e.name}Resolvers@src/generated/graphql-types.ts`);
|
|
24
26
|
const contents = (0, ts_poet_1.code) `
|
|
25
27
|
export const ${camelName}Resolvers: ${resolverType} = {
|
|
26
28
|
...${entityResolver}(${type}),
|
|
@@ -31,8 +33,8 @@ function generateObjectResolvers(config, entities) {
|
|
|
31
33
|
const testFiles = entities.map((e) => {
|
|
32
34
|
const { name } = e;
|
|
33
35
|
const camelName = (0, change_case_1.camelCase)(name);
|
|
34
|
-
const factory = (0, ts_poet_1.imp)(`new${name}
|
|
35
|
-
const resolverConst = (0, ts_poet_1.imp)(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers`);
|
|
36
|
+
const factory = (0, ts_poet_1.imp)(`new${name}@${entitiesPath}`);
|
|
37
|
+
const resolverConst = (0, ts_poet_1.imp)(`${camelName}Resolvers@src/resolvers/${camelName}/${camelName}Resolvers.ts`);
|
|
36
38
|
const tagName = config.entities[name].tag || "entity";
|
|
37
39
|
const keys = e.primitives.map((field) => `"${field.fieldName}"`).join(", ");
|
|
38
40
|
const contents = (0, ts_poet_1.code) `
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateObjectResolvers.js","sourceRoot":"","sources":["../src/generateObjectResolvers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateObjectResolvers.js","sourceRoot":"","sources":["../src/generateObjectResolvers.ts"],"names":[],"mappings":";;AAmBA,0DA0CC;AA7DD,6CAAsD;AAEtD,qCAAiD;AACjD,mCAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,uCAAuC,CAAC,CAAC;AACpE,MAAM,mBAAmB,GAAG,IAAA,aAAG,EAAC,gDAAgD,CAAC,CAAC;AAClF,MAAM,kBAAkB,GAAG,IAAA,aAAG,EAAC,+CAA+C,CAAC,CAAC;AAEhF;;;;;;;;;GASG;AACH,SAAgB,uBAAuB,CAAC,MAAc,EAAE,QAA4B;IAClF,MAAM,YAAY,GAAG,IAAA,6BAAqB,EAAC,MAAM,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAA,aAAG,EAAC,GAAG,CAAC,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAA,aAAG,EAAC,KAAK,CAAC,CAAC,IAAI,0CAA0C,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;qBACJ,SAAS,cAAc,YAAY;aAC3C,cAAc,IAAI,IAAI;;KAE9B,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,cAAc,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACjG,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAA,aAAG,EAAC,GAAG,SAAS,2BAA2B,SAAS,IAAI,SAAS,cAAc,CAAC,CAAC;QAEvG,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,QAAQ,CAAC;QACtD,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5E,MAAM,QAAQ,GAAG,IAAA,cAAI,EAAA;kBACP,SAAS;;;uBAGJ,IAAA,0BAAY,EAAC,IAAI,CAAC;kBACvB,OAAO,MAAM,OAAO;;gDAEU,OAAO,MAAM,IAAI;;;;;0BAKvC,mBAAmB,IAAI,aAAa;yBACrC,kBAAkB,IAAI,aAAa;KACvD,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,aAAa,SAAS,IAAI,SAAS,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACtG,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { DbMetadata } from "joist-codegen";
|
|
1
|
+
import { DbMetadata, type Config } from "joist-codegen";
|
|
2
2
|
import { CodegenFile } from "ts-poet";
|
|
3
3
|
/**
|
|
4
4
|
* Generates top-level query resolvers.
|
|
5
5
|
*/
|
|
6
|
-
export declare function generateQueryResolvers(db: DbMetadata): CodegenFile[];
|
|
6
|
+
export declare function generateQueryResolvers(config: Config, db: DbMetadata): CodegenFile[];
|
|
7
7
|
//# sourceMappingURL=generateQueryResolvers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateQueryResolvers.d.ts","sourceRoot":"","sources":["../src/generateQueryResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generateQueryResolvers.d.ts","sourceRoot":"","sources":["../src/generateQueryResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,WAAW,EAAa,MAAM,SAAS,CAAC;AAMjD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,WAAW,EAAE,CAwCpF"}
|
|
@@ -3,16 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateQueryResolvers = generateQueryResolvers;
|
|
4
4
|
const change_case_1 = require("change-case");
|
|
5
5
|
const ts_poet_1 = require("ts-poet");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
6
|
+
const utils_1 = require("./utils");
|
|
7
|
+
const queryResolvers = (0, ts_poet_1.imp)("t:QueryResolvers@src/generated/graphql-types.ts");
|
|
8
|
+
const makeRunResolver = (0, ts_poet_1.imp)("makeRunInputMutation@src/resolvers/testUtils.ts");
|
|
8
9
|
/**
|
|
9
10
|
* Generates top-level query resolvers.
|
|
10
11
|
*/
|
|
11
|
-
function generateQueryResolvers(db) {
|
|
12
|
+
function generateQueryResolvers(config, db) {
|
|
13
|
+
const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
|
|
12
14
|
const resolvers = db.entities.map((e) => {
|
|
13
15
|
const { name } = e;
|
|
14
16
|
const camelName = (0, change_case_1.camelCase)(name);
|
|
15
|
-
const type = (0, ts_poet_1.imp)(`${name}@src/entities`);
|
|
16
17
|
return {
|
|
17
18
|
name: `resolvers/${camelName}/${camelName}Query.ts`,
|
|
18
19
|
overwrite: false,
|
|
@@ -28,14 +29,14 @@ function generateQueryResolvers(db) {
|
|
|
28
29
|
const testFiles = db.entities.map((e) => {
|
|
29
30
|
const { name, tagName } = e;
|
|
30
31
|
const camelName = (0, change_case_1.camelCase)(name);
|
|
31
|
-
const resolverConst = (0, ts_poet_1.imp)(`${camelName}@src/resolvers/${camelName}/${camelName}Query`);
|
|
32
|
+
const resolverConst = (0, ts_poet_1.imp)(`${camelName}@src/resolvers/${camelName}/${camelName}Query.ts`);
|
|
32
33
|
return {
|
|
33
34
|
name: `resolvers/${camelName}/${camelName}Query.test.ts`,
|
|
34
35
|
overwrite: false,
|
|
35
36
|
contents: (0, ts_poet_1.code) `
|
|
36
37
|
describe("${camelName}", () => {
|
|
37
38
|
it.withCtx("returns a ${(0, change_case_1.sentenceCase)(name)}", async (ctx) => {
|
|
38
|
-
const ${tagName} = ${(0, ts_poet_1.imp)(`new${name}
|
|
39
|
+
const ${tagName} = ${(0, ts_poet_1.imp)(`new${name}@${entitiesPath}`)}(ctx.em);
|
|
39
40
|
const result = await run(ctx, {}, "${camelName}", () => ({ id: ${tagName}.id }));
|
|
40
41
|
expect(result).toMatchEntity(${tagName});
|
|
41
42
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateQueryResolvers.js","sourceRoot":"","sources":["../src/generateQueryResolvers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateQueryResolvers.js","sourceRoot":"","sources":["../src/generateQueryResolvers.ts"],"names":[],"mappings":";;AAWA,wDAwCC;AAnDD,6CAAsD;AAEtD,qCAAiD;AACjD,mCAAgD;AAEhD,MAAM,cAAc,GAAG,IAAA,aAAG,EAAC,iDAAiD,CAAC,CAAC;AAC9E,MAAM,eAAe,GAAG,IAAA,aAAG,EAAC,iDAAiD,CAAC,CAAC;AAE/E;;GAEG;AACH,SAAgB,sBAAsB,CAAC,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,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;iDACjB,SAAS,mBAAmB,OAAO;2CACzC,OAAO;;;;sBAI5B,eAAe,IAAI,aAAa;OAC/C;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -3,15 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const generateQueryResolvers_1 = require("./generateQueryResolvers");
|
|
4
4
|
const testUtils_1 = require("./testUtils");
|
|
5
5
|
describe("generateQueryResolvers", () => {
|
|
6
|
-
it(
|
|
7
|
-
|
|
6
|
+
it.each([
|
|
7
|
+
{
|
|
8
|
+
desc: "no extensions for non-ESM",
|
|
9
|
+
config: { esm: false },
|
|
10
|
+
graphqlTypesImport: "src/generated/graphql-types",
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
desc: ".js extensions for ESM",
|
|
14
|
+
config: { esm: true, allowImportingTsExtensions: false },
|
|
15
|
+
graphqlTypesImport: "src/generated/graphql-types.js",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
desc: ".ts extensions for ESM with allowImportingTsExtensions",
|
|
19
|
+
config: { esm: true, allowImportingTsExtensions: true },
|
|
20
|
+
graphqlTypesImport: "src/generated/graphql-types.ts",
|
|
21
|
+
},
|
|
22
|
+
])("generates file with $desc", async ({ config, graphqlTypesImport }) => {
|
|
8
23
|
const entities = [(0, testUtils_1.newEntityMetadata)("Author")];
|
|
9
|
-
|
|
10
|
-
const [resolver] = await generate(entities);
|
|
11
|
-
// We now have a graphql file
|
|
24
|
+
const [resolver] = await generate(config, entities);
|
|
12
25
|
expect(resolver.name).toBe("resolvers/author/authorQuery.ts");
|
|
13
|
-
expect(
|
|
14
|
-
"import { QueryResolvers } from "
|
|
26
|
+
expect((0, testUtils_1.renderCodegenFile)(resolver, config)).toMatchInlineSnapshot(`
|
|
27
|
+
"import type { QueryResolvers } from "${graphqlTypesImport}";
|
|
15
28
|
|
|
16
29
|
export const author: Pick<QueryResolvers, "author"> = {
|
|
17
30
|
async author(_, args, ctx) {
|
|
@@ -22,7 +35,7 @@ describe("generateQueryResolvers", () => {
|
|
|
22
35
|
`);
|
|
23
36
|
});
|
|
24
37
|
});
|
|
25
|
-
async function generate(opt) {
|
|
26
|
-
return (0, generateQueryResolvers_1.generateQueryResolvers)((0, testUtils_1.newDbMeta)(opt));
|
|
38
|
+
async function generate(config, opt) {
|
|
39
|
+
return (0, generateQueryResolvers_1.generateQueryResolvers)(config, (0, testUtils_1.newDbMeta)(opt));
|
|
27
40
|
}
|
|
28
41
|
//# sourceMappingURL=generateQueryResolvers.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateQueryResolvers.test.js","sourceRoot":"","sources":["../src/generateQueryResolvers.test.ts"],"names":[],"mappings":";;AACA,qEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"generateQueryResolvers.test.js","sourceRoot":"","sources":["../src/generateQueryResolvers.test.ts"],"names":[],"mappings":";;AACA,qEAAkE;AAClE,2CAA8E;AAE9E,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,IAAI,CAAC;QACN;YACE,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAY;YAChC,kBAAkB,EAAE,6BAA6B;SAClD;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAY;YAClE,kBAAkB,EAAE,gCAAgC;SACrD;QACD;YACE,IAAI,EAAE,wDAAwD;YAC9D,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAY;YACjE,kBAAkB,EAAE,gCAAgC;SACrD;KACF,CAAC,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,EAAE;QACvE,MAAM,QAAQ,GAAuB,CAAC,IAAA,6BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAA,6BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;6CACzB,kBAAkB;;;;;;;;KAQ1D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,GAA6C;IACnF,OAAO,IAAA,+CAAsB,EAAC,MAAM,EAAE,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DbMetadata } from "joist-codegen";
|
|
1
|
+
import { Config, DbMetadata } from "joist-codegen";
|
|
2
2
|
import { CodegenFile } from "ts-poet";
|
|
3
3
|
/**
|
|
4
4
|
* Generates a save resolver.
|
|
@@ -10,5 +10,5 @@ import { CodegenFile } from "ts-poet";
|
|
|
10
10
|
*
|
|
11
11
|
* [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
|
|
12
12
|
*/
|
|
13
|
-
export declare function generateSaveResolvers(db: DbMetadata): CodegenFile[];
|
|
13
|
+
export declare function generateSaveResolvers(config: Config, db: DbMetadata): CodegenFile[];
|
|
14
14
|
//# sourceMappingURL=generateSaveResolvers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateSaveResolvers.d.ts","sourceRoot":"","sources":["../src/generateSaveResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"generateSaveResolvers.d.ts","sourceRoot":"","sources":["../src/generateSaveResolvers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,WAAW,EAAa,MAAM,SAAS,CAAC;AAOjD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,GAAG,WAAW,EAAE,CAoCnF"}
|
|
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.generateSaveResolvers = generateSaveResolvers;
|
|
4
4
|
const change_case_1 = require("change-case");
|
|
5
5
|
const ts_poet_1 = require("ts-poet");
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
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");
|
|
9
10
|
/**
|
|
10
11
|
* Generates a save resolver.
|
|
11
12
|
*
|
|
@@ -16,13 +17,14 @@ const makeRunInputMutation = (0, ts_poet_1.imp)("makeRunInputMutation@src/resolv
|
|
|
16
17
|
*
|
|
17
18
|
* [1]: https://github.com/homebound-team/graphql-typescript-resolver-scaffolding
|
|
18
19
|
*/
|
|
19
|
-
function generateSaveResolvers(db) {
|
|
20
|
+
function generateSaveResolvers(config, db) {
|
|
21
|
+
const entitiesPath = (0, utils_1.getEntitiesImportPath)(config);
|
|
20
22
|
return db.entities.flatMap((e) => {
|
|
21
23
|
const { name } = e;
|
|
22
24
|
const camelName = (0, change_case_1.camelCase)(name);
|
|
23
|
-
const type = (0, ts_poet_1.imp)(`${name}
|
|
25
|
+
const type = (0, ts_poet_1.imp)(`${name}@${entitiesPath}`);
|
|
24
26
|
const fileName = `save${name}Mutation`;
|
|
25
|
-
const resolverConst = (0, ts_poet_1.imp)(`save${name}@src/resolvers/${camelName}/${fileName}`);
|
|
27
|
+
const resolverConst = (0, ts_poet_1.imp)(`save${name}@src/resolvers/${camelName}/${fileName}.ts`);
|
|
26
28
|
return [
|
|
27
29
|
{
|
|
28
30
|
name: `resolvers/${camelName}/${fileName}.ts`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateSaveResolvers.js","sourceRoot":"","sources":["../src/generateSaveResolvers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateSaveResolvers.js","sourceRoot":"","sources":["../src/generateSaveResolvers.ts"],"names":[],"mappings":";;AAmBA,sDAoCC;AAvDD,6CAAwC;AAExC,qCAAiD;AACjD,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,SAAgB,qBAAqB,CAAC,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"}
|
|
@@ -3,17 +3,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const generateSaveResolvers_1 = require("./generateSaveResolvers");
|
|
4
4
|
const testUtils_1 = require("./testUtils");
|
|
5
5
|
describe("generateSaveResolvers", () => {
|
|
6
|
-
it(
|
|
7
|
-
|
|
6
|
+
it.each([
|
|
7
|
+
{
|
|
8
|
+
desc: "no extensions for non-ESM",
|
|
9
|
+
config: { esm: false },
|
|
10
|
+
entitiesImport: "src/entities",
|
|
11
|
+
graphqlTypesImport: "src/generated/graphql-types",
|
|
12
|
+
utilsImport: "src/resolvers/utils",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
desc: ".js extensions for ESM",
|
|
16
|
+
config: { esm: true, allowImportingTsExtensions: false },
|
|
17
|
+
entitiesImport: "src/entities/index.js",
|
|
18
|
+
graphqlTypesImport: "src/generated/graphql-types.js",
|
|
19
|
+
utilsImport: "src/resolvers/utils.js",
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
desc: ".ts extensions for ESM with allowImportingTsExtensions",
|
|
23
|
+
config: { esm: true, allowImportingTsExtensions: true },
|
|
24
|
+
entitiesImport: "src/entities/index.ts",
|
|
25
|
+
graphqlTypesImport: "src/generated/graphql-types.ts",
|
|
26
|
+
utilsImport: "src/resolvers/utils.ts",
|
|
27
|
+
},
|
|
28
|
+
])("generates file with $desc", async ({ config, entitiesImport, graphqlTypesImport, utilsImport }) => {
|
|
8
29
|
const entities = [(0, testUtils_1.newEntityMetadata)("Author")];
|
|
9
|
-
|
|
10
|
-
const [resolver] = await generate(entities);
|
|
11
|
-
// We now have a graphql file
|
|
30
|
+
const [resolver] = await generate(config, entities);
|
|
12
31
|
expect(resolver.name).toBe("resolvers/author/saveAuthorMutation.ts");
|
|
13
|
-
expect(
|
|
14
|
-
"import { Author } from "
|
|
15
|
-
import { MutationResolvers } from "
|
|
16
|
-
import { saveEntity } from "
|
|
32
|
+
expect((0, testUtils_1.renderCodegenFile)(resolver, config)).toMatchInlineSnapshot(`
|
|
33
|
+
"import { Author } from "${entitiesImport}";
|
|
34
|
+
import type { MutationResolvers } from "${graphqlTypesImport}";
|
|
35
|
+
import { saveEntity } from "${utilsImport}";
|
|
17
36
|
|
|
18
37
|
export const saveAuthor: Pick<MutationResolvers, "saveAuthor"> = {
|
|
19
38
|
async saveAuthor(_, args, ctx) {
|
|
@@ -24,7 +43,7 @@ describe("generateSaveResolvers", () => {
|
|
|
24
43
|
`);
|
|
25
44
|
});
|
|
26
45
|
});
|
|
27
|
-
async function generate(opt) {
|
|
28
|
-
return (0, generateSaveResolvers_1.generateSaveResolvers)((0, testUtils_1.newDbMeta)(opt));
|
|
46
|
+
async function generate(config, opt) {
|
|
47
|
+
return (0, generateSaveResolvers_1.generateSaveResolvers)(config, (0, testUtils_1.newDbMeta)(opt));
|
|
29
48
|
}
|
|
30
49
|
//# sourceMappingURL=generateSaveResolvers.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateSaveResolvers.test.js","sourceRoot":"","sources":["../src/generateSaveResolvers.test.ts"],"names":[],"mappings":";;AACA,mEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"generateSaveResolvers.test.js","sourceRoot":"","sources":["../src/generateSaveResolvers.test.ts"],"names":[],"mappings":";;AACA,mEAAgE;AAChE,2CAA8E;AAE9E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,IAAI,CAAC;QACN;YACE,IAAI,EAAE,2BAA2B;YACjC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAY;YAChC,cAAc,EAAE,cAAc;YAC9B,kBAAkB,EAAE,6BAA6B;YACjD,WAAW,EAAE,qBAAqB;SACnC;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAY;YAClE,cAAc,EAAE,uBAAuB;YACvC,kBAAkB,EAAE,gCAAgC;YACpD,WAAW,EAAE,wBAAwB;SACtC;QACD;YACE,IAAI,EAAE,wDAAwD;YAC9D,MAAM,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAY;YACjE,cAAc,EAAE,uBAAuB;YACvC,kBAAkB,EAAE,gCAAgC;YACpD,WAAW,EAAE,wBAAwB;SACtC;KACF,CAAC,CAAC,2BAA2B,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,EAAE;QACpG,MAAM,QAAQ,GAAuB,CAAC,IAAA,6BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC;QACnE,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrE,MAAM,CAAC,IAAA,6BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC;gCACtC,cAAc;+CACC,kBAAkB;mCAC9B,WAAW;;;;;;;;KAQzC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,GAA6C;IACnF,OAAO,IAAA,6CAAqB,EAAC,MAAM,EAAE,IAAA,qBAAS,EAAC,GAAG,CAAC,CAAC,CAAC;AACvD,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -17,7 +17,7 @@ async function run(config, dbMeta) {
|
|
|
17
17
|
const { entities, enums } = dbMeta;
|
|
18
18
|
const conditionalResolvers = [
|
|
19
19
|
...(0, generateObjectResolvers_1.generateObjectResolvers)(config, entities),
|
|
20
|
-
...(0, generateSaveResolvers_1.generateSaveResolvers)(dbMeta),
|
|
20
|
+
...(0, generateSaveResolvers_1.generateSaveResolvers)(config, dbMeta),
|
|
21
21
|
// Going to roll this out as a follow up
|
|
22
22
|
// ...generateQueryResolvers(dbMeta),
|
|
23
23
|
];
|
|
@@ -25,8 +25,8 @@ async function run(config, dbMeta) {
|
|
|
25
25
|
await writeOnce(config, srcFs, conditionalResolvers);
|
|
26
26
|
return [
|
|
27
27
|
await (0, generateEnumsGraphql_1.generateEnumsGraphql)(enums),
|
|
28
|
-
(0, generateEnumDetailResolvers_1.generateEnumDetailResolvers)(enums),
|
|
29
|
-
(0, generateGraphqlCodegen_1.generateGraphqlCodegen)(entities, enums),
|
|
28
|
+
(0, generateEnumDetailResolvers_1.generateEnumDetailResolvers)(config, enums),
|
|
29
|
+
(0, generateGraphqlCodegen_1.generateGraphqlCodegen)(config, entities, enums),
|
|
30
30
|
];
|
|
31
31
|
}
|
|
32
32
|
/** Conditionally outputs files only once, so we don't re-spam unwanted/unneeded files. */
|
|
@@ -34,21 +34,25 @@ async function writeOnce(config, fs, files) {
|
|
|
34
34
|
// We sneak a `files` entry into the history map, which is usually `type -> fields[]`
|
|
35
35
|
const history = await (0, history_1.loadHistory)(fs);
|
|
36
36
|
const filesHistory = (history["files"] = history["files"] || []);
|
|
37
|
+
const esmExt = (0, utils_1.getImportExtension)(config);
|
|
37
38
|
await Promise.all(files.map(async (file) => {
|
|
38
39
|
if (!filesHistory.includes(file.name)) {
|
|
39
40
|
// Even if it's not in the history, make sure it doesn't already exist on disk
|
|
40
41
|
if (!(await fs.exists(file.name))) {
|
|
41
|
-
await fs.save(file.name, contentToString(file));
|
|
42
|
+
await fs.save(file.name, contentToString(file, esmExt));
|
|
42
43
|
}
|
|
43
44
|
filesHistory.push(file.name);
|
|
44
45
|
}
|
|
45
46
|
}));
|
|
46
47
|
await (0, history_1.writeHistory)(fs, history);
|
|
47
48
|
}
|
|
48
|
-
function contentToString(file) {
|
|
49
|
+
function contentToString(file, esmExt) {
|
|
49
50
|
if (typeof file.contents === "string") {
|
|
50
51
|
return file.contents;
|
|
51
52
|
}
|
|
52
|
-
return file.contents.toString({
|
|
53
|
+
return file.contents.toString({
|
|
54
|
+
path: file.name,
|
|
55
|
+
importExtensions: esmExt || false,
|
|
56
|
+
});
|
|
53
57
|
}
|
|
54
58
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAWA,kBAsBC;AA/BD,+EAA4E;AAC5E,iEAA8D;AAC9D,qEAAkE;AAClE,6EAA0E;AAC1E,uEAAoE;AACpE,mEAAgE;AAChE,uCAAsD;AACtD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAWA,kBAsBC;AA/BD,+EAA4E;AAC5E,iEAA8D;AAC9D,qEAAkE;AAClE,6EAA0E;AAC1E,uEAAoE;AACpE,mEAAgE;AAChE,uCAAsD;AACtD,mCAA4D;AAErD,KAAK,UAAU,GAAG,CAAC,MAAc,EAAE,MAAkB;IAC1D,MAAM,EAAE,GAAG,IAAA,iBAAS,EAAC,UAAU,CAAC,CAAC;IAEjC,8FAA8F;IAC9F,MAAM,IAAA,uDAA0B,EAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE7C,gEAAgE;IAChE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,oBAAoB,GAAG;QAC3B,GAAG,IAAA,iDAAuB,EAAC,MAAM,EAAE,QAAQ,CAAC;QAC5C,GAAG,IAAA,6CAAqB,EAAC,MAAM,EAAE,MAAM,CAAC;QACxC,wCAAwC;QACxC,qCAAqC;KACtC,CAAC;IACF,MAAM,KAAK,GAAG,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAC;IACjC,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;IAErD,OAAO;QACL,MAAM,IAAA,2CAAoB,EAAC,KAAK,CAAC;QACjC,IAAA,yDAA2B,EAAC,MAAM,EAAE,KAAK,CAAC;QAC1C,IAAA,+CAAsB,EAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;KAChD,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,EAAM,EAAE,KAAoB;IACnE,qFAAqF;IACrF,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAW,EAAC,EAAE,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAA,0BAAkB,EAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,8EAA8E;YAC9E,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC1D,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,MAAM,IAAA,sBAAY,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,IAAiB,EAAE,MAA0B;IACpE,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,gBAAgB,EAAE,MAAM,IAAI,KAAK;KAClC,CAAC,CAAC;AACL,CAAC"}
|
package/build/testUtils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { DbMetadata, EntityDbMetadata, EnumField, ManyToOneField, PrimitiveField } from "joist-codegen";
|
|
1
|
+
import { Config, DbMetadata, EntityDbMetadata, EnumField, ManyToOneField, PrimitiveField } from "joist-codegen";
|
|
2
|
+
import { CodegenFile } from "ts-poet";
|
|
2
3
|
import { Fs } from "./utils";
|
|
3
4
|
export declare function newFs(files: Record<string, string>): Fs;
|
|
4
5
|
export declare function newDbMeta(opt: EntityDbMetadata[] | Partial<DbMetadata>): DbMetadata;
|
|
@@ -6,4 +7,9 @@ export declare function newPrimitiveField(fieldName: string, opts?: Partial<Prim
|
|
|
6
7
|
export declare function newEntityMetadata(name: string, opts?: Partial<EntityDbMetadata>): EntityDbMetadata;
|
|
7
8
|
export declare function newEnumField(fieldName: string, opts?: Partial<EnumField>): EnumField;
|
|
8
9
|
export declare function newManyToOneField(fieldName: string, otherEntity: string, opts?: Partial<ManyToOneField>): ManyToOneField;
|
|
10
|
+
/**
|
|
11
|
+
* Mimics the contentToString flow from packages/codegen/src/index.ts to test import extension handling.
|
|
12
|
+
* This reproduces the same logic used in production when saving files.
|
|
13
|
+
*/
|
|
14
|
+
export declare function renderCodegenFile(file: CodegenFile, config: Config): string;
|
|
9
15
|
//# sourceMappingURL=testUtils.d.ts.map
|
package/build/testUtils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,SAAS,EAET,cAAc,EACd,cAAc,EACf,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,WAAW,EAAO,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,EAAE,EAAsB,MAAM,SAAS,CAAC;AAEjD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,CAQvD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAmBnF;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAoBvG;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,CAAC,gBAAgB,CAAM,GAAG,gBAAgB,CAkCtG;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAsBxF;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,OAAO,CAAC,cAAc,CAAM,GACjC,cAAc,CAgBhB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAS3E"}
|
package/build/testUtils.js
CHANGED
|
@@ -6,11 +6,13 @@ exports.newPrimitiveField = newPrimitiveField;
|
|
|
6
6
|
exports.newEntityMetadata = newEntityMetadata;
|
|
7
7
|
exports.newEnumField = newEnumField;
|
|
8
8
|
exports.newManyToOneField = newManyToOneField;
|
|
9
|
+
exports.renderCodegenFile = renderCodegenFile;
|
|
9
10
|
const change_case_1 = require("change-case");
|
|
10
11
|
const joist_codegen_1 = require("joist-codegen");
|
|
11
12
|
const joist_utils_1 = require("joist-utils");
|
|
12
13
|
const pluralize_1 = require("pluralize");
|
|
13
14
|
const ts_poet_1 = require("ts-poet");
|
|
15
|
+
const utils_1 = require("./utils");
|
|
14
16
|
function newFs(files) {
|
|
15
17
|
return {
|
|
16
18
|
exists: async (fileName) => !!files[fileName],
|
|
@@ -136,4 +138,18 @@ function newManyToOneField(fieldName, otherEntity, opts = {}) {
|
|
|
136
138
|
...opts,
|
|
137
139
|
};
|
|
138
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Mimics the contentToString flow from packages/codegen/src/index.ts to test import extension handling.
|
|
143
|
+
* This reproduces the same logic used in production when saving files.
|
|
144
|
+
*/
|
|
145
|
+
function renderCodegenFile(file, config) {
|
|
146
|
+
const esmExt = (0, utils_1.getImportExtension)(config);
|
|
147
|
+
if (typeof file.contents === "string") {
|
|
148
|
+
return file.contents;
|
|
149
|
+
}
|
|
150
|
+
return file.contents.toString({
|
|
151
|
+
path: file.name,
|
|
152
|
+
importExtensions: esmExt || false,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
139
155
|
//# sourceMappingURL=testUtils.js.map
|
package/build/testUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../src/testUtils.ts"],"names":[],"mappings":"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"}
|
package/build/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Config } from "joist-codegen";
|
|
1
2
|
/** A super-simple file system abstraction for testing. */
|
|
2
3
|
export interface Fs {
|
|
3
4
|
load(fileName: string): Promise<string | undefined>;
|
|
@@ -7,4 +8,6 @@ export interface Fs {
|
|
|
7
8
|
/** A real implementation of `Fs` that writes to the `prefix` directory. */
|
|
8
9
|
export declare function newFsImpl(prefix: string): Fs;
|
|
9
10
|
export declare function sortKeys<T extends object>(o: T): T;
|
|
11
|
+
export declare function getImportExtension(config: Config): "ts" | "js" | null;
|
|
12
|
+
export declare function getEntitiesImportPath(config: Config): string;
|
|
10
13
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,0DAA0D;AAC1D,MAAM,WAAW,EAAE;IACjB,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAyB5C;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAiBlD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
package/build/utils.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.newFsImpl = newFsImpl;
|
|
4
4
|
exports.sortKeys = sortKeys;
|
|
5
|
+
exports.getImportExtension = getImportExtension;
|
|
6
|
+
exports.getEntitiesImportPath = getEntitiesImportPath;
|
|
5
7
|
const fs_1 = require("fs");
|
|
6
8
|
const joist_utils_1 = require("joist-utils");
|
|
7
9
|
const path_1 = require("path");
|
|
@@ -48,4 +50,10 @@ function sortKeys(o) {
|
|
|
48
50
|
return acc;
|
|
49
51
|
}, {});
|
|
50
52
|
}
|
|
53
|
+
function getImportExtension(config) {
|
|
54
|
+
return config.esm ? (config.allowImportingTsExtensions ? "ts" : "js") : null;
|
|
55
|
+
}
|
|
56
|
+
function getEntitiesImportPath(config) {
|
|
57
|
+
return config.esm ? "src/entities/index.ts" : "src/entities";
|
|
58
|
+
}
|
|
51
59
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AAaA,8BAyBC;AAED,4BAiBC;AAED,gDAEC;AAED,sDAEC;AAjED,2BAAoC;AAEpC,6CAA4C;AAC5C,+BAA+B;AAS/B,2EAA2E;AAC3E,SAAgB,SAAS,CAAC,MAAc;IACtC,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACzB,IAAI,CAAC;gBACH,yDAAyD;gBACzD,MAAM,aAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,IAAI,CAAC;gBACH,OAAO,CAAC,MAAM,aAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,4CAA4C;gBAC5C,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,QAAQ,EAAE,CAAC;YACrC,MAAM,aAAE,CAAC,KAAK,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,aAAE,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAmB,CAAI;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SAClB,IAAI,EAAE;SACN,MAAM,CACL,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACX,MAAM,KAAK,GAAG,CAAC,CAAC,GAAc,CAAC,CAAC;QAChC,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC;YAC/C,CAAC,CAAC,QAAQ,CAAC,KAAsB,CAAC;YAClC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpB,CAAC,CAAE,KAAe,CAAC,IAAI,EAAE;gBACzB,CAAC,CAAC,KAAK,CAAC;QACd,GAAG,CAAC,GAAc,CAAC,GAAG,QAAe,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAAc,CACf,CAAC;AACN,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,cAAc,CAAC;AAC/D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "joist-graphql-codegen",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.275.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"@types/prettier": "^3.0.0",
|
|
23
23
|
"change-case": "^4.1.2",
|
|
24
24
|
"graphql": "^16.11.0",
|
|
25
|
-
"joist-codegen": "1.
|
|
26
|
-
"joist-utils": "1.
|
|
25
|
+
"joist-codegen": "1.275.0",
|
|
26
|
+
"joist-utils": "1.275.0",
|
|
27
27
|
"pluralize": "^8.0.0",
|
|
28
28
|
"prettier": "^3.6.2",
|
|
29
29
|
"ts-poet": "^6.12.0"
|