prisma-generator-express 1.28.0 → 1.30.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 +244 -14
- package/dist/constants.d.ts +1 -0
- package/dist/generators/generateFastifyHandler.d.ts +4 -0
- package/dist/generators/generateFastifyHandler.js +78 -0
- package/dist/generators/generateFastifyHandler.js.map +1 -0
- package/dist/generators/generateOperationCore.d.ts +6 -0
- package/dist/generators/generateOperationCore.js +534 -0
- package/dist/generators/generateOperationCore.js.map +1 -0
- package/dist/generators/generateQueryBuilderHelper.js +85 -69
- package/dist/generators/generateQueryBuilderHelper.js.map +1 -1
- package/dist/generators/generateRouter.js +1 -25
- package/dist/generators/generateRouter.js.map +1 -1
- package/dist/generators/generateRouterFastify.d.ts +5 -0
- package/dist/generators/generateRouterFastify.js +512 -0
- package/dist/generators/generateRouterFastify.js.map +1 -0
- package/dist/generators/generateUnifiedDocs.d.ts +2 -1
- package/dist/generators/generateUnifiedDocs.js +147 -82
- package/dist/generators/generateUnifiedDocs.js.map +1 -1
- package/dist/generators/generateUnifiedHandler.d.ts +0 -1
- package/dist/generators/generateUnifiedHandler.js +47 -516
- package/dist/generators/generateUnifiedHandler.js.map +1 -1
- package/dist/generators/generateUnifiedScalarUI.d.ts +2 -0
- package/dist/generators/generateUnifiedScalarUI.js +127 -1324
- package/dist/generators/generateUnifiedScalarUI.js.map +1 -1
- package/dist/index.js +33 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/copyFiles.d.ts +2 -1
- package/dist/utils/copyFiles.js +73 -39
- package/dist/utils/copyFiles.js.map +1 -1
- package/dist/utils/writeFileSafely.js +3 -0
- package/dist/utils/writeFileSafely.js.map +1 -1
- package/package.json +4 -1
- package/src/client/encodeQueryParams.ts +1 -1
- package/src/constants.ts +2 -0
- package/src/copy/createOutputValidatorMiddleware.ts +9 -12
- package/src/copy/docsRenderer.ts +1285 -0
- package/src/copy/parseQueryParams.ts +4 -8
- package/src/copy/routeConfig.ts +10 -4
- package/src/generators/generateFastifyHandler.ts +86 -0
- package/src/generators/generateOperationCore.ts +545 -0
- package/src/generators/generateQueryBuilderHelper.ts +86 -70
- package/src/generators/generateRouter.ts +1 -25
- package/src/generators/generateRouterFastify.ts +522 -0
- package/src/generators/generateUnifiedDocs.ts +164 -81
- package/src/generators/generateUnifiedHandler.ts +45 -533
- package/src/generators/generateUnifiedScalarUI.ts +134 -1323
- package/src/index.ts +45 -9
- package/src/utils/copyFiles.ts +88 -44
- package/src/utils/writeFileSafely.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generateUnifiedScalarUI.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedScalarUI.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generateUnifiedScalarUI.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedScalarUI.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -2,14 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const generator_helper_1 = require("@prisma/generator-helper");
|
|
4
4
|
const generateUnifiedHandler_js_1 = require("./generators/generateUnifiedHandler.js");
|
|
5
|
+
const generateFastifyHandler_js_1 = require("./generators/generateFastifyHandler.js");
|
|
5
6
|
const generateRouter_js_1 = require("./generators/generateRouter.js");
|
|
7
|
+
const generateRouterFastify_js_1 = require("./generators/generateRouterFastify.js");
|
|
6
8
|
const generateUnifiedScalarUI_js_1 = require("./generators/generateUnifiedScalarUI.js");
|
|
7
9
|
const generateUnifiedDocs_js_1 = require("./generators/generateUnifiedDocs.js");
|
|
8
10
|
const generateQueryBuilderHelper_js_1 = require("./generators/generateQueryBuilderHelper.js");
|
|
11
|
+
const generateOperationCore_js_1 = require("./generators/generateOperationCore.js");
|
|
9
12
|
const generateImportPrismaStatement_js_1 = require("./generators/generateImportPrismaStatement.js");
|
|
10
13
|
const writeFileSafely_js_1 = require("./utils/writeFileSafely.js");
|
|
11
14
|
const copyFiles_js_1 = require("./utils/copyFiles.js");
|
|
12
15
|
const constants_js_1 = require("./constants.js");
|
|
16
|
+
function getTarget(options) {
|
|
17
|
+
const raw = String(options.generator.config.target ?? 'express').toLowerCase();
|
|
18
|
+
if (raw === 'express' || raw === 'fastify')
|
|
19
|
+
return raw;
|
|
20
|
+
throw new Error(`Invalid target "${raw}". Expected "express" or "fastify".`);
|
|
21
|
+
}
|
|
13
22
|
(0, generator_helper_1.generatorHandler)({
|
|
14
23
|
onManifest() {
|
|
15
24
|
return {
|
|
@@ -19,10 +28,20 @@ const constants_js_1 = require("./constants.js");
|
|
|
19
28
|
};
|
|
20
29
|
},
|
|
21
30
|
async onGenerate(options) {
|
|
22
|
-
const
|
|
23
|
-
console.log(
|
|
24
|
-
|
|
31
|
+
const target = getTarget(options);
|
|
32
|
+
console.log(`\n═══ Prisma Generator (${target.toUpperCase()}) ═══`);
|
|
33
|
+
console.log(` Target: ${target}`);
|
|
34
|
+
await (0, copyFiles_js_1.copyFiles)(options, target);
|
|
35
|
+
await (0, writeFileSafely_js_1.writeFileSafely)({
|
|
36
|
+
content: (0, generateOperationCore_js_1.generateOperationRuntime)(),
|
|
37
|
+
options,
|
|
38
|
+
operation: 'operationRuntime',
|
|
39
|
+
});
|
|
25
40
|
const modelNames = [];
|
|
41
|
+
const generateHandler = target === 'fastify' ? generateFastifyHandler_js_1.generateFastifyHandler : generateUnifiedHandler_js_1.generateUnifiedHandler;
|
|
42
|
+
const generateRouter = target === 'fastify'
|
|
43
|
+
? generateRouterFastify_js_1.generateFastifyRouterFunction
|
|
44
|
+
: generateRouter_js_1.generateRouterFunction;
|
|
26
45
|
for (const model of options.dmmf.datamodel.models) {
|
|
27
46
|
if (model.documentation &&
|
|
28
47
|
model.documentation.includes('generator off')) {
|
|
@@ -32,16 +51,21 @@ const constants_js_1 = require("./constants.js");
|
|
|
32
51
|
modelNames.push(model.name);
|
|
33
52
|
const relativeClientPath = (0, generateImportPrismaStatement_js_1.getRelativeClientPath)(options, model.name);
|
|
34
53
|
await (0, writeFileSafely_js_1.writeFileSafely)({
|
|
35
|
-
content: (0,
|
|
54
|
+
content: (0, generateOperationCore_js_1.generateModelCore)({ model: model }),
|
|
55
|
+
options,
|
|
56
|
+
model: model,
|
|
57
|
+
operation: 'Core',
|
|
58
|
+
});
|
|
59
|
+
await (0, writeFileSafely_js_1.writeFileSafely)({
|
|
60
|
+
content: generateHandler({
|
|
36
61
|
model: model,
|
|
37
|
-
prismaImportStatement,
|
|
38
62
|
}),
|
|
39
63
|
options,
|
|
40
64
|
model: model,
|
|
41
65
|
operation: 'Handlers',
|
|
42
66
|
});
|
|
43
67
|
await (0, writeFileSafely_js_1.writeFileSafely)({
|
|
44
|
-
content: (
|
|
68
|
+
content: generateRouter({
|
|
45
69
|
model: model,
|
|
46
70
|
enums: options.dmmf.datamodel.enums,
|
|
47
71
|
relativeClientPath,
|
|
@@ -54,6 +78,7 @@ const constants_js_1 = require("./constants.js");
|
|
|
54
78
|
content: (0, generateUnifiedScalarUI_js_1.generateScalarUIHandler)({
|
|
55
79
|
model: model,
|
|
56
80
|
enums: options.dmmf.datamodel.enums,
|
|
81
|
+
target,
|
|
57
82
|
}),
|
|
58
83
|
options,
|
|
59
84
|
model: model,
|
|
@@ -61,7 +86,7 @@ const constants_js_1 = require("./constants.js");
|
|
|
61
86
|
});
|
|
62
87
|
}
|
|
63
88
|
await (0, writeFileSafely_js_1.writeFileSafely)({
|
|
64
|
-
content: (0, generateUnifiedDocs_js_1.generateUnifiedDocs)(modelNames),
|
|
89
|
+
content: (0, generateUnifiedDocs_js_1.generateUnifiedDocs)(modelNames, target),
|
|
65
90
|
options,
|
|
66
91
|
operation: 'combinedDocs',
|
|
67
92
|
});
|
|
@@ -71,7 +96,7 @@ const constants_js_1 = require("./constants.js");
|
|
|
71
96
|
operation: 'queryBuilder',
|
|
72
97
|
});
|
|
73
98
|
console.log('\n═══ Generation Complete ═══');
|
|
74
|
-
console.log(`✓ ${modelNames.length} models`);
|
|
99
|
+
console.log(`✓ ${modelNames.length} models (${target})`);
|
|
75
100
|
console.log(`✓ OpenAPI documentation generated`);
|
|
76
101
|
console.log(`✓ Query builder helper generated`);
|
|
77
102
|
console.log('');
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+DAIiC;AACjC,sFAA+E;AAC/E,sEAAuE;AACvE,wFAAiF;AACjF,gFAAyE;AACzE,8FAAuF;AACvF,oGAGsD;AACtD,mEAA4D;AAC5D,uDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+DAIiC;AACjC,sFAA+E;AAC/E,sFAA+E;AAC/E,sEAAuE;AACvE,oFAAqF;AACrF,wFAAiF;AACjF,gFAAyE;AACzE,8FAAuF;AACvF,oFAG8C;AAC9C,oGAGsD;AACtD,mEAA4D;AAC5D,uDAAgD;AAChD,iDAAuD;AAEvD,SAAS,SAAS,CAAC,OAAyB;IAC1C,MAAM,GAAG,GAAG,MAAM,CACf,OAAO,CAAC,SAAS,CAAC,MAAkC,CAAC,MAAM,IAAI,SAAS,CAC1E,CAAC,WAAW,EAAE,CAAA;IACf,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,qCAAqC,CAAC,CAAA;AAC9E,CAAC;AAED,IAAA,mCAAgB,EAAC;IACf,UAAU;QACR,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;YAC3C,aAAa,EAAE,cAAc;YAC7B,UAAU,EAAE,6BAAc;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAyB;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAEjC,OAAO,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,EAAE,CAAC,CAAA;QAElC,MAAM,IAAA,wBAAS,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAEhC,MAAM,IAAA,oCAAe,EAAC;YACpB,OAAO,EAAE,IAAA,mDAAwB,GAAE;YACnC,OAAO;YACP,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAA;QAEF,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,MAAM,eAAe,GACnB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,kDAAsB,CAAC,CAAC,CAAC,kDAAsB,CAAA;QAExE,MAAM,cAAc,GAClB,MAAM,KAAK,SAAS;YAClB,CAAC,CAAC,wDAA6B;YAC/B,CAAC,CAAC,0CAAsB,CAAA;QAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YAClD,IACE,KAAK,CAAC,aAAa;gBACnB,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,EAC7C,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,CAAC,IAAI,kBAAkB,CAAC,CAAA;gBACxD,SAAQ;YACV,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAE3B,MAAM,kBAAkB,GAAG,IAAA,wDAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAErE,MAAM,IAAA,oCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,4CAAiB,EAAC,EAAE,KAAK,EAAE,KAAmB,EAAE,CAAC;gBAC1D,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,MAAM;aAClB,CAAC,CAAA;YAEF,MAAM,IAAA,oCAAe,EAAC;gBACpB,OAAO,EAAE,eAAe,CAAC;oBACvB,KAAK,EAAE,KAAmB;iBAC3B,CAAC;gBACF,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YAEF,MAAM,IAAA,oCAAe,EAAC;gBACpB,OAAO,EAAE,cAAc,CAAC;oBACtB,KAAK,EAAE,KAAmB;oBAC1B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAA6B;oBAC3D,kBAAkB;iBACnB,CAAC;gBACF,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAA;YAEF,MAAM,IAAA,oCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,oDAAuB,EAAC;oBAC/B,KAAK,EAAE,KAAmB;oBAC1B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAA6B;oBAC3D,MAAM;iBACP,CAAC;gBACF,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,MAAM;aAClB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,IAAA,oCAAe,EAAC;YACpB,OAAO,EAAE,IAAA,4CAAmB,EAAC,UAAU,EAAE,MAAM,CAAC;YAChD,OAAO;YACP,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAA;QAEF,MAAM,IAAA,oCAAe,EAAC;YACpB,OAAO,EAAE,IAAA,0DAA0B,EAAC,OAAO,CAAC;YAC5C,OAAO;YACP,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,MAAM,YAAY,MAAM,GAAG,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAA;QAChD,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACjB,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import { GeneratorOptions } from '@prisma/generator-helper';
|
|
2
|
-
|
|
2
|
+
import { Target } from '../constants.js';
|
|
3
|
+
export declare function copyFiles(options: GeneratorOptions, target: Target): Promise<void>;
|
package/dist/utils/copyFiles.js
CHANGED
|
@@ -36,52 +36,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.copyFiles = copyFiles;
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (allCopied) {
|
|
70
|
-
console.log(`✓ Utility files copied successfully`);
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
throw new Error('One or more required utility files could not be copied. Generation aborted.');
|
|
39
|
+
const SHARED_FILES = [
|
|
40
|
+
'parseQueryParams.ts',
|
|
41
|
+
'buildModelOpenApi.ts',
|
|
42
|
+
'operationDefinitions.ts',
|
|
43
|
+
'misc.ts',
|
|
44
|
+
];
|
|
45
|
+
const TARGET_FILES = {
|
|
46
|
+
express: ['routeConfig.ts'],
|
|
47
|
+
fastify: ['routeConfig.ts'],
|
|
48
|
+
};
|
|
49
|
+
function resolveTemplateDir(subpath) {
|
|
50
|
+
const fromSibling = path.join(__dirname, '..', subpath);
|
|
51
|
+
if (fs.existsSync(fromSibling))
|
|
52
|
+
return fromSibling;
|
|
53
|
+
const fromSrc = path.join(__dirname, '..', '..', 'src', subpath);
|
|
54
|
+
if (fs.existsSync(fromSrc))
|
|
55
|
+
return fromSrc;
|
|
56
|
+
throw new Error(`[prisma-generator-express] Template directory "${subpath}" not found.\n` +
|
|
57
|
+
` Searched:\n` +
|
|
58
|
+
` ${fromSibling}\n` +
|
|
59
|
+
` ${fromSrc}\n` +
|
|
60
|
+
` Ensure template files are included in the published package.`);
|
|
61
|
+
}
|
|
62
|
+
function getTargetSourceDir(copyBase, target) {
|
|
63
|
+
if (target === 'express')
|
|
64
|
+
return copyBase;
|
|
65
|
+
const targetDir = path.join(copyBase, target);
|
|
66
|
+
if (!fs.existsSync(targetDir)) {
|
|
67
|
+
throw new Error(`[prisma-generator-express] Target template directory not found: ${targetDir}\n` +
|
|
68
|
+
` Expected directory for target "${target}" at: ${targetDir}`);
|
|
74
69
|
}
|
|
70
|
+
return targetDir;
|
|
71
|
+
}
|
|
72
|
+
function escapeRegex(str) {
|
|
73
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
75
74
|
}
|
|
76
75
|
async function copyFile(srcDir, destDir, filename, options) {
|
|
77
76
|
const srcPath = path.join(srcDir, filename);
|
|
78
77
|
const destPath = path.join(destDir, filename);
|
|
79
78
|
if (!fs.existsSync(srcPath)) {
|
|
80
79
|
if (options?.required) {
|
|
81
|
-
console.error(
|
|
80
|
+
console.error(`[prisma-generator-express] ✗ Required source file not found: ${srcPath}`);
|
|
82
81
|
return false;
|
|
83
82
|
}
|
|
84
|
-
console.warn(
|
|
83
|
+
console.warn(`[prisma-generator-express] ⚠️ Source file not found: ${srcPath}`);
|
|
85
84
|
return true;
|
|
86
85
|
}
|
|
87
86
|
const destDirPath = path.dirname(destPath);
|
|
@@ -107,7 +106,42 @@ async function copyFile(srcDir, destDir, filename, options) {
|
|
|
107
106
|
console.log(` ✓ Copied: ${filename}`);
|
|
108
107
|
return true;
|
|
109
108
|
}
|
|
110
|
-
function
|
|
111
|
-
|
|
109
|
+
async function copyFiles(options, target) {
|
|
110
|
+
const outputPath = options.generator.output?.value;
|
|
111
|
+
if (!outputPath)
|
|
112
|
+
return;
|
|
113
|
+
const copyBase = resolveTemplateDir('copy');
|
|
114
|
+
let allCopied = true;
|
|
115
|
+
console.log(` Copying utility files to: ${outputPath} (target: ${target})`);
|
|
116
|
+
for (const file of SHARED_FILES) {
|
|
117
|
+
const ok = await copyFile(copyBase, outputPath, file, { required: true });
|
|
118
|
+
if (!ok)
|
|
119
|
+
allCopied = false;
|
|
120
|
+
}
|
|
121
|
+
const targetSrcDir = getTargetSourceDir(copyBase, target);
|
|
122
|
+
for (const file of TARGET_FILES[target]) {
|
|
123
|
+
const ok = await copyFile(targetSrcDir, outputPath, file, {
|
|
124
|
+
required: true,
|
|
125
|
+
});
|
|
126
|
+
if (!ok)
|
|
127
|
+
allCopied = false;
|
|
128
|
+
}
|
|
129
|
+
const clientDir = path.join(outputPath, 'client');
|
|
130
|
+
if (!fs.existsSync(clientDir)) {
|
|
131
|
+
fs.mkdirSync(clientDir, { recursive: true });
|
|
132
|
+
}
|
|
133
|
+
const clientSrcDir = resolveTemplateDir('client');
|
|
134
|
+
const clientOk = await copyFile(clientSrcDir, clientDir, 'encodeQueryParams.ts', {
|
|
135
|
+
required: true,
|
|
136
|
+
importRewrites: [{ from: '../copy/misc.js', to: '../misc.js' }],
|
|
137
|
+
});
|
|
138
|
+
if (!clientOk)
|
|
139
|
+
allCopied = false;
|
|
140
|
+
if (allCopied) {
|
|
141
|
+
console.log(` ✓ Utility files copied successfully`);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
throw new Error('[prisma-generator-express] One or more required utility files could not be copied. Generation aborted.');
|
|
145
|
+
}
|
|
112
146
|
}
|
|
113
147
|
//# sourceMappingURL=copyFiles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"copyFiles.js","sourceRoot":"","sources":["../../src/utils/copyFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,9 @@ async function writeFileSafely({ content, options, model, operation, }) {
|
|
|
60
60
|
case 'queryBuilder':
|
|
61
61
|
filePath = path.join(outputPath, 'queryBuilder.ts');
|
|
62
62
|
break;
|
|
63
|
+
case 'operationRuntime':
|
|
64
|
+
filePath = path.join(outputPath, 'operationRuntime.ts');
|
|
65
|
+
break;
|
|
63
66
|
default:
|
|
64
67
|
if (!model) {
|
|
65
68
|
throw new Error(`Model required for operation: ${operation}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,
|
|
1
|
+
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,0CAyDC;AA5ED,uCAAwB;AACxB,2CAA4B;AAC5B,wDAA+B;AAS/B,IAAI,gBAAqD,CAAA;AAEzD,KAAK,UAAU,kBAAkB;IAC/B,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,gBAAgB,CAAA;IAC3D,gBAAgB,GAAG,MAAM,kBAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9D,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,EACpC,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,GACQ;IACjB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAA;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,QAAgB,CAAA;IAEpB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,cAAc;YACjB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YACnD,MAAK;QAEP,KAAK,cAAc;YACjB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA;YACnD,MAAK;QAEP,KAAK,kBAAkB;YACrB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;YACvD,MAAK;QAEP;YACE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAA;YAC/D,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,IAAI,CAClB,UAAU,EACV,KAAK,CAAC,IAAI,EACV,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS,KAAK,CAC/B,CAAA;IACL,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,gBAAwB,CAAA;IAC5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,kBAAkB,EAAE,CAAA;QAClD,gBAAgB,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;YAChD,GAAG,eAAe;YAClB,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,sCAAsC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,CACrF,CAAA;QACD,gBAAgB,GAAG,OAAO,CAAA;IAC5B,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prisma-generator-express",
|
|
3
3
|
"description": "Prisma generator for Hono CRUD API with OpenAPI documentation",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.30.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"@prisma/client": ">=6.0.0",
|
|
26
26
|
"express": ">=4.0.0",
|
|
27
|
+
"fastify": "^5.0.0",
|
|
27
28
|
"prisma-guard": ">=1.0.0",
|
|
28
29
|
"prisma-query-builder-ui": ">=1.1.0",
|
|
29
30
|
"prisma-sql": ">=1.0.0"
|
|
@@ -48,6 +49,7 @@
|
|
|
48
49
|
"better-sqlite3": "^12.5.0",
|
|
49
50
|
"express": "^5.2.1",
|
|
50
51
|
"fast-xml-parser": "^5.3.3",
|
|
52
|
+
"fastify": "^5.6.2",
|
|
51
53
|
"lru-cache": "^11.2.4",
|
|
52
54
|
"pino": "^10.1.0",
|
|
53
55
|
"pino-pretty": "^13.0.0",
|
|
@@ -65,6 +67,7 @@
|
|
|
65
67
|
"keywords": [
|
|
66
68
|
"prisma",
|
|
67
69
|
"express",
|
|
70
|
+
"fastify",
|
|
68
71
|
"crud",
|
|
69
72
|
"generator"
|
|
70
73
|
],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isObject } from '../copy/misc.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Frontend query encoder for prisma-generator-
|
|
4
|
+
* Frontend query encoder for prisma-generator-express
|
|
5
5
|
*
|
|
6
6
|
* Encodes complex Prisma query structures as JSON strings in query params.
|
|
7
7
|
* Objects and arrays are JSON-stringified. Primitives are encoded directly.
|
package/src/constants.ts
CHANGED
|
@@ -30,21 +30,18 @@ export function createOutputValidatorMiddleware({
|
|
|
30
30
|
const validationResult = schema.safeParse(data)
|
|
31
31
|
if (!validationResult.success) {
|
|
32
32
|
const errors = validationResult.error.issues
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
message: 'Output validation failed',
|
|
42
|
-
errors,
|
|
43
|
-
})
|
|
33
|
+
return originalSend.call(
|
|
34
|
+
this,
|
|
35
|
+
JSON.stringify({
|
|
36
|
+
status: 400,
|
|
37
|
+
message: 'Output validation failed',
|
|
38
|
+
errors,
|
|
39
|
+
}),
|
|
40
|
+
)
|
|
44
41
|
}
|
|
45
42
|
return originalSend.call(this, data)
|
|
46
43
|
}
|
|
47
44
|
|
|
48
45
|
next()
|
|
49
46
|
}
|
|
50
|
-
}
|
|
47
|
+
}
|