prisma-generator-express 1.16.7 → 1.19.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 +399 -194
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +1 -1
- package/dist/bin.js.map +1 -1
- package/dist/client/encodeQueryParams.d.ts +1 -0
- package/dist/client/encodeQueryParams.js +33 -0
- package/dist/client/encodeQueryParams.js.map +1 -0
- package/dist/constants.d.ts +1 -0
- package/dist/copy/misc.d.ts +5 -0
- package/dist/copy/misc.js +52 -0
- package/dist/copy/misc.js.map +1 -0
- package/dist/generators/generateImportPrismaStatement.d.ts +3 -0
- package/dist/generators/generateImportPrismaStatement.js +55 -0
- package/dist/generators/generateImportPrismaStatement.js.map +1 -0
- package/dist/generators/generateQueryBuilderHelper.d.ts +2 -0
- package/dist/generators/generateQueryBuilderHelper.js +139 -0
- package/dist/generators/generateQueryBuilderHelper.js.map +1 -0
- package/dist/generators/generateRouter.d.ts +6 -0
- package/dist/generators/generateRouter.js +340 -0
- package/dist/generators/generateRouter.js.map +1 -0
- package/dist/generators/generateUnifiedDocs.d.ts +1 -0
- package/dist/generators/generateUnifiedDocs.js +171 -0
- package/dist/generators/generateUnifiedDocs.js.map +1 -0
- package/dist/generators/generateUnifiedHandler.d.ts +6 -0
- package/dist/generators/generateUnifiedHandler.js +444 -0
- package/dist/generators/generateUnifiedHandler.js.map +1 -0
- package/dist/generators/generateUnifiedScalarUI.d.ts +5 -0
- package/dist/generators/generateUnifiedScalarUI.js +1390 -0
- package/dist/generators/generateUnifiedScalarUI.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/copyFiles.d.ts +6 -0
- package/dist/utils/copyFiles.js +123 -21
- package/dist/utils/copyFiles.js.map +1 -1
- package/dist/utils/strings.d.ts +2 -0
- package/dist/utils/writeFileSafely.d.ts +10 -0
- package/dist/utils/writeFileSafely.js +86 -14
- package/dist/utils/writeFileSafely.js.map +1 -1
- package/package.json +64 -31
- package/src/client/encodeQueryParams.ts +56 -0
- package/src/copy/buildModelOpenApi.ts +1569 -0
- package/src/copy/createOutputValidatorMiddleware.ts +1 -1
- package/src/copy/createValidatorMiddleware.ts +1 -1
- package/src/copy/misc.ts +22 -1
- package/src/copy/operationDefinitions.ts +96 -0
- package/src/copy/parseQueryParams.ts +36 -21
- package/src/copy/routeConfig.ts +69 -27
- package/src/copy/transformZod.ts +15 -16
- package/dist/generator.js +0 -168
- package/dist/generator.js.map +0 -1
- package/dist/helpers/generateAggregate.js +0 -51
- package/dist/helpers/generateAggregate.js.map +0 -1
- package/dist/helpers/generateCount.js +0 -50
- package/dist/helpers/generateCount.js.map +0 -1
- package/dist/helpers/generateCreate.js +0 -49
- package/dist/helpers/generateCreate.js.map +0 -1
- package/dist/helpers/generateCreateMany.js +0 -49
- package/dist/helpers/generateCreateMany.js.map +0 -1
- package/dist/helpers/generateDelete.js +0 -49
- package/dist/helpers/generateDelete.js.map +0 -1
- package/dist/helpers/generateDeleteMany.js +0 -49
- package/dist/helpers/generateDeleteMany.js.map +0 -1
- package/dist/helpers/generateFindFirst.js +0 -56
- package/dist/helpers/generateFindFirst.js.map +0 -1
- package/dist/helpers/generateFindMany.js +0 -56
- package/dist/helpers/generateFindMany.js.map +0 -1
- package/dist/helpers/generateFindUnique.js +0 -56
- package/dist/helpers/generateFindUnique.js.map +0 -1
- package/dist/helpers/generateGroupBy.js +0 -51
- package/dist/helpers/generateGroupBy.js.map +0 -1
- package/dist/helpers/generateImportPrismaStatement.js +0 -25
- package/dist/helpers/generateImportPrismaStatement.js.map +0 -1
- package/dist/helpers/generateRouteFile.js +0 -192
- package/dist/helpers/generateRouteFile.js.map +0 -1
- package/dist/helpers/generateUpdate.js +0 -49
- package/dist/helpers/generateUpdate.js.map +0 -1
- package/dist/helpers/generateUpdateMany.js +0 -49
- package/dist/helpers/generateUpdateMany.js.map +0 -1
- package/dist/helpers/generateUpsert.js +0 -49
- package/dist/helpers/generateUpsert.js.map +0 -1
- package/dist/utils/formatFile.js +0 -26
- package/dist/utils/formatFile.js.map +0 -1
- package/src/bin.ts +0 -2
- package/src/constants.ts +0 -1
- package/src/copy/encodeQueryParams.spec.ts +0 -303
- package/src/copy/encodeQueryParams.ts +0 -44
- package/src/copy/misc.spec.ts +0 -62
- package/src/copy/parseQueryParams.spec.ts +0 -187
- package/src/copy/transformZod.spec.ts +0 -763
- package/src/generator.ts +0 -188
- package/src/helpers/generateAggregate.ts +0 -59
- package/src/helpers/generateCount.ts +0 -58
- package/src/helpers/generateCreate.ts +0 -56
- package/src/helpers/generateCreateMany.ts +0 -55
- package/src/helpers/generateDelete.ts +0 -57
- package/src/helpers/generateDeleteMany.ts +0 -57
- package/src/helpers/generateFindFirst.ts +0 -62
- package/src/helpers/generateFindMany.ts +0 -62
- package/src/helpers/generateFindUnique.ts +0 -62
- package/src/helpers/generateGroupBy.ts +0 -60
- package/src/helpers/generateImportPrismaStatement.ts +0 -38
- package/src/helpers/generateRouteFile.ts +0 -195
- package/src/helpers/generateUpdate.ts +0 -56
- package/src/helpers/generateUpdateMany.ts +0 -56
- package/src/helpers/generateUpsert.ts +0 -57
- package/src/utils/copyFiles.ts +0 -27
- package/src/utils/formatFile.ts +0 -22
- package/src/utils/strings.ts +0 -7
- package/src/utils/writeFileSafely.ts +0 -29
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateUnifiedScalarUI.js","sourceRoot":"","sources":["../../src/generators/generateUnifiedScalarUI.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const generator_helper_1 = require("@prisma/generator-helper");
|
|
4
|
+
const generateUnifiedHandler_1 = require("./generators/generateUnifiedHandler");
|
|
5
|
+
const generateRouter_1 = require("./generators/generateRouter");
|
|
6
|
+
const generateUnifiedScalarUI_1 = require("./generators/generateUnifiedScalarUI");
|
|
7
|
+
const generateUnifiedDocs_1 = require("./generators/generateUnifiedDocs");
|
|
8
|
+
const generateQueryBuilderHelper_1 = require("./generators/generateQueryBuilderHelper");
|
|
9
|
+
const generateImportPrismaStatement_1 = require("./generators/generateImportPrismaStatement");
|
|
10
|
+
const writeFileSafely_1 = require("./utils/writeFileSafely");
|
|
11
|
+
const copyFiles_1 = require("./utils/copyFiles");
|
|
12
|
+
const constants_1 = require("./constants");
|
|
13
|
+
(0, generator_helper_1.generatorHandler)({
|
|
14
|
+
onManifest() {
|
|
15
|
+
return {
|
|
16
|
+
version: require('../package.json').version,
|
|
17
|
+
defaultOutput: '../generated',
|
|
18
|
+
prettyName: constants_1.GENERATOR_NAME,
|
|
19
|
+
};
|
|
20
|
+
},
|
|
21
|
+
async onGenerate(options) {
|
|
22
|
+
const prismaImportStatement = (0, generateImportPrismaStatement_1.generateImportPrismaStatement)(options);
|
|
23
|
+
console.log('\n═══ Prisma Generator Express ═══');
|
|
24
|
+
await (0, copyFiles_1.copyFiles)(options);
|
|
25
|
+
const modelNames = [];
|
|
26
|
+
for (const model of options.dmmf.datamodel.models) {
|
|
27
|
+
if (model.documentation &&
|
|
28
|
+
model.documentation.includes('generator off')) {
|
|
29
|
+
console.log(` Skipping: ${model.name} (generator off)`);
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
modelNames.push(model.name);
|
|
33
|
+
const relativeClientPath = (0, generateImportPrismaStatement_1.getRelativeClientPath)(options, model.name);
|
|
34
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
35
|
+
content: (0, generateUnifiedHandler_1.generateUnifiedHandler)({
|
|
36
|
+
model: model,
|
|
37
|
+
prismaImportStatement,
|
|
38
|
+
}),
|
|
39
|
+
options,
|
|
40
|
+
model: model,
|
|
41
|
+
operation: 'Handlers',
|
|
42
|
+
});
|
|
43
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
44
|
+
content: (0, generateRouter_1.generateRouterFunction)({
|
|
45
|
+
model: model,
|
|
46
|
+
enums: options.dmmf.datamodel.enums,
|
|
47
|
+
relativeClientPath,
|
|
48
|
+
}),
|
|
49
|
+
options,
|
|
50
|
+
model: model,
|
|
51
|
+
operation: 'Router',
|
|
52
|
+
});
|
|
53
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
54
|
+
content: (0, generateUnifiedScalarUI_1.generateScalarUIHandler)({
|
|
55
|
+
model: model,
|
|
56
|
+
enums: options.dmmf.datamodel.enums,
|
|
57
|
+
}),
|
|
58
|
+
options,
|
|
59
|
+
model: model,
|
|
60
|
+
operation: 'Docs',
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
64
|
+
content: (0, generateUnifiedDocs_1.generateUnifiedDocs)(modelNames),
|
|
65
|
+
options,
|
|
66
|
+
operation: 'combinedDocs',
|
|
67
|
+
});
|
|
68
|
+
await (0, writeFileSafely_1.writeFileSafely)({
|
|
69
|
+
content: (0, generateQueryBuilderHelper_1.generateQueryBuilderHelper)(options),
|
|
70
|
+
options,
|
|
71
|
+
operation: 'queryBuilder',
|
|
72
|
+
});
|
|
73
|
+
console.log('\n═══ Generation Complete ═══');
|
|
74
|
+
console.log(`✓ ${modelNames.length} models`);
|
|
75
|
+
console.log(`✓ OpenAPI documentation generated`);
|
|
76
|
+
console.log(`✓ Query builder helper generated`);
|
|
77
|
+
console.log('');
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,+DAIiC;AACjC,gFAA4E;AAC5E,gEAAoE;AACpE,kFAA8E;AAC9E,0EAAsE;AACtE,wFAAoF;AACpF,8FAGmD;AACnD,6DAAyD;AACzD,iDAA6C;AAC7C,2CAA4C;AAE5C,IAAA,mCAAgB,EAAC;IACf,UAAU;QACR,OAAO;YACL,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO;YAC3C,aAAa,EAAE,cAAc;YAC7B,UAAU,EAAE,0BAAc;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAyB;QACxC,MAAM,qBAAqB,GAAG,IAAA,6DAA6B,EAAC,OAAO,CAAC,CAAA;QAEpE,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;QAEjD,MAAM,IAAA,qBAAS,EAAC,OAAO,CAAC,CAAA;QAExB,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,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,qDAAqB,EAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAErE,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,+CAAsB,EAAC;oBAC9B,KAAK,EAAE,KAAmB;oBAC1B,qBAAqB;iBACtB,CAAC;gBACF,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,UAAU;aACtB,CAAC,CAAA;YAEF,MAAM,IAAA,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,uCAAsB,EAAC;oBAC9B,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,iCAAe,EAAC;gBACpB,OAAO,EAAE,IAAA,iDAAuB,EAAC;oBAC/B,KAAK,EAAE,KAAmB;oBAC1B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAA6B;iBAC5D,CAAC;gBACF,OAAO;gBACP,KAAK,EAAE,KAAmB;gBAC1B,SAAS,EAAE,MAAM;aAClB,CAAC,CAAA;QACJ,CAAC;QAED,MAAM,IAAA,iCAAe,EAAC;YACpB,OAAO,EAAE,IAAA,yCAAmB,EAAC,UAAU,CAAC;YACxC,OAAO;YACP,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAA;QAEF,MAAM,IAAA,iCAAe,EAAC;YACpB,OAAO,EAAE,IAAA,uDAA0B,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,SAAS,CAAC,CAAA;QAC5C,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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GeneratorOptions } from '@prisma/generator-helper';
|
|
2
|
+
export interface CopyFilesConfig {
|
|
3
|
+
includeCacheUtils?: boolean;
|
|
4
|
+
includeValidatorUtils?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function copyFiles(options: GeneratorOptions, config?: CopyFilesConfig): Promise<void>;
|
package/dist/utils/copyFiles.js
CHANGED
|
@@ -1,26 +1,128 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.copyFiles =
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
36
|
+
exports.copyFiles = copyFiles;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
async function copyFiles(options, config) {
|
|
40
|
+
const copyConfig = config || {};
|
|
41
|
+
const outputPath = options.generator.output?.value;
|
|
42
|
+
if (!outputPath)
|
|
43
|
+
return;
|
|
44
|
+
const srcDir = path.join(__dirname, '..', '..', 'src', 'copy');
|
|
45
|
+
const baseFiles = [
|
|
46
|
+
'routeConfig.ts',
|
|
47
|
+
'parseQueryParams.ts',
|
|
48
|
+
'buildModelOpenApi.ts',
|
|
49
|
+
'operationDefinitions.ts',
|
|
50
|
+
'misc.ts',
|
|
51
|
+
];
|
|
52
|
+
let allCopied = true;
|
|
53
|
+
console.log(`Copying utility files to: ${outputPath}`);
|
|
54
|
+
for (const file of baseFiles) {
|
|
55
|
+
const ok = await copyFile(srcDir, outputPath, file, { required: true });
|
|
56
|
+
if (!ok)
|
|
57
|
+
allCopied = false;
|
|
58
|
+
}
|
|
59
|
+
if (copyConfig.includeCacheUtils) {
|
|
60
|
+
const ok = await copyFile(srcDir, outputPath, 'cacheManager.ts', {
|
|
61
|
+
required: true,
|
|
62
|
+
});
|
|
63
|
+
if (!ok)
|
|
64
|
+
allCopied = false;
|
|
65
|
+
}
|
|
66
|
+
if (copyConfig.includeValidatorUtils) {
|
|
67
|
+
const ok = await copyFile(srcDir, outputPath, 'inputValidator.ts', {
|
|
68
|
+
required: true,
|
|
69
|
+
});
|
|
70
|
+
if (!ok)
|
|
71
|
+
allCopied = false;
|
|
72
|
+
}
|
|
73
|
+
const clientDir = path.join(outputPath, 'client');
|
|
74
|
+
if (!fs.existsSync(clientDir)) {
|
|
75
|
+
fs.mkdirSync(clientDir, { recursive: true });
|
|
76
|
+
}
|
|
77
|
+
const clientSrcDir = path.join(__dirname, '..', '..', 'src', 'client');
|
|
78
|
+
const clientOk = await copyFile(clientSrcDir, clientDir, 'encodeQueryParams.ts', {
|
|
79
|
+
required: true,
|
|
80
|
+
importRewrites: [{ from: '../copy/misc', to: '../misc' }],
|
|
81
|
+
});
|
|
82
|
+
if (!clientOk)
|
|
83
|
+
allCopied = false;
|
|
84
|
+
if (allCopied) {
|
|
85
|
+
console.log(`✓ Utility files copied successfully`);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw new Error('One or more required utility files could not be copied. Generation aborted.');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function copyFile(srcDir, destDir, filename, options) {
|
|
92
|
+
const srcPath = path.join(srcDir, filename);
|
|
93
|
+
const destPath = path.join(destDir, filename);
|
|
94
|
+
if (!fs.existsSync(srcPath)) {
|
|
95
|
+
if (options?.required) {
|
|
96
|
+
console.error(`✗ Required source file not found: ${srcPath}`);
|
|
97
|
+
return false;
|
|
17
98
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
await promises_1.default.mkdir(path_1.default.dirname(destinationFile), { recursive: true });
|
|
21
|
-
await promises_1.default.copyFile(sourceFile, destinationFile);
|
|
99
|
+
console.warn(`⚠️ Source file not found: ${srcPath}`);
|
|
100
|
+
return true;
|
|
22
101
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
102
|
+
const destDirPath = path.dirname(destPath);
|
|
103
|
+
if (!fs.existsSync(destDirPath)) {
|
|
104
|
+
fs.mkdirSync(destDirPath, { recursive: true });
|
|
105
|
+
}
|
|
106
|
+
let content = fs.readFileSync(srcPath, 'utf-8');
|
|
107
|
+
if (options?.importRewrites) {
|
|
108
|
+
for (const rewrite of options.importRewrites) {
|
|
109
|
+
content = content.replace(new RegExp(`from ['"]${escapeRegex(rewrite.from)}['"]`, 'g'), `from '${rewrite.to}'`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const header = `/**
|
|
113
|
+
* Auto-generated by prisma-generator-express
|
|
114
|
+
* DO NOT EDIT MANUALLY
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
`;
|
|
118
|
+
if (!content.startsWith('/**')) {
|
|
119
|
+
content = header + content;
|
|
120
|
+
}
|
|
121
|
+
fs.writeFileSync(destPath, content);
|
|
122
|
+
console.log(` ✓ Copied: ${filename}`);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
function escapeRegex(str) {
|
|
126
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
127
|
+
}
|
|
26
128
|
//# 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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { GeneratorOptions } from '@prisma/generator-helper';
|
|
2
|
+
import { DMMF } from '@prisma/generator-helper';
|
|
3
|
+
interface WriteFileOptions {
|
|
4
|
+
content: string;
|
|
5
|
+
options: GeneratorOptions;
|
|
6
|
+
model?: DMMF.Model;
|
|
7
|
+
operation: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function writeFileSafely({ content, options, model, operation, }: WriteFileOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
@@ -1,21 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
37
|
};
|
|
5
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.writeFileSafely = void 0;
|
|
7
|
-
const promises_1 = __importDefault(require("fs/promises"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const formatFile_1 = require("./formatFile");
|
|
10
|
-
const writeFileSafely = async ({ model, operation, options, content, }) => {
|
|
11
|
-
var _a;
|
|
12
|
-
const fileName = operation === 'index' ? 'index' : `${(model === null || model === void 0 ? void 0 : model.name) || ''}${operation}`;
|
|
13
|
-
const filePath = path_1.default.join((_a = options.generator.output) === null || _a === void 0 ? void 0 : _a.value, model ? `${model === null || model === void 0 ? void 0 : model.name}/${fileName}.ts` : `/${fileName}.ts`);
|
|
14
|
-
console.log('filePath :>> ', filePath);
|
|
15
|
-
await promises_1.default.mkdir(path_1.default.dirname(filePath), {
|
|
16
|
-
recursive: true,
|
|
17
|
-
});
|
|
18
|
-
await promises_1.default.writeFile(filePath, await (0, formatFile_1.formatFile)(content));
|
|
19
|
-
};
|
|
20
39
|
exports.writeFileSafely = writeFileSafely;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const prettier_1 = __importDefault(require("prettier"));
|
|
43
|
+
let _prettierOptions;
|
|
44
|
+
async function getPrettierOptions() {
|
|
45
|
+
if (_prettierOptions !== undefined)
|
|
46
|
+
return _prettierOptions;
|
|
47
|
+
_prettierOptions = await prettier_1.default.resolveConfig(process.cwd());
|
|
48
|
+
return _prettierOptions;
|
|
49
|
+
}
|
|
50
|
+
async function writeFileSafely({ content, options, model, operation, }) {
|
|
51
|
+
const outputPath = options.generator.output?.value;
|
|
52
|
+
if (!outputPath) {
|
|
53
|
+
throw new Error('Output path not defined');
|
|
54
|
+
}
|
|
55
|
+
let filePath;
|
|
56
|
+
switch (operation) {
|
|
57
|
+
case 'cacheConfig':
|
|
58
|
+
filePath = path.join(outputPath, 'cacheConfig.ts');
|
|
59
|
+
break;
|
|
60
|
+
case 'types/inputs':
|
|
61
|
+
filePath = path.join(outputPath, 'types', 'inputs.ts');
|
|
62
|
+
break;
|
|
63
|
+
case 'combinedDocs':
|
|
64
|
+
filePath = path.join(outputPath, 'combinedDocs.ts');
|
|
65
|
+
break;
|
|
66
|
+
case 'queryBuilder':
|
|
67
|
+
filePath = path.join(outputPath, 'queryBuilder.ts');
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
if (!model) {
|
|
71
|
+
throw new Error(`Model required for operation: ${operation}`);
|
|
72
|
+
}
|
|
73
|
+
filePath = path.join(outputPath, model.name, `${model.name}${operation}.ts`);
|
|
74
|
+
}
|
|
75
|
+
const dirPath = path.dirname(filePath);
|
|
76
|
+
if (!fs.existsSync(dirPath)) {
|
|
77
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
78
|
+
}
|
|
79
|
+
let formattedContent;
|
|
80
|
+
try {
|
|
81
|
+
const resolvedOptions = await getPrettierOptions();
|
|
82
|
+
formattedContent = await prettier_1.default.format(content, {
|
|
83
|
+
...resolvedOptions,
|
|
84
|
+
parser: 'typescript',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.warn(`⚠️ Prettier formatting failed for ${path.basename(filePath)}, writing unformatted`);
|
|
89
|
+
formattedContent = content;
|
|
90
|
+
}
|
|
91
|
+
fs.writeFileSync(filePath, formattedContent);
|
|
92
|
+
}
|
|
21
93
|
//# sourceMappingURL=writeFileSafely.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writeFileSafely.js","sourceRoot":"","sources":["../../src/utils/writeFileSafely.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqBA,0CA6DC;AAhFD,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,aAAa;YAChB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;YAClD,MAAK;QAEP,KAAK,cAAc;YACjB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;YACtD,MAAK;QAEP,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;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,47 +1,63 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prisma-generator-express",
|
|
3
|
-
"description": "Prisma generator
|
|
4
|
-
"version": "1.
|
|
5
|
-
"main": "dist/
|
|
3
|
+
"description": "Prisma generator for Hono CRUD API with OpenAPI documentation",
|
|
4
|
+
"version": "1.19.0",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"bin": "dist/bin.js",
|
|
8
9
|
"engines": {
|
|
9
10
|
"node": ">=20.0"
|
|
10
11
|
},
|
|
11
12
|
"scripts": {
|
|
12
|
-
"
|
|
13
|
+
"build": "rm -rf dist && npx tsc",
|
|
13
14
|
"dev": "npx tsc -w",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"prepublishOnly": "node copy.js
|
|
15
|
+
"start": "node dist/bin.js",
|
|
16
|
+
"test": "vitest",
|
|
17
|
+
"coverage": "vitest --coverage",
|
|
18
|
+
"prepack": "npm run build",
|
|
19
|
+
"prepublishOnly": "node copy.js"
|
|
19
20
|
},
|
|
20
21
|
"dependencies": {
|
|
21
|
-
"@prisma/
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
22
|
+
"@prisma/generator-helper": "7.5.0",
|
|
23
|
+
"prettier": "3.6.2"
|
|
24
|
+
},
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@prisma/client": ">=6.0.0",
|
|
27
|
+
"express": ">=4.0.0",
|
|
28
|
+
"prisma-guard": ">=1.0.0",
|
|
29
|
+
"prisma-query-builder-ui": ">=1.1.0",
|
|
30
|
+
"prisma-sql": ">=1.0.0"
|
|
31
|
+
},
|
|
32
|
+
"peerDependenciesMeta": {
|
|
33
|
+
"prisma-guard": {
|
|
34
|
+
"optional": true
|
|
35
|
+
},
|
|
36
|
+
"prisma-query-builder-ui": {
|
|
37
|
+
"optional": true
|
|
38
|
+
},
|
|
39
|
+
"prisma-sql": {
|
|
40
|
+
"optional": true
|
|
41
|
+
}
|
|
28
42
|
},
|
|
29
43
|
"devDependencies": {
|
|
30
|
-
"@prisma/
|
|
31
|
-
"@
|
|
32
|
-
"@
|
|
33
|
-
"@types/express": "^5.0.3",
|
|
34
|
-
"@types/jest": "30.0.0",
|
|
35
|
-
"@types/lodash": "^4.17.20",
|
|
44
|
+
"@prisma/client": "7.5.0",
|
|
45
|
+
"@prisma/internals": "^7.5.0",
|
|
46
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
36
47
|
"@types/node": "24.7.2",
|
|
37
48
|
"@types/prettier": "3.0.0",
|
|
38
|
-
"
|
|
39
|
-
"
|
|
49
|
+
"better-sqlite3": "^12.5.0",
|
|
50
|
+
"express": "^5.2.1",
|
|
51
|
+
"fast-xml-parser": "^5.3.3",
|
|
52
|
+
"lru-cache": "^11.2.4",
|
|
53
|
+
"pino": "^10.1.0",
|
|
54
|
+
"pino-pretty": "^13.0.0",
|
|
55
|
+
"prisma": "7.5.0",
|
|
40
56
|
"semantic-release": "^24.2.9",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
57
|
+
"typescript": "5.9.3",
|
|
58
|
+
"vitest-mock-extended": "^3.1.0"
|
|
43
59
|
},
|
|
44
|
-
"homepage": "https://github.com/multipliedtwice/prisma-generator-express
|
|
60
|
+
"homepage": "https://github.com/multipliedtwice/prisma-generator-express",
|
|
45
61
|
"repository": {
|
|
46
62
|
"type": "git",
|
|
47
63
|
"url": "git+https://github.com/multipliedtwice/prisma-generator-express.git"
|
|
@@ -55,16 +71,33 @@
|
|
|
55
71
|
],
|
|
56
72
|
"files": [
|
|
57
73
|
"dist/**/*",
|
|
58
|
-
"src/**/*",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
74
|
+
"src/copy/**/*",
|
|
75
|
+
"src/client/**/*",
|
|
76
|
+
"!**/.DS_Store",
|
|
77
|
+
"README.md",
|
|
78
|
+
"LICENSE"
|
|
61
79
|
],
|
|
62
80
|
"release": {
|
|
63
81
|
"branches": [
|
|
64
82
|
"master"
|
|
65
83
|
],
|
|
66
84
|
"plugins": [
|
|
67
|
-
|
|
85
|
+
[
|
|
86
|
+
"@semantic-release/commit-analyzer",
|
|
87
|
+
{
|
|
88
|
+
"preset": "angular",
|
|
89
|
+
"releaseRules": [
|
|
90
|
+
{
|
|
91
|
+
"type": "chore",
|
|
92
|
+
"release": "minor"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"type": "refactor",
|
|
96
|
+
"release": "minor"
|
|
97
|
+
}
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
],
|
|
68
101
|
"@semantic-release/release-notes-generator",
|
|
69
102
|
[
|
|
70
103
|
"@semantic-release/changelog",
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { isObject } from '../copy/misc'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Frontend query encoder for prisma-generator-hono
|
|
5
|
+
*
|
|
6
|
+
* Encodes complex Prisma query structures as JSON strings in query params.
|
|
7
|
+
* Objects and arrays are JSON-stringified. Primitives are encoded directly.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const params = encodeQueryParams({
|
|
11
|
+
* where: { OR: [{ status: 'active' }, { featured: true }] },
|
|
12
|
+
* take: 10
|
|
13
|
+
* })
|
|
14
|
+
* // where=%7B%22OR%22%3A...&take=10
|
|
15
|
+
* fetch(`/api/posts?${params}`)
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
function replacer(_key: string, value: unknown): unknown {
|
|
19
|
+
if (typeof value === 'bigint') {
|
|
20
|
+
return value.toString()
|
|
21
|
+
}
|
|
22
|
+
return value
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const encodeQueryParams = (params: Record<string, unknown>): string => {
|
|
26
|
+
const entries: string[] = []
|
|
27
|
+
|
|
28
|
+
for (const [key, value] of Object.entries(params)) {
|
|
29
|
+
if (value === undefined) continue
|
|
30
|
+
|
|
31
|
+
if (value === null) {
|
|
32
|
+
entries.push(`${encodeURIComponent(key)}=null`)
|
|
33
|
+
continue
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (typeof value === 'bigint') {
|
|
37
|
+
entries.push(
|
|
38
|
+
`${encodeURIComponent(key)}=${encodeURIComponent(value.toString())}`,
|
|
39
|
+
)
|
|
40
|
+
continue
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (Array.isArray(value) || isObject(value)) {
|
|
44
|
+
entries.push(
|
|
45
|
+
`${encodeURIComponent(key)}=${encodeURIComponent(JSON.stringify(value, replacer))}`,
|
|
46
|
+
)
|
|
47
|
+
continue
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
entries.push(
|
|
51
|
+
`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`,
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return entries.join('&')
|
|
56
|
+
}
|