@akanjs/devkit 0.0.88 → 0.0.90
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/index.js +21 -1
- package/index.mjs +1 -0
- package/package.json +5 -4
- package/src/aiEditor.d.ts +14 -0
- package/src/aiEditor.js +110 -21
- package/src/aiEditor.mjs +124 -0
- package/src/auth.js +48 -18
- package/src/auth.mjs +42 -0
- package/src/capacitorApp.js +42 -9
- package/src/{capacitorApp.cjs → capacitorApp.mjs} +9 -42
- package/src/commandDecorators/argMeta.js +34 -3
- package/src/commandDecorators/{argMeta.cjs → argMeta.mjs} +3 -34
- package/src/commandDecorators/command.js +68 -35
- package/src/commandDecorators/{command.cjs → command.mjs} +35 -68
- package/src/commandDecorators/commandMeta.js +25 -2
- package/src/commandDecorators/commandMeta.mjs +7 -0
- package/src/commandDecorators/index.js +29 -5
- package/src/commandDecorators/index.mjs +5 -0
- package/src/commandDecorators/targetMeta.js +26 -2
- package/src/commandDecorators/targetMeta.mjs +33 -0
- package/src/commandDecorators/types.js +15 -0
- package/src/commandDecorators/types.mjs +0 -0
- package/src/constants.d.ts +8 -1
- package/src/constants.js +34 -5
- package/src/constants.mjs +18 -0
- package/src/createTunnel.js +27 -4
- package/src/createTunnel.mjs +26 -0
- package/src/dependencyScanner.js +38 -5
- package/src/{dependencyScanner.cjs → dependencyScanner.mjs} +5 -38
- package/src/executors.d.ts +24 -31
- package/src/executors.js +180 -131
- package/src/{executors.cjs → executors.mjs} +146 -168
- package/src/extractDeps.js +25 -2
- package/src/{extractDeps.cjs → extractDeps.mjs} +2 -25
- package/src/getCredentials.js +39 -6
- package/src/getCredentials.mjs +11 -0
- package/src/getModelFileData.js +39 -6
- package/src/getModelFileData.mjs +33 -0
- package/src/getRelatedCnsts.d.ts +52 -8
- package/src/getRelatedCnsts.js +205 -54
- package/src/getRelatedCnsts.mjs +221 -0
- package/src/index.d.ts +0 -1
- package/src/index.js +51 -17
- package/src/index.mjs +16 -0
- package/src/selectModel.js +39 -6
- package/src/selectModel.mjs +13 -0
- package/src/streamAi.js +30 -7
- package/src/streamAi.mjs +39 -0
- package/src/types.js +15 -0
- package/src/types.mjs +0 -0
- package/src/uploadRelease.js +48 -15
- package/src/uploadRelease.mjs +52 -0
- package/index.cjs +0 -21
- package/src/aiEditor.cjs +0 -92
- package/src/auth.cjs +0 -72
- package/src/commandDecorators/commandMeta.cjs +0 -30
- package/src/commandDecorators/index.cjs +0 -29
- package/src/commandDecorators/targetMeta.cjs +0 -57
- package/src/commandDecorators/types.cjs +0 -15
- package/src/constants.cjs +0 -47
- package/src/createTunnel.cjs +0 -49
- package/src/getCredentials.cjs +0 -44
- package/src/getModelFileData.cjs +0 -66
- package/src/getRelatedCnsts.cjs +0 -142
- package/src/index.cjs +0 -53
- package/src/installExternalLib.cjs +0 -33
- package/src/installExternalLib.d.ts +0 -2
- package/src/installExternalLib.js +0 -10
- package/src/selectModel.cjs +0 -46
- package/src/streamAi.cjs +0 -62
- package/src/types.cjs +0 -15
- package/src/uploadRelease.cjs +0 -85
package/src/executors.js
CHANGED
|
@@ -1,31 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
var executors_exports = {};
|
|
29
|
+
__export(executors_exports, {
|
|
30
|
+
AppExecutor: () => AppExecutor,
|
|
31
|
+
Executor: () => Executor,
|
|
32
|
+
LibExecutor: () => LibExecutor,
|
|
33
|
+
PkgExecutor: () => PkgExecutor,
|
|
34
|
+
SysExecutor: () => SysExecutor,
|
|
35
|
+
WorkspaceExecutor: () => WorkspaceExecutor
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(executors_exports);
|
|
38
|
+
var import_common = require("@akanjs/common");
|
|
39
|
+
var import_config = require("@akanjs/config");
|
|
40
|
+
var import_child_process = require("child_process");
|
|
41
|
+
var import_dotenv = __toESM(require("dotenv"));
|
|
42
|
+
var import_fs = __toESM(require("fs"));
|
|
43
|
+
var import_promises = __toESM(require("fs/promises"));
|
|
44
|
+
var import_path = __toESM(require("path"));
|
|
45
|
+
var import_dependencyScanner = require("./dependencyScanner");
|
|
13
46
|
class Executor {
|
|
14
47
|
logger;
|
|
15
48
|
cwdPath;
|
|
16
49
|
constructor(name, cwdPath) {
|
|
17
|
-
this.logger = new Logger(name);
|
|
50
|
+
this.logger = new import_common.Logger(name);
|
|
18
51
|
this.cwdPath = cwdPath;
|
|
19
|
-
if (!
|
|
20
|
-
|
|
52
|
+
if (!import_fs.default.existsSync(cwdPath))
|
|
53
|
+
import_fs.default.mkdirSync(cwdPath, { recursive: true });
|
|
21
54
|
}
|
|
22
55
|
exec(command, options = {}) {
|
|
23
|
-
const proc = exec(command, { cwd: this.cwdPath, ...options });
|
|
56
|
+
const proc = (0, import_child_process.exec)(command, { cwd: this.cwdPath, ...options });
|
|
24
57
|
proc.stdout?.on("data", (data) => {
|
|
25
|
-
Logger.raw(data.toString());
|
|
58
|
+
import_common.Logger.raw(data.toString());
|
|
26
59
|
});
|
|
27
60
|
proc.stderr?.on("data", (data) => {
|
|
28
|
-
Logger.raw(data.toString());
|
|
61
|
+
import_common.Logger.raw(data.toString());
|
|
29
62
|
});
|
|
30
63
|
return new Promise((resolve, reject) => {
|
|
31
64
|
proc.on("exit", (code, signal) => {
|
|
@@ -37,9 +70,9 @@ class Executor {
|
|
|
37
70
|
});
|
|
38
71
|
}
|
|
39
72
|
spawn(command, args = [], options = {}) {
|
|
40
|
-
const proc = spawn(command, args, { cwd: this.cwdPath, stdio: "inherit", ...options });
|
|
73
|
+
const proc = (0, import_child_process.spawn)(command, args, { cwd: this.cwdPath, stdio: "inherit", ...options });
|
|
41
74
|
proc.stderr?.on("data", (data) => {
|
|
42
|
-
Logger.raw(data.toString());
|
|
75
|
+
import_common.Logger.raw(data.toString());
|
|
43
76
|
});
|
|
44
77
|
return new Promise((resolve, reject) => {
|
|
45
78
|
proc.on("exit", (code, signal) => {
|
|
@@ -51,16 +84,16 @@ class Executor {
|
|
|
51
84
|
});
|
|
52
85
|
}
|
|
53
86
|
fork(modulePath, args = [], options = {}) {
|
|
54
|
-
const proc = fork(modulePath, args, {
|
|
87
|
+
const proc = (0, import_child_process.fork)(modulePath, args, {
|
|
55
88
|
cwd: this.cwdPath,
|
|
56
89
|
stdio: ["ignore", "inherit", "inherit", "ipc"],
|
|
57
90
|
...options
|
|
58
91
|
});
|
|
59
92
|
proc.stdout?.on("data", (data) => {
|
|
60
|
-
Logger.raw(data.toString());
|
|
93
|
+
import_common.Logger.raw(data.toString());
|
|
61
94
|
});
|
|
62
95
|
proc.stderr?.on("data", (data) => {
|
|
63
|
-
Logger.raw(data.toString());
|
|
96
|
+
import_common.Logger.raw(data.toString());
|
|
64
97
|
});
|
|
65
98
|
return new Promise((resolve, reject) => {
|
|
66
99
|
proc.on("exit", (code, signal) => {
|
|
@@ -72,35 +105,35 @@ class Executor {
|
|
|
72
105
|
});
|
|
73
106
|
}
|
|
74
107
|
#getPath(filePath) {
|
|
75
|
-
return
|
|
108
|
+
return import_path.default.isAbsolute(filePath) ? filePath : `${this.cwdPath}/${filePath}`;
|
|
76
109
|
}
|
|
77
110
|
mkdir(dirPath) {
|
|
78
111
|
const writePath = this.#getPath(dirPath);
|
|
79
|
-
if (!
|
|
80
|
-
|
|
112
|
+
if (!import_fs.default.existsSync(writePath))
|
|
113
|
+
import_fs.default.mkdirSync(writePath, { recursive: true });
|
|
81
114
|
this.logger.verbose(`Make directory ${writePath}`);
|
|
82
115
|
return this;
|
|
83
116
|
}
|
|
84
117
|
exists(filePath) {
|
|
85
118
|
const readPath = this.#getPath(filePath);
|
|
86
|
-
return
|
|
119
|
+
return import_fs.default.existsSync(readPath);
|
|
87
120
|
}
|
|
88
121
|
writeFile(filePath, content, { overwrite = true } = {}) {
|
|
89
122
|
const writePath = this.#getPath(filePath);
|
|
90
|
-
const dir =
|
|
91
|
-
if (!
|
|
92
|
-
|
|
123
|
+
const dir = import_path.default.dirname(writePath);
|
|
124
|
+
if (!import_fs.default.existsSync(dir))
|
|
125
|
+
import_fs.default.mkdirSync(dir, { recursive: true });
|
|
93
126
|
const contentStr = typeof content === "string" ? content : JSON.stringify(content, null, 2);
|
|
94
|
-
if (
|
|
95
|
-
const currentContent =
|
|
127
|
+
if (import_fs.default.existsSync(writePath)) {
|
|
128
|
+
const currentContent = import_fs.default.readFileSync(writePath, "utf8");
|
|
96
129
|
if (currentContent === contentStr || !overwrite)
|
|
97
130
|
this.logger.verbose(`File ${writePath} is unchanged`);
|
|
98
131
|
else {
|
|
99
|
-
|
|
132
|
+
import_fs.default.writeFileSync(writePath, contentStr, "utf8");
|
|
100
133
|
this.logger.verbose(`File ${writePath} is changed`);
|
|
101
134
|
}
|
|
102
135
|
} else {
|
|
103
|
-
|
|
136
|
+
import_fs.default.writeFileSync(writePath, contentStr, "utf8");
|
|
104
137
|
this.logger.verbose(`File ${writePath} is created`);
|
|
105
138
|
}
|
|
106
139
|
return this;
|
|
@@ -110,22 +143,22 @@ class Executor {
|
|
|
110
143
|
return this;
|
|
111
144
|
}
|
|
112
145
|
getLocalFile(filePath) {
|
|
113
|
-
const filepath =
|
|
146
|
+
const filepath = import_path.default.isAbsolute(filePath) ? filePath : filePath.replace(this.cwdPath, "");
|
|
114
147
|
const content = this.readFile(filepath);
|
|
115
148
|
return { filepath, content };
|
|
116
149
|
}
|
|
117
150
|
readFile(filePath) {
|
|
118
151
|
const readPath = this.#getPath(filePath);
|
|
119
|
-
return
|
|
152
|
+
return import_fs.default.readFileSync(readPath, "utf8");
|
|
120
153
|
}
|
|
121
154
|
readJson(filePath) {
|
|
122
155
|
const readPath = this.#getPath(filePath);
|
|
123
|
-
return JSON.parse(
|
|
156
|
+
return JSON.parse(import_fs.default.readFileSync(readPath, "utf8"));
|
|
124
157
|
}
|
|
125
158
|
async cp(srcPath, destPath) {
|
|
126
159
|
const src = this.#getPath(srcPath);
|
|
127
160
|
const dest = this.#getPath(destPath);
|
|
128
|
-
await
|
|
161
|
+
await import_promises.default.cp(src, dest, { recursive: true });
|
|
129
162
|
}
|
|
130
163
|
log(msg) {
|
|
131
164
|
this.logger.info(msg);
|
|
@@ -158,9 +191,9 @@ class Executor {
|
|
|
158
191
|
const result = getContent.default(scanResult ?? null, dict);
|
|
159
192
|
if (result === null)
|
|
160
193
|
return;
|
|
161
|
-
const filename = typeof result === "object" ? result.filename :
|
|
194
|
+
const filename = typeof result === "object" ? result.filename : import_path.default.basename(targetPath).replace(".js", ".ts");
|
|
162
195
|
const content = typeof result === "object" ? result.content : result;
|
|
163
|
-
const dirname =
|
|
196
|
+
const dirname = import_path.default.dirname(targetPath);
|
|
164
197
|
const convertedTargetPath = Object.entries(dict).reduce(
|
|
165
198
|
(path2, [key, value]) => path2.replace(new RegExp(`__${key}__`, "g"), value),
|
|
166
199
|
`${dirname}/${filename}`
|
|
@@ -168,7 +201,7 @@ class Executor {
|
|
|
168
201
|
this.logger.verbose(`Apply template ${templatePath} to ${convertedTargetPath}`);
|
|
169
202
|
this.writeFile(convertedTargetPath, content);
|
|
170
203
|
} else if (targetPath.endsWith(".template")) {
|
|
171
|
-
const content = await
|
|
204
|
+
const content = await import_promises.default.readFile(templatePath, "utf8");
|
|
172
205
|
const convertedTargetPath = Object.entries(dict).reduce(
|
|
173
206
|
(path2, [key, value]) => path2.replace(new RegExp(`__${key}__`, "g"), value),
|
|
174
207
|
targetPath.slice(0, -9)
|
|
@@ -189,26 +222,26 @@ class Executor {
|
|
|
189
222
|
overwrite = true
|
|
190
223
|
}) {
|
|
191
224
|
const templatePath = `${__dirname}/src/templates${template ? `/${template}` : ""}`.replace(".ts", ".js");
|
|
192
|
-
if (
|
|
193
|
-
const filename =
|
|
225
|
+
if (import_fs.default.statSync(templatePath).isFile()) {
|
|
226
|
+
const filename = import_path.default.basename(templatePath);
|
|
194
227
|
await this.#applyTemplateFile(
|
|
195
|
-
{ templatePath, targetPath:
|
|
228
|
+
{ templatePath, targetPath: import_path.default.join(basePath, filename), scanResult, overwrite },
|
|
196
229
|
dict
|
|
197
230
|
);
|
|
198
231
|
} else {
|
|
199
|
-
const subdirs = await
|
|
232
|
+
const subdirs = await import_promises.default.readdir(templatePath);
|
|
200
233
|
await Promise.all(
|
|
201
234
|
subdirs.map(async (subdir) => {
|
|
202
|
-
const subpath =
|
|
203
|
-
if (
|
|
235
|
+
const subpath = import_path.default.join(templatePath, subdir);
|
|
236
|
+
if (import_fs.default.statSync(subpath).isFile())
|
|
204
237
|
await this.#applyTemplateFile(
|
|
205
|
-
{ templatePath: subpath, targetPath:
|
|
238
|
+
{ templatePath: subpath, targetPath: import_path.default.join(basePath, subdir), scanResult, overwrite },
|
|
206
239
|
dict
|
|
207
240
|
);
|
|
208
241
|
else
|
|
209
242
|
await this.applyTemplate({
|
|
210
|
-
basePath:
|
|
211
|
-
template:
|
|
243
|
+
basePath: import_path.default.join(basePath, subdir),
|
|
244
|
+
template: import_path.default.join(template, subdir),
|
|
212
245
|
scanResult,
|
|
213
246
|
dict,
|
|
214
247
|
overwrite
|
|
@@ -227,11 +260,11 @@ class WorkspaceExecutor extends Executor {
|
|
|
227
260
|
this.repoName = repoName;
|
|
228
261
|
}
|
|
229
262
|
static fromRoot() {
|
|
230
|
-
const repoName =
|
|
263
|
+
const repoName = import_path.default.basename(process.cwd());
|
|
231
264
|
return new WorkspaceExecutor({ workspaceRoot: process.cwd(), repoName });
|
|
232
265
|
}
|
|
233
266
|
getBaseDevEnv() {
|
|
234
|
-
const envFile =
|
|
267
|
+
const envFile = import_dotenv.default.parse(this.readFile(".env"));
|
|
235
268
|
const appName = process.env.NEXT_PUBLIC_APP_NAME ?? envFile.NEXT_PUBLIC_APP_NAME;
|
|
236
269
|
const repoName = process.env.NEXT_PUBLIC_REPO_NAME ?? envFile.NEXT_PUBLIC_REPO_NAME;
|
|
237
270
|
if (!repoName)
|
|
@@ -297,24 +330,44 @@ class WorkspaceExecutor extends Executor {
|
|
|
297
330
|
this.writeJson("tsconfig.json", rootTsConfig);
|
|
298
331
|
return this;
|
|
299
332
|
}
|
|
333
|
+
async getDirInModule(basePath, name) {
|
|
334
|
+
const AVOID_DIRS = ["__lib", "__scalar", `_${name}`];
|
|
335
|
+
const getDirs = async (dirname, maxDepth = 3, results = [], prefix = "") => {
|
|
336
|
+
const dirs = await import_promises.default.readdir(dirname);
|
|
337
|
+
await Promise.all(
|
|
338
|
+
dirs.map(async (dir) => {
|
|
339
|
+
if (AVOID_DIRS.includes(dir))
|
|
340
|
+
return;
|
|
341
|
+
const dirPath = import_path.default.join(dirname, dir);
|
|
342
|
+
if (import_fs.default.lstatSync(dirPath).isDirectory()) {
|
|
343
|
+
results.push(`${name}/${prefix}${dir}`);
|
|
344
|
+
if (maxDepth > 0)
|
|
345
|
+
await getDirs(dirPath, maxDepth - 1, results, `${prefix}${dir}/`);
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
);
|
|
349
|
+
return results;
|
|
350
|
+
};
|
|
351
|
+
return await getDirs(basePath);
|
|
352
|
+
}
|
|
300
353
|
async commit(message, { init = false, add = true } = {}) {
|
|
301
354
|
if (init)
|
|
302
|
-
await this.exec(`git init`);
|
|
355
|
+
await this.exec(`git init --quiet`);
|
|
303
356
|
if (add)
|
|
304
357
|
await this.exec(`git add .`);
|
|
305
|
-
await this.exec(`git commit -m "${message}"`);
|
|
358
|
+
await this.exec(`git commit --quiet -m "${message}"`);
|
|
306
359
|
}
|
|
307
360
|
async #getDirHasFile(basePath, targetFilename) {
|
|
308
361
|
const AVOID_DIRS = ["node_modules", "dist", "public", "./next"];
|
|
309
362
|
const getDirs = async (dirname, maxDepth = 3, results = [], prefix = "") => {
|
|
310
|
-
const dirs = await
|
|
363
|
+
const dirs = await import_promises.default.readdir(dirname);
|
|
311
364
|
await Promise.all(
|
|
312
365
|
dirs.map(async (dir) => {
|
|
313
366
|
if (AVOID_DIRS.includes(dir))
|
|
314
367
|
return;
|
|
315
|
-
const dirPath =
|
|
316
|
-
if (
|
|
317
|
-
const hasTargetFile =
|
|
368
|
+
const dirPath = import_path.default.join(dirname, dir);
|
|
369
|
+
if (import_fs.default.lstatSync(dirPath).isDirectory()) {
|
|
370
|
+
const hasTargetFile = import_fs.default.existsSync(import_path.default.join(dirPath, targetFilename));
|
|
318
371
|
if (hasTargetFile)
|
|
319
372
|
results.push(`${prefix}${dir}`);
|
|
320
373
|
if (maxDepth > 0)
|
|
@@ -334,6 +387,14 @@ class WorkspaceExecutor extends Executor {
|
|
|
334
387
|
];
|
|
335
388
|
return scalarConstantExampleFiles;
|
|
336
389
|
}
|
|
390
|
+
async getViewFiles() {
|
|
391
|
+
const [appNames, libNames] = await this.getSyss();
|
|
392
|
+
const viewExampleFiles = [
|
|
393
|
+
...(await Promise.all(appNames.map((appName) => AppExecutor.from(this, appName).getViewsSourceCode()))).flat(),
|
|
394
|
+
...(await Promise.all(libNames.map((libName) => LibExecutor.from(this, libName).getViewsSourceCode()))).flat()
|
|
395
|
+
];
|
|
396
|
+
return viewExampleFiles;
|
|
397
|
+
}
|
|
337
398
|
}
|
|
338
399
|
class SysExecutor extends Executor {
|
|
339
400
|
workspace;
|
|
@@ -346,7 +407,11 @@ class SysExecutor extends Executor {
|
|
|
346
407
|
this.type = type;
|
|
347
408
|
}
|
|
348
409
|
async getConfig(command) {
|
|
349
|
-
return this.type === "app" ? await getAppConfig(this.cwdPath, { ...this.workspace.getBaseDevEnv(), type: "app", name: this.name, command }) : await getLibConfig(this.cwdPath, { ...this.workspace.getBaseDevEnv(), type: "lib", name: this.name, command });
|
|
410
|
+
return this.type === "app" ? await (0, import_config.getAppConfig)(this.cwdPath, { ...this.workspace.getBaseDevEnv(), type: "app", name: this.name, command }) : await (0, import_config.getLibConfig)(this.cwdPath, { ...this.workspace.getBaseDevEnv(), type: "lib", name: this.name, command });
|
|
411
|
+
}
|
|
412
|
+
async getModules() {
|
|
413
|
+
const path2 = this.type === "app" ? `apps/${this.name}/lib` : `libs/${this.name}/lib`;
|
|
414
|
+
return await this.workspace.getDirInModule(path2, this.name);
|
|
350
415
|
}
|
|
351
416
|
async scan({
|
|
352
417
|
tsconfig = this.getTsConfig(`${this.cwdPath}/tsconfig.json`),
|
|
@@ -355,7 +420,7 @@ class SysExecutor extends Executor {
|
|
|
355
420
|
if (libScanResults[this.name])
|
|
356
421
|
return libScanResults[this.name];
|
|
357
422
|
const rootPackageJson = this.readJson(`${this.workspace.workspaceRoot}/package.json`);
|
|
358
|
-
const scanner = new TypeScriptDependencyScanner(this.cwdPath);
|
|
423
|
+
const scanner = new import_dependencyScanner.TypeScriptDependencyScanner(this.cwdPath);
|
|
359
424
|
const npmSet = new Set(Object.keys({ ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies }));
|
|
360
425
|
const pkgPathSet = new Set(
|
|
361
426
|
Object.keys(tsconfig.compilerOptions.paths).filter((path2) => tsconfig.compilerOptions.paths[path2].some((resolve) => resolve.startsWith("pkgs/"))).map((path2) => path2.replace("/*", ""))
|
|
@@ -372,17 +437,17 @@ class SysExecutor extends Executor {
|
|
|
372
437
|
const pathSplitLength = path2.split("/").length;
|
|
373
438
|
return tsconfig.compilerOptions.paths[path2][0].split("/").slice(1, 1 + pathSplitLength).join("/");
|
|
374
439
|
}).filter((libName) => libName !== this.name);
|
|
375
|
-
if (!
|
|
376
|
-
|
|
377
|
-
const files = getDefaultFileScan();
|
|
378
|
-
const dirnames = (await
|
|
379
|
-
(name) =>
|
|
440
|
+
if (!import_fs.default.existsSync(`${this.cwdPath}/lib/__scalar`))
|
|
441
|
+
import_fs.default.mkdirSync(`${this.cwdPath}/lib/__scalar`, { recursive: true });
|
|
442
|
+
const files = (0, import_config.getDefaultFileScan)();
|
|
443
|
+
const dirnames = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter(
|
|
444
|
+
(name) => import_fs.default.lstatSync(`${this.cwdPath}/lib/${name}`).isDirectory()
|
|
380
445
|
);
|
|
381
446
|
const databaseDirs = dirnames.filter((name) => !name.startsWith("_"));
|
|
382
447
|
const serviceDirs = dirnames.filter((name) => name.startsWith("_") && !name.startsWith("__"));
|
|
383
448
|
await Promise.all(
|
|
384
449
|
databaseDirs.map(async (name) => {
|
|
385
|
-
const filenames = await
|
|
450
|
+
const filenames = await import_promises.default.readdir(import_path.default.join(this.cwdPath, "lib", name));
|
|
386
451
|
filenames.forEach((filename) => {
|
|
387
452
|
if (filename.endsWith(".constant.ts"))
|
|
388
453
|
files.constants.databases.push(name);
|
|
@@ -404,7 +469,7 @@ class SysExecutor extends Executor {
|
|
|
404
469
|
await Promise.all(
|
|
405
470
|
serviceDirs.map(async (dirname) => {
|
|
406
471
|
const name = dirname.slice(1);
|
|
407
|
-
const filenames = await
|
|
472
|
+
const filenames = await import_promises.default.readdir(import_path.default.join(this.cwdPath, "lib", dirname));
|
|
408
473
|
filenames.forEach((filename) => {
|
|
409
474
|
if (filename.endsWith(".dictionary.ts"))
|
|
410
475
|
files.dictionary.services.push(name);
|
|
@@ -419,12 +484,12 @@ class SysExecutor extends Executor {
|
|
|
419
484
|
});
|
|
420
485
|
})
|
|
421
486
|
);
|
|
422
|
-
const scalarDirs = (await
|
|
487
|
+
const scalarDirs = (await import_promises.default.readdir(`${this.cwdPath}/lib/__scalar`)).filter(
|
|
423
488
|
(name) => !name.startsWith("_")
|
|
424
489
|
);
|
|
425
490
|
await Promise.all(
|
|
426
491
|
scalarDirs.map(async (name) => {
|
|
427
|
-
const filenames = await
|
|
492
|
+
const filenames = await import_promises.default.readdir(import_path.default.join(this.cwdPath, "lib/__scalar", name));
|
|
428
493
|
filenames.forEach((filename) => {
|
|
429
494
|
if (filename.endsWith(".constant.ts"))
|
|
430
495
|
files.constants.scalars.push(name);
|
|
@@ -499,25 +564,47 @@ class SysExecutor extends Executor {
|
|
|
499
564
|
return scanResult;
|
|
500
565
|
}
|
|
501
566
|
getLocalFile(filePath) {
|
|
502
|
-
const filepath =
|
|
567
|
+
const filepath = import_path.default.isAbsolute(filePath) ? filePath : `${this.type}s/${this.name}/${filePath}`;
|
|
503
568
|
const content = this.workspace.readFile(filepath);
|
|
504
569
|
return { filepath, content };
|
|
505
570
|
}
|
|
506
571
|
async getDatabaseModules() {
|
|
507
|
-
const databaseModules = (await
|
|
572
|
+
const databaseModules = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter((name) => !name.startsWith("_") && !name.startsWith("__") && !name.endsWith(".ts")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/${name}/${name}.constant.ts`));
|
|
508
573
|
return databaseModules;
|
|
509
574
|
}
|
|
510
575
|
async getServiceModules() {
|
|
511
|
-
const serviceModules = (await
|
|
576
|
+
const serviceModules = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter((name) => name.startsWith("_") && !name.startsWith("__")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/${name}/${name}.service.ts`));
|
|
512
577
|
return serviceModules;
|
|
513
578
|
}
|
|
514
579
|
async getScalarModules() {
|
|
515
|
-
const scalarModules = (await
|
|
580
|
+
const scalarModules = (await import_promises.default.readdir(`${this.cwdPath}/lib/__scalar`)).filter((name) => !name.startsWith("_")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/__scalar/${name}/${name}.constant.ts`));
|
|
516
581
|
return scalarModules;
|
|
517
582
|
}
|
|
518
|
-
async
|
|
519
|
-
const
|
|
520
|
-
return
|
|
583
|
+
async getViewComponents() {
|
|
584
|
+
const viewComponents = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter((name) => !name.startsWith("_") && !name.startsWith("__") && !name.endsWith(".ts")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/${name}/${name}.View.tsx`));
|
|
585
|
+
return viewComponents;
|
|
586
|
+
}
|
|
587
|
+
async getUnitComponents() {
|
|
588
|
+
const unitComponents = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter((name) => name.startsWith("_") && !name.startsWith("__")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/${name}/${name}.Unit.tsx`));
|
|
589
|
+
return unitComponents;
|
|
590
|
+
}
|
|
591
|
+
async getTemplateComponents() {
|
|
592
|
+
const templateComponents = (await import_promises.default.readdir(`${this.cwdPath}/lib`)).filter((name) => name.startsWith("_") && !name.startsWith("__")).filter((name) => import_fs.default.existsSync(`${this.cwdPath}/lib/${name}/${name}.Template.tsx`));
|
|
593
|
+
return templateComponents;
|
|
594
|
+
}
|
|
595
|
+
async getViewsSourceCode() {
|
|
596
|
+
const viewComponents = await this.getViewComponents();
|
|
597
|
+
return viewComponents.map((viewComponent) => this.getLocalFile(`lib/${viewComponent}/${viewComponent}.View.tsx`));
|
|
598
|
+
}
|
|
599
|
+
async getUnitsSourceCode() {
|
|
600
|
+
const unitComponents = await this.getUnitComponents();
|
|
601
|
+
return unitComponents.map((unitComponent) => this.getLocalFile(`lib/${unitComponent}/${unitComponent}.Unit.tsx`));
|
|
602
|
+
}
|
|
603
|
+
async getTemplatesSourceCode() {
|
|
604
|
+
const templateComponents = await this.getTemplateComponents();
|
|
605
|
+
return templateComponents.map(
|
|
606
|
+
(templateComponent) => this.getLocalFile(`lib/${templateComponent}/${templateComponent}.Template.tsx`)
|
|
607
|
+
);
|
|
521
608
|
}
|
|
522
609
|
async getScalarConstantFiles() {
|
|
523
610
|
const scalarModules = await this.getScalarModules();
|
|
@@ -537,8 +624,10 @@ class SysExecutor extends Executor {
|
|
|
537
624
|
}
|
|
538
625
|
}
|
|
539
626
|
class AppExecutor extends SysExecutor {
|
|
627
|
+
dist;
|
|
540
628
|
constructor({ workspace, name }) {
|
|
541
629
|
super({ workspace, name, type: "app" });
|
|
630
|
+
this.dist = new Executor(`${name} Dist App Executor`, `${this.workspace.workspaceRoot}/dist/apps/${name}`);
|
|
542
631
|
}
|
|
543
632
|
static from(executor, name) {
|
|
544
633
|
if (executor instanceof WorkspaceExecutor)
|
|
@@ -546,7 +635,7 @@ class AppExecutor extends SysExecutor {
|
|
|
546
635
|
return new AppExecutor({ workspace: executor.workspace, name });
|
|
547
636
|
}
|
|
548
637
|
async getConfig(command) {
|
|
549
|
-
return await getAppConfig(this.cwdPath, {
|
|
638
|
+
return await (0, import_config.getAppConfig)(this.cwdPath, {
|
|
550
639
|
...this.workspace.getBaseDevEnv(),
|
|
551
640
|
type: "app",
|
|
552
641
|
name: this.name,
|
|
@@ -555,36 +644,26 @@ class AppExecutor extends SysExecutor {
|
|
|
555
644
|
}
|
|
556
645
|
async syncAssets(libDeps) {
|
|
557
646
|
const projectPublicLibPath = `${this.cwdPath}/public/libs`;
|
|
558
|
-
if (
|
|
559
|
-
await
|
|
560
|
-
const targetDeps = libDeps.filter((dep) =>
|
|
561
|
-
await Promise.all(targetDeps.map((dep) =>
|
|
647
|
+
if (import_fs.default.existsSync(projectPublicLibPath))
|
|
648
|
+
await import_promises.default.rm(projectPublicLibPath, { recursive: true });
|
|
649
|
+
const targetDeps = libDeps.filter((dep) => import_fs.default.existsSync(`${this.workspace.workspaceRoot}/libs/${dep}/public`));
|
|
650
|
+
await Promise.all(targetDeps.map((dep) => import_promises.default.mkdir(`${projectPublicLibPath}/${dep}`, { recursive: true })));
|
|
562
651
|
await Promise.all(
|
|
563
652
|
targetDeps.map(
|
|
564
|
-
(dep) =>
|
|
653
|
+
(dep) => import_promises.default.cp(`${this.workspace.workspaceRoot}/libs/${dep}/public`, `${projectPublicLibPath}/${dep}`, {
|
|
565
654
|
recursive: true
|
|
566
655
|
})
|
|
567
656
|
)
|
|
568
657
|
);
|
|
569
658
|
}
|
|
570
659
|
}
|
|
571
|
-
class DistAppExecutor extends Executor {
|
|
572
|
-
name;
|
|
573
|
-
constructor({ workspace, name }) {
|
|
574
|
-
super(`${name} Dist App Executor`, `${workspace.workspaceRoot}/dist/apps/${name}`);
|
|
575
|
-
this.name = name;
|
|
576
|
-
}
|
|
577
|
-
static from(executor, name) {
|
|
578
|
-
if (executor instanceof WorkspaceExecutor)
|
|
579
|
-
return new DistAppExecutor({ workspace: executor, name });
|
|
580
|
-
return new DistAppExecutor({ workspace: executor.workspace, name });
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
660
|
class LibExecutor extends SysExecutor {
|
|
584
661
|
workspaceRoot;
|
|
585
662
|
repoName;
|
|
663
|
+
dist;
|
|
586
664
|
constructor({ workspace, name }) {
|
|
587
665
|
super({ workspace, name, type: "lib" });
|
|
666
|
+
this.dist = new Executor(`${name} Dist Lib Executor`, `${this.workspace.workspaceRoot}/dist/libs/${name}`);
|
|
588
667
|
}
|
|
589
668
|
static from(executor, name) {
|
|
590
669
|
if (executor instanceof WorkspaceExecutor)
|
|
@@ -592,7 +671,7 @@ class LibExecutor extends SysExecutor {
|
|
|
592
671
|
return new LibExecutor({ workspace: executor.workspace, name });
|
|
593
672
|
}
|
|
594
673
|
async getConfig(command) {
|
|
595
|
-
return await getLibConfig(this.cwdPath, {
|
|
674
|
+
return await (0, import_config.getLibConfig)(this.cwdPath, {
|
|
596
675
|
...this.workspace.getBaseDevEnv(),
|
|
597
676
|
type: "lib",
|
|
598
677
|
name: this.name,
|
|
@@ -600,25 +679,15 @@ class LibExecutor extends SysExecutor {
|
|
|
600
679
|
});
|
|
601
680
|
}
|
|
602
681
|
}
|
|
603
|
-
class DistLibExecutor extends Executor {
|
|
604
|
-
name;
|
|
605
|
-
constructor({ workspace, name }) {
|
|
606
|
-
super(`${name} Dist Lib Executor`, `${workspace.workspaceRoot}/dist/libs/${name}`);
|
|
607
|
-
this.name = name;
|
|
608
|
-
}
|
|
609
|
-
static from(executor, name) {
|
|
610
|
-
if (executor instanceof WorkspaceExecutor)
|
|
611
|
-
return new DistAppExecutor({ workspace: executor, name });
|
|
612
|
-
return new DistLibExecutor({ workspace: executor.workspace, name });
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
682
|
class PkgExecutor extends Executor {
|
|
616
683
|
workspace;
|
|
617
684
|
name;
|
|
685
|
+
dist;
|
|
618
686
|
constructor({ workspace = WorkspaceExecutor.fromRoot(), name }) {
|
|
619
687
|
super(`${name} Pkg Executor`, `${workspace.workspaceRoot}/pkgs/${name}`);
|
|
620
688
|
this.workspace = workspace;
|
|
621
689
|
this.name = name;
|
|
690
|
+
this.dist = new Executor(`${name} Dist Pkg Executor`, `${this.workspace.workspaceRoot}/dist/pkgs/${name}`);
|
|
622
691
|
}
|
|
623
692
|
static from(executor, name) {
|
|
624
693
|
if (executor instanceof WorkspaceExecutor)
|
|
@@ -630,7 +699,7 @@ class PkgExecutor extends Executor {
|
|
|
630
699
|
tsconfig = this.getTsConfig(`${this.cwdPath}/tsconfig.json`)
|
|
631
700
|
} = {}) {
|
|
632
701
|
const rootPackageJson = this.readJson(`${this.workspace.workspaceRoot}/package.json`);
|
|
633
|
-
const scanner = new TypeScriptDependencyScanner(this.cwdPath);
|
|
702
|
+
const scanner = new import_dependencyScanner.TypeScriptDependencyScanner(this.cwdPath);
|
|
634
703
|
const npmSet = new Set(Object.keys({ ...rootPackageJson.dependencies, ...rootPackageJson.devDependencies }));
|
|
635
704
|
const pkgPathSet = new Set(
|
|
636
705
|
Object.keys(tsconfig.compilerOptions.paths).filter((path2) => tsconfig.compilerOptions.paths[path2].some((resolve) => resolve.startsWith("pkgs/"))).map((path2) => path2.replace("/*", ""))
|
|
@@ -648,32 +717,12 @@ class PkgExecutor extends Executor {
|
|
|
648
717
|
return pkgScanResult;
|
|
649
718
|
}
|
|
650
719
|
}
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
repoName;
|
|
654
|
-
name;
|
|
655
|
-
constructor({ workspaceRoot, repoName, name }) {
|
|
656
|
-
super(`${name} Dist Pkg Executor`, `${workspaceRoot}/dist/pkgs/${name}`);
|
|
657
|
-
this.workspaceRoot = workspaceRoot;
|
|
658
|
-
this.repoName = repoName;
|
|
659
|
-
this.name = name;
|
|
660
|
-
}
|
|
661
|
-
static from(workspaceExecutor, name) {
|
|
662
|
-
return new DistPkgExecutor({
|
|
663
|
-
workspaceRoot: workspaceExecutor.workspaceRoot,
|
|
664
|
-
repoName: workspaceExecutor.repoName,
|
|
665
|
-
name
|
|
666
|
-
});
|
|
667
|
-
}
|
|
668
|
-
}
|
|
669
|
-
export {
|
|
720
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
721
|
+
0 && (module.exports = {
|
|
670
722
|
AppExecutor,
|
|
671
|
-
DistAppExecutor,
|
|
672
|
-
DistLibExecutor,
|
|
673
|
-
DistPkgExecutor,
|
|
674
723
|
Executor,
|
|
675
724
|
LibExecutor,
|
|
676
725
|
PkgExecutor,
|
|
677
726
|
SysExecutor,
|
|
678
727
|
WorkspaceExecutor
|
|
679
|
-
};
|
|
728
|
+
});
|