@akanjs/cli 0.0.139 → 0.0.140
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/cjs/index.js +596 -366
- package/cjs/src/templates/module/__model__.constant.js +10 -1
- package/cjs/src/templates/module/__model__.dictionary.js +5 -0
- package/esm/index.js +596 -366
- package/esm/src/templates/module/__model__.constant.js +10 -1
- package/esm/src/templates/module/__model__.dictionary.js +5 -0
- package/package.json +1 -1
- package/src/application/application.command.d.ts +1 -1
- package/src/library/library.command.d.ts +2 -2
- package/src/module/module.command.d.ts +4 -6
- package/src/module/module.prompt.d.ts +7 -48
- package/src/module/module.request.d.ts +59 -0
- package/src/module/module.runner.d.ts +7 -1
- package/src/module/module.script.d.ts +7 -6
- package/src/workspace/workspace.command.d.ts +1 -1
package/esm/index.js
CHANGED
|
@@ -434,11 +434,11 @@ var Logger = class _Logger {
|
|
|
434
434
|
console.log(`${processMsg} ${timestampMsg} ${logLevelMsg} ${contextMsg} ${contentMsg} ${timeDiffMsg}
|
|
435
435
|
`);
|
|
436
436
|
}
|
|
437
|
-
static rawLog(msg, method) {
|
|
437
|
+
static rawLog(msg = "", method) {
|
|
438
438
|
this.raw(`${msg}
|
|
439
439
|
`, method);
|
|
440
440
|
}
|
|
441
|
-
static raw(msg, method) {
|
|
441
|
+
static raw(msg = "", method) {
|
|
442
442
|
if (typeof window === "undefined" && method !== "console" && global.process)
|
|
443
443
|
global.process.stdout.write(msg);
|
|
444
444
|
else
|
|
@@ -986,13 +986,20 @@ var Executor = class _Executor {
|
|
|
986
986
|
if (!fs6.existsSync(cwdPath))
|
|
987
987
|
fs6.mkdirSync(cwdPath, { recursive: true });
|
|
988
988
|
}
|
|
989
|
+
#stdout(data) {
|
|
990
|
+
if (_Executor.verbose)
|
|
991
|
+
Logger.raw(chalk.dim(data.toString()));
|
|
992
|
+
}
|
|
993
|
+
#stderr(data) {
|
|
994
|
+
Logger.raw(chalk.red(data.toString()));
|
|
995
|
+
}
|
|
989
996
|
exec(command, options = {}) {
|
|
990
997
|
const proc = exec(command, { cwd: this.cwdPath, ...options });
|
|
991
998
|
proc.stdout?.on("data", (data) => {
|
|
992
|
-
|
|
999
|
+
this.#stdout(data);
|
|
993
1000
|
});
|
|
994
1001
|
proc.stderr?.on("data", (data) => {
|
|
995
|
-
|
|
1002
|
+
this.#stdout(data);
|
|
996
1003
|
});
|
|
997
1004
|
return new Promise((resolve, reject) => {
|
|
998
1005
|
proc.on("exit", (code, signal) => {
|
|
@@ -1006,14 +1013,14 @@ var Executor = class _Executor {
|
|
|
1006
1013
|
spawn(command, args = [], options = {}) {
|
|
1007
1014
|
const proc = spawn(command, args, {
|
|
1008
1015
|
cwd: this.cwdPath,
|
|
1009
|
-
stdio:
|
|
1016
|
+
stdio: "inherit",
|
|
1010
1017
|
...options
|
|
1011
1018
|
});
|
|
1012
1019
|
proc.stdout?.on("data", (data) => {
|
|
1013
|
-
|
|
1020
|
+
this.#stdout(data);
|
|
1014
1021
|
});
|
|
1015
1022
|
proc.stderr?.on("data", (data) => {
|
|
1016
|
-
|
|
1023
|
+
this.#stderr(data);
|
|
1017
1024
|
});
|
|
1018
1025
|
return new Promise((resolve, reject) => {
|
|
1019
1026
|
proc.on("exit", (code, signal) => {
|
|
@@ -1027,14 +1034,14 @@ var Executor = class _Executor {
|
|
|
1027
1034
|
fork(modulePath, args = [], options = {}) {
|
|
1028
1035
|
const proc = fork(modulePath, args, {
|
|
1029
1036
|
cwd: this.cwdPath,
|
|
1030
|
-
stdio:
|
|
1037
|
+
stdio: ["ignore", "inherit", "inherit", "ipc"],
|
|
1031
1038
|
...options
|
|
1032
1039
|
});
|
|
1033
1040
|
proc.stdout?.on("data", (data) => {
|
|
1034
|
-
|
|
1041
|
+
this.#stdout(data);
|
|
1035
1042
|
});
|
|
1036
1043
|
proc.stderr?.on("data", (data) => {
|
|
1037
|
-
|
|
1044
|
+
this.#stderr(data);
|
|
1038
1045
|
});
|
|
1039
1046
|
return new Promise((resolve, reject) => {
|
|
1040
1047
|
proc.on("exit", (code, signal) => {
|
|
@@ -1059,6 +1066,20 @@ var Executor = class _Executor {
|
|
|
1059
1066
|
const readPath = this.#getPath(filePath);
|
|
1060
1067
|
return fs6.existsSync(readPath);
|
|
1061
1068
|
}
|
|
1069
|
+
remove(filePath) {
|
|
1070
|
+
const readPath = this.#getPath(filePath);
|
|
1071
|
+
if (fs6.existsSync(readPath))
|
|
1072
|
+
fs6.unlinkSync(readPath);
|
|
1073
|
+
this.logger.verbose(`Remove file ${readPath}`);
|
|
1074
|
+
return this;
|
|
1075
|
+
}
|
|
1076
|
+
removeDir(dirPath) {
|
|
1077
|
+
const readPath = this.#getPath(dirPath);
|
|
1078
|
+
if (fs6.existsSync(readPath))
|
|
1079
|
+
fs6.rmSync(readPath, { recursive: true });
|
|
1080
|
+
this.logger.verbose(`Remove directory ${readPath}`);
|
|
1081
|
+
return this;
|
|
1082
|
+
}
|
|
1062
1083
|
writeFile(filePath, content, { overwrite = true } = {}) {
|
|
1063
1084
|
const writePath = this.#getPath(filePath);
|
|
1064
1085
|
const dir = path4.dirname(writePath);
|
|
@@ -1279,23 +1300,41 @@ var WorkspaceExecutor = class _WorkspaceExecutor extends Executor {
|
|
|
1279
1300
|
}
|
|
1280
1301
|
setTsPaths(type, name) {
|
|
1281
1302
|
const rootTsConfig = this.readJson("tsconfig.json");
|
|
1282
|
-
if (type === "lib")
|
|
1303
|
+
if (type === "lib" || type === "pkg")
|
|
1283
1304
|
rootTsConfig.compilerOptions.paths[`@${name}`] = [`${type}s/${name}/index.ts`];
|
|
1284
1305
|
rootTsConfig.compilerOptions.paths[`@${name}/*`] = [`${type}s/${name}/*`];
|
|
1306
|
+
if (rootTsConfig.references) {
|
|
1307
|
+
if (!rootTsConfig.references.some((ref) => ref.path === `./${type}s/${name}/tsconfig.json`))
|
|
1308
|
+
rootTsConfig.references.push({ path: `./${type}s/${name}/tsconfig.json` });
|
|
1309
|
+
}
|
|
1310
|
+
this.writeJson("tsconfig.json", rootTsConfig);
|
|
1311
|
+
return this;
|
|
1312
|
+
}
|
|
1313
|
+
unsetTsPaths(type, name) {
|
|
1314
|
+
const rootTsConfig = this.readJson("tsconfig.json");
|
|
1315
|
+
const filteredKeys = Object.keys(rootTsConfig.compilerOptions.paths).filter((key) => !key.startsWith(`@${name}`));
|
|
1316
|
+
rootTsConfig.compilerOptions.paths = Object.fromEntries(
|
|
1317
|
+
filteredKeys.map((key) => [key, rootTsConfig.compilerOptions.paths[key]])
|
|
1318
|
+
);
|
|
1319
|
+
if (rootTsConfig.references) {
|
|
1320
|
+
rootTsConfig.references = rootTsConfig.references.filter(
|
|
1321
|
+
(ref) => !ref.path.startsWith(`./${type}s/${name}`)
|
|
1322
|
+
);
|
|
1323
|
+
}
|
|
1285
1324
|
this.writeJson("tsconfig.json", rootTsConfig);
|
|
1286
1325
|
return this;
|
|
1287
1326
|
}
|
|
1288
1327
|
async getDirInModule(basePath2, name) {
|
|
1289
|
-
const AVOID_DIRS = ["__lib", "__scalar", `_${name}`];
|
|
1328
|
+
const AVOID_DIRS = ["__lib", "__scalar", `_`, `_${name}`];
|
|
1290
1329
|
const getDirs = async (dirname, maxDepth = 3, results = [], prefix = "") => {
|
|
1291
1330
|
const dirs = await fsPromise.readdir(dirname);
|
|
1292
1331
|
await Promise.all(
|
|
1293
1332
|
dirs.map(async (dir) => {
|
|
1294
|
-
if (AVOID_DIRS.includes(dir))
|
|
1333
|
+
if (dir.includes("_") || AVOID_DIRS.includes(dir))
|
|
1295
1334
|
return;
|
|
1296
1335
|
const dirPath = path4.join(dirname, dir);
|
|
1297
1336
|
if (fs6.lstatSync(dirPath).isDirectory()) {
|
|
1298
|
-
results.push(`${
|
|
1337
|
+
results.push(`${prefix}${dir}`);
|
|
1299
1338
|
if (maxDepth > 0)
|
|
1300
1339
|
await getDirs(dirPath, maxDepth - 1, results, `${prefix}${dir}/`);
|
|
1301
1340
|
}
|
|
@@ -1342,6 +1381,22 @@ var WorkspaceExecutor = class _WorkspaceExecutor extends Executor {
|
|
|
1342
1381
|
];
|
|
1343
1382
|
return scalarConstantExampleFiles;
|
|
1344
1383
|
}
|
|
1384
|
+
async getConstantFiles() {
|
|
1385
|
+
const [appNames, libNames] = await this.getSyss();
|
|
1386
|
+
const moduleConstantExampleFiles = [
|
|
1387
|
+
...(await Promise.all(appNames.map((appName) => AppExecutor.from(this, appName).getConstantFiles()))).flat(),
|
|
1388
|
+
...(await Promise.all(libNames.map((libName) => LibExecutor.from(this, libName).getConstantFiles()))).flat()
|
|
1389
|
+
];
|
|
1390
|
+
return moduleConstantExampleFiles;
|
|
1391
|
+
}
|
|
1392
|
+
async getDictionaryFiles() {
|
|
1393
|
+
const [appNames, libNames] = await this.getSyss();
|
|
1394
|
+
const moduleDictionaryExampleFiles = [
|
|
1395
|
+
...(await Promise.all(appNames.map((appName) => AppExecutor.from(this, appName).getDictionaryFiles()))).flat(),
|
|
1396
|
+
...(await Promise.all(libNames.map((libName) => LibExecutor.from(this, libName).getDictionaryFiles()))).flat()
|
|
1397
|
+
];
|
|
1398
|
+
return moduleDictionaryExampleFiles;
|
|
1399
|
+
}
|
|
1345
1400
|
async getViewFiles() {
|
|
1346
1401
|
const [appNames, libNames] = await this.getSyss();
|
|
1347
1402
|
const viewExampleFiles = [
|
|
@@ -1571,9 +1626,15 @@ var SysExecutor = class extends Executor {
|
|
|
1571
1626
|
}
|
|
1572
1627
|
async getScalarDictionaryFiles() {
|
|
1573
1628
|
const scalarModules = await this.getScalarModules();
|
|
1574
|
-
return scalarModules.map(
|
|
1575
|
-
|
|
1576
|
-
|
|
1629
|
+
return scalarModules.map((scalarModule) => this.getLocalFile(`lib/${scalarModule}/${scalarModule}.dictionary.ts`));
|
|
1630
|
+
}
|
|
1631
|
+
async getConstantFiles() {
|
|
1632
|
+
const modules = await this.getModules();
|
|
1633
|
+
return modules.map((module) => this.getLocalFile(`lib/${module}/${module}.constant.ts`));
|
|
1634
|
+
}
|
|
1635
|
+
async getDictionaryFiles() {
|
|
1636
|
+
const modules = await this.getModules();
|
|
1637
|
+
return modules.map((module) => this.getLocalFile(`lib/${module}/${module}.dictionary.ts`));
|
|
1577
1638
|
}
|
|
1578
1639
|
setTsPaths() {
|
|
1579
1640
|
this.workspace.setTsPaths(this.type, this.name);
|
|
@@ -2014,6 +2075,7 @@ var getArg = (type) => function(name, argsOption = {}) {
|
|
|
2014
2075
|
setArgMetasOnPrototype(prototype, key, argMetas);
|
|
2015
2076
|
};
|
|
2016
2077
|
};
|
|
2078
|
+
var Argument = getArg("Argument");
|
|
2017
2079
|
var Option = getArg("Option");
|
|
2018
2080
|
var createArgMetaDecorator = (type) => {
|
|
2019
2081
|
return function(option = {}) {
|
|
@@ -2090,6 +2152,16 @@ var handleOption = (programCommand, argMeta) => {
|
|
|
2090
2152
|
);
|
|
2091
2153
|
return programCommand;
|
|
2092
2154
|
};
|
|
2155
|
+
var handleArgument = (programCommand, argMeta) => {
|
|
2156
|
+
const kebabName = camelToKebabCase(argMeta.name);
|
|
2157
|
+
if ((argMeta.argsOption.type ?? "string") !== "string")
|
|
2158
|
+
throw new Error(`Argument type must be string: ${argMeta.name}`);
|
|
2159
|
+
programCommand.argument(
|
|
2160
|
+
`[${kebabName}]`,
|
|
2161
|
+
`${argMeta.argsOption.desc}${argMeta.argsOption.example ? ` (example: ${argMeta.argsOption.example})` : ""}`
|
|
2162
|
+
);
|
|
2163
|
+
return programCommand;
|
|
2164
|
+
};
|
|
2093
2165
|
var convertOptionValue = (value, type) => {
|
|
2094
2166
|
if (type === "string")
|
|
2095
2167
|
return value;
|
|
@@ -2126,7 +2198,21 @@ var getOptionValue = async (argMeta, opt) => {
|
|
|
2126
2198
|
return convertOptionValue(await input({ message }), type ?? "string");
|
|
2127
2199
|
}
|
|
2128
2200
|
};
|
|
2129
|
-
var getArgumentValue = async (argMeta, value
|
|
2201
|
+
var getArgumentValue = async (argMeta, value) => {
|
|
2202
|
+
const {
|
|
2203
|
+
name,
|
|
2204
|
+
argsOption: { default: defaultValue, type, desc, nullable, example, ask }
|
|
2205
|
+
} = argMeta;
|
|
2206
|
+
if (value !== void 0)
|
|
2207
|
+
return value;
|
|
2208
|
+
else if (defaultValue !== void 0)
|
|
2209
|
+
return defaultValue;
|
|
2210
|
+
else if (nullable)
|
|
2211
|
+
return null;
|
|
2212
|
+
const message = ask ? `${ask}: ` : desc ? `${desc}: ` : `Enter the ${name} value${example ? ` (example: ${example})` : ""}: `;
|
|
2213
|
+
return await input({ message });
|
|
2214
|
+
};
|
|
2215
|
+
var getInternalArgumentValue = async (argMeta, value, workspace) => {
|
|
2130
2216
|
if (argMeta.type === "Workspace")
|
|
2131
2217
|
return workspace;
|
|
2132
2218
|
const sysType = argMeta.type.toLowerCase();
|
|
@@ -2191,6 +2277,7 @@ var getArgumentValue = async (argMeta, value, workspace) => {
|
|
|
2191
2277
|
var runCommands = async (...commands) => {
|
|
2192
2278
|
process.on("unhandledRejection", (error) => {
|
|
2193
2279
|
console.error(chalk2.red("[fatal]"), error);
|
|
2280
|
+
process.exit(1);
|
|
2194
2281
|
});
|
|
2195
2282
|
const hasPackageJson = fs9.existsSync(`${__dirname}/../package.json`);
|
|
2196
2283
|
const version = hasPackageJson ? JSON.parse(fs9.readFileSync(`${__dirname}/../package.json`, "utf8")).version : "0.0.1";
|
|
@@ -2211,6 +2298,8 @@ var runCommands = async (...commands) => {
|
|
|
2211
2298
|
for (const argMeta of allArgMetas) {
|
|
2212
2299
|
if (argMeta.type === "Option")
|
|
2213
2300
|
programCommand = handleOption(programCommand, argMeta);
|
|
2301
|
+
else if (argMeta.type === "Argument")
|
|
2302
|
+
programCommand = handleArgument(programCommand, argMeta);
|
|
2214
2303
|
else if (argMeta.type === "Workspace")
|
|
2215
2304
|
continue;
|
|
2216
2305
|
const sysType = argMeta.type.toLowerCase();
|
|
@@ -2221,6 +2310,7 @@ var runCommands = async (...commands) => {
|
|
|
2221
2310
|
}
|
|
2222
2311
|
programCommand = programCommand.option(`-v, --verbose [boolean]`, `verbose output`);
|
|
2223
2312
|
programCommand.action(async (...args) => {
|
|
2313
|
+
Logger.rawLog();
|
|
2224
2314
|
const cmdArgs = args.slice(0, args.length - 2);
|
|
2225
2315
|
const opt = args[args.length - 2];
|
|
2226
2316
|
const commandArgs = [];
|
|
@@ -2228,8 +2318,14 @@ var runCommands = async (...commands) => {
|
|
|
2228
2318
|
for (const argMeta of allArgMetas) {
|
|
2229
2319
|
if (argMeta.type === "Option")
|
|
2230
2320
|
commandArgs[argMeta.idx] = await getOptionValue(argMeta, opt);
|
|
2321
|
+
else if (argMeta.type === "Argument")
|
|
2322
|
+
commandArgs[argMeta.idx] = await getArgumentValue(argMeta, cmdArgs[argMeta.idx]);
|
|
2231
2323
|
else
|
|
2232
|
-
commandArgs[argMeta.idx] = await
|
|
2324
|
+
commandArgs[argMeta.idx] = await getInternalArgumentValue(
|
|
2325
|
+
argMeta,
|
|
2326
|
+
cmdArgs[argMeta.idx],
|
|
2327
|
+
workspace
|
|
2328
|
+
);
|
|
2233
2329
|
if (commandArgs[argMeta.idx] instanceof AppExecutor)
|
|
2234
2330
|
process.env.NEXT_PUBLIC_APP_NAME = commandArgs[argMeta.idx].name;
|
|
2235
2331
|
if (opt.verbose)
|
|
@@ -2238,6 +2334,7 @@ var runCommands = async (...commands) => {
|
|
|
2238
2334
|
const cmd = new command();
|
|
2239
2335
|
try {
|
|
2240
2336
|
await cmd[targetMeta.key](...commandArgs);
|
|
2337
|
+
Logger.rawLog();
|
|
2241
2338
|
} catch (e) {
|
|
2242
2339
|
const errMsg = e instanceof Error ? e.message : typeof e === "string" ? e : JSON.stringify(e);
|
|
2243
2340
|
Logger.error(`Command Error: ${chalk2.red(errMsg)}`);
|
|
@@ -2340,7 +2437,7 @@ var AiSession = class _AiSession {
|
|
|
2340
2437
|
const stream = await _AiSession.#chat.stream(this.messageHistory);
|
|
2341
2438
|
let fullResponse = "", tokenIdx = 0;
|
|
2342
2439
|
for await (const chunk of stream) {
|
|
2343
|
-
if (loader.isSpinning())
|
|
2440
|
+
if (loader.isSpinning() && chunk.content.length)
|
|
2344
2441
|
loader.succeed(`${_AiSession.#chat.model} responded`);
|
|
2345
2442
|
const content = chunk.content;
|
|
2346
2443
|
if (typeof content === "string") {
|
|
@@ -2470,22 +2567,14 @@ var LibraryRunner = class {
|
|
|
2470
2567
|
await workspace.exec(`mkdir -p libs/${libName}`);
|
|
2471
2568
|
const lib = LibExecutor.from(workspace, libName);
|
|
2472
2569
|
await lib.applyTemplate({ basePath: ".", template: "libRoot", dict: { libName, LibName: capitalize(libName) } });
|
|
2473
|
-
|
|
2474
|
-
rootTsConfig.compilerOptions.paths[`@${libName}`] = [`libs/${libName}/index.ts`];
|
|
2475
|
-
rootTsConfig.compilerOptions.paths[`@${libName}/*`] = [`libs/${libName}/*`];
|
|
2476
|
-
if (rootTsConfig.references) {
|
|
2477
|
-
if (!rootTsConfig.references.some((ref) => ref.path === `./libs/${libName}/tsconfig.json`))
|
|
2478
|
-
rootTsConfig.references.push({ path: `./libs/${libName}/tsconfig.json` });
|
|
2479
|
-
}
|
|
2480
|
-
workspace.writeJson("tsconfig.json", rootTsConfig);
|
|
2570
|
+
workspace.setTsPaths("lib", libName);
|
|
2481
2571
|
return lib;
|
|
2482
2572
|
}
|
|
2483
2573
|
async removeLibrary(lib) {
|
|
2484
2574
|
await lib.workspace.exec(`rm -rf libs/${lib.name}`);
|
|
2485
|
-
lib.
|
|
2575
|
+
lib.workspace.unsetTsPaths("lib", lib.name);
|
|
2486
2576
|
}
|
|
2487
2577
|
async installLibrary(workspace, libName) {
|
|
2488
|
-
workspace.log(`Installing ${libName} library as git subtree...`);
|
|
2489
2578
|
await workspace.exec(`git subtree add --prefix=libs/${libName} git@github.com:akan-team/${libName}.git main`);
|
|
2490
2579
|
await workspace.cp(`libs/${libName}/env/env.server.example.ts`, `libs/${libName}/env/env.server.testing.ts`);
|
|
2491
2580
|
workspace.setTsPaths("lib", libName);
|
|
@@ -2522,13 +2611,11 @@ var LibraryRunner = class {
|
|
|
2522
2611
|
await lib.workspace.exec(
|
|
2523
2612
|
`git subtree push --prefix=libs/${lib.name} git@github.com:akan-team/${lib.name}.git ${branch}`
|
|
2524
2613
|
);
|
|
2525
|
-
lib.logger.log(`${lib.name} library pushed to ${branch} branch`);
|
|
2526
2614
|
}
|
|
2527
2615
|
async pullLibrary(lib, branch) {
|
|
2528
2616
|
await lib.workspace.exec(
|
|
2529
2617
|
`git subtree pull --prefix=libs/${lib.name} git@github.com:akan-team/${lib.name}.git ${branch}`
|
|
2530
2618
|
);
|
|
2531
|
-
lib.logger.log(`${lib.name} library pulled from ${branch} branch`);
|
|
2532
2619
|
}
|
|
2533
2620
|
#getEnv(lib, env = {}) {
|
|
2534
2621
|
const rootEnv = dotenv2.parse(lib.workspace.readFile(".env"));
|
|
@@ -2582,7 +2669,7 @@ var LibraryScript = class {
|
|
|
2582
2669
|
const installSpinner = workspace.spinning(`Installing ${libName} library`);
|
|
2583
2670
|
const lib = await this.#runner.installLibrary(workspace, libName);
|
|
2584
2671
|
installSpinner.succeed(`${libName} library (libs/${libName}) is installed`);
|
|
2585
|
-
const mergeSpinner =
|
|
2672
|
+
const mergeSpinner = lib.spinning("Merging library dependencies...");
|
|
2586
2673
|
await this.#runner.mergeLibraryDependencies(lib);
|
|
2587
2674
|
mergeSpinner.succeed(`${libName} library (libs/${libName}) dependencies merged to root package.json`);
|
|
2588
2675
|
}
|
|
@@ -3903,87 +3990,6 @@ Core ESLint Extensions
|
|
|
3903
3990
|
This configuration creates a robust linting setup that enforces Next.js App Router best practices, maintains clean code
|
|
3904
3991
|
organization, and ensures proper server/client code separation.
|
|
3905
3992
|
`;
|
|
3906
|
-
var componentDefaultDescription = ({
|
|
3907
|
-
modelName,
|
|
3908
|
-
ModelName,
|
|
3909
|
-
exampleFiles,
|
|
3910
|
-
constant,
|
|
3911
|
-
properties
|
|
3912
|
-
}) => `
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
1. Akan.js \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
3916
|
-
${frameworkAbstract}
|
|
3917
|
-
|
|
3918
|
-
2. Akan.js\uD504\uB808\uC784\uC6CC\uD06C \uB370\uC774\uD130 \uAE30\uBC18 \uBAA8\uB4C8\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
3919
|
-
${moduleDesription}
|
|
3920
|
-
|
|
3921
|
-
3. Akan.js eslint \uC124\uC815\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
3922
|
-
${eslintDescription}
|
|
3923
|
-
|
|
3924
|
-
4. util/ui \uB0B4 ui\uD0B7\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
3925
|
-
${utilUiDescription}
|
|
3926
|
-
|
|
3927
|
-
5. shared/ui \uB0B4 ui\uD0B7\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
3928
|
-
${shardUiDescription}
|
|
3929
|
-
|
|
3930
|
-
6. ${ModelName}.constant.ts \uD30C\uC77C\uC5D0 \uB300\uD55C \uC815\uBCF4
|
|
3931
|
-
${constant}
|
|
3932
|
-
|
|
3933
|
-
7. ${modelName}\uC5D0\uC11C \uC885\uC18D\uB418\uB294 \uB2E4\uB978 \uBAA8\uB378\uB4E4\uC758 \uD0C0\uC785 \uC815\uC758
|
|
3934
|
-
${properties.map(
|
|
3935
|
-
(property) => `
|
|
3936
|
-
\`\`\`
|
|
3937
|
-
${property.key}.constant.ts
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
${property.source}
|
|
3941
|
-
\`\`\`
|
|
3942
|
-
`
|
|
3943
|
-
).join("\n\n")}
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
8. \uC608\uC2DC \uD30C\uC77C\uB4E4
|
|
3947
|
-
${exampleFiles.map(
|
|
3948
|
-
(example) => `
|
|
3949
|
-
Example filename: ${example.filepath}
|
|
3950
|
-
\`\`\`
|
|
3951
|
-
${example.content}
|
|
3952
|
-
\`\`\`
|
|
3953
|
-
`
|
|
3954
|
-
).join("\n\n")}
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3960
|
-
|
|
3961
|
-
\uC5ED\uD560\uBD80\uC5EC
|
|
3962
|
-
- Akan.js \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C \uAE30\uBC18 Typescript \uC2DC\uB2C8\uC5B4 \uD504\uB860\uD2B8\uC5D4\uB4DC \uAC1C\uBC1C\uC790.
|
|
3963
|
-
|
|
3964
|
-
\uCF54\uB529 \uADDC\uCE59
|
|
3965
|
-
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
3966
|
-
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
3967
|
-
- CSS: tailwind, DaisyUI(btn, input, badge \uAC19\uC740 \uAE30\uBCF8 \uC694\uC18C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5, card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
3968
|
-
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
3969
|
-
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
3970
|
-
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
3971
|
-
- \uC0C9\uC0C1: \uD558\uB4DC\uCF54\uB529(bg-red) \uB300\uC2E0 \uD14C\uB9C8 \uC0C9\uC0C1(bg-primary) \uC0AC\uC6A9
|
|
3972
|
-
- \uC870\uAC74\uBD80 \uB80C\uB354\uB9C1: field && <div>... \uB300\uC2E0 field ? <div>... : null \uC0AC\uC6A9
|
|
3973
|
-
- \uBAA8\uB378 \uC811\uADFC: \uAD6C\uC870\uBD84\uD574\uD560\uB2F9 \uB300\uC2E0 ${modelName}.field \uD615\uC2DD\uC73C\uB85C \uC811\uADFC
|
|
3974
|
-
- \uD0C0\uC785 \uC548\uC804: ${modelName}.constant.ts\uC758 \uC2A4\uD0A4\uB9C8 \uCC38\uC870\uD558\uC5EC \uC5D0\uB7EC \uBC29\uC9C0
|
|
3975
|
-
\uD544\uB4DC \uC811\uADFC \uC804: \uC2A4\uD0A4\uB9C8\uC758 \uC2E4\uC81C \uD544\uB4DC \uB9AC\uC2A4\uD2B8 \uC791\uC131 \uBC0F \uAC80\uD1A0 \uD544\uC218
|
|
3976
|
-
|
|
3977
|
-
\uC5C4\uACA9\uD55C \uC8FC\uC758\uC0AC\uD56D
|
|
3978
|
-
- UI \uD0B7\uC740 \uBB38\uC11C\uC5D0 \uBA85\uC2DC\uB41C \uCEF4\uD3EC\uB10C\uD2B8\uB9CC \uC0AC\uC6A9
|
|
3979
|
-
- \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 \uC804 \uBB38\uC11C \uD655\uC778 \uBC0F props \uC815\uD655\uD788 \uAC80\uC99D
|
|
3980
|
-
- \uBA85\uC2DC\uB41C \uB8F0 \uC678 \uC784\uC758 \uCD94\uC0C1\uD654 \uAE08\uC9C0
|
|
3981
|
-
- dayjs \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 @akanjs/base\uC5D0\uC11C \uB798\uD551\uD558\uC5EC \uC81C\uACF5\uD558\uACE0 \uC788\uC74C.
|
|
3982
|
-
|
|
3983
|
-
|
|
3984
|
-
|
|
3985
|
-
|
|
3986
|
-
`;
|
|
3987
3993
|
var scalarConstantDescription = `
|
|
3988
3994
|
Purpose and Structure
|
|
3989
3995
|
|
|
@@ -4321,159 +4327,56 @@ The \`@Field.Prop()\` decorator is commonly used in different model types:
|
|
|
4321
4327
|
- Reference options enable building relationships between different models
|
|
4322
4328
|
- Aggregation options support analytics use cases
|
|
4323
4329
|
`;
|
|
4324
|
-
var
|
|
4325
|
-
sysName,
|
|
4330
|
+
var componentDefaultDescription = ({
|
|
4326
4331
|
modelName,
|
|
4327
|
-
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4332
|
+
ModelName,
|
|
4333
|
+
exampleFiles,
|
|
4334
|
+
constant,
|
|
4335
|
+
properties
|
|
4331
4336
|
}) => `
|
|
4332
|
-
|
|
4333
|
-
\uB2E4\uC74C\uC758 \uBC30\uACBD \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C ${modelName}.constant.ts \uD30C\uC77C\uC744 \uC791\uC131\uD574\uC918.
|
|
4337
|
+
|
|
4334
4338
|
|
|
4335
4339
|
1. Akan.js \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
4336
4340
|
${frameworkAbstract}
|
|
4337
4341
|
|
|
4338
|
-
2.
|
|
4339
|
-
${
|
|
4340
|
-
|
|
4341
|
-
3. <model>.constant.ts \uD30C\uC77C\uC758 Enum \uC791\uC131\uBC95
|
|
4342
|
-
${howToSetEnumInModelConstant}
|
|
4343
|
-
|
|
4344
|
-
4. <model>.constant.ts \uD30C\uC77C\uC758 Field \uC791\uC131\uBC95
|
|
4345
|
-
${howToSetFieldInModelConstant}
|
|
4342
|
+
2. Akan.js\uD504\uB808\uC784\uC6CC\uD06C \uB370\uC774\uD130 \uAE30\uBC18 \uBAA8\uB4C8\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
4343
|
+
${moduleDesription}
|
|
4346
4344
|
|
|
4347
|
-
|
|
4348
|
-
${
|
|
4349
|
-
(constant) => `
|
|
4350
|
-
Example file: ${constant.filepath}
|
|
4351
|
-
\`\`\`
|
|
4352
|
-
${constant.content}
|
|
4353
|
-
\`\`\`
|
|
4354
|
-
`
|
|
4355
|
-
).join("\n")}
|
|
4345
|
+
3. Akan.js eslint \uC124\uC815\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
4346
|
+
${eslintDescription}
|
|
4356
4347
|
|
|
4348
|
+
4. util/ui \uB0B4 ui\uD0B7\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
4349
|
+
${utilUiDescription}
|
|
4357
4350
|
|
|
4358
|
-
|
|
4351
|
+
5. shared/ui \uB0B4 ui\uD0B7\uC5D0 \uB300\uD55C \uC124\uBA85
|
|
4352
|
+
${shardUiDescription}
|
|
4359
4353
|
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
Model description: ${modelDesc}
|
|
4363
|
-
Model schema design: ${modelSchemaDesign}
|
|
4354
|
+
6. ${ModelName}.constant.ts \uD30C\uC77C\uC5D0 \uB300\uD55C \uC815\uBCF4
|
|
4355
|
+
${constant}
|
|
4364
4356
|
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
\`\`\`
|
|
4369
|
-
`;
|
|
4370
|
-
var requestTemplate = ({
|
|
4371
|
-
sysName,
|
|
4372
|
-
modelName,
|
|
4373
|
-
ModelName,
|
|
4374
|
-
boilerplate,
|
|
4375
|
-
constant,
|
|
4376
|
-
properties,
|
|
4377
|
-
exampleFiles
|
|
4378
|
-
}) => `
|
|
4379
|
-
${componentDefaultDescription({
|
|
4380
|
-
sysName,
|
|
4381
|
-
modelName,
|
|
4382
|
-
ModelName,
|
|
4383
|
-
exampleFiles,
|
|
4384
|
-
constant,
|
|
4385
|
-
properties
|
|
4386
|
-
})}
|
|
4387
|
-
\uC694\uCCAD\uC0AC\uD56D
|
|
4388
|
-
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
4389
|
-
- ${ModelName}.Template.tsx \uCF54\uB4DC \uC791\uC131
|
|
4390
|
-
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC740 \uBAA8\uB378 \uC774\uB984\uC740 \uC2A4\uD0A4\uB9C8\uC5D0 \uAE30\uBC18\uD55C \uAE30\uB2A5\uC5D0 \uCD08\uC810\uC744 \uB450\uACE0 \uC791\uC131
|
|
4391
|
-
- \uC544\uB798 \uC81C\uACF5\uD560 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uC788\uB294 General \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uB97C \uC81C\uC678\uD55C \uB514\uC790\uC778 \uCEF4\uD3EC\uB10C\uD2B8 4\uAC1C \uAC1C\uBC1C
|
|
4392
|
-
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
4393
|
-
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
4394
|
-
-
|
|
4395
|
-
|
|
4396
|
-
Application name: ${sysName}
|
|
4397
|
-
Model name: ${modelName}
|
|
4398
|
-
Target filename: ${ModelName}.Template.tsx
|
|
4357
|
+
7. ${modelName}\uC5D0\uC11C \uC885\uC18D\uB418\uB294 \uB2E4\uB978 \uBAA8\uB378\uB4E4\uC758 \uD0C0\uC785 \uC815\uC758
|
|
4358
|
+
${properties.map(
|
|
4359
|
+
(property) => `
|
|
4399
4360
|
\`\`\`
|
|
4361
|
+
${property.key}.constant.ts
|
|
4400
4362
|
|
|
4401
|
-
\`\`\`
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
`;
|
|
4405
|
-
var requestView = ({
|
|
4406
|
-
sysName,
|
|
4407
|
-
modelName,
|
|
4408
|
-
ModelName,
|
|
4409
|
-
boilerplate,
|
|
4410
|
-
constant,
|
|
4411
|
-
properties,
|
|
4412
|
-
exampleFiles
|
|
4413
|
-
}) => `
|
|
4414
|
-
${componentDefaultDescription({
|
|
4415
|
-
sysName,
|
|
4416
|
-
modelName,
|
|
4417
|
-
ModelName,
|
|
4418
|
-
exampleFiles,
|
|
4419
|
-
constant,
|
|
4420
|
-
properties
|
|
4421
|
-
})}
|
|
4422
|
-
\uC694\uCCAD\uC0AC\uD56D
|
|
4423
|
-
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
4424
|
-
- ${ModelName}.View.tsx \uCF54\uB4DC \uC791\uC131
|
|
4425
|
-
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC5D0 ${ModelName}\uC740 \uC0DD\uB7B5\uD558\uBA70, \uB514\uC790\uC778 \uC911\uC810\uC758 \uC774\uB984\uC73C\uB85C \uC791\uC131
|
|
4426
|
-
- \uC544\uB798 \uC81C\uACF5\uD560 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uC788\uB294 General \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uB97C \uC81C\uC678\uD55C \uB514\uC790\uC778 \uCEF4\uD3EC\uB10C\uD2B8 4\uAC1C \uAC1C\uBC1C
|
|
4427
|
-
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
4428
|
-
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
4429
|
-
|
|
4430
|
-
|
|
4431
|
-
Application name: ${sysName}
|
|
4432
|
-
Model name: ${modelName}
|
|
4433
4363
|
|
|
4434
|
-
|
|
4435
|
-
\`\`\`
|
|
4436
|
-
${boilerplate}
|
|
4364
|
+
${property.source}
|
|
4437
4365
|
\`\`\`
|
|
4366
|
+
`
|
|
4367
|
+
).join("\n\n")}
|
|
4438
4368
|
|
|
4439
|
-
|
|
4440
|
-
`;
|
|
4441
|
-
var requestUnit = ({
|
|
4442
|
-
sysName,
|
|
4443
|
-
modelName,
|
|
4444
|
-
ModelName,
|
|
4445
|
-
constant,
|
|
4446
|
-
properties,
|
|
4447
|
-
boilerplate,
|
|
4448
|
-
exampleFiles
|
|
4449
|
-
}) => `
|
|
4450
|
-
${componentDefaultDescription({
|
|
4451
|
-
sysName,
|
|
4452
|
-
modelName,
|
|
4453
|
-
ModelName,
|
|
4454
|
-
exampleFiles,
|
|
4455
|
-
constant,
|
|
4456
|
-
properties
|
|
4457
|
-
})}
|
|
4458
|
-
|
|
4459
|
-
\uC694\uCCAD\uC0AC\uD56D
|
|
4460
|
-
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
4461
|
-
- ${ModelName}.Unit.tsx \uCF54\uB4DC \uC791\uC131
|
|
4462
|
-
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC5D0 ${ModelName}\uC740 \uC0DD\uB7B5\uD558\uBA70, \uB514\uC790\uC778 \uC911\uC810\uC758 \uC774\uB984\uC73C\uB85C \uC791\uC131
|
|
4463
|
-
- \uC608\uC2DC\uD30C\uC77C \uCEF4\uD3EC\uB10C\uD2B8\uC758 \uAE30\uBC18\uD558\uC5EC \uC77C\uBC18\uC801\uC73C\uB85C \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uC640 \uB514\uC790\uC778\uC801 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uCEF4\uD3EC\uB10C\uD2B8 3\uAC1C \uAC1C\uBC1C
|
|
4464
|
-
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
4465
|
-
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
Application name: ${sysName}
|
|
4469
|
-
Model name: ${modelName}
|
|
4470
4369
|
|
|
4471
|
-
|
|
4370
|
+
8. \uC608\uC2DC \uD30C\uC77C\uB4E4
|
|
4371
|
+
${exampleFiles.map(
|
|
4372
|
+
(example) => `
|
|
4373
|
+
Example filename: ${example.filepath}
|
|
4472
4374
|
\`\`\`
|
|
4473
|
-
${
|
|
4375
|
+
${example.content}
|
|
4474
4376
|
\`\`\`
|
|
4377
|
+
`
|
|
4378
|
+
).join("\n\n")}
|
|
4475
4379
|
|
|
4476
|
-
|
|
4477
4380
|
`;
|
|
4478
4381
|
|
|
4479
4382
|
// pkgs/@akanjs/cli/src/application/application.prompt.ts
|
|
@@ -4527,6 +4430,7 @@ var ApplicationRunner = class {
|
|
|
4527
4430
|
}
|
|
4528
4431
|
async removeApplication(app) {
|
|
4529
4432
|
await app.workspace.exec(`rm -rf apps/${app.name}`);
|
|
4433
|
+
app.workspace.unsetTsPaths("app", app.name);
|
|
4530
4434
|
}
|
|
4531
4435
|
async getConfig(app) {
|
|
4532
4436
|
return await getAppConfig(app.cwdPath, {
|
|
@@ -5173,8 +5077,8 @@ var ApplicationScript = class {
|
|
|
5173
5077
|
// pkgs/@akanjs/cli/src/application/application.command.ts
|
|
5174
5078
|
var ApplicationCommand = class {
|
|
5175
5079
|
applicationScript = new ApplicationScript();
|
|
5176
|
-
async createApplication(
|
|
5177
|
-
await this.applicationScript.createApplication(
|
|
5080
|
+
async createApplication(appName, start, workspace) {
|
|
5081
|
+
await this.applicationScript.createApplication(appName.toLowerCase().replace(/ /g, "-"), workspace, { start });
|
|
5178
5082
|
}
|
|
5179
5083
|
async removeApplication(app) {
|
|
5180
5084
|
await this.applicationScript.removeApplication(app);
|
|
@@ -5251,7 +5155,7 @@ var ApplicationCommand = class {
|
|
|
5251
5155
|
};
|
|
5252
5156
|
__decorateClass([
|
|
5253
5157
|
Target.Public(),
|
|
5254
|
-
__decorateParam(0,
|
|
5158
|
+
__decorateParam(0, Argument("appName", { desc: "name of application" })),
|
|
5255
5159
|
__decorateParam(1, Option("start", { type: "boolean", desc: "start application", default: false })),
|
|
5256
5160
|
__decorateParam(2, Workspace())
|
|
5257
5161
|
], ApplicationCommand.prototype, "createApplication", 1);
|
|
@@ -5400,10 +5304,11 @@ var PackageRunner = class {
|
|
|
5400
5304
|
template: "pkgRoot",
|
|
5401
5305
|
dict: { pkgName, PkgName: capitalize(pkgName) }
|
|
5402
5306
|
});
|
|
5307
|
+
workspace.setTsPaths("pkg", pkgName);
|
|
5403
5308
|
}
|
|
5404
5309
|
async removePackage(pkg) {
|
|
5405
5310
|
await pkg.workspace.exec(`rm -rf pkgs/${pkg.name}`);
|
|
5406
|
-
pkg.
|
|
5311
|
+
pkg.workspace.unsetTsPaths("pkg", pkg.name);
|
|
5407
5312
|
}
|
|
5408
5313
|
async scanSync(pkg) {
|
|
5409
5314
|
const scanResult = await pkg.scan();
|
|
@@ -5687,8 +5592,8 @@ CloudCommand = __decorateClass([
|
|
|
5687
5592
|
// pkgs/@akanjs/cli/src/library/library.command.ts
|
|
5688
5593
|
var LibraryCommand = class {
|
|
5689
5594
|
libraryScript = new LibraryScript();
|
|
5690
|
-
async createLibrary(
|
|
5691
|
-
await this.libraryScript.createLibrary(
|
|
5595
|
+
async createLibrary(libName, workspace) {
|
|
5596
|
+
await this.libraryScript.createLibrary(libName.toLowerCase().replace(/ /g, "-"), workspace);
|
|
5692
5597
|
}
|
|
5693
5598
|
async removeLibrary(lib) {
|
|
5694
5599
|
await this.libraryScript.removeLibrary(lib);
|
|
@@ -5696,8 +5601,8 @@ var LibraryCommand = class {
|
|
|
5696
5601
|
async syncLibrary(lib) {
|
|
5697
5602
|
await this.libraryScript.syncLibrary(lib);
|
|
5698
5603
|
}
|
|
5699
|
-
async installLibrary(
|
|
5700
|
-
await this.libraryScript.installLibrary(workspace,
|
|
5604
|
+
async installLibrary(libName, workspace) {
|
|
5605
|
+
await this.libraryScript.installLibrary(workspace, libName);
|
|
5701
5606
|
}
|
|
5702
5607
|
async pushLibrary(lib, branch) {
|
|
5703
5608
|
await this.libraryScript.pushLibrary(lib, branch);
|
|
@@ -5708,7 +5613,7 @@ var LibraryCommand = class {
|
|
|
5708
5613
|
};
|
|
5709
5614
|
__decorateClass([
|
|
5710
5615
|
Target.Public(),
|
|
5711
|
-
__decorateParam(0,
|
|
5616
|
+
__decorateParam(0, Argument("libName", { desc: "name of library" })),
|
|
5712
5617
|
__decorateParam(1, Workspace())
|
|
5713
5618
|
], LibraryCommand.prototype, "createLibrary", 1);
|
|
5714
5619
|
__decorateClass([
|
|
@@ -5721,7 +5626,7 @@ __decorateClass([
|
|
|
5721
5626
|
], LibraryCommand.prototype, "syncLibrary", 1);
|
|
5722
5627
|
__decorateClass([
|
|
5723
5628
|
Target.Public(),
|
|
5724
|
-
__decorateParam(0,
|
|
5629
|
+
__decorateParam(0, Argument("libName", { desc: "name of library", nullable: true })),
|
|
5725
5630
|
__decorateParam(1, Workspace())
|
|
5726
5631
|
], LibraryCommand.prototype, "installLibrary", 1);
|
|
5727
5632
|
__decorateClass([
|
|
@@ -5738,15 +5643,325 @@ LibraryCommand = __decorateClass([
|
|
|
5738
5643
|
Commands()
|
|
5739
5644
|
], LibraryCommand);
|
|
5740
5645
|
|
|
5741
|
-
// pkgs/@akanjs/cli/src/module/module.
|
|
5646
|
+
// pkgs/@akanjs/cli/src/module/module.command.ts
|
|
5742
5647
|
import { select as select4 } from "@inquirer/prompts";
|
|
5648
|
+
|
|
5649
|
+
// pkgs/@akanjs/cli/src/module/module.script.ts
|
|
5743
5650
|
import fs12 from "fs";
|
|
5744
5651
|
|
|
5652
|
+
// pkgs/@akanjs/cli/src/module/module.request.ts
|
|
5653
|
+
var requestConstant = ({
|
|
5654
|
+
sysName,
|
|
5655
|
+
modelName,
|
|
5656
|
+
modelDesc,
|
|
5657
|
+
modelSchemaDesign,
|
|
5658
|
+
boilerplate,
|
|
5659
|
+
exampleFiles
|
|
5660
|
+
}) => `
|
|
5661
|
+
\uB108\uB294 Akan.js\uB77C\uB294 \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C\uB85C Typescript \uAE30\uBC18 \uD504\uB85C\uADF8\uB7A8\uC744 \uC791\uC131\uD558\uB294 \uC2DC\uB2C8\uC5B4 \uAC1C\uBC1C\uC790\uC57C.
|
|
5662
|
+
\uB2E4\uC74C\uC758 \uBC30\uACBD \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C ${modelName}.constant.ts \uD30C\uC77C\uC744 \uC791\uC131\uD574\uC918.
|
|
5663
|
+
|
|
5664
|
+
1. Akan.js \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
5665
|
+
${frameworkAbstract}
|
|
5666
|
+
|
|
5667
|
+
2. <model>.constant.ts \uD30C\uC77C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
5668
|
+
${scalarConstantDescription}
|
|
5669
|
+
|
|
5670
|
+
3. <model>.constant.ts \uD30C\uC77C\uC758 Enum \uC791\uC131\uBC95
|
|
5671
|
+
${howToSetEnumInModelConstant}
|
|
5672
|
+
|
|
5673
|
+
4. <model>.constant.ts \uD30C\uC77C\uC758 Field \uC791\uC131\uBC95
|
|
5674
|
+
${howToSetFieldInModelConstant}
|
|
5675
|
+
|
|
5676
|
+
5. \uD604\uC7AC \uD504\uB85C\uC81D\uD2B8 \uB0B4 \uB2E4\uB978 constant.ts \uD30C\uC77C\uB4E4\uC5D0 \uB300\uD55C \uC608\uC2DC
|
|
5677
|
+
${exampleFiles.map(
|
|
5678
|
+
(constant) => `
|
|
5679
|
+
Example file: ${constant.filepath}
|
|
5680
|
+
\`\`\`
|
|
5681
|
+
${constant.content}
|
|
5682
|
+
\`\`\`
|
|
5683
|
+
`
|
|
5684
|
+
).join("\n")}
|
|
5685
|
+
|
|
5686
|
+
|
|
5687
|
+
\uC704 \uB0B4\uC6A9\uB4E4\uC744 \uBC14\uD0D5\uC73C\uB85C \uD30C\uC2F1\uD558\uAE30 \uC27D\uAC8C \uC544\uB798\uC5D0 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC918
|
|
5688
|
+
|
|
5689
|
+
Application name: ${sysName}
|
|
5690
|
+
Model name: ${modelName}
|
|
5691
|
+
Model description: ${modelDesc}
|
|
5692
|
+
Model schema design: ${modelSchemaDesign}
|
|
5693
|
+
|
|
5694
|
+
Target filename: ${modelName}.constant.ts
|
|
5695
|
+
\`\`\`
|
|
5696
|
+
${boilerplate}
|
|
5697
|
+
\`\`\`
|
|
5698
|
+
`;
|
|
5699
|
+
var requestDictionary = ({
|
|
5700
|
+
sysName,
|
|
5701
|
+
modelName,
|
|
5702
|
+
constant,
|
|
5703
|
+
modelDesc,
|
|
5704
|
+
modelSchemaDesign,
|
|
5705
|
+
boilerplate,
|
|
5706
|
+
exampleFiles
|
|
5707
|
+
}) => `
|
|
5708
|
+
|
|
5709
|
+
|
|
5710
|
+
-${modelName}\uC758 \uC2A4\uD0A4\uB9C8 \uC815\uC758.
|
|
5711
|
+
\`\`\`
|
|
5712
|
+
${constant}
|
|
5713
|
+
\`\`\`
|
|
5714
|
+
|
|
5715
|
+
\uC5ED\uD560\uBD80\uC5EC
|
|
5716
|
+
- Akan.js \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C \uAE30\uBC18 \uC720\uCC3D\uD55C \uBC88\uC5ED\uAC00.
|
|
5717
|
+
|
|
5718
|
+
\uC5C4\uACA9\uD55C \uC8FC\uC758\uC0AC\uD56D
|
|
5719
|
+
- \uBAA8\uB4E0 \uBB38\uC7A5\uC740 \uBB38\uBC95\uC801\uC73C\uB85C \uC62C\uBC14\uB974\uAC8C \uC791\uC131
|
|
5720
|
+
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uB0B4 signalDictionary \uBD80\uBD84\uC740 \uADF8\uB300\uB85C \uC720\uC9C0
|
|
5721
|
+
|
|
5722
|
+
\uC694\uCCAD\uC0AC\uD56D
|
|
5723
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uCDB0 \uBC88\uC5ED\uBCF8 \uC18C\uC2A4\uCF54\uB4DC \uC81C\uACF5
|
|
5724
|
+
|
|
5725
|
+
|
|
5726
|
+
|
|
5727
|
+
Application name: ${sysName}
|
|
5728
|
+
Model name: ${modelName}
|
|
5729
|
+
Model description: ${modelDesc}
|
|
5730
|
+
Model schema design: ${modelSchemaDesign}
|
|
5731
|
+
|
|
5732
|
+
Target filename: ${modelName}.dictionary.ts
|
|
5733
|
+
\`\`\`
|
|
5734
|
+
${boilerplate}
|
|
5735
|
+
\`\`\`
|
|
5736
|
+
`;
|
|
5737
|
+
var requestScalarConstant = ({
|
|
5738
|
+
sysName,
|
|
5739
|
+
modelName,
|
|
5740
|
+
modelDesc,
|
|
5741
|
+
modelSchemaDesign,
|
|
5742
|
+
boilerplate,
|
|
5743
|
+
exampleFiles
|
|
5744
|
+
}) => `
|
|
5745
|
+
\uB108\uB294 Akan.js\uB77C\uB294 \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C\uB85C Typescript \uAE30\uBC18 \uD504\uB85C\uADF8\uB7A8\uC744 \uC791\uC131\uD558\uB294 \uC2DC\uB2C8\uC5B4 \uAC1C\uBC1C\uC790\uC57C.
|
|
5746
|
+
\uB2E4\uC74C\uC758 \uBC30\uACBD \uC815\uBCF4\uB97C \uBC14\uD0D5\uC73C\uB85C ${modelName}.constant.ts \uD30C\uC77C\uC744 \uC791\uC131\uD574\uC918.
|
|
5747
|
+
|
|
5748
|
+
1. Akan.js \uD504\uB808\uC784\uC6CC\uD06C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
5749
|
+
${frameworkAbstract}
|
|
5750
|
+
|
|
5751
|
+
2. <model>.constant.ts \uD30C\uC77C\uC5D0 \uB300\uD55C \uAC1C\uC694
|
|
5752
|
+
${scalarConstantDescription}
|
|
5753
|
+
|
|
5754
|
+
3. <model>.constant.ts \uD30C\uC77C\uC758 Enum \uC791\uC131\uBC95
|
|
5755
|
+
${howToSetEnumInModelConstant}
|
|
5756
|
+
|
|
5757
|
+
4. <model>.constant.ts \uD30C\uC77C\uC758 Field \uC791\uC131\uBC95
|
|
5758
|
+
${howToSetFieldInModelConstant}
|
|
5759
|
+
|
|
5760
|
+
5. \uD604\uC7AC \uD504\uB85C\uC81D\uD2B8 \uB0B4 \uB2E4\uB978 constant.ts \uD30C\uC77C\uB4E4\uC5D0 \uB300\uD55C \uC608\uC2DC
|
|
5761
|
+
${exampleFiles.map(
|
|
5762
|
+
(constant) => `
|
|
5763
|
+
Example file: ${constant.filepath}
|
|
5764
|
+
\`\`\`
|
|
5765
|
+
${constant.content}
|
|
5766
|
+
\`\`\`
|
|
5767
|
+
`
|
|
5768
|
+
).join("\n")}
|
|
5769
|
+
|
|
5770
|
+
|
|
5771
|
+
\uC704 \uB0B4\uC6A9\uB4E4\uC744 \uBC14\uD0D5\uC73C\uB85C \uD30C\uC2F1\uD558\uAE30 \uC27D\uAC8C \uC544\uB798\uC5D0 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC918
|
|
5772
|
+
|
|
5773
|
+
Application name: ${sysName}
|
|
5774
|
+
Model name: ${modelName}
|
|
5775
|
+
Model description: ${modelDesc}
|
|
5776
|
+
Model schema design: ${modelSchemaDesign}
|
|
5777
|
+
|
|
5778
|
+
Target filename: ${modelName}.constant.ts
|
|
5779
|
+
\`\`\`
|
|
5780
|
+
${boilerplate}
|
|
5781
|
+
\`\`\`
|
|
5782
|
+
`;
|
|
5783
|
+
var requestTemplate = ({
|
|
5784
|
+
sysName,
|
|
5785
|
+
modelName,
|
|
5786
|
+
ModelName,
|
|
5787
|
+
boilerplate,
|
|
5788
|
+
constant,
|
|
5789
|
+
properties,
|
|
5790
|
+
exampleFiles
|
|
5791
|
+
}) => `
|
|
5792
|
+
${componentDefaultDescription({
|
|
5793
|
+
sysName,
|
|
5794
|
+
modelName,
|
|
5795
|
+
ModelName: ModelName ?? capitalize(modelName),
|
|
5796
|
+
exampleFiles,
|
|
5797
|
+
constant,
|
|
5798
|
+
properties
|
|
5799
|
+
})}
|
|
5800
|
+
\uC5ED\uD560\uBD80\uC5EC
|
|
5801
|
+
- Akan.js \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C \uAE30\uBC18 Typescript \uC2DC\uB2C8\uC5B4 \uD504\uB860\uD2B8\uC5D4\uB4DC \uAC1C\uBC1C\uC790.
|
|
5802
|
+
|
|
5803
|
+
\uCF54\uB529 \uADDC\uCE59
|
|
5804
|
+
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5805
|
+
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5806
|
+
- CSS: tailwind, DaisyUI(btn, input, badge \uAC19\uC740 \uAE30\uBCF8 \uC694\uC18C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5, card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
5807
|
+
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5808
|
+
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5809
|
+
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
5810
|
+
- \uC0C9\uC0C1: \uD558\uB4DC\uCF54\uB529(bg-red) \uB300\uC2E0 \uD14C\uB9C8 \uC0C9\uC0C1(bg-primary) \uC0AC\uC6A9
|
|
5811
|
+
- \uC870\uAC74\uBD80 \uB80C\uB354\uB9C1: field && <div>... \uB300\uC2E0 field ? <div>... : null \uC0AC\uC6A9
|
|
5812
|
+
- \uBAA8\uB378 \uC811\uADFC: \uAD6C\uC870\uBD84\uD574\uD560\uB2F9 \uB300\uC2E0 ${modelName}.field \uD615\uC2DD\uC73C\uB85C \uC811\uADFC
|
|
5813
|
+
- \uD0C0\uC785 \uC548\uC804: ${modelName}.constant.ts\uC758 \uC2A4\uD0A4\uB9C8 \uCC38\uC870\uD558\uC5EC \uC5D0\uB7EC \uBC29\uC9C0
|
|
5814
|
+
\uD544\uB4DC \uC811\uADFC \uC804: \uC2A4\uD0A4\uB9C8\uC758 \uC2E4\uC81C \uD544\uB4DC \uB9AC\uC2A4\uD2B8 \uC791\uC131 \uBC0F \uAC80\uD1A0 \uD544\uC218
|
|
5815
|
+
|
|
5816
|
+
\uC5C4\uACA9\uD55C \uC8FC\uC758\uC0AC\uD56D
|
|
5817
|
+
- UI \uD0B7\uC740 \uBB38\uC11C\uC5D0 \uBA85\uC2DC\uB41C \uCEF4\uD3EC\uB10C\uD2B8\uB9CC \uC0AC\uC6A9
|
|
5818
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 \uC804 \uBB38\uC11C \uD655\uC778 \uBC0F props \uC815\uD655\uD788 \uAC80\uC99D
|
|
5819
|
+
- \uBA85\uC2DC\uB41C \uB8F0 \uC678 \uC784\uC758 \uCD94\uC0C1\uD654 \uAE08\uC9C0
|
|
5820
|
+
- dayjs \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 @akanjs/base\uC5D0\uC11C \uB798\uD551\uD558\uC5EC \uC81C\uACF5\uD558\uACE0 \uC788\uC74C.
|
|
5821
|
+
|
|
5822
|
+
\uC694\uCCAD\uC0AC\uD56D
|
|
5823
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
5824
|
+
- ${ModelName}.Template.tsx \uCF54\uB4DC \uC791\uC131
|
|
5825
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC740 \uBAA8\uB378 \uC774\uB984\uC740 \uC2A4\uD0A4\uB9C8\uC5D0 \uAE30\uBC18\uD55C \uAE30\uB2A5\uC5D0 \uCD08\uC810\uC744 \uB450\uACE0 \uC791\uC131
|
|
5826
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uC788\uB294 General \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uB97C \uC81C\uC678\uD55C \uB514\uC790\uC778 \uCEF4\uD3EC\uB10C\uD2B8 4\uAC1C \uAC1C\uBC1C
|
|
5827
|
+
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
5828
|
+
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
5829
|
+
-
|
|
5830
|
+
|
|
5831
|
+
Application name: ${sysName}
|
|
5832
|
+
Model name: ${modelName}
|
|
5833
|
+
Target filename: ${ModelName}.Template.tsx
|
|
5834
|
+
\`\`\`
|
|
5835
|
+
${boilerplate}
|
|
5836
|
+
\`\`\`
|
|
5837
|
+
|
|
5838
|
+
|
|
5839
|
+
`;
|
|
5840
|
+
var requestView = ({
|
|
5841
|
+
sysName,
|
|
5842
|
+
modelName,
|
|
5843
|
+
ModelName,
|
|
5844
|
+
boilerplate,
|
|
5845
|
+
constant,
|
|
5846
|
+
properties,
|
|
5847
|
+
exampleFiles
|
|
5848
|
+
}) => `
|
|
5849
|
+
${componentDefaultDescription({
|
|
5850
|
+
sysName,
|
|
5851
|
+
modelName,
|
|
5852
|
+
ModelName: ModelName ?? capitalize(modelName),
|
|
5853
|
+
exampleFiles,
|
|
5854
|
+
constant,
|
|
5855
|
+
properties
|
|
5856
|
+
})}
|
|
5857
|
+
|
|
5858
|
+
\uC5ED\uD560\uBD80\uC5EC
|
|
5859
|
+
- Akan.js \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C \uAE30\uBC18 Typescript \uC2DC\uB2C8\uC5B4 \uD504\uB860\uD2B8\uC5D4\uB4DC \uAC1C\uBC1C\uC790.
|
|
5860
|
+
|
|
5861
|
+
\uCF54\uB529 \uADDC\uCE59
|
|
5862
|
+
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5863
|
+
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5864
|
+
- CSS: tailwind, DaisyUI(btn, input, badge \uAC19\uC740 \uAE30\uBCF8 \uC694\uC18C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5, card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
5865
|
+
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5866
|
+
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5867
|
+
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
5868
|
+
- \uC0C9\uC0C1: \uD558\uB4DC\uCF54\uB529(bg-red) \uB300\uC2E0 \uD14C\uB9C8 \uC0C9\uC0C1(bg-primary) \uC0AC\uC6A9
|
|
5869
|
+
- \uC870\uAC74\uBD80 \uB80C\uB354\uB9C1: field && <div>... \uB300\uC2E0 field ? <div>... : null \uC0AC\uC6A9
|
|
5870
|
+
- \uBAA8\uB378 \uC811\uADFC: \uAD6C\uC870\uBD84\uD574\uD560\uB2F9 \uB300\uC2E0 ${modelName}.field \uD615\uC2DD\uC73C\uB85C \uC811\uADFC
|
|
5871
|
+
- \uD0C0\uC785 \uC548\uC804: ${modelName}.constant.ts\uC758 \uC2A4\uD0A4\uB9C8 \uCC38\uC870\uD558\uC5EC \uC5D0\uB7EC \uBC29\uC9C0
|
|
5872
|
+
\uD544\uB4DC \uC811\uADFC \uC804: \uC2A4\uD0A4\uB9C8\uC758 \uC2E4\uC81C \uD544\uB4DC \uB9AC\uC2A4\uD2B8 \uC791\uC131 \uBC0F \uAC80\uD1A0 \uD544\uC218
|
|
5873
|
+
|
|
5874
|
+
\uC5C4\uACA9\uD55C \uC8FC\uC758\uC0AC\uD56D
|
|
5875
|
+
- UI \uD0B7\uC740 \uBB38\uC11C\uC5D0 \uBA85\uC2DC\uB41C \uCEF4\uD3EC\uB10C\uD2B8\uB9CC \uC0AC\uC6A9
|
|
5876
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 \uC804 \uBB38\uC11C \uD655\uC778 \uBC0F props \uC815\uD655\uD788 \uAC80\uC99D
|
|
5877
|
+
- \uBA85\uC2DC\uB41C \uB8F0 \uC678 \uC784\uC758 \uCD94\uC0C1\uD654 \uAE08\uC9C0
|
|
5878
|
+
- dayjs \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 @akanjs/base\uC5D0\uC11C \uB798\uD551\uD558\uC5EC \uC81C\uACF5\uD558\uACE0 \uC788\uC74C.
|
|
5879
|
+
|
|
5880
|
+
\uC694\uCCAD\uC0AC\uD56D
|
|
5881
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
5882
|
+
- ${ModelName}.View.tsx \uCF54\uB4DC \uC791\uC131
|
|
5883
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC5D0 ${ModelName}\uC740 \uC0DD\uB7B5\uD558\uBA70, \uB514\uC790\uC778 \uC911\uC810\uC758 \uC774\uB984\uC73C\uB85C \uC791\uC131
|
|
5884
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uC788\uB294 General \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uB97C \uC81C\uC678\uD55C \uB514\uC790\uC778 \uCEF4\uD3EC\uB10C\uD2B8 4\uAC1C \uAC1C\uBC1C
|
|
5885
|
+
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
5886
|
+
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
5887
|
+
|
|
5888
|
+
|
|
5889
|
+
Application name: ${sysName}
|
|
5890
|
+
Model name: ${modelName}
|
|
5891
|
+
|
|
5892
|
+
Target filename: ${ModelName}.View.tsx
|
|
5893
|
+
\`\`\`
|
|
5894
|
+
${boilerplate}
|
|
5895
|
+
\`\`\`
|
|
5896
|
+
|
|
5897
|
+
|
|
5898
|
+
`;
|
|
5899
|
+
var requestUnit = ({
|
|
5900
|
+
sysName,
|
|
5901
|
+
modelName,
|
|
5902
|
+
ModelName,
|
|
5903
|
+
constant,
|
|
5904
|
+
properties,
|
|
5905
|
+
boilerplate,
|
|
5906
|
+
exampleFiles
|
|
5907
|
+
}) => `
|
|
5908
|
+
${componentDefaultDescription({
|
|
5909
|
+
sysName,
|
|
5910
|
+
modelName,
|
|
5911
|
+
ModelName: ModelName ?? capitalize(modelName),
|
|
5912
|
+
exampleFiles,
|
|
5913
|
+
constant,
|
|
5914
|
+
properties
|
|
5915
|
+
})}
|
|
5916
|
+
|
|
5917
|
+
\uC5ED\uD560\uBD80\uC5EC
|
|
5918
|
+
- Akan.js \uC0AC\uB0B4 \uD504\uB808\uC784\uC6CC\uD06C \uAE30\uBC18 Typescript \uC2DC\uB2C8\uC5B4 \uD504\uB860\uD2B8\uC5D4\uB4DC \uAC1C\uBC1C\uC790.
|
|
5919
|
+
|
|
5920
|
+
\uCF54\uB529 \uADDC\uCE59
|
|
5921
|
+
- \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5922
|
+
- \uC544\uC774\uCF58: react-icons \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5923
|
+
- CSS: tailwind, DaisyUI(btn, input, badge \uAC19\uC740 \uAE30\uBCF8 \uC694\uC18C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5, card/hero \uAC19\uC740 \uBCF5\uC7A1\uD55C \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 X) \uC0AC\uC6A9
|
|
5924
|
+
- Ui Component: @util/ui \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5925
|
+
- \uC870\uAC74\uBD80 \uD074\uB798\uC2A4: clsx \uB77C\uC774\uBE0C\uB7EC\uB9AC \uC0AC\uC6A9
|
|
5926
|
+
\uCF54\uB4DC \uC2A4\uD0C0\uC77C
|
|
5927
|
+
- \uC0C9\uC0C1: \uD558\uB4DC\uCF54\uB529(bg-red) \uB300\uC2E0 \uD14C\uB9C8 \uC0C9\uC0C1(bg-primary) \uC0AC\uC6A9
|
|
5928
|
+
- \uC870\uAC74\uBD80 \uB80C\uB354\uB9C1: field && <div>... \uB300\uC2E0 field ? <div>... : null \uC0AC\uC6A9
|
|
5929
|
+
- \uBAA8\uB378 \uC811\uADFC: \uAD6C\uC870\uBD84\uD574\uD560\uB2F9 \uB300\uC2E0 ${modelName}.field \uD615\uC2DD\uC73C\uB85C \uC811\uADFC
|
|
5930
|
+
- \uD0C0\uC785 \uC548\uC804: ${modelName}.constant.ts\uC758 \uC2A4\uD0A4\uB9C8 \uCC38\uC870\uD558\uC5EC \uC5D0\uB7EC \uBC29\uC9C0
|
|
5931
|
+
\uD544\uB4DC \uC811\uADFC \uC804: \uC2A4\uD0A4\uB9C8\uC758 \uC2E4\uC81C \uD544\uB4DC \uB9AC\uC2A4\uD2B8 \uC791\uC131 \uBC0F \uAC80\uD1A0 \uD544\uC218
|
|
5932
|
+
|
|
5933
|
+
\uC5C4\uACA9\uD55C \uC8FC\uC758\uC0AC\uD56D
|
|
5934
|
+
- UI \uD0B7\uC740 \uBB38\uC11C\uC5D0 \uBA85\uC2DC\uB41C \uCEF4\uD3EC\uB10C\uD2B8\uB9CC \uC0AC\uC6A9
|
|
5935
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC0AC\uC6A9 \uC804 \uBB38\uC11C \uD655\uC778 \uBC0F props \uC815\uD655\uD788 \uAC80\uC99D
|
|
5936
|
+
- \uBA85\uC2DC\uB41C \uB8F0 \uC678 \uC784\uC758 \uCD94\uC0C1\uD654 \uAE08\uC9C0
|
|
5937
|
+
- dayjs \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 @akanjs/base\uC5D0\uC11C \uB798\uD551\uD558\uC5EC \uC81C\uACF5\uD558\uACE0 \uC788\uC74C.
|
|
5938
|
+
|
|
5939
|
+
\uC694\uCCAD\uC0AC\uD56D
|
|
5940
|
+
- \uC544\uB798 \uC81C\uACF5\uD560 \uAE30\uBCF8 \uD15C\uD50C\uB9BF \uCF54\uB4DC\uC5D0 \uCD94\uAC00\uB85C \uCEF4\uD3EC\uB10C\uD2B8 \uAC1C\uBC1C
|
|
5941
|
+
- ${ModelName}.Unit.tsx \uCF54\uB4DC \uC791\uC131
|
|
5942
|
+
- \uCEF4\uD3EC\uB10C\uD2B8 \uC774\uB984\uC5D0 ${ModelName}\uC740 \uC0DD\uB7B5\uD558\uBA70, \uB514\uC790\uC778 \uC911\uC810\uC758 \uC774\uB984\uC73C\uB85C \uC791\uC131
|
|
5943
|
+
- \uC608\uC2DC\uD30C\uC77C \uCEF4\uD3EC\uB10C\uD2B8\uC758 \uAE30\uBC18\uD558\uC5EC \uC77C\uBC18\uC801\uC73C\uB85C \uC0AC\uC6A9 \uAC00\uB2A5\uD55C \uCEF4\uD3EC\uB10C\uD2B8 1\uAC1C\uC640 \uB514\uC790\uC778\uC801 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uCEF4\uD3EC\uB10C\uD2B8 3\uAC1C \uAC1C\uBC1C
|
|
5944
|
+
- \uCD94\uC0C1\uD654 \uD574\uC57C\uD558\uB294 \uACBD\uC6B0\uAC00 \uC788\uC744 \uACBD\uC6B0\uC5D4 \uBB38\uC11C\uB97C \uB2E4\uC2DC \uCC38\uACE0\uD558\uACE0 \uC124\uBA85\uB41C \uB0B4\uC5D0\uC11C \uD574\uACB0\uD574\uC57C\uD568.
|
|
5945
|
+
- \uBCF4\uC77C\uB7EC\uD50C\uB808\uC774\uD2B8\uC5D0 \uB9DE\uAC8C \uC815\uB9AC\uD574\uC11C \uC81C\uACF5
|
|
5946
|
+
|
|
5947
|
+
|
|
5948
|
+
Application name: ${sysName}
|
|
5949
|
+
Model name: ${modelName}
|
|
5950
|
+
|
|
5951
|
+
Target filename: ${ModelName}.Unit.tsx
|
|
5952
|
+
\`\`\`
|
|
5953
|
+
${boilerplate}
|
|
5954
|
+
\`\`\`
|
|
5955
|
+
|
|
5956
|
+
|
|
5957
|
+
`;
|
|
5958
|
+
|
|
5745
5959
|
// pkgs/@akanjs/cli/src/module/module.runner.ts
|
|
5746
5960
|
var ModuleRunner = class {
|
|
5747
5961
|
async createModule(workspace, sysType, sysName, moduleName, description) {
|
|
5748
5962
|
}
|
|
5749
|
-
|
|
5963
|
+
removeModule(sys2, name) {
|
|
5964
|
+
sys2.removeDir(`${sys2.cwdPath}/lib/${name}`);
|
|
5750
5965
|
}
|
|
5751
5966
|
async createScalarTemplate(sys2, name) {
|
|
5752
5967
|
const akanConfig = await sys2.getConfig();
|
|
@@ -5774,11 +5989,25 @@ var ModuleRunner = class {
|
|
|
5774
5989
|
}
|
|
5775
5990
|
};
|
|
5776
5991
|
}
|
|
5992
|
+
async createDictionaryTemplate(sys2, name) {
|
|
5993
|
+
const akanConfig = await sys2.getConfig();
|
|
5994
|
+
const scanResult = await sys2.scan({ akanConfig });
|
|
5995
|
+
await sys2.applyTemplate({
|
|
5996
|
+
basePath: `./lib/${name}`,
|
|
5997
|
+
template: "dictionary",
|
|
5998
|
+
scanResult,
|
|
5999
|
+
dict: { model: name, Model: capitalize(name), sysName: sys2.name, SysName: capitalize(sys2.name) }
|
|
6000
|
+
});
|
|
6001
|
+
await sys2.scan({ akanConfig });
|
|
6002
|
+
return {
|
|
6003
|
+
dictionary: { filename: `${name}.dictionary.ts`, content: sys2.readFile(`lib/${name}/${name}.dictionary.ts`) }
|
|
6004
|
+
};
|
|
6005
|
+
}
|
|
5777
6006
|
async createComponentTemplate(sys2, name, type) {
|
|
5778
6007
|
const akanConfig = await sys2.getConfig();
|
|
5779
6008
|
const scanResult = await sys2.scan({ akanConfig });
|
|
5780
6009
|
await sys2.applyTemplate({
|
|
5781
|
-
basePath: `./lib/${name}
|
|
6010
|
+
basePath: `./lib/${name}`,
|
|
5782
6011
|
template: `module/__Model__.${capitalize(type)}.ts`,
|
|
5783
6012
|
scanResult,
|
|
5784
6013
|
dict: { model: name, Model: capitalize(name), appName: sys2.name }
|
|
@@ -5787,7 +6016,7 @@ var ModuleRunner = class {
|
|
|
5787
6016
|
return {
|
|
5788
6017
|
component: {
|
|
5789
6018
|
filename: `${name}.${capitalize(type)}.tsx`,
|
|
5790
|
-
content: sys2.readFile(`lib/${name}
|
|
6019
|
+
content: sys2.readFile(`lib/${name}/${capitalize(name)}.${capitalize(type)}.tsx`)
|
|
5791
6020
|
}
|
|
5792
6021
|
// constant: {
|
|
5793
6022
|
// filename: `${name}.constant.ts`,
|
|
@@ -5866,31 +6095,62 @@ var ModuleRunner = class {
|
|
|
5866
6095
|
// pkgs/@akanjs/cli/src/module/module.script.ts
|
|
5867
6096
|
var ModuleScript = class {
|
|
5868
6097
|
#runner = new ModuleRunner();
|
|
5869
|
-
|
|
6098
|
+
//! .command arg에 병합 필요.
|
|
6099
|
+
async createModuleTemplate(sys2, name, description) {
|
|
5870
6100
|
await this.#runner.createModuleTemplate(sys2, name);
|
|
6101
|
+
}
|
|
6102
|
+
async createModule(sys2, name, description, schemaDescription) {
|
|
6103
|
+
await AiSession.init();
|
|
6104
|
+
const session = new AiSession();
|
|
6105
|
+
const [appNames, libNames] = await sys2.workspace.getSyss();
|
|
6106
|
+
const moduleConstantExampleFiles = await sys2.workspace.getConstantFiles();
|
|
6107
|
+
const moduleDictionaryExampleFiles = await sys2.workspace.getDictionaryFiles();
|
|
6108
|
+
const { constant, dictionary } = await this.#runner.createModuleTemplate(sys2, name);
|
|
6109
|
+
sys2.log(`Module ${name} created in ${sys2.type}s/${sys2.name}/lib/${name}`);
|
|
6110
|
+
const constantContent = await session.editTypescript(
|
|
6111
|
+
requestConstant({
|
|
6112
|
+
sysName: sys2.name,
|
|
6113
|
+
modelName: name,
|
|
6114
|
+
modelDesc: description ?? "",
|
|
6115
|
+
modelSchemaDesign: schemaDescription ?? "",
|
|
6116
|
+
boilerplate: constant.content,
|
|
6117
|
+
exampleFiles: randomPicks(moduleConstantExampleFiles, Math.min(10, moduleConstantExampleFiles.length))
|
|
6118
|
+
})
|
|
6119
|
+
);
|
|
6120
|
+
sys2.writeFile(`lib/${name}/${name}.constant.ts`, constantContent);
|
|
6121
|
+
const dictionaryContent = await session.editTypescript(
|
|
6122
|
+
requestDictionary({
|
|
6123
|
+
sysName: sys2.name,
|
|
6124
|
+
modelName: name,
|
|
6125
|
+
constant: constantContent,
|
|
6126
|
+
modelDesc: description ?? "",
|
|
6127
|
+
modelSchemaDesign: schemaDescription ?? "",
|
|
6128
|
+
boilerplate: dictionary.content,
|
|
6129
|
+
exampleFiles: randomPicks(moduleConstantExampleFiles, Math.min(10, moduleConstantExampleFiles.length))
|
|
6130
|
+
})
|
|
6131
|
+
);
|
|
6132
|
+
sys2.writeFile(`lib/${name}/${name}.dictionary.ts`, dictionaryContent);
|
|
6133
|
+
await this.createView(sys2, name);
|
|
6134
|
+
await this.createUnit(sys2, name);
|
|
6135
|
+
await this.createTemplate(sys2, name);
|
|
5871
6136
|
sys2.log(`Module ${name} created in ${sys2.type}s/${sys2.name}/lib/${name}`);
|
|
5872
6137
|
}
|
|
5873
|
-
async
|
|
6138
|
+
async createModule_(sys2, name, description, schemaDescription) {
|
|
6139
|
+
await AiSession.init();
|
|
6140
|
+
const session = new AiSession();
|
|
5874
6141
|
const [appNames, libNames] = await sys2.workspace.getSyss();
|
|
5875
|
-
const
|
|
5876
|
-
|
|
5877
|
-
|
|
5878
|
-
|
|
5879
|
-
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
path: `${appName}/${databaseModule}/${databaseModule}.constant.ts`,
|
|
5883
|
-
content: app.readFile(`lib/${databaseModule}/${databaseModule}.constant.ts`)
|
|
5884
|
-
}))
|
|
5885
|
-
);
|
|
5886
|
-
})
|
|
5887
|
-
)).flat()
|
|
5888
|
-
];
|
|
6142
|
+
const moduleConstantExampleFiles = await sys2.workspace.getConstantFiles();
|
|
6143
|
+
const moduleDictionaryExampleFiles = await sys2.workspace.getDictionaryFiles();
|
|
6144
|
+
sys2.log(`Module ${name} created in ${sys2.type}s/${sys2.name}/lib/${name}`);
|
|
6145
|
+
await this.createView(sys2, name);
|
|
6146
|
+
await this.createUnit(sys2, name);
|
|
6147
|
+
await this.createTemplate(sys2, name);
|
|
6148
|
+
sys2.log(`Module ${name} created in ${sys2.type}s/${sys2.name}/lib/${name}`);
|
|
5889
6149
|
}
|
|
5890
|
-
|
|
6150
|
+
removeModule(sys2, name) {
|
|
6151
|
+
this.#runner.removeModule(sys2, name);
|
|
5891
6152
|
}
|
|
5892
6153
|
async createScalar(sys2, name, description, schemaDescription) {
|
|
5893
|
-
await AiSession.init();
|
|
5894
6154
|
await AiSession.init();
|
|
5895
6155
|
const scalarConstantExampleFiles = await sys2.workspace.getScalarConstantFiles();
|
|
5896
6156
|
const { constant, dictionary } = await this.#runner.createScalarTemplate(sys2, name);
|
|
@@ -5902,7 +6162,7 @@ var ModuleScript = class {
|
|
|
5902
6162
|
modelDesc: description,
|
|
5903
6163
|
modelSchemaDesign: schemaDescription,
|
|
5904
6164
|
boilerplate: constant.content,
|
|
5905
|
-
|
|
6165
|
+
exampleFiles: randomPicks(scalarConstantExampleFiles, Math.min(10, scalarConstantExampleFiles.length))
|
|
5906
6166
|
})
|
|
5907
6167
|
);
|
|
5908
6168
|
sys2.writeFile(`lib/__scalar/${name}/${name}.constant.ts`, content);
|
|
@@ -5911,21 +6171,8 @@ var ModuleScript = class {
|
|
|
5911
6171
|
}
|
|
5912
6172
|
async createTest(workspace, name) {
|
|
5913
6173
|
}
|
|
5914
|
-
async createTemplate(sys2) {
|
|
6174
|
+
async createTemplate(sys2, name) {
|
|
5915
6175
|
await AiSession.init();
|
|
5916
|
-
const libs = await sys2.getModules();
|
|
5917
|
-
const lib = await select4({
|
|
5918
|
-
message: "Select the lib",
|
|
5919
|
-
choices: libs
|
|
5920
|
-
}).catch((e) => {
|
|
5921
|
-
Logger.error("canceled");
|
|
5922
|
-
return null;
|
|
5923
|
-
});
|
|
5924
|
-
if (!lib)
|
|
5925
|
-
return;
|
|
5926
|
-
const name = lib.split("/").pop();
|
|
5927
|
-
if (!name)
|
|
5928
|
-
return;
|
|
5929
6176
|
const { component: template } = await this.#runner.createComponentTemplate(sys2, name, "template");
|
|
5930
6177
|
const templateExampleFiles = (await sys2.getTemplatesSourceCode()).filter(
|
|
5931
6178
|
(f) => !f.filepath.includes(`${name}.Template.tsx`)
|
|
@@ -5944,25 +6191,10 @@ var ModuleScript = class {
|
|
|
5944
6191
|
exampleFiles: randomPicks(templateExampleFiles, Math.min(20, templateExampleFiles.length))
|
|
5945
6192
|
});
|
|
5946
6193
|
const content = await session.editTypescript(promptRst);
|
|
5947
|
-
|
|
5948
|
-
fs12.writeFileSync(`${sys2.cwdPath}/resultTemplate.txt`, content);
|
|
5949
|
-
sys2.writeFile(`lib/${name}__/${Name}.Template.tsx`, content);
|
|
6194
|
+
sys2.writeFile(`lib/${name}/${Name}.Template.tsx`, content);
|
|
5950
6195
|
}
|
|
5951
|
-
async createUnit(sys2) {
|
|
6196
|
+
async createUnit(sys2, name) {
|
|
5952
6197
|
await AiSession.init();
|
|
5953
|
-
const libs = await sys2.getModules();
|
|
5954
|
-
const lib = await select4({
|
|
5955
|
-
message: "Select the lib",
|
|
5956
|
-
choices: libs
|
|
5957
|
-
}).catch((e) => {
|
|
5958
|
-
Logger.error("canceled");
|
|
5959
|
-
return null;
|
|
5960
|
-
});
|
|
5961
|
-
if (!lib)
|
|
5962
|
-
return;
|
|
5963
|
-
const name = lib.split("/").pop();
|
|
5964
|
-
if (!name)
|
|
5965
|
-
return;
|
|
5966
6198
|
const { component: unit } = await this.#runner.createComponentTemplate(sys2, name, "unit");
|
|
5967
6199
|
const Name = capitalize(name);
|
|
5968
6200
|
const unitExampleFiles = (await sys2.getUnitsSourceCode()).filter((f) => !f.filepath.includes(`${name}.Unit.tsx`));
|
|
@@ -5979,25 +6211,10 @@ var ModuleScript = class {
|
|
|
5979
6211
|
boilerplate: unit.content
|
|
5980
6212
|
});
|
|
5981
6213
|
const content = await session.editTypescript(promptRst);
|
|
5982
|
-
|
|
5983
|
-
fs12.writeFileSync(`${sys2.cwdPath}/resultUnit.txt`, content);
|
|
5984
|
-
sys2.writeFile(`lib/${name}__/${Name}.Unit.tsx`, content);
|
|
6214
|
+
sys2.writeFile(`lib/${name}/${Name}.Unit.tsx`, content);
|
|
5985
6215
|
}
|
|
5986
|
-
async createView(sys2) {
|
|
6216
|
+
async createView(sys2, name) {
|
|
5987
6217
|
await AiSession.init();
|
|
5988
|
-
const libs = await sys2.getModules();
|
|
5989
|
-
const lib = await select4({
|
|
5990
|
-
message: "Select the lib",
|
|
5991
|
-
choices: libs
|
|
5992
|
-
}).catch((e) => {
|
|
5993
|
-
Logger.error("canceled");
|
|
5994
|
-
return null;
|
|
5995
|
-
});
|
|
5996
|
-
if (!lib)
|
|
5997
|
-
return;
|
|
5998
|
-
const name = lib.split("/").pop();
|
|
5999
|
-
if (!name)
|
|
6000
|
-
return;
|
|
6001
6218
|
const { component: view } = await this.#runner.createComponentTemplate(sys2, name, "view");
|
|
6002
6219
|
const viewExampleFiles = (await sys2.getViewsSourceCode()).filter((f) => !f.filepath.includes(`${name}.View.tsx`));
|
|
6003
6220
|
const Name = capitalize(name);
|
|
@@ -6014,73 +6231,82 @@ var ModuleScript = class {
|
|
|
6014
6231
|
exampleFiles: randomPicks(viewExampleFiles, Math.min(20, viewExampleFiles.length))
|
|
6015
6232
|
});
|
|
6016
6233
|
const content = await session.editTypescript(promptRst);
|
|
6017
|
-
|
|
6018
|
-
fs12.writeFileSync(`${sys2.cwdPath}/result.txt`, content);
|
|
6019
|
-
sys2.writeFile(`lib/${name}__/${Name}.View.tsx`, content);
|
|
6234
|
+
sys2.writeFile(`lib/${name}/${Name}.View.tsx`, content);
|
|
6020
6235
|
}
|
|
6021
6236
|
};
|
|
6022
6237
|
|
|
6023
6238
|
// pkgs/@akanjs/cli/src/module/module.command.ts
|
|
6024
6239
|
var ModuleCommand = class {
|
|
6025
6240
|
moduleScript = new ModuleScript();
|
|
6026
|
-
async
|
|
6027
|
-
await
|
|
6028
|
-
|
|
6029
|
-
|
|
6030
|
-
|
|
6031
|
-
|
|
6241
|
+
async selectLib(sys2) {
|
|
6242
|
+
const libs = await sys2.getModules();
|
|
6243
|
+
const lib = await select4({
|
|
6244
|
+
message: "Select the lib",
|
|
6245
|
+
choices: libs.map((l) => `${sys2.name}/${l}`)
|
|
6246
|
+
}).catch((e) => {
|
|
6247
|
+
Logger.error("canceled");
|
|
6248
|
+
return null;
|
|
6249
|
+
});
|
|
6250
|
+
return lib?.split("/").pop();
|
|
6032
6251
|
}
|
|
6033
|
-
async
|
|
6034
|
-
|
|
6252
|
+
async createModule(sys2, moduleName, description, schemaDescription, ai, workspace) {
|
|
6253
|
+
const name = lowerlize(moduleName.replace(/ /g, ""));
|
|
6254
|
+
if (ai) {
|
|
6255
|
+
await this.moduleScript.createModule(sys2, name, description, schemaDescription);
|
|
6256
|
+
} else {
|
|
6257
|
+
await this.moduleScript.createModuleTemplate(sys2, name);
|
|
6258
|
+
}
|
|
6035
6259
|
}
|
|
6036
|
-
async
|
|
6260
|
+
async removeModule(sys2, workspace) {
|
|
6261
|
+
const name = await this.selectLib(sys2);
|
|
6262
|
+
if (!name)
|
|
6263
|
+
return;
|
|
6264
|
+
this.moduleScript.removeModule(sys2, name);
|
|
6037
6265
|
}
|
|
6038
|
-
async
|
|
6266
|
+
async createScalar(sys2, scalarName, description, schemaDescription, workspace) {
|
|
6267
|
+
await this.moduleScript.createScalar(sys2, lowerlize(scalarName.replace(/ /g, "")), description, schemaDescription);
|
|
6039
6268
|
}
|
|
6040
6269
|
async createView(sys2, workspace) {
|
|
6041
|
-
await this.
|
|
6270
|
+
const name = await this.selectLib(sys2);
|
|
6271
|
+
if (!name)
|
|
6272
|
+
return;
|
|
6273
|
+
await this.moduleScript.createView(sys2, name);
|
|
6042
6274
|
}
|
|
6043
6275
|
async createUnit(sys2, workspace) {
|
|
6044
|
-
await this.
|
|
6276
|
+
const name = await this.selectLib(sys2);
|
|
6277
|
+
if (!name)
|
|
6278
|
+
return;
|
|
6279
|
+
await this.moduleScript.createUnit(sys2, name);
|
|
6045
6280
|
}
|
|
6046
6281
|
async createTemplate(sys2, workspace) {
|
|
6047
|
-
await this.
|
|
6282
|
+
const name = await this.selectLib(sys2);
|
|
6283
|
+
if (!name)
|
|
6284
|
+
return;
|
|
6285
|
+
await this.moduleScript.createTemplate(sys2, name);
|
|
6048
6286
|
}
|
|
6049
6287
|
};
|
|
6050
6288
|
__decorateClass([
|
|
6051
6289
|
Target.Public(),
|
|
6052
6290
|
__decorateParam(0, Sys()),
|
|
6053
|
-
__decorateParam(1,
|
|
6054
|
-
__decorateParam(2,
|
|
6291
|
+
__decorateParam(1, Argument("moduleName", { desc: "name of module" })),
|
|
6292
|
+
__decorateParam(2, Option("description", { desc: "description of module" })),
|
|
6293
|
+
__decorateParam(3, Option("schemaDescription", { desc: "schema description of module" })),
|
|
6294
|
+
__decorateParam(4, Option("ai", { type: "boolean", default: false, desc: "use ai to create module" })),
|
|
6295
|
+
__decorateParam(5, Workspace())
|
|
6055
6296
|
], ModuleCommand.prototype, "createModule", 1);
|
|
6056
6297
|
__decorateClass([
|
|
6057
6298
|
Target.Public(),
|
|
6058
|
-
__decorateParam(0,
|
|
6299
|
+
__decorateParam(0, Sys()),
|
|
6059
6300
|
__decorateParam(1, Workspace())
|
|
6060
6301
|
], ModuleCommand.prototype, "removeModule", 1);
|
|
6061
|
-
__decorateClass([
|
|
6062
|
-
Target.Public(),
|
|
6063
|
-
__decorateParam(0, Option("name", { desc: "name of module" })),
|
|
6064
|
-
__decorateParam(1, Workspace())
|
|
6065
|
-
], ModuleCommand.prototype, "scanModule", 1);
|
|
6066
6302
|
__decorateClass([
|
|
6067
6303
|
Target.Public(),
|
|
6068
6304
|
__decorateParam(0, Sys()),
|
|
6069
|
-
__decorateParam(1,
|
|
6305
|
+
__decorateParam(1, Argument("scalarName", { desc: "name of scalar module" })),
|
|
6070
6306
|
__decorateParam(2, Option("description", { desc: "description of scalar module" })),
|
|
6071
6307
|
__decorateParam(3, Option("schemaDescription", { desc: "schema description of scalar module" })),
|
|
6072
6308
|
__decorateParam(4, Workspace())
|
|
6073
6309
|
], ModuleCommand.prototype, "createScalar", 1);
|
|
6074
|
-
__decorateClass([
|
|
6075
|
-
Target.Public(),
|
|
6076
|
-
__decorateParam(0, Option("name", { desc: "name of service module" })),
|
|
6077
|
-
__decorateParam(1, Workspace())
|
|
6078
|
-
], ModuleCommand.prototype, "createService", 1);
|
|
6079
|
-
__decorateClass([
|
|
6080
|
-
Target.Public(),
|
|
6081
|
-
__decorateParam(0, Option("name", { desc: "name of test module" })),
|
|
6082
|
-
__decorateParam(1, Workspace())
|
|
6083
|
-
], ModuleCommand.prototype, "createTest", 1);
|
|
6084
6310
|
__decorateClass([
|
|
6085
6311
|
Target.Public(),
|
|
6086
6312
|
__decorateParam(0, Sys()),
|
|
@@ -6331,8 +6557,12 @@ var WorkspaceScript = class {
|
|
|
6331
6557
|
// pkgs/@akanjs/cli/src/workspace/workspace.command.ts
|
|
6332
6558
|
var WorkspaceCommand = class {
|
|
6333
6559
|
workspaceScript = new WorkspaceScript();
|
|
6334
|
-
async createWorkspace(
|
|
6335
|
-
await this.workspaceScript.createWorkspace(
|
|
6560
|
+
async createWorkspace(workspaceName, app, dir) {
|
|
6561
|
+
await this.workspaceScript.createWorkspace(
|
|
6562
|
+
workspaceName.toLowerCase().replace(/ /g, "-"),
|
|
6563
|
+
app.toLowerCase().replace(/ /g, "-"),
|
|
6564
|
+
dir
|
|
6565
|
+
);
|
|
6336
6566
|
}
|
|
6337
6567
|
async generateMongo(workspace) {
|
|
6338
6568
|
await this.workspaceScript.generateMongo(workspace);
|
|
@@ -6346,7 +6576,7 @@ var WorkspaceCommand = class {
|
|
|
6346
6576
|
};
|
|
6347
6577
|
__decorateClass([
|
|
6348
6578
|
Target.Public(),
|
|
6349
|
-
__decorateParam(0,
|
|
6579
|
+
__decorateParam(0, Argument("workspaceName", { desc: "what is the name of your organization?" })),
|
|
6350
6580
|
__decorateParam(1, Option("app", { desc: "describe your first application to create " })),
|
|
6351
6581
|
__decorateParam(2, Option("dir", { desc: "directory of workspace", default: process.env.USE_AKANJS_PKGS === "true" ? "local" : "." }))
|
|
6352
6582
|
], WorkspaceCommand.prototype, "createWorkspace", 1);
|