@autobe/compiler 0.29.2 → 0.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/lib/AutoBeCompiler.d.ts +2 -2
- package/lib/AutoBeCompiler.js +3 -3
- package/lib/AutoBeCompiler.js.map +1 -1
- package/lib/AutoBeTypeScriptCompiler.d.ts +1 -0
- package/lib/AutoBeTypeScriptCompiler.js +27 -0
- package/lib/AutoBeTypeScriptCompiler.js.map +1 -1
- package/lib/database/AutoBeDatabaseCompiler.d.ts +6 -0
- package/lib/{prisma/AutoBePrismaCompiler.js → database/AutoBeDatabaseCompiler.js} +19 -13
- package/lib/database/AutoBeDatabaseCompiler.js.map +1 -0
- package/lib/database/validateDatabaseApplication.d.ts +2 -0
- package/lib/{prisma/validatePrismaApplication.js → database/validateDatabaseApplication.js} +178 -4
- package/lib/database/validateDatabaseApplication.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/interface/AutoBeInterfaceCompiler.d.ts +1 -1
- package/lib/raw/AutoBeCompilerCommonTemplate.js +2 -2
- package/lib/raw/AutoBeCompilerCommonTemplate.js.map +1 -1
- package/lib/raw/AutoBeCompilerInterfaceTemplate.js +4 -2
- package/lib/raw/AutoBeCompilerInterfaceTemplate.js.map +1 -1
- package/lib/raw/AutoBeCompilerRealizeTemplate.js +16 -3
- package/lib/raw/AutoBeCompilerRealizeTemplate.js.map +1 -1
- package/lib/raw/AutoBeCompilerRealizeTemplateOfPostgres.js +3 -2
- package/lib/raw/AutoBeCompilerRealizeTemplateOfPostgres.js.map +1 -1
- package/lib/raw/AutoBeCompilerRealizeTemplateOfSQLite.js +2 -1
- package/lib/raw/AutoBeCompilerRealizeTemplateOfSQLite.js.map +1 -1
- package/lib/raw/AutoBeCompilerTestTemplate.js +1 -1
- package/lib/raw/AutoBeCompilerTestTemplate.js.map +1 -1
- package/lib/raw/nestjs.json +1777 -656
- package/lib/raw/test.json +748 -520
- package/lib/realize/writeRealizeControllers.js +16 -10
- package/lib/realize/writeRealizeControllers.js.map +1 -1
- package/lib/test/AutoBeTestCompiler.d.ts +1 -0
- package/lib/test/AutoBeTestCompiler.js +6 -0
- package/lib/test/AutoBeTestCompiler.js.map +1 -1
- package/lib/test/programmers/AutoBeTestLiteralProgrammer.js +2 -2
- package/lib/test/programmers/AutoBeTestLiteralProgrammer.js.map +1 -1
- package/lib/test/programmers/IAutoBeTestProgrammerContext.d.ts +1 -1
- package/lib/test/programmers/writeTestExpression.js +3 -1
- package/lib/test/programmers/writeTestExpression.js.map +1 -1
- package/lib/test/programmers/writeTestFunction.js +4 -4
- package/lib/test/programmers/writeTestFunction.js.map +1 -1
- package/lib/test/programmers/writeTestStatement.js +3 -1
- package/lib/test/programmers/writeTestStatement.js.map +1 -1
- package/lib/utils/FilePrinter.js +1 -1
- package/lib/utils/FilePrinter.js.map +1 -1
- package/package.json +13 -12
- package/src/AutoBeCompiler.ts +5 -5
- package/src/AutoBeTypeScriptCompiler.ts +36 -0
- package/src/database/AutoBeDatabaseCompiler.ts +48 -0
- package/src/{prisma/validatePrismaApplication.ts → database/validateDatabaseApplication.ts} +228 -28
- package/src/index.ts +1 -1
- package/src/interface/AutoBeInterfaceCompiler.ts +1 -1
- package/src/raw/AutoBeCompilerCommonTemplate.ts +2 -2
- package/src/raw/AutoBeCompilerInterfaceTemplate.ts +4 -2
- package/src/raw/AutoBeCompilerRealizeTemplate.ts +16 -3
- package/src/raw/AutoBeCompilerRealizeTemplateOfPostgres.ts +3 -2
- package/src/raw/AutoBeCompilerRealizeTemplateOfSQLite.ts +2 -1
- package/src/raw/AutoBeCompilerTestTemplate.ts +1 -1
- package/src/raw/nestjs.json +1777 -656
- package/src/raw/test.json +748 -520
- package/src/realize/writeRealizeControllers.ts +26 -16
- package/src/test/AutoBeTestCompiler.ts +9 -0
- package/src/test/programmers/AutoBeTestLiteralProgrammer.ts +2 -2
- package/src/test/programmers/IAutoBeTestProgrammerContext.ts +1 -1
- package/src/test/programmers/writeTestExpression.ts +6 -1
- package/src/test/programmers/writeTestFunction.ts +3 -2
- package/src/test/programmers/writeTestStatement.ts +5 -1
- package/src/utils/FilePrinter.ts +1 -1
- package/lib/prisma/AutoBePrismaCompiler.d.ts +0 -6
- package/lib/prisma/AutoBePrismaCompiler.js.map +0 -1
- package/lib/prisma/validatePrismaApplication.d.ts +0 -2
- package/lib/prisma/validatePrismaApplication.js.map +0 -1
- package/src/prisma/AutoBePrismaCompiler.ts +0 -36
package/lib/AutoBeCompiler.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IAutoBeCompiler, IAutoBeCompilerListener, IAutoBeGetFilesOptions, IAutoBeInterfaceCompiler,
|
|
1
|
+
import { IAutoBeCompiler, IAutoBeCompilerListener, IAutoBeDatabaseCompiler, IAutoBeGetFilesOptions, IAutoBeInterfaceCompiler, IAutoBeRealizeCompiler, IAutoBeTestCompiler, IAutoBeTypeScriptCompiler } from "@autobe/interface";
|
|
2
2
|
/**
|
|
3
3
|
* Comprehensive compilation infrastructure for the vibe coding pipeline.
|
|
4
4
|
*
|
|
@@ -23,7 +23,7 @@ import { IAutoBeCompiler, IAutoBeCompilerListener, IAutoBeGetFilesOptions, IAuto
|
|
|
23
23
|
*/
|
|
24
24
|
export declare class AutoBeCompiler implements IAutoBeCompiler {
|
|
25
25
|
private readonly listener;
|
|
26
|
-
|
|
26
|
+
database: IAutoBeDatabaseCompiler;
|
|
27
27
|
interface: IAutoBeInterfaceCompiler;
|
|
28
28
|
typescript: IAutoBeTypeScriptCompiler;
|
|
29
29
|
test: IAutoBeTestCompiler;
|
package/lib/AutoBeCompiler.js
CHANGED
|
@@ -11,8 +11,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AutoBeCompiler = void 0;
|
|
13
13
|
const AutoBeTypeScriptCompiler_1 = require("./AutoBeTypeScriptCompiler");
|
|
14
|
+
const AutoBeDatabaseCompiler_1 = require("./database/AutoBeDatabaseCompiler");
|
|
14
15
|
const AutoBeInterfaceCompiler_1 = require("./interface/AutoBeInterfaceCompiler");
|
|
15
|
-
const AutoBePrismaCompiler_1 = require("./prisma/AutoBePrismaCompiler");
|
|
16
16
|
const AutoBeCompilerCommonTemplate_1 = require("./raw/AutoBeCompilerCommonTemplate");
|
|
17
17
|
const AutoBeCompilerInterfaceTemplate_1 = require("./raw/AutoBeCompilerInterfaceTemplate");
|
|
18
18
|
const AutoBeCompilerRealizeTemplate_1 = require("./raw/AutoBeCompilerRealizeTemplate");
|
|
@@ -46,7 +46,7 @@ const AutoBeTestCompiler_1 = require("./test/AutoBeTestCompiler");
|
|
|
46
46
|
class AutoBeCompiler {
|
|
47
47
|
constructor(listener) {
|
|
48
48
|
this.listener = listener;
|
|
49
|
-
this.
|
|
49
|
+
this.database = new AutoBeDatabaseCompiler_1.AutoBeDatabaseCompiler();
|
|
50
50
|
this.interface = new AutoBeInterfaceCompiler_1.AutoBeInterfaceCompiler();
|
|
51
51
|
this.typescript = new AutoBeTypeScriptCompiler_1.AutoBeTypeScriptCompiler();
|
|
52
52
|
this.test = new AutoBeTestCompiler_1.AutoBeTestCompiler();
|
|
@@ -71,7 +71,7 @@ class AutoBeCompiler {
|
|
|
71
71
|
exports.AutoBeCompiler = AutoBeCompiler;
|
|
72
72
|
const PHASES = [
|
|
73
73
|
"analyze",
|
|
74
|
-
"
|
|
74
|
+
"database",
|
|
75
75
|
"interface",
|
|
76
76
|
"test",
|
|
77
77
|
"realize",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeCompiler.js","sourceRoot":"","sources":["../src/AutoBeCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAYA,yEAAsE;AACtE,iFAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"AutoBeCompiler.js","sourceRoot":"","sources":["../src/AutoBeCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAYA,yEAAsE;AACtE,8EAA2E;AAC3E,iFAA8E;AAC9E,qFAAkF;AAClF,2FAAwF;AACxF,uFAAoF;AACpF,2GAAwG;AACxG,uGAAoG;AACpG,iFAA8E;AAC9E,2EAAwE;AACxE,kEAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAa,cAAc;IAOzB,YAAoC,QAAiC;QAAjC,aAAQ,GAAR,QAAQ,CAAyB;QACnE,IAAI,CAAC,QAAQ,GAAG,IAAI,+CAAsB,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,iDAAuB,EAAE,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,mDAAwB,EAAE,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,IAAI,uCAAkB,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClE,CAAC;IAEY,WAAW,CACtB,OAAyC;;YAEzC,MAAM,MAAM,qBACP,2DAA4B,CAChC,CAAC;YACF,MAAM,KAAK,GAAW,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,KAAK,IAAI,YAAY;gBACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iEAA+B,CAAC,CAAC;YACzD,IAAI,KAAK,IAAI,OAAO;gBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,uDAA0B,CAAC,CAAC;YACxE,IAAI,KAAK,IAAI,UAAU;gBACrB,MAAM,CAAC,MAAM,CACX,MAAM,EACN,6DAA6B,EAC7B,OAAO,CAAC,IAAI,KAAK,UAAU;oBACzB,CAAC,CAAC,iFAAuC;oBACzC,CAAC,CAAC,6EAAqC,CAC1C,CAAC;YACJ,OAAO,MAAM,CAAC;QAChB,CAAC;KAAA;CACF;AAnCD,wCAmCC;AAED,MAAM,MAAM,GAAkB;IAC5B,SAAS;IACT,UAAU;IACV,WAAW;IACX,MAAM;IACN,SAAS;CACV,CAAC;AACF,MAAM,YAAY,GAAW,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACzD,MAAM,OAAO,GAAW,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,MAAM,UAAU,GAAW,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
|
|
@@ -28,4 +28,5 @@ export declare class AutoBeTypeScriptCompiler implements IAutoBeTypeScriptCompil
|
|
|
28
28
|
compile(props: IAutoBeTypeScriptCompileProps): Promise<IAutoBeTypeScriptCompileResult>;
|
|
29
29
|
getExternal(location: string): Promise<string | undefined>;
|
|
30
30
|
beautify(script: string): Promise<string>;
|
|
31
|
+
removeImportStatements(script: string): Promise<string>;
|
|
31
32
|
}
|
|
@@ -15,6 +15,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
exports.AutoBeTypeScriptCompiler = void 0;
|
|
16
16
|
const transform_1 = __importDefault(require("@nestia/core/lib/transform"));
|
|
17
17
|
const embed_eslint_1 = require("embed-eslint");
|
|
18
|
+
const tstl_1 = require("tstl");
|
|
19
|
+
// import { Pair } from "tstl";
|
|
18
20
|
const typescript_1 = __importDefault(require("typescript"));
|
|
19
21
|
const transform_2 = __importDefault(require("typia/lib/transform"));
|
|
20
22
|
const nestjs_json_1 = __importDefault(require("./raw/nestjs.json"));
|
|
@@ -60,6 +62,7 @@ class AutoBeTypeScriptCompiler {
|
|
|
60
62
|
paths: {
|
|
61
63
|
[alias]: ["./src/api"],
|
|
62
64
|
[`${alias}/lib/*`]: ["./src/api/*"],
|
|
65
|
+
["@prisma/sdk"]: ["./src/prisma/client.ts"],
|
|
63
66
|
},
|
|
64
67
|
strict: true,
|
|
65
68
|
skipLibCheck: true,
|
|
@@ -94,6 +97,30 @@ class AutoBeTypeScriptCompiler {
|
|
|
94
97
|
beautify(script) {
|
|
95
98
|
return FilePrinter_1.FilePrinter.beautify(script);
|
|
96
99
|
}
|
|
100
|
+
removeImportStatements(script) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
try {
|
|
103
|
+
const sourceFile = typescript_1.default.createSourceFile("module.ts", script, typescript_1.default.ScriptTarget.ESNext, true);
|
|
104
|
+
const statements = sourceFile.statements.filter((stmt) => stmt.kind !== typescript_1.default.SyntaxKind.ImportDeclaration);
|
|
105
|
+
const printer = typescript_1.default.createPrinter();
|
|
106
|
+
return statements
|
|
107
|
+
.map((stmt) => printer.printNode(typescript_1.default.EmitHint.Unspecified, stmt, sourceFile))
|
|
108
|
+
.join("\n");
|
|
109
|
+
}
|
|
110
|
+
catch (_a) {
|
|
111
|
+
script = yield this.beautify(script);
|
|
112
|
+
const lines = script.replaceAll("\r\n", "\n").split("\n");
|
|
113
|
+
const indexes = lines
|
|
114
|
+
.map((s, i) => s.startsWith("import ")
|
|
115
|
+
? new tstl_1.Pair(i, lines.slice(i).findIndex((s) => s.endsWith(";")) + i)
|
|
116
|
+
: null)
|
|
117
|
+
.filter((p) => p !== null);
|
|
118
|
+
for (const index of indexes.reverse())
|
|
119
|
+
lines.splice(index.first, index.second - index.first + 1);
|
|
120
|
+
return lines.join("\n");
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
97
124
|
}
|
|
98
125
|
exports.AutoBeTypeScriptCompiler = AutoBeTypeScriptCompiler;
|
|
99
126
|
//# sourceMappingURL=AutoBeTypeScriptCompiler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeTypeScriptCompiler.js","sourceRoot":"","sources":["../src/AutoBeTypeScriptCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,2EAA6D;AAC7D,+CAA2C;AAC3C,4DAA4B;AAC5B,oEAAiD;AAEjD,oEAA+C;AAC/C,qDAAkD;AAClD,qEAAkE;AAElE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,wBAAwB;IACtB,OAAO,CAClB,KAAoC;;;YAEpC,MAAM,KAAK,GAAW,MAAA,KAAK,CAAC,OAAO,mCAAI,2BAA2B,CAAC;YACnE,MAAM,QAAQ,GAAgB,IAAI,0BAAW,CAAC;gBAC5C,QAAQ,EAAE,qBAAwC;gBAClD,eAAe,EAAE;oBACf,MAAM,EAAE,oBAAE,CAAC,YAAY,CAAC,MAAM;oBAC9B,MAAM,EAAE,oBAAE,CAAC,UAAU,CAAC,QAAQ;oBAC9B,kBAAkB,EAAE,IAAI;oBACxB,OAAO,EAAE,IAAI;oBACb,KAAK,EAAE;wBACL,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC;wBACtB,CAAC,GAAG,KAAK,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"AutoBeTypeScriptCompiler.js","sourceRoot":"","sources":["../src/AutoBeTypeScriptCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AutoBeDatabase, IAutoBeDatabaseCompiler, IAutoBeDatabaseValidation, IAutoBePrismaCompileResult, IAutoBePrismaCompilerProps } from "@autobe/interface";
|
|
2
|
+
export declare class AutoBeDatabaseCompiler implements IAutoBeDatabaseCompiler {
|
|
3
|
+
compilePrismaSchemas(props: IAutoBePrismaCompilerProps): Promise<IAutoBePrismaCompileResult>;
|
|
4
|
+
writePrismaSchemas(application: AutoBeDatabase.IApplication, dbms?: "postgres" | "sqlite"): Promise<Record<string, string>>;
|
|
5
|
+
validate(application: AutoBeDatabase.IApplication): Promise<IAutoBeDatabaseValidation>;
|
|
6
|
+
}
|
|
@@ -9,23 +9,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.AutoBeDatabaseCompiler = void 0;
|
|
13
13
|
const utils_1 = require("@autobe/utils");
|
|
14
14
|
const embed_prisma_1 = require("embed-prisma");
|
|
15
|
-
const
|
|
16
|
-
class
|
|
17
|
-
|
|
15
|
+
const validateDatabaseApplication_1 = require("./validateDatabaseApplication");
|
|
16
|
+
class AutoBeDatabaseCompiler {
|
|
17
|
+
compilePrismaSchemas(props) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
19
|
const compiler = new embed_prisma_1.EmbedPrisma();
|
|
20
|
-
|
|
20
|
+
const result = yield compiler.compile(props.files);
|
|
21
|
+
if (result.type !== "success")
|
|
22
|
+
return result;
|
|
23
|
+
return Object.assign(Object.assign({}, result), { client: Object.fromEntries(Object.entries(result.client).map(([key, value]) => [
|
|
24
|
+
`src/prisma/${key}`,
|
|
25
|
+
value,
|
|
26
|
+
])) });
|
|
21
27
|
});
|
|
22
28
|
}
|
|
23
|
-
|
|
24
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
-
return (0, validatePrismaApplication_1.validatePrismaApplication)(application);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
write(application_1) {
|
|
29
|
+
writePrismaSchemas(application_1) {
|
|
29
30
|
return __awaiter(this, arguments, void 0, function* (application, dbms = "postgres") {
|
|
30
31
|
return (0, utils_1.writePrismaApplication)({
|
|
31
32
|
application,
|
|
@@ -33,6 +34,11 @@ class AutoBePrismaCompiler {
|
|
|
33
34
|
});
|
|
34
35
|
});
|
|
35
36
|
}
|
|
37
|
+
validate(application) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
return (0, validateDatabaseApplication_1.validateDatabaseApplication)(application);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
36
42
|
}
|
|
37
|
-
exports.
|
|
38
|
-
//# sourceMappingURL=
|
|
43
|
+
exports.AutoBeDatabaseCompiler = AutoBeDatabaseCompiler;
|
|
44
|
+
//# sourceMappingURL=AutoBeDatabaseCompiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoBeDatabaseCompiler.js","sourceRoot":"","sources":["../../src/database/AutoBeDatabaseCompiler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,yCAAuD;AACvD,+CAA2C;AAE3C,+EAA4E;AAE5E,MAAa,sBAAsB;IACpB,oBAAoB,CAC/B,KAAiC;;YAEjC,MAAM,QAAQ,GAAgB,IAAI,0BAAW,EAAE,CAAC;YAChD,MAAM,MAAM,GAA+B,MAAM,QAAQ,CAAC,OAAO,CAC/D,KAAK,CAAC,KAAK,CACZ,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YAC7C,uCACK,MAAM,KACT,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;oBAClD,cAAc,GAAG,EAAE;oBACnB,KAAK;iBACN,CAAC,CACH,IACD;QACJ,CAAC;KAAA;IAEY,kBAAkB;6DAC7B,WAAwC,EACxC,OAA8B,UAAU;YAExC,OAAO,IAAA,8BAAsB,EAAC;gBAC5B,WAAW;gBACX,IAAI;aACL,CAAC,CAAC;QACL,CAAC;KAAA;IAEY,QAAQ,CACnB,WAAwC;;YAExC,OAAO,IAAA,yDAA2B,EAAC,WAAW,CAAC,CAAC;QAClD,CAAC;KAAA;CACF;AAnCD,wDAmCC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.validateDatabaseApplication = validateDatabaseApplication;
|
|
4
4
|
const utils_1 = require("@autobe/utils");
|
|
5
5
|
const tstl_1 = require("tstl");
|
|
6
|
-
function
|
|
6
|
+
function validateDatabaseApplication(application) {
|
|
7
7
|
const dict = new Map(application.files
|
|
8
8
|
.map((file, fi) => file.models.map((model, mi) => [
|
|
9
9
|
model.name,
|
|
@@ -24,8 +24,10 @@ function validatePrismaApplication(application) {
|
|
|
24
24
|
return [
|
|
25
25
|
...validateDuplicatedFields(dict, model, accessor),
|
|
26
26
|
...validateDuplicatedIndexes(model, accessor),
|
|
27
|
+
...validateValidNames(model, accessor),
|
|
27
28
|
...validateIndexes(model, accessor),
|
|
28
29
|
...validateReferences(model, accessor, dict),
|
|
30
|
+
...validateDuplicatedRelationOppositeNames(dict, model),
|
|
29
31
|
];
|
|
30
32
|
}))
|
|
31
33
|
.flat(2),
|
|
@@ -341,7 +343,7 @@ function validateDuplicatedIndexes(model, accessor) {
|
|
|
341
343
|
if (model.ginIndexes.length !==
|
|
342
344
|
new Set(model.ginIndexes.map((g) => g.fieldName)).size)
|
|
343
345
|
errors.push({
|
|
344
|
-
path: `${accessor}.ginIndexes
|
|
346
|
+
path: `${accessor}.ginIndexes`,
|
|
345
347
|
table: model.name,
|
|
346
348
|
field: null,
|
|
347
349
|
message: utils_1.StringUtil.trim `
|
|
@@ -354,9 +356,181 @@ function validateDuplicatedIndexes(model, accessor) {
|
|
|
354
356
|
});
|
|
355
357
|
return errors;
|
|
356
358
|
}
|
|
359
|
+
function validateDuplicatedRelationOppositeNames(dict, model) {
|
|
360
|
+
const errors = [];
|
|
361
|
+
const group = new Map();
|
|
362
|
+
// Collect all field/relation names in the target model
|
|
363
|
+
const targetFieldNames = new Set([
|
|
364
|
+
model.primaryField.name,
|
|
365
|
+
...model.foreignFields.map((f) => f.name),
|
|
366
|
+
...model.foreignFields.map((f) => f.relation.name),
|
|
367
|
+
...model.plainFields.map((f) => f.name),
|
|
368
|
+
]);
|
|
369
|
+
for (const c of dict.values()) {
|
|
370
|
+
c.model.foreignFields.forEach((ff, i) => {
|
|
371
|
+
if (ff.relation.targetModel !== model.name)
|
|
372
|
+
return;
|
|
373
|
+
utils_1.MapUtil.take(group, ff.relation.oppositeName, () => []).push({
|
|
374
|
+
container: c,
|
|
375
|
+
foreignField: ff,
|
|
376
|
+
foreignFieldIndex: i,
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
// Check oppositeName conflicts with target model's existing fields
|
|
381
|
+
for (const [oppositeName, array] of group) {
|
|
382
|
+
if (targetFieldNames.has(oppositeName)) {
|
|
383
|
+
array.forEach((item) => {
|
|
384
|
+
const c = item.container;
|
|
385
|
+
const ff = item.foreignField;
|
|
386
|
+
errors.push({
|
|
387
|
+
path: `application.files[${c.fileIndex}].models[${c.modelIndex}].foreignFields[${item.foreignFieldIndex}].relation.oppositeName`,
|
|
388
|
+
table: c.model.name,
|
|
389
|
+
field: ff.name,
|
|
390
|
+
message: utils_1.StringUtil.trim `
|
|
391
|
+
oppositeName "${oppositeName}" conflicts with existing field in target model "${model.name}".
|
|
392
|
+
|
|
393
|
+
**What happened?**
|
|
394
|
+
The oppositeName "${oppositeName}" would create a reverse relation property in "${model.name}",
|
|
395
|
+
but "${model.name}" already has a field or relation with that name.
|
|
396
|
+
|
|
397
|
+
**Why is this a problem?**
|
|
398
|
+
- Prisma cannot have two properties with the same name in a model
|
|
399
|
+
- This will cause Prisma schema compilation errors
|
|
400
|
+
- The reverse relation would overwrite or conflict with the existing field
|
|
401
|
+
|
|
402
|
+
**How to fix:**
|
|
403
|
+
Choose a different oppositeName that doesn't conflict with existing fields in "${model.name}".
|
|
404
|
+
|
|
405
|
+
**Naming suggestions:**
|
|
406
|
+
- Add a descriptive prefix/suffix: "${oppositeName}List", "${oppositeName}Items", "related${oppositeName.charAt(0).toUpperCase() + oppositeName.slice(1)}"
|
|
407
|
+
- Use the source model name: "${c.model.name.replace(/_/g, "").toLowerCase()}s"
|
|
408
|
+
`,
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Check duplicate oppositeNames among relations targeting the same model
|
|
414
|
+
for (const [oppositeName, array] of group) {
|
|
415
|
+
if (array.length === 1)
|
|
416
|
+
continue;
|
|
417
|
+
array.forEach((item, i) => {
|
|
418
|
+
const c = item.container;
|
|
419
|
+
const ff = item.foreignField;
|
|
420
|
+
errors.push({
|
|
421
|
+
path: `application.files[${c.fileIndex}].models[${c.modelIndex}].foreignFields[${item.foreignFieldIndex}].relation.oppositeName`,
|
|
422
|
+
table: c.model.name,
|
|
423
|
+
field: ff.name,
|
|
424
|
+
message: utils_1.StringUtil.trim `
|
|
425
|
+
Duplicated relation oppositeName "${oppositeName}" detected on target model "${model.name}".
|
|
426
|
+
|
|
427
|
+
**What is oppositeName?**
|
|
428
|
+
In Prisma relations, oppositeName defines the name of the reverse relation field
|
|
429
|
+
on the target model. It allows the target model to access related records through
|
|
430
|
+
this named property.
|
|
431
|
+
|
|
432
|
+
**Current situation:**
|
|
433
|
+
Multiple foreign key fields from different models are trying to create reverse
|
|
434
|
+
relations on "${model.name}" with the same oppositeName "${oppositeName}".
|
|
435
|
+
|
|
436
|
+
**Conflicting relations:**
|
|
437
|
+
${array
|
|
438
|
+
.filter((_, j) => i !== j)
|
|
439
|
+
.map((oppo) => `- Model "${oppo.container.model.name}", field "${oppo.foreignField.name}" (accessor: application.files[${oppo.container.fileIndex}].models[${oppo.container.modelIndex}].foreignFields[${oppo.foreignFieldIndex}].relation.oppositeName)`)
|
|
440
|
+
.join("\n")}
|
|
441
|
+
|
|
442
|
+
**Why is this a problem?**
|
|
443
|
+
- Prisma requires unique relation names within a model
|
|
444
|
+
- When "${model.name}" tries to access related records, it won't know which relation to use
|
|
445
|
+
- This will cause Prisma schema compilation errors
|
|
446
|
+
|
|
447
|
+
**How to fix:**
|
|
448
|
+
Each relation pointing to "${model.name}" must have a unique oppositeName.
|
|
449
|
+
|
|
450
|
+
**Naming suggestions:**
|
|
451
|
+
- Use descriptive names that indicate the relationship's purpose
|
|
452
|
+
- Include the source model name for clarity
|
|
453
|
+
- Examples:
|
|
454
|
+
- Instead of both using "orders", use "customerOrders" and "sellerOrders"
|
|
455
|
+
- Instead of both using "users", use "createdByUser" and "assignedToUser"
|
|
456
|
+
- For "${c.model.name}" → "${model.name}": consider "${c.model.name.charAt(0).toLowerCase() + c.model.name.slice(1)}s" or a more descriptive name
|
|
457
|
+
|
|
458
|
+
Please rename the oppositeName to be unique across all relations targeting "${model.name}".
|
|
459
|
+
`,
|
|
460
|
+
});
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
return errors;
|
|
464
|
+
}
|
|
357
465
|
/* -----------------------------------------------------------
|
|
358
466
|
VALIDATIONS
|
|
359
467
|
----------------------------------------------------------- */
|
|
468
|
+
function validateValidNames(model, accessor) {
|
|
469
|
+
const errors = [];
|
|
470
|
+
const validate = (props) => {
|
|
471
|
+
if (utils_1.AutoBeEscaper.reserved(props.value))
|
|
472
|
+
errors.push({
|
|
473
|
+
path: props.accessor,
|
|
474
|
+
table: model.name,
|
|
475
|
+
field: props.field,
|
|
476
|
+
message: utils_1.StringUtil.trim `
|
|
477
|
+
The name "${props.value}" is a system reserved keyword and cannot be used.
|
|
478
|
+
`,
|
|
479
|
+
});
|
|
480
|
+
else if (utils_1.AutoBeEscaper.variable(props.value) === false)
|
|
481
|
+
errors.push({
|
|
482
|
+
path: props.accessor,
|
|
483
|
+
table: model.name,
|
|
484
|
+
field: props.field,
|
|
485
|
+
message: utils_1.StringUtil.trim `
|
|
486
|
+
The name "${props.value}" is not a valid identifier.
|
|
487
|
+
|
|
488
|
+
Change to a valid identifier which can be a variable name in programming languages.
|
|
489
|
+
`,
|
|
490
|
+
});
|
|
491
|
+
};
|
|
492
|
+
// TABLE NAME
|
|
493
|
+
validate({
|
|
494
|
+
value: model.name,
|
|
495
|
+
accessor: `${accessor}.name`,
|
|
496
|
+
field: null,
|
|
497
|
+
});
|
|
498
|
+
// FIELDS
|
|
499
|
+
validate({
|
|
500
|
+
value: model.primaryField.name,
|
|
501
|
+
accessor: `${accessor}.primaryField.name`,
|
|
502
|
+
field: model.primaryField.name,
|
|
503
|
+
});
|
|
504
|
+
model.foreignFields.forEach((ff, i) => {
|
|
505
|
+
validate({
|
|
506
|
+
value: ff.name,
|
|
507
|
+
accessor: `${accessor}.foreignFields[${i}].name`,
|
|
508
|
+
field: ff.name,
|
|
509
|
+
});
|
|
510
|
+
validate({
|
|
511
|
+
value: ff.relation.name,
|
|
512
|
+
accessor: `${accessor}.foreignFields[${i}].relation.name`,
|
|
513
|
+
field: ff.name,
|
|
514
|
+
});
|
|
515
|
+
validate({
|
|
516
|
+
value: ff.relation.oppositeName,
|
|
517
|
+
accessor: `${accessor}.foreignFields[${i}].relation.oppositeName`,
|
|
518
|
+
field: ff.name,
|
|
519
|
+
});
|
|
520
|
+
if (ff.relation.mappingName)
|
|
521
|
+
validate({
|
|
522
|
+
value: ff.relation.mappingName,
|
|
523
|
+
accessor: `${accessor}.foreignFields[${i}].relation.mappingName`,
|
|
524
|
+
field: ff.name,
|
|
525
|
+
});
|
|
526
|
+
});
|
|
527
|
+
model.plainFields.forEach((pf, i) => validate({
|
|
528
|
+
value: pf.name,
|
|
529
|
+
accessor: `${accessor}.plainFields[${i}].name`,
|
|
530
|
+
field: pf.name,
|
|
531
|
+
}));
|
|
532
|
+
return errors;
|
|
533
|
+
}
|
|
360
534
|
function validateIndexes(model, accessor) {
|
|
361
535
|
// EMENSION
|
|
362
536
|
model.uniqueIndexes = model.uniqueIndexes.filter((unique) => unique.fieldNames.length !== 0 &&
|
|
@@ -570,4 +744,4 @@ function validateReferences(model, accessor, dict) {
|
|
|
570
744
|
});
|
|
571
745
|
return errors;
|
|
572
746
|
}
|
|
573
|
-
//# sourceMappingURL=
|
|
747
|
+
//# sourceMappingURL=validateDatabaseApplication.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateDatabaseApplication.js","sourceRoot":"","sources":["../../src/database/validateDatabaseApplication.ts"],"names":[],"mappings":";;AAIA,kEAkDC;AArDD,yCAAmE;AACnE,+BAAqC;AAErC,SAAgB,2BAA2B,CACzC,WAAwC;IAExC,MAAM,IAAI,GAAiC,IAAI,GAAG,CAChD,WAAW,CAAC,KAAK;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CACZ;QACE,KAAK,CAAC,IAAI;QACV;YACE,IAAI;YACJ,KAAK;YACL,SAAS,EAAE,EAAE;YACb,UAAU,EAAE,EAAE;SACf;KACkC,CACxC,CACF;SACA,IAAI,EAAE,CACV,CAAC;IACF,MAAM,MAAM,GAAuC;QACjD,GAAG,uBAAuB,CAAC,WAAW,CAAC;QACvC,GAAG,wBAAwB,CAAC,WAAW,CAAC;QACxC,GAAG,WAAW,CAAC,KAAK;aACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAW,qBAAqB,EAAE,YAAY,EAAE,GAAG,CAAC;YAClE,OAAO;gBACL,GAAG,wBAAwB,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC;gBAClD,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,CAAC;gBAC7C,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACtC,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC;gBACnC,GAAG,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;gBAC5C,GAAG,uCAAuC,CAAC,IAAI,EAAE,KAAK,CAAC;aACxD,CAAC;QACJ,CAAC,CAAC,CACH;aACA,IAAI,CAAC,CAAC,CAAC;KACX,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC;QACxB,CAAC,CAAC;YACE,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,WAAW;SAClB;QACH,CAAC,CAAC;YACE,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,WAAW;YACjB,MAAM;SACP,CAAC;AACR,CAAC;AASD;;8DAE8D;AAC9D,SAAS,uBAAuB,CAC9B,GAAgC;IAMhC,MAAM,KAAK,GAAkC,IAAI,GAAG,EAAE,CAAC;IACvD,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,SAAS,GAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7D,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB,SAAS,CAAC,KAAK,GAAG;oBAC7C,KAAK,EAAE,IAAI;oBACX,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;mBACf,SAAS,CAAC,IAAI,CAAC,QAAQ;;;;cAI5B,KAAK;yBACJ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,IAAI,CAAC,KAAK,GAAG,CAAC;yBACnD,IAAI,CAAC,IAAI,CAAC;WACd;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAgC;IAEhC,MAAM,eAAe,GAAmC,IAAI,GAAG,EAAE,CAAC;IAClE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;YACxC,MAAM,SAAS,GAAoB;gBACjC,IAAI;gBACJ,KAAK;gBACL,SAAS;gBACT,UAAU;aACX,CAAC;YACF,eAAO,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,EAAE;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB,SAAS,CAAC,SAAS,YAAY,SAAS,CAAC,UAAU,GAAG;oBACjF,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI;oBAC3B,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;oBACd,SAAS,CAAC,KAAK,CAAC,IAAI;;;;cAI1B,KAAK;yBACJ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC7B,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,uBAAuB,IAAI,CAAC,SAAS,YAAY,IAAI,CAAC,UAAU,GAAG,CACtE;yBACA,IAAI,CAAC,IAAI,CAAC;WACd;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;IACP,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAkC,EAClC,KAA4B,EAC5B,QAAgB;IAEhB,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,yBAAyB;IACzB,MAAM,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IAC/C,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CACzD,GAAG,QAAQ,oBAAoB,CAChC,CAAC;IACF,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACvC,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAC5C,GAAG,QAAQ,kBAAkB,CAAC,QAAQ,CACvC,CAAC;QACF,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CACrD,GAAG,QAAQ,kBAAkB,CAAC,iBAAiB,CAChD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACrC,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAC5C,GAAG,QAAQ,gBAAgB,CAAC,QAAQ,CACrC,CACF,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK;QAChC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK;oBACL,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;oBACd,KAAK;;;;cAIX,KAAK;yBACJ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;yBACpB,IAAI,CAAC,IAAI,CAAC;WACd;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;IAEP,0BAA0B;IAC1B,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,GAAG,QAAQ,gBAAgB,CAAC,QAAQ;gBAC1C,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;uBAIT,KAAK,CAAC,IAAI,eAAe,KAAK,CAAC,IAAI,yCAAyC,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA4BpG;aACF,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAChC,KAA4B,EAC5B,QAAgB;IAEhB,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,0BAA0B;IAC1B,MAAM,KAAK,GAAgC,IAAI,cAAO,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,GAAG,CAAC,CAAC,EACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CACjE,CAAC;IACF,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CACxC,KAAK;SACF,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SACjC,IAAI,CAAC,GAAG,QAAQ,kBAAkB,CAAC,cAAc,CAAC,CACtD,CAAC;IACF,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CACtC,KAAK;SACF,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAChC,IAAI,CAAC,GAAG,QAAQ,iBAAiB,CAAC,cAAc,CAAC,CACrD,CAAC;IACF,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAClC,KAAK;SACF,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;SAC/B,IAAI,CAAC,GAAG,QAAQ,eAAe,CAAC,aAAa,CAAC,CAClD,CAAC;IACF,KAAK,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK;QACtD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI;oBACJ,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;sCACI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;cAI7C,KAAK;yBACJ,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;yBAC7B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;yBACpB,IAAI,CAAC,IAAI,CAAC;WACd;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;IAEP,mBAAmB;IACnB,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO;QAC1C,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACxC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO;YACnC,MAAM,MAAM,GAAa,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvD,IACE,CAAC,KAAK,CAAC;gBACP,KAAK,CAAC,aAAa,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,CACjD;gBAED,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,QAAQ,kBAAkB,CAAC,iBAAiB;oBACrD,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;6CACW,MAAM,CAAC,CAAC,CAAC;;;;;;WAM3C;iBACF,CAAC,CAAC;YACL,MAAM,MAAM,GAAW,KAAK,CAAC,aAAa,CAAC,SAAS,CAClD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;gBACrC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CACtD,CAAC;YACF,IAAI,MAAM,KAAK,CAAC,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,QAAQ,kBAAkB,CAAC,cAAc;oBAClD,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;;;6CAQW,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;mEACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;uDAkB7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;qDAInB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;WAQ3D;iBACF,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO;iBACf,IACH,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM;gBACzC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAEnD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,QAAQ,iBAAiB,CAAC,cAAc;oBACjD,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;;;4CAQU,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oEACC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;uCAkBpD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oCAC1B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;WAShD;iBACF,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,IACE,KAAK,CAAC,UAAU,CAAC,MAAM;QACvB,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;QAEtD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,GAAG,QAAQ,aAAa;YAC9B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;OAMvB;SACF,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uCAAuC,CAC9C,IAAkC,EAClC,KAA4B;IAO5B,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,MAAM,KAAK,GAA0C,IAAI,GAAG,EAAE,CAAC;IAE/D,uDAAuD;IACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS;QACvC,KAAK,CAAC,YAAY,CAAC,IAAI;QACvB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzC,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAClD,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KACxC,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI;gBAAE,OAAO;YACnD,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;gBAC3D,SAAS,EAAE,CAAC;gBACZ,YAAY,EAAE,EAAE;gBAChB,iBAAiB,EAAE,CAAC;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAC1C,IAAI,gBAAgB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;gBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,UAAU,mBAAmB,IAAI,CAAC,iBAAiB,yBAAyB;oBAChI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;oBACnB,KAAK,EAAE,EAAE,CAAC,IAAI;oBACd,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;4BACN,YAAY,oDAAoD,KAAK,CAAC,IAAI;;;gCAGtE,YAAY,kDAAkD,KAAK,CAAC,IAAI;mBACrF,KAAK,CAAC,IAAI;;;;;;;;6FAQgE,KAAK,CAAC,IAAI;;;kDAGrD,YAAY,WAAW,YAAY,mBAAmB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;4CACxH,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE;WAC7E;iBACF,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACzB,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,qBAAqB,CAAC,CAAC,SAAS,YAAY,CAAC,CAAC,UAAU,mBAAmB,IAAI,CAAC,iBAAiB,yBAAyB;gBAChI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;gBACnB,KAAK,EAAE,EAAE,CAAC,IAAI;gBACd,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;8CACc,YAAY,+BAA+B,KAAK,CAAC,IAAI;;;;;;;;;0BASzE,KAAK,CAAC,IAAI,iCAAiC,YAAY;;;YAGrE,KAAK;qBACJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;qBACzB,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,YAAY,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,aAAa,IAAI,CAAC,YAAY,CAAC,IAAI,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,mBAAmB,IAAI,CAAC,iBAAiB,0BAA0B,CAC7O;qBACA,IAAI,CAAC,IAAI,CAAC;;;;oBAIH,KAAK,CAAC,IAAI;;;;uCAIS,KAAK,CAAC,IAAI;;;;;;;;qBAQ5B,CAAC,CAAC,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;;wFAEvC,KAAK,CAAC,IAAI;SACzF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;8DAE8D;AAC9D,SAAS,kBAAkB,CACzB,KAA4B,EAC5B,QAAgB;IAEhB,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,KAIjB,EAAQ,EAAE;QACT,IAAI,qBAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;YACrC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,QAAQ;gBACpB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;oBACZ,KAAK,CAAC,KAAK;OACxB;aACA,CAAC,CAAC;aACA,IAAI,qBAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK;YACpD,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,QAAQ;gBACpB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;oBACZ,KAAK,CAAC,KAAK;;;OAGxB;aACA,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,aAAa;IACb,QAAQ,CAAC;QACP,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,QAAQ,EAAE,GAAG,QAAQ,OAAO;QAC5B,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,SAAS;IACT,QAAQ,CAAC;QACP,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI;QAC9B,QAAQ,EAAE,GAAG,QAAQ,oBAAoB;QACzC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,IAAI;KAC/B,CAAC,CAAC;IACH,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACpC,QAAQ,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,QAAQ,kBAAkB,CAAC,QAAQ;YAChD,KAAK,EAAE,EAAE,CAAC,IAAI;SACf,CAAC,CAAC;QACH,QAAQ,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YACvB,QAAQ,EAAE,GAAG,QAAQ,kBAAkB,CAAC,iBAAiB;YACzD,KAAK,EAAE,EAAE,CAAC,IAAI;SACf,CAAC,CAAC;QACH,QAAQ,CAAC;YACP,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY;YAC/B,QAAQ,EAAE,GAAG,QAAQ,kBAAkB,CAAC,yBAAyB;YACjE,KAAK,EAAE,EAAE,CAAC,IAAI;SACf,CAAC,CAAC;QACH,IAAI,EAAE,CAAC,QAAQ,CAAC,WAAW;YACzB,QAAQ,CAAC;gBACP,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,WAAW;gBAC9B,QAAQ,EAAE,GAAG,QAAQ,kBAAkB,CAAC,wBAAwB;gBAChE,KAAK,EAAE,EAAE,CAAC,IAAI;aACf,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAClC,QAAQ,CAAC;QACP,KAAK,EAAE,EAAE,CAAC,IAAI;QACd,QAAQ,EAAE,GAAG,QAAQ,gBAAgB,CAAC,QAAQ;QAC9C,KAAK,EAAE,EAAE,CAAC,IAAI;KACf,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,KAA4B,EAC5B,QAAgB;IAEhB,WAAW;IACX,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,CAC9C,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,IAAI,CACnD,CAAC;IACF,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAC5C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QAC7B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,IAAI,CAClD,CAAC;IAEF,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,MAAM,WAAW,GAAgB,IAAI,GAAG,CAAC;QACvC,KAAK,CAAC,YAAY,CAAC,IAAI;QACvB,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QACjD,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,CAAI,KAMpB,EAAE,EAAE;QACH,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAC/B,oBAAoB;YACpB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;wBAC3C,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,KAAK,EAAE,IAAI;wBACX,OAAO,EAAE,SAAS,IAAI,4BAA4B,KAAK,CAAC,IAAI,GAAG;qBAChE,CAAC,CAAC;gBACL,IAAI,KAAK,CAAC,UAAU;oBAAE,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,QAAQ,CAAC;QACP,KAAK,EAAE,cAAc;QACrB,OAAO,EAAE,KAAK,CAAC,aAAa;QAC5B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU;QACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,GAAG;KAC3D,CAAC,CAAC;IACH,QAAQ,CAAC;QACP,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,KAAK,CAAC,YAAY;QAC3B,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU;QACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,GAAG;KAC1D,CAAC,CAAC;IACH,QAAQ,CAAC;QACP,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,KAAK,CAAC,UAAU;QACzB,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,aAAa;QAC7C,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAW,KAAK,CAAC,WAAW,CAAC,SAAS,CAChD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CACxC,CAAC;YACF,IAAI,MAAM,KAAK,CAAC,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,QAAQ,eAAe,CAAC,aAAa;oBAC9C,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;;;;yBAST,GAAG,CAAC,SAAS;wBACd,KAAK,CAAC,IAAI;;;;;;;;;;;;;;;;;;;;;;WAsBvB;iBACF,CAAC,CAAC;iBACA,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,QAAQ;gBAClD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,GAAG,QAAQ,eAAe,CAAC,aAAa;oBAC9C,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI;oBACrC,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;;;;;;2DAWyB,GAAG,CAAC,SAAS,uBAAuB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI;;;;;;;;;;;;;iDAa5E,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI;;;;;;uBAMxD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI;8BACvB,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI;;;;kCAI1B,GAAG,QAAQ,gBAAgB,MAAM,GAAG;;;WAG3D;iBACF,CAAC,CAAC;QACP,CAAC;KACF,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAA4B,EAC5B,QAAgB,EAChB,IAAkC;IAElC,MAAM,MAAM,GAAuC,EAAE,CAAC;IAEtD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACvC,kBAAkB;QAElB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,kBAAkB;YAClB,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,GAAG,QAAQ,kBAAkB,CAAC,wBAAwB;gBAC5D,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,OAAO,EAAE,gBAAgB,KAAK,CAAC,QAAQ,CAAC,WAAW,kBAAkB;aACtE,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAClC,wBAAwB;YACxB,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,CAAC,IAAI,CAAC;wBACV,IAAI,EAAE,GAAG,QAAQ,kBAAkB,CAAC,wBAAwB;wBAC5D,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,KAAK,EAAE,KAAK,CAAC,IAAI;wBACjB,OAAO,EAAE,kBAAU,CAAC,IAAI,CAAA;;;;;;;;;kBASlB,KAAK,CAAC,IAAI,mCAAmC,KAAK,CAAC,IAAI,qBAAqB,KAAK,CAAC,QAAQ,CAAC,WAAW;kBACtG,KAAK,CAAC,QAAQ,CAAC,WAAW,uDAAuD,KAAK,CAAC,IAAI;oEACzC,MAAM,CAAC,SAAS,YAAY,MAAM,CAAC,UAAU,mBAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kFAoCnD;qBACvE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from "./AutoBeCompiler";
|
|
2
|
-
export * from "./
|
|
2
|
+
export * from "./database/AutoBeDatabaseCompiler";
|
|
3
3
|
export * from "./interface/AutoBeInterfaceCompiler";
|
|
4
4
|
export * from "./test/AutoBeTestCompiler";
|
|
5
5
|
export * from "./AutoBeTypeScriptCompiler";
|
package/lib/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./AutoBeCompiler"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./database/AutoBeDatabaseCompiler"), exports);
|
|
19
19
|
__exportStar(require("./interface/AutoBeInterfaceCompiler"), exports);
|
|
20
20
|
__exportStar(require("./test/AutoBeTestCompiler"), exports);
|
|
21
21
|
__exportStar(require("./AutoBeTypeScriptCompiler"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,oEAAkD;AAClD,sEAAoD;AACpD,4DAA0C;AAC1C,6DAA2C"}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AutoBeCompilerCommonTemplate = void 0;
|
|
4
4
|
exports.AutoBeCompilerCommonTemplate = {
|
|
5
5
|
".eslintrc.cjs": "module.exports = {\n root: true,\n plugins: [\"@typescript-eslint\", \"deprecation\"],\n extends: [\"plugin:@typescript-eslint/recommended\"],\n parser: \"@typescript-eslint/parser\",\n parserOptions: {\n project: [\"tsconfig.json\", \"test/tsconfig.json\"],\n },\n overrides: [\n {\n files: [\"src/**/*.ts\", \"test/**/*.ts\"],\n rules: {\n \"@typescript-eslint/consistent-type-definitions\": \"off\",\n \"@typescript-eslint/no-empty-function\": \"off\",\n \"@typescript-eslint/no-empty-interface\": \"off\",\n \"@typescript-eslint/no-explicit-any\": \"off\",\n \"@typescript-eslint/no-inferrable-types\": \"off\",\n \"@typescript-eslint/no-namespace\": \"off\",\n \"@typescript-eslint/no-non-null-assertion\": \"off\",\n \"@typescript-eslint/no-unused-expressions\": \"off\",\n \"@typescript-eslint/no-unused-vars\": \"off\",\n \"@typescript-eslint/no-var-requires\": \"off\",\n \"@typescript-eslint/no-floating-promises\": \"error\",\n \"@typescript-eslint/no-require-imports\": \"off\",\n \"@typescript-eslint/no-empty-object-type\": \"off\",\n \"@typescript-eslint/prefer-as-const\": \"off\",\n \"prefer-as-const\": \"off\",\n },\n },\n ],\n};\n",
|
|
6
|
-
".gitignore": "./autobe/\nbin/\ndist/\nlib/\nnode_modules/\n\nprisma/migrations\nprisma/schema/migrations\nprisma/bbs.db\n\n*.DS_Store\n.env\n.npmrc\npackage-lock.json\npnpm-lock.yaml",
|
|
6
|
+
".gitignore": "./autobe/\nbin/\ndist/\nlib/\nnode_modules/\n\nprisma/migrations\nprisma/schema/migrations\nprisma/bbs.db\nsrc/prisma\n\n*.DS_Store\n.env\n.npmrc\npackage-lock.json\npnpm-lock.yaml",
|
|
7
7
|
"LICENSE": "MIT License\n\nCopyright (c) 2025 Wrtn Technologies\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.",
|
|
8
|
-
"README.md": "# AutoBE Generated Backend Server\n\n\n\nA backend repository generated by [`@autobe`](https://github.com/wrtnlabs/autobe).\n\nThis backend program was automatically generated using [`@autobe`](https://github.com/wrtnlabs/autobe), the AI vibe coding agent for backend servers of below stack.\n\n- TypeScript\n- NestJS / Nestia\n- Prisma\n- Postgres\n\n```mermaid\nflowchart\nsubgraph \"Backend Coding Agent\"\n coder(\"Facade Controller\")\nend\nsubgraph \"Functional Agents\"\n coder --\"Requirements Analysis\"--> analyze(\"{{ANALYSIS_EMOJI}} Analyze\")\n coder --\"ERD\"-->
|
|
8
|
+
"README.md": "# AutoBE Generated Backend Server\n\n\n\nA backend repository generated by [`@autobe`](https://github.com/wrtnlabs/autobe).\n\nThis backend program was automatically generated using [`@autobe`](https://github.com/wrtnlabs/autobe), the AI vibe coding agent for backend servers of below stack.\n\n- TypeScript\n- NestJS / Nestia\n- Prisma\n- Postgres\n\n```mermaid\nflowchart\nsubgraph \"Backend Coding Agent\"\n coder(\"Facade Controller\")\nend\nsubgraph \"Functional Agents\"\n coder --\"Requirements Analysis\"--> analyze(\"{{ANALYSIS_EMOJI}} Analyze\")\n coder --\"ERD\"--> database(\"{{DATABASE_EMOJI}} Database\")\n coder --\"API Design\"--> interface(\"{{INTERFACE_EMOJI}} Interface\")\n coder --\"Test Codes\" --> test(\"{{TEST_EMOJI}} Test\")\n coder --\"Main Program\" --> realize(\"{{REALIZE_EMOJI}} Realize\")\nend\nsubgraph \"Compiler Feedback\"\n database --\"validates\" --> prismaCompiler(\"Prisma Compiler\")\n interface --\"validates\" --> openapiValidator(\"OpenAPI Validator\")\n interface --\"generates\" --> tsCompiler(\"TypeScript Compiler\")\n test --\"validates\" --> tsCompiler(\"TypeScript Compiler\")\n realize --\"validates\" --> tsCompiler(\"TypeScript Compiler\")\nend\n```\n\nAlso, this backend application was built following [`@autobe`](https://github.com/wrtnlabs/autobe)'s waterfall development model, where each specialized AI agent handles a specific phase of development. The process ensures 100% working code through continuous compiler feedback and validation at every stage.\n\nEach agent receives input from previous phases and produces validated output that becomes the foundation for the next development stage. The **Facade Controller** orchestrates the entire process, while **Functional Agents** handle specialized tasks with built-in **Compiler Feedback** ensuring code quality and correctness.\n\nBelow table shows the mapping between waterfall phases, corresponding [`@autobe`](https://github.com/wrtnlabs/autobe) agents, and the actual deliverables you can find in this repository:\n\nWaterfall Model | AutoBe Agent | Result\n----------------|--------------|----------------------------------------------\nRequirements | ✅ Facade | Conversation History\nAnalysis | {{ANALYSIS_EMOJI}} Analyze | [Requirement Analysis Report](docs/analysis)\nDesign | {{DATABASE_EMOJI}} Prisma | [Entity Relationship Diagram](docs/ERD.md) / [Prisma Schema](prisma/schema)\nDesign | {{INTERFACE_EMOJI}} Interface | [API Controllers](src/controllers) / [DTO Structures](src/api/structures)\nDevelopment | {{REALIZE_EMOJI}} Realize | [API Provider Functions](src/providers)\nTesting | {{TEST_EMOJI}} Test | [E2E Test Functions](test/features/api)\nMaintenance | - | Use Claude Code like AI coding tool please\n\n## Project Structure\n\nThis template project has categorized directories like below.\n\nAs you can see from the below, all of the Backend source files are placed into the [src](src/) directory. When you build the TypeScript source files, compiled files would be placed into the `lib` directory following the [`tsconfig.json`](tsconfig.json) configuration. Otherwise you build client [SDK library](https://nestia.io/docs/sdk/) for npm publishing and their compiled files would be placed into the [`packages`](packages) directory.\n\n - [`packages/api/`](packages/api): SDK module built by `npm run build:api`\n - [`docs/`](docs/): Documentation directory\n - [`docs/analysis`](docs/analysis/): Requirement Analysis report\n - [`docs/ERD.md`](docs/ERD.md): Entity Relationship Diagram and detailed descriptions\n - [`prisma/schema`](prisma/schema): Prisma ORM schema files\n - [`src/`](src): Backend source directory\n - [`src/api/`](src/api/): Client SDK that would be published to the `@ORGANIZATION/PROJECT-api`\n - [`src/api/functional/`](src/api/functional/): API functions generated by the [`nestia`](https://github.com/samchon/nestia)\n - [`src/api/structures/`](src/api/structures/): DTO structures\n - [`src/controllers/`](src/controllers/): Controller classes of the Main Program\n - [`src/providers/`](src/providers/): Implementations of the API functions\n - [`test/`](test): Test Automation Program\n - [`test/features`](test/features): List of test functions\n - [`nestia.config.ts`](nestia.config.ts): Configuration file of [`nestia`](https://github.com/samchon/nestia)\n - [`package.json`](package.json): NPM configuration\n - [`tsconfig.json`](tsconfig.json): TypeScript configuration for the main program\n\n## NPM Run Commands\n\nList of the run commands defined in the [package.json](package.json) are like below:\n\n - Test\n - **`test`**: Run test automation program\n - `benchmark`: Run performance benchmark program\n - Build\n - `build`: Build everything\n - `build:main`: Build main program (`src` directory)\n - `build:test` Build test automation program (`test` directory)\n - `build:sdk`: Build SDK into main program only\n - `build:swagger`: Build Swagger Documents\n - **`dev`**: Incremental build for development (test program)\n - Deploy\n - `package:api`: Build and deploy the SDK library to the NPM\n - `start`: Start the backend server\n - `start:dev`: Start the backend server with incremental build and reload\n - Webpack\n - `webpack`: Run webpack bundler\n - `webpack:start`: Start the backend server built by webpack\n - `webpack:test`: Run test program to the webpack built\n\n## Specialization\n\nTransform this template project to be yours.\n\nWhen you've created a new backend project through this template project, you can specialize it to be suitable for you by changing some words. Replace below words through IDE specific function like `Edit > Replace in Files` (*Ctrl + Shift + H*), who've been supported by the VSCode.\n\n| Before | After\n|--------------|----------------------------------------\n| ORGANIZATION | Your account or corporation name\n| PROJECT | Your own project name\n| AUTHOR | Author name\n| https://github.com/samchon/nestia-start | Your repository URL\n\n## Benchmark\n\n### Aggregate\n\nPhase | Generated | FCSR | Token Consumption | Elapsed Time\n------|-----------|------|-------------------|--------------\n{{BENCHMARK_AGGREGATE}}\n\nThis table shows the comprehensive metrics for each phase of the AutoBE generation pipeline. For each phase (Analyze, Database, Interface, Test, Realize), it tracks:\n\n- **Phase**: The pipeline phase with success (✅) or failure (❌) indicator\n- **Generated**: Count of artifacts produced (e.g., actors, documents, namespaces, models, operations, schemas, functions)\n- **FCSR**: Function calling success rate\n- **Token Consumption**: Total number of LLM tokens consumed during the phase\n- **Elapsed Time**: Wall-clock time taken to complete the phase, including all AI agent operations and compiler feedback loops\n\nThese aggregate metrics provide visibility into the computational cost and time requirements of the entire generation process, helping identify resource-intensive phases and overall pipeline efficiency.\n\n### Function Calling\n\nType | Trial | Validation Failure | JSON Parse Error | Success | Success Rate\n:----|------:|-------------------:|-----------------:|---------:|-------------:\n{{BENCHMARK_FUNCTION_CALLING}}\n\nThis table shows the reliability and quality metrics for AI agent function calling operations across all phases. Each row represents a specific operation type (e.g., `analyzeScenario`, `prismaSchema`, `realizeWrite`), tracking:\n\n- **Type**: The AI agent operation name\n- **Trial**: Total number of function calling attempts made by the agent\n- **Validation Failure**: Calls that produced valid JSON but failed type validation\n- **JSON Parse Error**: Calls that produced malformed JSON that couldn't be parsed\n- **Success**: Calls that completed successfully with valid, validated responses\n- **Success Rate**: Percentage of successful calls out of total attempts\n\nThese metrics reveal the effectiveness of AutoBE's validation feedback strategy powered by [`typia.llm.application<Class, Model>()`](https://typia.io/docs/llm/application/). When function calls fail type validation, detailed error messages are fed back to the AI agent, enabling iterative correction through self-healing spiral loops.\n\nSuccess rates vary based on model size and capability - smaller models may have lower initial success rates. However, validation feedback enables even weaker models to achieve high success rates through automatic correction cycles, demonstrating the power of compiler-driven development.\n\n## License\n\nAutoBE is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0)](https://github.com/wrtnlabs/autobe/?tab=AGPL-3.0-1-ov-file#readme). If you modify AutoBE itself or offer it as a network service, you must make your source code available under the same license.\n\nHowever, backend applications generated by AutoBE can be relicensed under any license you choose, such as MIT. This means you can freely use AutoBE-generated code in commercial projects without open source obligations, similar to how other code generation tools work.\n",
|
|
9
9
|
"typos.toml": "[default]\nlocale = 'en-us'\nextend-ignore-re = [\n \"(?Rm)^.*(<!--|#|//)\\\\s*spellchecker:disable-line(-->|\\n)?$\",\n \".*(?:spellchecker|typos):\\\\s?ignore-next-line[^\\\\n]*\\\\n[^\\\\n]*\",\n \"(?s)(<!--|#|//)\\\\s*spellchecker:off\\\\s*(-->|\\n).*?(<!--|#|//)\\\\s*spellchecker:on\",\n]\n\n[default.extend-words]\nJeongho = \"Jeongho\"\nNam = \"Nam\"\ntypia = \"typia\"\n\n[files]\nextend-exclude = [\"*.json\"]"
|
|
10
10
|
};
|
|
11
11
|
//# sourceMappingURL=AutoBeCompilerCommonTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeCompilerCommonTemplate.js","sourceRoot":"","sources":["../../src/raw/AutoBeCompilerCommonTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAA2B;IAClE,eAAe,EAAE,ywCAAywC;IAC1xC,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"AutoBeCompilerCommonTemplate.js","sourceRoot":"","sources":["../../src/raw/AutoBeCompilerCommonTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,4BAA4B,GAA2B;IAClE,eAAe,EAAE,ywCAAywC;IAC1xC,YAAY,EAAE,sLAAsL;IACpM,SAAS,EAAE,2kCAA2kC;IACtlC,WAAW,EAAE,woSAAwoS;IACrpS,YAAY,EAAE,waAAwa;CACvb,CAAC"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AutoBeCompilerInterfaceTemplate = void 0;
|
|
4
4
|
exports.AutoBeCompilerInterfaceTemplate = {
|
|
5
|
-
".github/workflows/build.yml": "name: build\non:\n pull_request:\n paths:\n - 'src/**'\n - 'test/**'\n - 'package.json'\njobs:\n Ubuntu:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - uses: actions/setup-node@v4\n with:\n node-version: 20.x\n - uses: pnpm/action-setup@v4\n with:\n version: 8\n \n - name: Install Backend-Server\n run: pnpm install\n\n - name: Build Swagger\n run: pnpm run build:swagger\n\n - name: Build SDK\n run: pnpm run build:sdk\n\n - name: Compile Backend-Server\n run: pnpm run build\n\n
|
|
6
|
-
"
|
|
5
|
+
".github/workflows/build.yml": "name: build\non:\n pull_request:\n paths:\n - 'src/**'\n - 'test/**'\n - 'package.json'\njobs:\n Ubuntu:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - uses: actions/setup-node@v4\n with:\n node-version: 20.x\n - uses: pnpm/action-setup@v4\n with:\n version: 8\n \n - name: Install Backend-Server\n run: pnpm install\n\n - name: Build Swagger\n run: pnpm run build:swagger\n\n - name: Build SDK\n run: pnpm run build:sdk\n\n - name: Compile Backend-Server\n run: pnpm run build\n\n - name: Run Test Program\n run: pnpm run test -- --reset true --simultaneous 16\n\n - name: EsLint\n run: pnpm run eslint\n",
|
|
6
|
+
"src/api/structures/IEntity.ts": "import { tags } from \"typia\";\n\n/** Just a base entity interface for referencing. */\nexport interface IEntity {\n /** Primary Key. */\n id: string & tags.Format<\"uuid\">;\n}\n",
|
|
7
|
+
"src/api/typings/DeepPartial.ts": "export type DeepPartial<T> = T extends\n | string\n | number\n | boolean\n | bigint\n | symbol\n | null\n | undefined\n ? T\n : T extends (...args: unknown[]) => unknown\n ? T\n : T extends Array<infer U>\n ? Array<DeepPartial<U>>\n : T extends object\n ? { [P in keyof T]?: DeepPartial<T[P]> }\n : T;\n",
|
|
8
|
+
"test/tsconfig.json": "{\n \"extends\": \"../tsconfig.json\",\n \"compilerOptions\": {\n \"baseUrl\": \"../\",\n \"outDir\": \"../bin\",\n \"noUnusedLocals\": false,\n \"noUnusedParameters\": false,\n },\n \"include\": [\".\", \"../src\"]\n}"
|
|
7
9
|
};
|
|
8
10
|
//# sourceMappingURL=AutoBeCompilerInterfaceTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoBeCompilerInterfaceTemplate.js","sourceRoot":"","sources":["../../src/raw/AutoBeCompilerInterfaceTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAA2B;IACrE,6BAA6B,EAAE,
|
|
1
|
+
{"version":3,"file":"AutoBeCompilerInterfaceTemplate.js","sourceRoot":"","sources":["../../src/raw/AutoBeCompilerInterfaceTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAA2B;IACrE,6BAA6B,EAAE,0wBAA0wB;IACzyB,+BAA+B,EAAE,wLAAwL;IACzN,gCAAgC,EAAE,wVAAwV;IAC1X,oBAAoB,EAAE,4OAA4O;CACnQ,CAAC"}
|