kapix-typegraphql-prisma
Version:

67 lines • 4.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generate = void 0;
const tslib_1 = require("tslib");
const internals_1 = require("@prisma/internals");
const fs_1 = require("fs");
const path_1 = tslib_1.__importDefault(require("path"));
const generate_code_1 = tslib_1.__importDefault(require("../generator/generate-code"));
const removeDir_1 = tslib_1.__importDefault(require("../utils/removeDir"));
const emit_block_1 = require("../generator/emit-block");
const helpers_1 = require("./helpers");
async function generate(options) {
var _a, _b, _c;
const outputDir = (0, internals_1.parseEnvValue)(options.generator.output);
await fs_1.promises.mkdir(outputDir, { recursive: true });
await (0, removeDir_1.default)(outputDir, true);
const prismaClientProvider = options.otherGenerators.find(it => (0, internals_1.parseEnvValue)(it.provider) === "prisma-client-js");
const prismaClientPath = (0, internals_1.parseEnvValue)(prismaClientProvider.output);
const prismaClientDmmf = await (0, internals_1.getDMMF)({
datamodel: options.datamodel,
previewFeatures: prismaClientProvider.previewFeatures,
});
const generatorConfig = options.generator.config;
// TODO: make this type `?-` and `| undefined`
const externalConfig = {
debugGenerateCode: (0, helpers_1.parseStringBoolean)(generatorConfig.debugGenerateCode),
lodashImportName: generatorConfig.lodashImportName,
emitDMMF: (0, helpers_1.parseStringBoolean)(generatorConfig.emitDMMF),
emitTranspiledCode: (0, helpers_1.parseStringBoolean)(generatorConfig.emitTranspiledCode),
simpleResolvers: (0, helpers_1.parseStringBoolean)(generatorConfig.simpleResolvers),
useOriginalMapping: (0, helpers_1.parseStringBoolean)(generatorConfig.useOriginalMapping),
useUncheckedScalarInputs: (0, helpers_1.parseStringBoolean)(generatorConfig.useUncheckedScalarInputs),
emitIdAsIDType: (0, helpers_1.parseStringBoolean)(generatorConfig.emitIdAsIDType),
emitOnly: (0, helpers_1.parseStringArray)(generatorConfig.emitOnly, "emitOnly", emit_block_1.ALL_EMIT_BLOCK_KINDS),
useSimpleInputs: (0, helpers_1.parseStringBoolean)(generatorConfig.useSimpleInputs),
emitRedundantTypesInfo: (_a = (0, helpers_1.parseStringBoolean)(generatorConfig.emitRedundantTypesInfo)) !== null && _a !== void 0 ? _a : true,
customPrismaImportPath: generatorConfig.customPrismaImportPath,
contextPrismaKey: generatorConfig.contextPrismaKey,
omitInputFieldsByDefault: (0, helpers_1.parseStringArray)(generatorConfig.omitInputFieldsByDefault, "omitInputFieldsByDefault"),
omitOutputFieldsByDefault: (0, helpers_1.parseStringArray)(generatorConfig.omitOutputFieldsByDefault, "omitOutputFieldsByDefault"),
formatGeneratedCode: (_b = (0, helpers_1.parseStringBoolean)(generatorConfig.formatGeneratedCode)) !== null && _b !== void 0 ? _b : (0, helpers_1.parseStringEnum)(generatorConfig.formatGeneratedCode, "formatGeneratedCode", ["prettier", "tsc"]),
emitIsAbstract: (_c = (0, helpers_1.parseStringBoolean)(generatorConfig.emitIsAbstract)) !== null && _c !== void 0 ? _c : false,
mutationActions: (0, helpers_1.parseStringArray)(generatorConfig.mutationActions, "mutationActions"),
queryActions: (0, helpers_1.parseStringArray)(generatorConfig.queryActions, "queryActions"),
};
const internalConfig = {
outputDirPath: outputDir,
prismaClientPath,
};
if (externalConfig.emitDMMF) {
await Promise.all([
fs_1.promises.writeFile(path_1.default.resolve(outputDir, "./dmmf.json"), JSON.stringify(options.dmmf, null, 2)),
fs_1.promises.writeFile(path_1.default.resolve(outputDir, "./prisma-client-dmmf.json"), JSON.stringify(prismaClientDmmf, null, 2)),
]);
}
// TODO: replace with `options.dmmf` when the spec match prisma client output
await (0, generate_code_1.default)(prismaClientDmmf, {
...externalConfig,
...internalConfig,
}, (externalConfig.debugGenerateCode &&
typeof console != undefined &&
console.log) ||
undefined);
return "";
}
exports.generate = generate;
//# sourceMappingURL=prisma-generator.js.map