@wokcito/prisma-generator-pothos-codegen 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +416 -0
- package/package.json +76 -0
- package/src/bin.d.ts +2 -0
- package/src/bin.js +5 -0
- package/src/bin.js.map +1 -0
- package/src/crudGenerator/index.d.ts +3 -0
- package/src/crudGenerator/index.js +96 -0
- package/src/crudGenerator/index.js.map +1 -0
- package/src/crudGenerator/templates/mutation.d.ts +9 -0
- package/src/crudGenerator/templates/mutation.js +59 -0
- package/src/crudGenerator/templates/mutation.js.map +1 -0
- package/src/crudGenerator/templates/object.d.ts +4 -0
- package/src/crudGenerator/templates/object.js +59 -0
- package/src/crudGenerator/templates/object.js.map +1 -0
- package/src/crudGenerator/templates/query.d.ts +6 -0
- package/src/crudGenerator/templates/query.js +37 -0
- package/src/crudGenerator/templates/query.js.map +1 -0
- package/src/crudGenerator/templates/resolver.d.ts +2 -0
- package/src/crudGenerator/templates/resolver.js +35 -0
- package/src/crudGenerator/templates/resolver.js.map +1 -0
- package/src/crudGenerator/templates/root.d.ts +20 -0
- package/src/crudGenerator/templates/root.js +305 -0
- package/src/crudGenerator/templates/root.js.map +1 -0
- package/src/crudGenerator/utils/generator.d.ts +10 -0
- package/src/crudGenerator/utils/generator.js +20 -0
- package/src/crudGenerator/utils/generator.js.map +1 -0
- package/src/crudGenerator/utils/objectFields.d.ts +7 -0
- package/src/crudGenerator/utils/objectFields.js +58 -0
- package/src/crudGenerator/utils/objectFields.js.map +1 -0
- package/src/crudGenerator/utils/parts.d.ts +25 -0
- package/src/crudGenerator/utils/parts.js +132 -0
- package/src/crudGenerator/utils/parts.js.map +1 -0
- package/src/env.d.ts +3 -0
- package/src/env.js +7 -0
- package/src/env.js.map +1 -0
- package/src/generator.d.ts +6 -0
- package/src/generator.js +22 -0
- package/src/generator.js.map +1 -0
- package/src/index.d.ts +2 -0
- package/src/index.js +3 -0
- package/src/index.js.map +1 -0
- package/src/inputsGenerator/index.d.ts +34 -0
- package/src/inputsGenerator/index.js +19 -0
- package/src/inputsGenerator/index.js.map +1 -0
- package/src/inputsGenerator/utils/dmmf.d.ts +20 -0
- package/src/inputsGenerator/utils/dmmf.js +113 -0
- package/src/inputsGenerator/utils/dmmf.js.map +1 -0
- package/src/inputsGenerator/utils/inputFields.d.ts +4 -0
- package/src/inputsGenerator/utils/inputFields.js +74 -0
- package/src/inputsGenerator/utils/inputFields.js.map +1 -0
- package/src/inputsGenerator/utils/parser.d.ts +5 -0
- package/src/inputsGenerator/utils/parser.js +23 -0
- package/src/inputsGenerator/utils/parser.js.map +1 -0
- package/src/inputsGenerator/utils/parts.d.ts +7 -0
- package/src/inputsGenerator/utils/parts.js +158 -0
- package/src/inputsGenerator/utils/parts.js.map +1 -0
- package/src/inputsGenerator/utils/templates.d.ts +8 -0
- package/src/inputsGenerator/utils/templates.js +60 -0
- package/src/inputsGenerator/utils/templates.js.map +1 -0
- package/src/utils/config.d.ts +85 -0
- package/src/utils/config.js +113 -0
- package/src/utils/config.js.map +1 -0
- package/src/utils/configUtils.d.ts +2 -0
- package/src/utils/configUtils.js +9 -0
- package/src/utils/configUtils.js.map +1 -0
- package/src/utils/filesystem.d.ts +7 -0
- package/src/utils/filesystem.js +38 -0
- package/src/utils/filesystem.js.map +1 -0
- package/src/utils/replacer.d.ts +4 -0
- package/src/utils/replacer.js +3 -0
- package/src/utils/replacer.js.map +1 -0
- package/src/utils/string.d.ts +4 -0
- package/src/utils/string.js +18 -0
- package/src/utils/string.js.map +1 -0
- package/src/utils/template.d.ts +3 -0
- package/src/utils/template.js +13 -0
- package/src/utils/template.js.map +1 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getObjectFieldsString = exports.cleanifyDocumentation = void 0;
|
|
4
|
+
const configUtils_1 = require("../../utils/configUtils");
|
|
5
|
+
const string_1 = require("../../utils/string");
|
|
6
|
+
const template_1 = require("../../utils/template");
|
|
7
|
+
const object_1 = require("../templates/object");
|
|
8
|
+
const cleanifyDocumentation = (str) => str === null || str === void 0 ? void 0 : str.replace(/\s*@Pothos\.omit\(.*\)\s*/, '');
|
|
9
|
+
exports.cleanifyDocumentation = cleanifyDocumentation;
|
|
10
|
+
const getObjectFieldsString = (modelName, fields, config) => fields.reduce(({ fields, exportFields }, { isId, type: fieldType, name, relationName, isRequired, documentation, isList }) => {
|
|
11
|
+
const nameUpper = (0, string_1.firstLetterUpperCase)(name);
|
|
12
|
+
const cleanDocumentation = (0, string_1.escapeQuotesAndMultilineSupport)((0, exports.cleanifyDocumentation)(documentation));
|
|
13
|
+
const description = `${cleanDocumentation}` || 'undefined'; // field description defined in schema.prisma
|
|
14
|
+
const nullable = isRequired ? 'false' : 'true';
|
|
15
|
+
const type = fieldType === 'BigInt' ? 'Bigint' : fieldType;
|
|
16
|
+
const optionalUnderscore = (0, configUtils_1.getConfigCrudUnderscore)(config);
|
|
17
|
+
const obj = `${modelName}${optionalUnderscore}${nameUpper}${optionalUnderscore}FieldObject`;
|
|
18
|
+
const templateOpts = { modelName, name, nameUpper, description, nullable, type, optionalUnderscore };
|
|
19
|
+
// Relation
|
|
20
|
+
if (relationName) {
|
|
21
|
+
fields.push(`${name}: t.relation('${name}', ${obj}${isList ? '(t)' : ''}),`);
|
|
22
|
+
if (isList)
|
|
23
|
+
exportFields.push((0, template_1.useTemplate)(object_1.listRelationObjectTemplate, {
|
|
24
|
+
...templateOpts,
|
|
25
|
+
typeUpper: (0, string_1.firstLetterUpperCase)(templateOpts.type),
|
|
26
|
+
}));
|
|
27
|
+
else
|
|
28
|
+
exportFields.push((0, template_1.useTemplate)(object_1.relationObjectTemplate, templateOpts));
|
|
29
|
+
return { fields, exportFields };
|
|
30
|
+
}
|
|
31
|
+
// Scalar (DateTime, Json, Enums, etc.)
|
|
32
|
+
fields.push(`${name}: t.field(${obj}),`);
|
|
33
|
+
const shouldBeGraphqlId = isId && config.crud.mapIdFieldsToGraphqlId === 'Objects';
|
|
34
|
+
exportFields.push((0, template_1.useTemplate)(object_1.fieldObjectTemplate, {
|
|
35
|
+
...templateOpts,
|
|
36
|
+
conditionalType: (() => {
|
|
37
|
+
const type = templateOpts.type;
|
|
38
|
+
const isNativeType = ['String', 'Int', 'Float', 'Boolean'].includes(type);
|
|
39
|
+
const importedType = (() => {
|
|
40
|
+
if (shouldBeGraphqlId)
|
|
41
|
+
return `"ID"`;
|
|
42
|
+
return isNativeType ? `"${type}"` : `Inputs.${type}`;
|
|
43
|
+
})();
|
|
44
|
+
const bracketify = (str) => `[${str}]`;
|
|
45
|
+
return isList ? bracketify(importedType) : importedType;
|
|
46
|
+
})(),
|
|
47
|
+
conditionalResolve: (() => {
|
|
48
|
+
const name = templateOpts.name;
|
|
49
|
+
const value = `parent.${name}`;
|
|
50
|
+
const stringParsefy = (str) => `String(${str})`;
|
|
51
|
+
const final = shouldBeGraphqlId ? stringParsefy(value) : value;
|
|
52
|
+
return final;
|
|
53
|
+
})(),
|
|
54
|
+
}));
|
|
55
|
+
return { fields, exportFields };
|
|
56
|
+
}, { fields: [], exportFields: [] });
|
|
57
|
+
exports.getObjectFieldsString = getObjectFieldsString;
|
|
58
|
+
//# sourceMappingURL=objectFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objectFields.js","sourceRoot":"","sources":["../../../../src/crudGenerator/utils/objectFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ConfigInternal } from '../../utils/config';
|
|
2
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
3
|
+
type ResolverType = 'queries' | 'mutations';
|
|
4
|
+
export type GeneratedResolver = {
|
|
5
|
+
resolverName: string;
|
|
6
|
+
modelName: string;
|
|
7
|
+
type: ResolverType;
|
|
8
|
+
};
|
|
9
|
+
/** Write index.ts */
|
|
10
|
+
export declare function writeIndex(config: ConfigInternal, model: DMMF.Model, { queries, mutations }: {
|
|
11
|
+
queries: GeneratedResolver[];
|
|
12
|
+
mutations: GeneratedResolver[];
|
|
13
|
+
}): Promise<{
|
|
14
|
+
name: string;
|
|
15
|
+
exports: string[];
|
|
16
|
+
}[]>;
|
|
17
|
+
/** Write object.base.ts */
|
|
18
|
+
export declare function writeObject(config: ConfigInternal, model: DMMF.Model): Promise<void>;
|
|
19
|
+
export declare const getBuilderCalculatedImport: ({ config, fileLocation, }: {
|
|
20
|
+
fileLocation: string;
|
|
21
|
+
config: ConfigInternal;
|
|
22
|
+
}) => string;
|
|
23
|
+
/** Write resolvers (e.g. findFirst, findUnique, createOne, etc) */
|
|
24
|
+
export declare function writeResolvers(config: ConfigInternal, model: DMMF.Model, type: ResolverType, templates: Record<string, string>): Promise<GeneratedResolver[]>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getBuilderCalculatedImport = void 0;
|
|
7
|
+
exports.writeIndex = writeIndex;
|
|
8
|
+
exports.writeObject = writeObject;
|
|
9
|
+
exports.writeResolvers = writeResolvers;
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
const configUtils_1 = require("../../utils/configUtils");
|
|
12
|
+
const filesystem_1 = require("../../utils/filesystem");
|
|
13
|
+
const string_1 = require("../../utils/string");
|
|
14
|
+
const template_1 = require("../../utils/template");
|
|
15
|
+
const object_1 = require("../templates/object");
|
|
16
|
+
const objectFields_1 = require("./objectFields");
|
|
17
|
+
const getResolverTypeName = (type) => {
|
|
18
|
+
return type === 'mutations' ? 'Mutation' : 'Query';
|
|
19
|
+
};
|
|
20
|
+
/** Write index.ts */
|
|
21
|
+
async function writeIndex(config, model, { queries, mutations }) {
|
|
22
|
+
const queriesExports = queries.map((el) => `${el.resolverName}${el.modelName}${getResolverTypeName(el.type)}`);
|
|
23
|
+
const mutationsExports = mutations.map((el) => `${el.resolverName}${el.modelName}${getResolverTypeName(el.type)}`);
|
|
24
|
+
const optionalUnderscore = (0, configUtils_1.getConfigCrudUnderscore)(config);
|
|
25
|
+
const exportsWithName = [
|
|
26
|
+
{
|
|
27
|
+
name: './object.base',
|
|
28
|
+
exports: [
|
|
29
|
+
`${model.name}${optionalUnderscore}Object`,
|
|
30
|
+
...model.fields.map((el) => `${model.name}${optionalUnderscore}${(0, string_1.firstLetterUpperCase)(el.name)}${optionalUnderscore}FieldObject`),
|
|
31
|
+
],
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: './mutations',
|
|
35
|
+
exports: [...mutationsExports, ...mutationsExports.map((el) => `${el}Object`)],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: './queries',
|
|
39
|
+
exports: [...queriesExports, ...queriesExports.map((el) => `${el}Object`)],
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
// TODO Refactor this logic + tests
|
|
43
|
+
const exports = exportsWithName
|
|
44
|
+
.filter((el) => el.exports.length)
|
|
45
|
+
.map((el) => `export {\n ${el.exports.join(',\n ')}\n} from '${el.name}';`);
|
|
46
|
+
const outputPath = node_path_1.default.join(config.crud.outputDir, model.name, 'index.ts');
|
|
47
|
+
const content = exports.join('\n') + '\n';
|
|
48
|
+
await (0, filesystem_1.writeFile)(config, 'crud.model.index', content, outputPath);
|
|
49
|
+
return exportsWithName;
|
|
50
|
+
}
|
|
51
|
+
/** Write object.base.ts */
|
|
52
|
+
async function writeObject(config, model) {
|
|
53
|
+
var _a;
|
|
54
|
+
// findUnique
|
|
55
|
+
const idField = model.fields.find((f) => f.isId);
|
|
56
|
+
let findUnique = `(fields) => ({ ...fields })`;
|
|
57
|
+
if (idField)
|
|
58
|
+
findUnique = `({ ${idField.name} }) => ({ ${idField.name} })`;
|
|
59
|
+
if ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields)
|
|
60
|
+
findUnique = `(fields) => ({ ${model.primaryKey.name || (0, string_1.getCompositeName)(model.primaryKey.fields)}: fields })`;
|
|
61
|
+
// Fields
|
|
62
|
+
const { fields, exportFields } = (0, objectFields_1.getObjectFieldsString)(model.name, model.fields, config);
|
|
63
|
+
const fileLocation = node_path_1.default.join(config.crud.outputDir, model.name, 'object.base.ts');
|
|
64
|
+
const builderCalculatedImport = (0, exports.getBuilderCalculatedImport)({ config, fileLocation });
|
|
65
|
+
// Write output
|
|
66
|
+
await (0, filesystem_1.writeFile)(config, 'crud.model.object', (0, template_1.useTemplate)(object_1.objectTemplate, {
|
|
67
|
+
modelName: model.name,
|
|
68
|
+
description: (0, string_1.escapeQuotesAndMultilineSupport)(model.documentation) || 'undefined', // Object description defined in schema.prisma
|
|
69
|
+
findUnique,
|
|
70
|
+
inputsImporter: config.crud.inputsImporter,
|
|
71
|
+
fields: fields.join('\n '),
|
|
72
|
+
exportFields: exportFields.join('\n\n'),
|
|
73
|
+
builderCalculatedImport,
|
|
74
|
+
optionalUnderscore: (0, configUtils_1.getConfigCrudUnderscore)(config),
|
|
75
|
+
}), fileLocation);
|
|
76
|
+
}
|
|
77
|
+
const isExcludedResolver = (options, name) => {
|
|
78
|
+
const { excludeResolversContain, excludeResolversExact, includeResolversContain, includeResolversExact } = options.crud || {};
|
|
79
|
+
if (includeResolversExact.length) {
|
|
80
|
+
return !includeResolversExact.includes(name);
|
|
81
|
+
}
|
|
82
|
+
if (includeResolversContain.length) {
|
|
83
|
+
return !includeResolversContain.some((include) => name.includes(include));
|
|
84
|
+
}
|
|
85
|
+
if (excludeResolversExact.length && excludeResolversExact.includes(name)) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
if (excludeResolversContain.length && excludeResolversContain.some((r) => name.includes(r))) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
};
|
|
93
|
+
const getBuilderCalculatedImport = ({ config, fileLocation, }) => {
|
|
94
|
+
const builderRelative = node_path_1.default.relative(process.cwd(), node_path_1.default.join(process.cwd(), config.global.builderLocation));
|
|
95
|
+
const relativeImport = node_path_1.default.relative(node_path_1.default.dirname(fileLocation), builderRelative);
|
|
96
|
+
const stringImport = node_path_1.default.sep === '\\' ? relativeImport.replace(/\\/g, '/') : relativeImport;
|
|
97
|
+
const importer = `\nimport { builder } from '${stringImport}';`;
|
|
98
|
+
return importer;
|
|
99
|
+
};
|
|
100
|
+
exports.getBuilderCalculatedImport = getBuilderCalculatedImport;
|
|
101
|
+
/** Write resolvers (e.g. findFirst, findUnique, createOne, etc) */
|
|
102
|
+
async function writeResolvers(config, model, type, templates) {
|
|
103
|
+
const { inputsImporter } = config.crud;
|
|
104
|
+
const resolverInputsImporter = inputsImporter.includes('../')
|
|
105
|
+
? inputsImporter.replace('../', '../../') // go a level inside to import
|
|
106
|
+
: inputsImporter;
|
|
107
|
+
const resolvers = Object.entries(templates).filter(([name]) => !isExcludedResolver(config, `${name}${model.name}`));
|
|
108
|
+
// Generate files
|
|
109
|
+
await Promise.all(resolvers.map(([name, template]) => {
|
|
110
|
+
const fileLocation = node_path_1.default.join(config.crud.outputDir, model.name, type, `${name}.base.ts`);
|
|
111
|
+
const builderCalculatedImport = (0, exports.getBuilderCalculatedImport)({ config, fileLocation });
|
|
112
|
+
return (0, filesystem_1.writeFile)(config, 'crud.model.resolver', (0, template_1.useTemplate)(template, {
|
|
113
|
+
modelName: model.name,
|
|
114
|
+
modelNameLower: (0, string_1.firstLetterLowerCase)(model.name),
|
|
115
|
+
modelNameUpper: (0, string_1.firstLetterUpperCase)(model.name),
|
|
116
|
+
prisma: config.crud.prismaCaller,
|
|
117
|
+
resolverImports: config.crud.resolverImports,
|
|
118
|
+
inputsImporter: resolverInputsImporter,
|
|
119
|
+
builderCalculatedImport,
|
|
120
|
+
}), fileLocation);
|
|
121
|
+
}));
|
|
122
|
+
if (resolvers.length)
|
|
123
|
+
await (0, filesystem_1.writeFile)(config, 'crud.model.resolverIndex',
|
|
124
|
+
// TODO Refactor this logic + tests
|
|
125
|
+
resolvers
|
|
126
|
+
.map(([name]) => `export ${(() => {
|
|
127
|
+
return `{ ${name}${model.name}${type === 'mutations' ? 'Mutation' : 'Query'}, ${name}${model.name}${getResolverTypeName(type)}Object }`;
|
|
128
|
+
})()} from './${name}.base';`)
|
|
129
|
+
.join('\n') + '\n', node_path_1.default.join(config.crud.outputDir, model.name, type, 'index.ts'));
|
|
130
|
+
return resolvers.map(([resolverName]) => ({ resolverName, modelName: model.name, type }));
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parts.js","sourceRoot":"","sources":["../../../../src/crudGenerator/utils/parts.ts"],"names":[],"mappings":"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"}
|
package/src/env.d.ts
ADDED
package/src/env.js
ADDED
package/src/env.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/env.ts"],"names":[],"mappings":";;;AAAa,QAAA,GAAG,GAAG;IACjB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;CACxC,CAAA"}
|
package/src/generator.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const generator_helper_1 = require("@prisma/generator-helper");
|
|
4
|
+
const crudGenerator_1 = require("./crudGenerator");
|
|
5
|
+
const inputsGenerator_1 = require("./inputsGenerator");
|
|
6
|
+
const config_1 = require("./utils/config");
|
|
7
|
+
(0, generator_helper_1.generatorHandler)({
|
|
8
|
+
onManifest: () => ({
|
|
9
|
+
prettyName: 'Pothos inputs & crud integration',
|
|
10
|
+
requiresGenerators: ['prisma-client-js', 'prisma-pothos-types'],
|
|
11
|
+
defaultOutput: './generated/inputs.ts',
|
|
12
|
+
}),
|
|
13
|
+
onGenerate: async (options) => {
|
|
14
|
+
const generatorConfig = { ...options, ...options.generator.config };
|
|
15
|
+
const config = await (0, config_1.getConfig)(generatorConfig);
|
|
16
|
+
config.global.beforeGenerate(options.dmmf);
|
|
17
|
+
await (0, crudGenerator_1.generateCrud)(config, options.dmmf);
|
|
18
|
+
await (0, inputsGenerator_1.generateInputs)(config, options.dmmf);
|
|
19
|
+
config.global.afterGenerate(options.dmmf);
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/generator.ts"],"names":[],"mappings":";;AAAA,+DAA6E;AAC7E,mDAA8C;AAC9C,uDAAkD;AAClD,2CAA0C;AAQ1C,IAAA,mCAAgB,EAAC;IACf,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,UAAU,EAAE,kCAAkC;QAC9C,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;QAC/D,aAAa,EAAE,uBAAuB;KACvC,CAAC;IACF,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAC5B,MAAM,eAAe,GAA6B,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;QAC7F,MAAM,MAAM,GAAG,MAAM,IAAA,kBAAS,EAAC,eAAe,CAAC,CAAA;QAE/C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,IAAA,4BAAY,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,IAAA,gCAAc,EAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAC1C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;CACF,CAAC,CAAA"}
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ConfigInternal } from '../utils/config';
|
|
2
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
3
|
+
/** Types may vary between Prisma versions */
|
|
4
|
+
export type Scalars<DecimalType, JsonInput, JsonOutput> = {
|
|
5
|
+
DateTime: {
|
|
6
|
+
Input: Date;
|
|
7
|
+
Output: Date;
|
|
8
|
+
};
|
|
9
|
+
Decimal: {
|
|
10
|
+
Input: DecimalType;
|
|
11
|
+
Output: DecimalType;
|
|
12
|
+
};
|
|
13
|
+
BigInt: {
|
|
14
|
+
Input: bigint;
|
|
15
|
+
Output: bigint;
|
|
16
|
+
};
|
|
17
|
+
Json: {
|
|
18
|
+
Input: JsonInput;
|
|
19
|
+
Output: JsonOutput;
|
|
20
|
+
};
|
|
21
|
+
Bytes: {
|
|
22
|
+
/** Prisma returns `Uint8Array` for Bytes fields since Prisma 6; Buffer is also a Uint8Array so both are accepted */
|
|
23
|
+
Input: Buffer | Uint8Array;
|
|
24
|
+
Output: {
|
|
25
|
+
type: 'Buffer';
|
|
26
|
+
data: number[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
NEVER: {
|
|
30
|
+
Input: void;
|
|
31
|
+
Output: void;
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export declare function generateInputs(config: ConfigInternal, dmmf: DMMF.Document): Promise<void>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateInputs = generateInputs;
|
|
4
|
+
const env_1 = require("../env");
|
|
5
|
+
const filesystem_1 = require("../utils/filesystem");
|
|
6
|
+
const parts_1 = require("./utils/parts");
|
|
7
|
+
async function generateInputs(config, dmmf) {
|
|
8
|
+
if (env_1.env.isTesting)
|
|
9
|
+
await (0, filesystem_1.writeFile)(config, 'debug.dmmf', JSON.stringify(dmmf, null, 2), 'dmmf.json');
|
|
10
|
+
const fileLocation = config.inputs.outputFilePath;
|
|
11
|
+
const imports = (0, parts_1.getImports)(config, fileLocation);
|
|
12
|
+
const util = (0, parts_1.getUtil)();
|
|
13
|
+
const scalars = (0, parts_1.getScalars)(config, dmmf);
|
|
14
|
+
const enums = (0, parts_1.getEnums)(dmmf);
|
|
15
|
+
const inputs = (0, parts_1.getInputs)(config, dmmf);
|
|
16
|
+
const content = [imports, util, scalars, enums, inputs].join('\n\n');
|
|
17
|
+
await (0, filesystem_1.writeFile)(config, 'inputs', content, fileLocation);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/inputsGenerator/index.ts"],"names":[],"mappings":";;AAsCA,wCAaC;AAnDD,gCAA4B;AAE5B,oDAA+C;AAC/C,yCAAoF;AAmC7E,KAAK,UAAU,cAAc,CAAC,MAAsB,EAAE,IAAmB;IAC9E,IAAI,SAAG,CAAC,SAAS;QAAE,MAAM,IAAA,sBAAS,EAAC,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAA;IAEpG,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAA;IAEjD,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAChD,MAAM,IAAI,GAAG,IAAA,eAAO,GAAE,CAAA;IACtB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEpE,MAAM,IAAA,sBAAS,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
2
|
+
export type UsedScalars = {
|
|
3
|
+
hasDateTime: boolean;
|
|
4
|
+
hasDecimal: boolean;
|
|
5
|
+
hasBytes: boolean;
|
|
6
|
+
hasJson: boolean;
|
|
7
|
+
hasBigInt: boolean;
|
|
8
|
+
hasNEVER: boolean;
|
|
9
|
+
};
|
|
10
|
+
/** Reads the input types and returns what scalars are used */
|
|
11
|
+
export declare function getUsedScalars(inputs: readonly DMMF.InputType[]): UsedScalars;
|
|
12
|
+
/** Find main input type (list or not, since GraphQL input types don't allow unions) */
|
|
13
|
+
export declare function getMainInput(): {
|
|
14
|
+
run: (rawInputs: readonly DMMF.InputTypeRef[]) => DMMF.InputTypeRef;
|
|
15
|
+
priorizeJson: (inputs: DMMF.InputTypeRef[]) => DMMF.InputTypeRef | undefined;
|
|
16
|
+
priorizeNotScalar: (inputs: DMMF.InputTypeRef[]) => DMMF.InputTypeRef | undefined;
|
|
17
|
+
priorizeList: (inputs: DMMF.InputTypeRef[]) => DMMF.InputTypeRef | undefined;
|
|
18
|
+
priorizeWhereInput: (inputs: DMMF.InputTypeRef[]) => DMMF.InputTypeRef | undefined;
|
|
19
|
+
priorizeSetUpdateAlternative: (inputs: DMMF.InputTypeRef[]) => DMMF.InputTypeRef | undefined;
|
|
20
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUsedScalars = getUsedScalars;
|
|
4
|
+
exports.getMainInput = getMainInput;
|
|
5
|
+
/** Reads the input types and returns what scalars are used */
|
|
6
|
+
function getUsedScalars(inputs) {
|
|
7
|
+
let hasDateTime = false;
|
|
8
|
+
let hasDecimal = false;
|
|
9
|
+
let hasBytes = false;
|
|
10
|
+
let hasJson = false;
|
|
11
|
+
let hasBigInt = false;
|
|
12
|
+
let hasNEVER = false;
|
|
13
|
+
for (const { fields } of inputs) {
|
|
14
|
+
if (fields.length === 0)
|
|
15
|
+
hasNEVER = true;
|
|
16
|
+
for (const { inputTypes } of fields) {
|
|
17
|
+
for (const { type, location } of inputTypes) {
|
|
18
|
+
if (type === 'Json' && location === 'scalar')
|
|
19
|
+
hasJson = true;
|
|
20
|
+
if (type === 'DateTime' && location === 'scalar')
|
|
21
|
+
hasDateTime = true;
|
|
22
|
+
if (type === 'Decimal' && location === 'scalar')
|
|
23
|
+
hasDecimal = true;
|
|
24
|
+
if (type === 'Bytes' && location === 'scalar')
|
|
25
|
+
hasBytes = true;
|
|
26
|
+
if (type === 'BigInt' && location === 'scalar')
|
|
27
|
+
hasBigInt = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return { hasDateTime, hasDecimal, hasBytes, hasJson, hasBigInt, hasNEVER };
|
|
32
|
+
}
|
|
33
|
+
/** Find main input type (list or not, since GraphQL input types don't allow unions) */
|
|
34
|
+
function getMainInput() {
|
|
35
|
+
// If one list, priorize it
|
|
36
|
+
const priorizeJson = (inputs) => {
|
|
37
|
+
const listInputs = inputs.find((el) => el.type === 'Json');
|
|
38
|
+
if (listInputs) {
|
|
39
|
+
return listInputs;
|
|
40
|
+
}
|
|
41
|
+
return undefined;
|
|
42
|
+
};
|
|
43
|
+
// If has list, priorize it
|
|
44
|
+
const priorizeList = (inputs) => {
|
|
45
|
+
const listInputs = inputs.filter((el) => el.isList);
|
|
46
|
+
const hasList = listInputs.length >= 1;
|
|
47
|
+
if (hasList) {
|
|
48
|
+
return listInputs[0];
|
|
49
|
+
}
|
|
50
|
+
return undefined;
|
|
51
|
+
};
|
|
52
|
+
// If not list, priorize not scalar
|
|
53
|
+
const priorizeNotScalar = (inputs) => {
|
|
54
|
+
const listInputs = inputs.filter((el) => el.isList);
|
|
55
|
+
const exactlyOneIsList = listInputs.length === 0;
|
|
56
|
+
if (exactlyOneIsList) {
|
|
57
|
+
return inputs.find((el) => el.location !== 'scalar');
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
};
|
|
61
|
+
// If one list, priorize it
|
|
62
|
+
const priorizeWhereInput = (inputs) => {
|
|
63
|
+
const listInputs = inputs.find((el) => el.type.toString().includes('WhereInput'));
|
|
64
|
+
if (listInputs) {
|
|
65
|
+
return listInputs;
|
|
66
|
+
}
|
|
67
|
+
return undefined;
|
|
68
|
+
};
|
|
69
|
+
// If one list, priorize it
|
|
70
|
+
const priorizeSetUpdateAlternative = (inputs) => {
|
|
71
|
+
const setType = inputs.find((el) => el.type.toString().includes('FieldUpdateOperationsInput'));
|
|
72
|
+
if (setType) {
|
|
73
|
+
return setType;
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
};
|
|
77
|
+
const run = (rawInputs) => {
|
|
78
|
+
// Ignore fieldRefTypes
|
|
79
|
+
const inputs = rawInputs.filter((el) => el.location !== 'fieldRefTypes');
|
|
80
|
+
const first = inputs[0];
|
|
81
|
+
if (!first)
|
|
82
|
+
throw new Error('No input type found');
|
|
83
|
+
const second = inputs[1];
|
|
84
|
+
if (first && !second)
|
|
85
|
+
return first;
|
|
86
|
+
// ! ORDER MATTERS
|
|
87
|
+
const isJsonPriority = priorizeJson(inputs);
|
|
88
|
+
if (isJsonPriority)
|
|
89
|
+
return isJsonPriority;
|
|
90
|
+
const isListPriority = priorizeList(inputs);
|
|
91
|
+
if (isListPriority)
|
|
92
|
+
return isListPriority;
|
|
93
|
+
const whereInputPriority = priorizeWhereInput(inputs);
|
|
94
|
+
if (whereInputPriority)
|
|
95
|
+
return whereInputPriority;
|
|
96
|
+
const setUpdateAlternativePriority = priorizeSetUpdateAlternative(inputs);
|
|
97
|
+
if (setUpdateAlternativePriority)
|
|
98
|
+
return setUpdateAlternativePriority;
|
|
99
|
+
const isNotScalarPriority = priorizeNotScalar(inputs);
|
|
100
|
+
if (isNotScalarPriority)
|
|
101
|
+
return isNotScalarPriority;
|
|
102
|
+
return first;
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
run,
|
|
106
|
+
priorizeJson,
|
|
107
|
+
priorizeNotScalar,
|
|
108
|
+
priorizeList,
|
|
109
|
+
priorizeWhereInput,
|
|
110
|
+
priorizeSetUpdateAlternative,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=dmmf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dmmf.js","sourceRoot":"","sources":["../../../../src/inputsGenerator/utils/dmmf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ConfigInternal } from '../../utils/config';
|
|
2
|
+
import type { DMMF } from '@prisma/generator-helper';
|
|
3
|
+
/** Convert array of fields to a string code representation */
|
|
4
|
+
export declare const getInputFieldsString: (input: DMMF.InputType, model: DMMF.Model | undefined, config: ConfigInternal) => string;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getInputFieldsString = void 0;
|
|
4
|
+
const string_1 = require("../../utils/string");
|
|
5
|
+
const dmmf_1 = require("./dmmf");
|
|
6
|
+
const parser_1 = require("./parser");
|
|
7
|
+
/** Convert array of fields to a string code representation */
|
|
8
|
+
const getInputFieldsString = (input, model, config) => {
|
|
9
|
+
const omitted = [];
|
|
10
|
+
const simple = config.inputs.simple;
|
|
11
|
+
const filtered = input.fields.filter((field) => {
|
|
12
|
+
// Fields are filtered for simple mode if this is enabled
|
|
13
|
+
if (simple &&
|
|
14
|
+
['create', 'connectOrCreate', 'createMany', 'upsert', 'update', 'updateMany', 'delete', 'deleteMany'].includes(field.name)) {
|
|
15
|
+
omitted.push({ name: field.name, reason: '`simple mode: true` found in global config' });
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Description is parsed for @Pothos.omit() comments and input fields are filtered
|
|
19
|
+
const modelField = model === null || model === void 0 ? void 0 : model.fields.find((f) => f.name === field.name);
|
|
20
|
+
if (!modelField || !modelField.documentation)
|
|
21
|
+
return true;
|
|
22
|
+
const omitTypes = (0, parser_1.parseComment)(modelField.documentation);
|
|
23
|
+
if (!omitTypes)
|
|
24
|
+
return true;
|
|
25
|
+
if (omitTypes === 'all' ||
|
|
26
|
+
omitTypes.some((omitType) => input.name.startsWith(`${model === null || model === void 0 ? void 0 : model.name}${(0, string_1.firstLetterUpperCase)(omitType)}`) ||
|
|
27
|
+
input.name.startsWith(`${model === null || model === void 0 ? void 0 : model.name}Unchecked${(0, string_1.firstLetterUpperCase)(omitType)}`))) {
|
|
28
|
+
omitted.push({ name: field.name, reason: '@Pothos.omit found in schema comment' });
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
});
|
|
33
|
+
// Convert remaining fields to string representation
|
|
34
|
+
const fields = filtered.length === 0
|
|
35
|
+
? ['_: t.field({ type: NEVER }),']
|
|
36
|
+
: filtered.map((field) => {
|
|
37
|
+
const { isList, type, location } = (0, dmmf_1.getMainInput)().run(field.inputTypes);
|
|
38
|
+
const props = { required: field.isRequired, description: undefined };
|
|
39
|
+
const defaultScalarList = ['String', 'Int', 'Float', 'Boolean'];
|
|
40
|
+
const isScalar = location === 'scalar' && defaultScalarList.includes(type.toString());
|
|
41
|
+
const getFieldType = () => {
|
|
42
|
+
if (isList) {
|
|
43
|
+
return `${type}List`;
|
|
44
|
+
}
|
|
45
|
+
if (isScalar && config.inputs.mapIdFieldsToGraphqlId === 'WhereUniqueInputs') {
|
|
46
|
+
const fieldDetails = model === null || model === void 0 ? void 0 : model.fields.find((f) => f.name === field.name);
|
|
47
|
+
if (fieldDetails === null || fieldDetails === void 0 ? void 0 : fieldDetails.isId) {
|
|
48
|
+
return 'id';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return type.toString();
|
|
52
|
+
};
|
|
53
|
+
const getScalar = () => {
|
|
54
|
+
// TODO parse date to string ??
|
|
55
|
+
const fieldType = getFieldType();
|
|
56
|
+
return `${(0, string_1.firstLetterLowerCase)(fieldType)}(${JSON.stringify(props)})`;
|
|
57
|
+
};
|
|
58
|
+
const getField = () => {
|
|
59
|
+
// BigInt is reserved
|
|
60
|
+
const renamedType = type === 'BigInt' ? 'Bigint' : type;
|
|
61
|
+
const fieldType = isList ? `[${renamedType}]` : renamedType.toString();
|
|
62
|
+
const relationProps = { ...props, type: fieldType };
|
|
63
|
+
// "type":"CommentCreateInput" -> "type":CommentCreateInput
|
|
64
|
+
return `field(${JSON.stringify(relationProps).replace(/(type.+:)"(.+)"/, '$1$2')})`;
|
|
65
|
+
};
|
|
66
|
+
return `${field.name}: t.${isScalar ? getScalar() : getField()},`;
|
|
67
|
+
});
|
|
68
|
+
const sep = '\n ';
|
|
69
|
+
return `${fields.join(sep)}${omitted.length > 0 ? sep : ''}${omitted
|
|
70
|
+
.map((o) => `// '${o.name}' was omitted due to ${o.reason}`)
|
|
71
|
+
.join(sep)}`;
|
|
72
|
+
};
|
|
73
|
+
exports.getInputFieldsString = getInputFieldsString;
|
|
74
|
+
//# sourceMappingURL=inputFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputFields.js","sourceRoot":"","sources":["../../../../src/inputsGenerator/utils/inputFields.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseComment = parseComment;
|
|
4
|
+
const validOptions = ['create', 'update', 'where', 'orderBy'];
|
|
5
|
+
function parseComment(comment) {
|
|
6
|
+
var _a;
|
|
7
|
+
const omitRegex = /@Pothos\.omit\(([^)]*)\)/;
|
|
8
|
+
const matches = comment.match(omitRegex);
|
|
9
|
+
if (!matches) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const omitValues = (_a = matches[1]) === null || _a === void 0 ? void 0 : _a.split(',').map((value) => value.trim()).filter(Boolean);
|
|
13
|
+
if (!omitValues)
|
|
14
|
+
return null;
|
|
15
|
+
if (omitValues.length === 0) {
|
|
16
|
+
return 'all';
|
|
17
|
+
}
|
|
18
|
+
const hasUnrecognized = omitValues.some((el) => !validOptions.includes(el));
|
|
19
|
+
if (hasUnrecognized)
|
|
20
|
+
return null;
|
|
21
|
+
return omitValues;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../src/inputsGenerator/utils/parser.ts"],"names":[],"mappings":";;AAIA,oCAuBC;AA3BD,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAU,CAAA;AAItE,SAAgB,YAAY,CAAC,OAAe;;IAC1C,MAAM,SAAS,GAAG,0BAA0B,CAAA;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,CAAC,CAAC,0CACzB,KAAK,CAAC,GAAG,EACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAC3B,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAE5B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAU,CAAC,CAAC,CAAA;IACnF,IAAI,eAAe;QAAE,OAAO,IAAI,CAAA;IAEhC,OAAO,UAAoB,CAAA;AAC7B,CAAC"}
|