@reliverse/dler 1.2.6 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -41
- package/bin/addons.d.ts +1 -0
- package/bin/addons.js +83 -0
- package/bin/app/agg/cmd.d.ts +35 -0
- package/bin/app/agg/cmd.js +49 -0
- package/bin/app/agg/impl.d.ts +36 -0
- package/bin/app/{tools → agg}/impl.js +1 -2
- package/bin/app/build/cmd.d.ts +7 -0
- package/bin/app/build/cmd.js +3 -1
- package/bin/app/cmds.d.ts +100 -0
- package/bin/app/cmds.js +11 -2
- package/bin/app/conv/cmd.d.ts +0 -0
- package/bin/app/deps/cmd.d.ts +28 -0
- package/bin/app/deps/cmd.js +62 -0
- package/bin/app/deps/impl/analyzer.d.ts +2 -0
- package/bin/app/deps/impl/analyzer.js +1 -1
- package/bin/app/deps/impl/filesystem.d.ts +4 -0
- package/bin/app/deps/impl/filesystem.js +2 -4
- package/bin/app/deps/impl/formatter.d.ts +2 -0
- package/bin/app/deps/impl/formatter.js +2 -2
- package/bin/app/deps/impl/parser.d.ts +5 -0
- package/bin/app/deps/impl/types.d.ts +21 -0
- package/bin/app/inject/README.md +3 -12
- package/bin/app/inject/cmd.d.ts +12 -0
- package/bin/app/inject/cmd.js +2 -2
- package/bin/app/inject/expect/cmd.d.ts +20 -0
- package/bin/app/inject/expect/impl.d.ts +5 -0
- package/bin/app/libs/cmd.d.ts +0 -0
- package/bin/app/merge/cmd.txt +1 -1
- package/bin/app/mono/cmd.d.ts +0 -0
- package/bin/app/pub/cmd.d.ts +7 -0
- package/bin/app/pub/cmd.js +3 -1
- package/bin/app/relifso/cmd.d.ts +12 -0
- package/bin/app/relifso/cmd.js +2 -2
- package/bin/app/relifso/init/cmd.d.ts +36 -0
- package/bin/app/relifso/init/impl/const.d.ts +34 -0
- package/bin/app/relifso/init/impl/const.js +1 -1
- package/bin/app/relifso/init/impl/mod.d.ts +17 -0
- package/bin/app/relifso/init/impl/templates/t-gitignore.d.ts +1 -0
- package/bin/app/relifso/init/impl/templates/t-license.d.ts +1 -0
- package/bin/app/relifso/init/impl/templates/t-readme.d.ts +1 -0
- package/bin/app/relifso/init/impl/types.d.ts +41 -0
- package/bin/app/relifso/init/impl/utils.d.ts +5 -0
- package/bin/app/relinka/cmd.d.ts +0 -0
- package/bin/app/rempts/init/cmd/cmd.d.ts +14 -0
- package/bin/app/rempts/init/cmd/cmd.js +3 -1
- package/bin/app/rempts/init/cmds/cmd.d.ts +19 -0
- package/bin/app/rempts/migrate/cmd.d.ts +14 -0
- package/bin/app/rempts/migrate/impl/commander.d.ts +4 -0
- package/bin/app/spell/cmd.d.ts +18 -0
- package/bin/app/spell/cmd.js +51 -0
- package/bin/app/split/cmd.d.ts +11 -0
- package/bin/app/split/impl.d.ts +25 -0
- package/bin/default.d.ts +5 -0
- package/bin/{libs/cfg/cfg-default.js → default.js} +6 -4
- package/bin/dler.d.ts +1 -0
- package/bin/dler.js +60 -0
- package/bin/impl.d.ts +10 -0
- package/bin/{cli.js → impl.js} +15 -27
- package/bin/info.d.ts +2 -0
- package/bin/info.js +21 -0
- package/bin/init.d.ts +1 -0
- package/bin/init.js +20 -27
- package/bin/libs/sdk/sdk-impl/build/build-library.d.ts +51 -0
- package/bin/libs/sdk/sdk-impl/build/build-library.js +45 -66
- package/bin/libs/sdk/sdk-impl/build/build-regular.d.ts +26 -0
- package/bin/libs/sdk/sdk-impl/build/build-regular.js +28 -18
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/auto.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/auto.js +8 -3
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/build.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/build.js +12 -7
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/copy/copy.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/copy/copy.js +2 -1
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/copy/types.d.ts +9 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist.js +22 -6
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/types.d.ts +15 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/build.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/build.js +2 -1
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/config.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/cjs.d.ts +4 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/esbuild.d.ts +13 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/json.d.ts +3 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/raw.d.ts +8 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/shebang.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/stub.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/types.d.ts +95 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/utils.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/watch.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/types.d.ts +176 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/untyped/index.d.ts +2 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/untyped/index.js +2 -2
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/untyped/types.d.ts +23 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/utils.d.ts +20 -0
- package/bin/libs/sdk/sdk-impl/build/bundlers/unified/validate.d.ts +4 -0
- package/bin/libs/sdk/sdk-impl/library-flow.d.ts +11 -0
- package/bin/libs/sdk/sdk-impl/library-flow.js +6 -1
- package/bin/libs/sdk/sdk-impl/pub/pub-library.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/pub/pub-library.js +6 -16
- package/bin/libs/sdk/sdk-impl/pub/pub-regular.d.ts +9 -0
- package/bin/libs/sdk/sdk-impl/pub/pub-regular.js +12 -10
- package/bin/libs/sdk/sdk-impl/regular-flow.d.ts +12 -0
- package/bin/libs/sdk/sdk-impl/regular-flow.js +45 -51
- package/bin/libs/sdk/sdk-impl/spell/spell-executors.d.ts +10 -0
- package/bin/libs/sdk/sdk-impl/spell/spell-filesystem.d.ts +7 -0
- package/bin/libs/sdk/sdk-impl/spell/spell-mod.d.ts +4 -0
- package/bin/libs/sdk/sdk-impl/spell/spell-parser.d.ts +4 -0
- package/bin/libs/sdk/sdk-impl/spell/spell-types.d.ts +34 -0
- package/bin/libs/sdk/sdk-impl/utils/tools/tools-agg.d.ts +14 -0
- package/bin/libs/sdk/sdk-impl/utils/tools/tools-agg.js +8 -6
- package/bin/libs/sdk/sdk-impl/utils/tools/tools-impl.d.ts +4 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-build.d.ts +28 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-build.js +3 -3
- package/bin/libs/sdk/sdk-impl/utils/utils-bump.d.ts +9 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-bump.js +5 -7
- package/bin/libs/sdk/sdk-impl/utils/utils-clean.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-consts.d.ts +9 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-cwd.d.ts +10 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-deps.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-determine.d.ts +12 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-error.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-fs.d.ts +24 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-fs.js +4 -1
- package/bin/libs/sdk/sdk-impl/utils/utils-info.d.ts +6 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-info.js +7 -14
- package/bin/libs/sdk/sdk-impl/utils/utils-jsr-json.d.ts +8 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-jsr-json.js +2 -4
- package/bin/libs/sdk/sdk-impl/utils/utils-paths.d.ts +55 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-paths.js +33 -24
- package/bin/libs/sdk/sdk-impl/utils/utils-perf.d.ts +9 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-pkg-json-libs.d.ts +5 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-pkg-json-reg.d.ts +8 -0
- package/bin/libs/sdk/sdk-impl/utils/utils-pkg-json-reg.js +36 -27
- package/bin/libs/sdk/sdk-impl/utils/utils-tsconfig.d.ts +4 -0
- package/bin/libs/sdk/sdk-mod.d.ts +56 -0
- package/bin/libs/sdk/sdk-mod.js +42 -9
- package/bin/libs/sdk/sdk-types.d.ts +469 -0
- package/bin/libs/sdk/sdk-types.js +0 -1
- package/bin/load.d.ts +6 -0
- package/bin/load.js +1 -1
- package/bin/mod.d.ts +48 -0
- package/bin/mod.js +4 -14
- package/bin/types.d.ts +469 -0
- package/package.json +5 -4
- package/bin/app/tools/cmd.js +0 -81
- package/bin/app/tools/tools.txt +0 -92
- package/bin/libs/cfg/cfg-mod.js +0 -4
- package/bin/libs/cfg/cfg-types.js +0 -1
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ ensure git, node.js, and bun/pnpm/yarn/npm are installed. then:
|
|
|
51
51
|
git clone https://github.com/reliverse/dler.git
|
|
52
52
|
cd dler
|
|
53
53
|
bun i
|
|
54
|
-
bun dev # bun src/
|
|
54
|
+
bun dev # bun src/dler.ts --dev
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
### installation
|
|
@@ -66,6 +66,14 @@ bun dev # bun src/mod.ts --dev
|
|
|
66
66
|
bun update --latest
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
+
**and/or install globally**:
|
|
70
|
+
|
|
71
|
+
```sh
|
|
72
|
+
bun add -g @reliverse/dler
|
|
73
|
+
# or update as needed:
|
|
74
|
+
bun i -g update --latest
|
|
75
|
+
```
|
|
76
|
+
|
|
69
77
|
2. **prepare your project**:
|
|
70
78
|
|
|
71
79
|
a. **configure `.gitignore`**:
|
|
@@ -75,19 +83,13 @@ bun dev # bun src/mod.ts --dev
|
|
|
75
83
|
echo "logs" >> .gitignore
|
|
76
84
|
```
|
|
77
85
|
|
|
78
|
-
b. **
|
|
79
|
-
|
|
80
|
-
```sh
|
|
81
|
-
bun add -d @reliverse/dler-cfg
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
c. **add `".config/**/*.ts"` to `include` in `tsconfig.json`**:
|
|
86
|
+
b. **add `".config/**/*.ts"` to `include` in `tsconfig.json`**:
|
|
85
87
|
|
|
86
88
|
```json
|
|
87
89
|
"include": [".config/**/*.ts", ...]
|
|
88
90
|
```
|
|
89
91
|
|
|
90
|
-
|
|
92
|
+
c. **package.json**:
|
|
91
93
|
|
|
92
94
|
```json
|
|
93
95
|
"scripts": {
|
|
@@ -96,7 +98,7 @@ bun dev # bun src/mod.ts --dev
|
|
|
96
98
|
}
|
|
97
99
|
```
|
|
98
100
|
|
|
99
|
-
|
|
101
|
+
d. **initialize config**:
|
|
100
102
|
|
|
101
103
|
```sh
|
|
102
104
|
bun [build|pub] # if installed as dev dep
|
|
@@ -114,18 +116,33 @@ bun dev # bun src/mod.ts --dev
|
|
|
114
116
|
dler [build|pub] # if installed globally
|
|
115
117
|
```
|
|
116
118
|
|
|
117
|
-
## 🔌
|
|
119
|
+
## 🔌 addons
|
|
118
120
|
|
|
119
|
-
dler ships with a flexible
|
|
121
|
+
dler ships with a flexible addon system (aka plugins) and **14 built-in addons** (from [@reliverse/addons](https://reliverse.org/addons)).
|
|
120
122
|
|
|
121
|
-
feel free to create your own
|
|
123
|
+
feel free to create your own addons. addons can be implemented as built-in directly in `src/app/<addon>/impl/*` and then imported from `src/app/<addon>/cmd.ts`; or implemented in your own library and then imported from `src/app/<addon>/cmd.ts`.
|
|
124
|
+
|
|
125
|
+
if you run just `dler` — it will display a list of addons which you can launch interactively.
|
|
122
126
|
|
|
123
127
|
### 1. `agg`
|
|
124
128
|
|
|
125
129
|
generates aggregator file with content like `import { getsomething } from "./utils.js"`.
|
|
126
130
|
|
|
127
131
|
```bash
|
|
128
|
-
|
|
132
|
+
# interactively:
|
|
133
|
+
dler > "agg"
|
|
134
|
+
# non-interactively:
|
|
135
|
+
dler agg --input <dir> --out <file> [options]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**usage example**: if you're exploring the example [playground](#playground), you can try the following:
|
|
139
|
+
|
|
140
|
+
1. open [src/libs/sdk/sdk-mod.ts](https://github.com/reliverse/dler/blob/main/src/libs/sdk/sdk-mod.ts) in your ide.
|
|
141
|
+
2. press `ctrl+a`, then `backspace`. run the command below and watch the magic happen:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
bun tools:agg # shortcut for:
|
|
145
|
+
bun src/dler.ts tools --dev --tool agg --input src/libs/sdk/sdk-impl --out src/libs/sdk/sdk-mod.ts --recursive --named --strip src/libs/sdk
|
|
129
146
|
```
|
|
130
147
|
|
|
131
148
|
### 2. `build`
|
|
@@ -196,7 +213,7 @@ not yet documented.
|
|
|
196
213
|
builds and publishes specific subdirectories of your main project as standalone packages.
|
|
197
214
|
|
|
198
215
|
**usage example**:
|
|
199
|
-
using
|
|
216
|
+
using `dler` to package [src/libs/sdk](https://github.com/reliverse/dler/tree/main/src/libs/sdk):
|
|
200
217
|
|
|
201
218
|
```ts
|
|
202
219
|
// .config/dler.ts
|
|
@@ -204,11 +221,11 @@ libsactmode: "main-and-libs",
|
|
|
204
221
|
libsdirdist: "dist-libs",
|
|
205
222
|
libsdirsrc: "src/libs",
|
|
206
223
|
libslist: {
|
|
207
|
-
"@reliverse/dler-
|
|
224
|
+
"@reliverse/dler-sdk": {
|
|
208
225
|
libdeclarations: true,
|
|
209
|
-
libdescription: "@reliverse/dler
|
|
210
|
-
libdirname: "
|
|
211
|
-
libmainfile: "
|
|
226
|
+
libdescription: "@reliverse/dler without cli",
|
|
227
|
+
libdirname: "sdk",
|
|
228
|
+
libmainfile: "sdk/sdk-mod.ts",
|
|
212
229
|
libpkgkeepdeps: false,
|
|
213
230
|
libtranspileminify: true,
|
|
214
231
|
},
|
|
@@ -326,28 +343,6 @@ await dler.spell({ spells: ["rename-file"], files: [] });
|
|
|
326
343
|
|
|
327
344
|
p.s. [see how rse cli uses hooked=true](https://github.com/reliverse/rse/blob/main/src/postbuild.ts)
|
|
328
345
|
|
|
329
|
-
### 14. `tools`
|
|
330
|
-
|
|
331
|
-
lets you run standalone dler features directly from the cli:
|
|
332
|
-
|
|
333
|
-
```bash
|
|
334
|
-
dler tools --tool <tool> --input <dir> --out <file> [options]
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**available tools**:
|
|
338
|
-
|
|
339
|
-
- `agg`: generates aggregator file with content like `export { getsomething } from "./utils.js"`. **note**: currently it replaces the file content, not appends.
|
|
340
|
-
|
|
341
|
-
**usage example**: if you're exploring the example [playground](#playground), you can try the following:
|
|
342
|
-
|
|
343
|
-
1. open [src/libs/sdk/sdk-mod.ts](https://github.com/reliverse/dler/blob/main/src/libs/sdk/sdk-mod.ts) in your ide.
|
|
344
|
-
2. press `ctrl+a`, then `backspace`. run the command below and watch the magic happen:
|
|
345
|
-
|
|
346
|
-
```bash
|
|
347
|
-
bun tools:agg # shortcut for:
|
|
348
|
-
bun src/mod.ts tools --dev --tool agg --input src/libs/sdk/sdk-impl --out src/libs/sdk/sdk-mod.ts --recursive --named --strip src/libs/sdk
|
|
349
|
-
```
|
|
350
|
-
|
|
351
346
|
## api (for advanced users)
|
|
352
347
|
|
|
353
348
|
the sdk lets you build custom dler cli plugins or even extend your own cli tools.
|
package/bin/addons.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function promptAggCommand(): Promise<void>;
|
package/bin/addons.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import {
|
|
2
|
+
selectPrompt,
|
|
3
|
+
runCmd,
|
|
4
|
+
confirmPrompt,
|
|
5
|
+
inputPrompt
|
|
6
|
+
} from "@reliverse/rempts";
|
|
7
|
+
import { existsSync } from "node:fs";
|
|
8
|
+
import { resolve } from "node:path";
|
|
9
|
+
import { cmdAgg } from "./app/cmds.js";
|
|
10
|
+
async function loadConfig() {
|
|
11
|
+
const configPath = resolve(".config/dler.ts");
|
|
12
|
+
if (!existsSync(configPath)) return null;
|
|
13
|
+
return (await import(configPath)).default;
|
|
14
|
+
}
|
|
15
|
+
export async function promptAggCommand() {
|
|
16
|
+
const config = await loadConfig();
|
|
17
|
+
let selectedLibName = null;
|
|
18
|
+
if (config?.libsList && Object.keys(config.libsList).length > 0) {
|
|
19
|
+
const libs = Object.entries(config.libsList).map(([name, lib]) => ({
|
|
20
|
+
value: name,
|
|
21
|
+
label: name,
|
|
22
|
+
hint: `${config.libsDirSrc}/${lib.libDirName}/${lib.libDirName}-impl`
|
|
23
|
+
}));
|
|
24
|
+
libs.push({ value: "", label: "Skip library selection", hint: "" });
|
|
25
|
+
selectedLibName = await selectPrompt({
|
|
26
|
+
title: "Select a library to aggregate or skip",
|
|
27
|
+
options: libs
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
let imports = false;
|
|
31
|
+
let input = "";
|
|
32
|
+
let named = true;
|
|
33
|
+
let out = "";
|
|
34
|
+
let recursive = true;
|
|
35
|
+
let strip = "";
|
|
36
|
+
if (selectedLibName && selectedLibName !== "") {
|
|
37
|
+
const libConfig = config?.libsList?.[selectedLibName];
|
|
38
|
+
if (config && libConfig) {
|
|
39
|
+
input = `${config.libsDirSrc}/${libConfig.libDirName}/${libConfig.libDirName}-impl`;
|
|
40
|
+
out = `${config.libsDirSrc}/${libConfig.libMainFile}`;
|
|
41
|
+
strip = `${config.libsDirSrc}/${libConfig.libDirName}`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (!selectedLibName || !input) {
|
|
45
|
+
input = await inputPrompt({
|
|
46
|
+
title: "Enter the input directory",
|
|
47
|
+
defaultValue: input
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
imports = await confirmPrompt({
|
|
51
|
+
title: "Do you want to generate imports instead of exports?",
|
|
52
|
+
content: "(N generates exports)",
|
|
53
|
+
defaultValue: imports
|
|
54
|
+
});
|
|
55
|
+
named = await confirmPrompt({
|
|
56
|
+
title: imports ? "Do you want to generate named imports?" : "Do you want to generate named exports?",
|
|
57
|
+
defaultValue: named
|
|
58
|
+
});
|
|
59
|
+
if (!selectedLibName || !out) {
|
|
60
|
+
out = await inputPrompt({
|
|
61
|
+
title: "Enter the output file",
|
|
62
|
+
defaultValue: out
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
recursive = await confirmPrompt({
|
|
66
|
+
title: "Do you want to recursively scan subdirectories?",
|
|
67
|
+
defaultValue: recursive
|
|
68
|
+
});
|
|
69
|
+
if (!selectedLibName || !strip) {
|
|
70
|
+
strip = await inputPrompt({
|
|
71
|
+
title: "Enter the path to strip from the final imports/exports",
|
|
72
|
+
defaultValue: strip
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
await runCmd(await cmdAgg(), [
|
|
76
|
+
`--imports=${imports}`,
|
|
77
|
+
`--input=${input}`,
|
|
78
|
+
`--named=${named}`,
|
|
79
|
+
`--out=${out}`,
|
|
80
|
+
`--recursive=${recursive}`,
|
|
81
|
+
`--strip=${strip}`
|
|
82
|
+
]);
|
|
83
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare const _default: import("@reliverse/rempts").Command<{
|
|
2
|
+
dev: {
|
|
3
|
+
description: string;
|
|
4
|
+
type: "boolean";
|
|
5
|
+
};
|
|
6
|
+
imports: {
|
|
7
|
+
description: string;
|
|
8
|
+
type: "boolean";
|
|
9
|
+
};
|
|
10
|
+
input: {
|
|
11
|
+
description: string;
|
|
12
|
+
type: "string";
|
|
13
|
+
required: true;
|
|
14
|
+
};
|
|
15
|
+
named: {
|
|
16
|
+
description: string;
|
|
17
|
+
type: "boolean";
|
|
18
|
+
default: true;
|
|
19
|
+
};
|
|
20
|
+
out: {
|
|
21
|
+
description: string;
|
|
22
|
+
type: "string";
|
|
23
|
+
required: true;
|
|
24
|
+
};
|
|
25
|
+
recursive: {
|
|
26
|
+
description: string;
|
|
27
|
+
type: "boolean";
|
|
28
|
+
default: true;
|
|
29
|
+
};
|
|
30
|
+
strip: {
|
|
31
|
+
description: string;
|
|
32
|
+
type: "string";
|
|
33
|
+
};
|
|
34
|
+
}>;
|
|
35
|
+
export default _default;
|
package/bin/app/agg/cmd.js
CHANGED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { defineArgs, defineCommand } from "@reliverse/rempts";
|
|
2
|
+
import path from "pathe";
|
|
3
|
+
import { useAggregator } from "./impl.js";
|
|
4
|
+
export default defineCommand({
|
|
5
|
+
args: defineArgs({
|
|
6
|
+
dev: {
|
|
7
|
+
description: "Run in development mode",
|
|
8
|
+
type: "boolean"
|
|
9
|
+
},
|
|
10
|
+
imports: {
|
|
11
|
+
description: "If true, produce import lines instead of export lines",
|
|
12
|
+
type: "boolean"
|
|
13
|
+
},
|
|
14
|
+
input: {
|
|
15
|
+
description: "Directory containing .ts/.js files (--input <directory>)",
|
|
16
|
+
type: "string",
|
|
17
|
+
required: true
|
|
18
|
+
},
|
|
19
|
+
named: {
|
|
20
|
+
description: "Parse each file for named exports (function/class/const/let)",
|
|
21
|
+
type: "boolean",
|
|
22
|
+
default: true
|
|
23
|
+
},
|
|
24
|
+
out: {
|
|
25
|
+
description: "Output aggregator file path (--out <fileName>)",
|
|
26
|
+
type: "string",
|
|
27
|
+
required: true
|
|
28
|
+
},
|
|
29
|
+
recursive: {
|
|
30
|
+
description: "Recursively scan subdirectories (default false)",
|
|
31
|
+
type: "boolean",
|
|
32
|
+
default: true
|
|
33
|
+
},
|
|
34
|
+
strip: {
|
|
35
|
+
description: "Remove specified path prefix from final imports/exports",
|
|
36
|
+
type: "string"
|
|
37
|
+
}
|
|
38
|
+
}),
|
|
39
|
+
async run({ args }) {
|
|
40
|
+
await useAggregator({
|
|
41
|
+
inputDir: path.resolve(args.input),
|
|
42
|
+
isRecursive: !!args.recursive,
|
|
43
|
+
outFile: path.resolve(args.out),
|
|
44
|
+
stripPrefix: args.strip ? path.resolve(args.strip) : "",
|
|
45
|
+
useImport: !!args.imports,
|
|
46
|
+
useNamed: !!args.named
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Aggregator supporting:
|
|
3
|
+
* - --import or default export,
|
|
4
|
+
* - star or named exports,
|
|
5
|
+
* - separate "type" vs "value" for both import and export.
|
|
6
|
+
*
|
|
7
|
+
* Options:
|
|
8
|
+
* - Option to ignore specific directories (default: node_modules, .git)
|
|
9
|
+
* - Option to sort aggregated lines alphabetically.
|
|
10
|
+
* - Option to add a header comment in the aggregator output.
|
|
11
|
+
* - Option to enable verbose logging.
|
|
12
|
+
* - Deduplicates overloaded export names.
|
|
13
|
+
* - Skips files whose basenames start with an internal marker (default: "#")
|
|
14
|
+
* unless includeInternal is true or an alternative marker is provided.
|
|
15
|
+
* - By default, updates only the auto-generated block in the aggregator file,
|
|
16
|
+
* leaving any other content intact. Pass `overrideFile: true` to rewrite the entire file.
|
|
17
|
+
*/
|
|
18
|
+
export declare function useAggregator({ inputDir, isRecursive, outFile, stripPrefix, useImport, useNamed, ignoreDirs, sortLines, headerComment, verbose, includeInternal, internalMarker, overrideFile, }: {
|
|
19
|
+
inputDir: string;
|
|
20
|
+
isRecursive: boolean;
|
|
21
|
+
outFile: string;
|
|
22
|
+
stripPrefix: string;
|
|
23
|
+
useImport: boolean;
|
|
24
|
+
useNamed: boolean;
|
|
25
|
+
ignoreDirs?: string[];
|
|
26
|
+
sortLines?: boolean;
|
|
27
|
+
headerComment?: string;
|
|
28
|
+
verbose?: boolean;
|
|
29
|
+
includeInternal?: boolean;
|
|
30
|
+
internalMarker?: string;
|
|
31
|
+
overrideFile?: boolean;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Prints usage examples based on whether dev mode or not.
|
|
35
|
+
*/
|
|
36
|
+
export declare function printUsage(isDev?: boolean): void;
|
|
@@ -124,8 +124,7 @@ ${aggregatorBlock}`;
|
|
|
124
124
|
await fs.writeFile(outFile, finalText, "utf8");
|
|
125
125
|
relinka(
|
|
126
126
|
"success",
|
|
127
|
-
`Aggregator done: processed ${allLines.length} lines in:
|
|
128
|
-
${outFile}`
|
|
127
|
+
`Aggregator done: processed ${allLines.length} lines in: ${outFile}`
|
|
129
128
|
);
|
|
130
129
|
} catch (error) {
|
|
131
130
|
relinka("error", `Aggregator failed: ${error}`);
|
package/bin/app/build/cmd.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { defineArgs, defineCommand } from "@reliverse/rempts";
|
|
2
|
-
import { dlerBuild } from "../../
|
|
2
|
+
import { dlerBuild } from "../../impl.js";
|
|
3
|
+
import { ensureDlerConfig } from "../../init.js";
|
|
3
4
|
export default defineCommand({
|
|
4
5
|
meta: {
|
|
5
6
|
name: "build",
|
|
@@ -12,6 +13,7 @@ export default defineCommand({
|
|
|
12
13
|
}
|
|
13
14
|
}),
|
|
14
15
|
async run({ args }) {
|
|
16
|
+
await ensureDlerConfig(args.dev);
|
|
15
17
|
await dlerBuild(args.dev);
|
|
16
18
|
}
|
|
17
19
|
});
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
export declare function cmdRelifsoInit(): Promise<import("@reliverse/rempts").Command<{
|
|
2
|
+
dev: {
|
|
3
|
+
type: "boolean";
|
|
4
|
+
description: string;
|
|
5
|
+
};
|
|
6
|
+
fileType: {
|
|
7
|
+
type: "string";
|
|
8
|
+
description: string;
|
|
9
|
+
required: false;
|
|
10
|
+
};
|
|
11
|
+
destDir: {
|
|
12
|
+
type: "string";
|
|
13
|
+
description: string;
|
|
14
|
+
default: string;
|
|
15
|
+
required: false;
|
|
16
|
+
};
|
|
17
|
+
multiple: {
|
|
18
|
+
type: "boolean";
|
|
19
|
+
description: string;
|
|
20
|
+
required: false;
|
|
21
|
+
default: false;
|
|
22
|
+
};
|
|
23
|
+
parallel: {
|
|
24
|
+
type: "boolean";
|
|
25
|
+
description: string;
|
|
26
|
+
required: false;
|
|
27
|
+
default: false;
|
|
28
|
+
};
|
|
29
|
+
concurrency: {
|
|
30
|
+
type: "string";
|
|
31
|
+
description: string;
|
|
32
|
+
required: false;
|
|
33
|
+
default: string;
|
|
34
|
+
};
|
|
35
|
+
}>>;
|
|
36
|
+
export declare function cmdInjectExpect(): Promise<import("@reliverse/rempts").Command<{
|
|
37
|
+
dev: {
|
|
38
|
+
type: "boolean";
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
files: {
|
|
42
|
+
type: "positional";
|
|
43
|
+
description: string;
|
|
44
|
+
default: string;
|
|
45
|
+
};
|
|
46
|
+
comment: {
|
|
47
|
+
type: "string";
|
|
48
|
+
description: string;
|
|
49
|
+
};
|
|
50
|
+
tscPaths: {
|
|
51
|
+
type: "string";
|
|
52
|
+
description: string;
|
|
53
|
+
};
|
|
54
|
+
}>>;
|
|
55
|
+
export declare function cmdAgg(): Promise<import("@reliverse/rempts").Command<{
|
|
56
|
+
dev: {
|
|
57
|
+
description: string;
|
|
58
|
+
type: "boolean";
|
|
59
|
+
};
|
|
60
|
+
imports: {
|
|
61
|
+
description: string;
|
|
62
|
+
type: "boolean";
|
|
63
|
+
};
|
|
64
|
+
input: {
|
|
65
|
+
description: string;
|
|
66
|
+
type: "string";
|
|
67
|
+
required: true;
|
|
68
|
+
};
|
|
69
|
+
named: {
|
|
70
|
+
description: string;
|
|
71
|
+
type: "boolean";
|
|
72
|
+
default: true;
|
|
73
|
+
};
|
|
74
|
+
out: {
|
|
75
|
+
description: string;
|
|
76
|
+
type: "string";
|
|
77
|
+
required: true;
|
|
78
|
+
};
|
|
79
|
+
recursive: {
|
|
80
|
+
description: string;
|
|
81
|
+
type: "boolean";
|
|
82
|
+
default: true;
|
|
83
|
+
};
|
|
84
|
+
strip: {
|
|
85
|
+
description: string;
|
|
86
|
+
type: "string";
|
|
87
|
+
};
|
|
88
|
+
}>>;
|
|
89
|
+
export declare function cmdBuild(): Promise<import("@reliverse/rempts").Command<{
|
|
90
|
+
dev: {
|
|
91
|
+
type: "boolean";
|
|
92
|
+
description: string;
|
|
93
|
+
};
|
|
94
|
+
}>>;
|
|
95
|
+
export declare function cmdPub(): Promise<import("@reliverse/rempts").Command<{
|
|
96
|
+
dev: {
|
|
97
|
+
type: "boolean";
|
|
98
|
+
description: string;
|
|
99
|
+
};
|
|
100
|
+
}>>;
|
package/bin/app/cmds.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
export async function
|
|
1
|
+
export async function cmdRelifsoInit() {
|
|
2
2
|
return (await import("./relifso/init/cmd.js")).default;
|
|
3
3
|
}
|
|
4
|
-
export async function
|
|
4
|
+
export async function cmdInjectExpect() {
|
|
5
5
|
return (await import("./inject/expect/cmd.js")).default;
|
|
6
6
|
}
|
|
7
|
+
export async function cmdAgg() {
|
|
8
|
+
return (await import("./agg/cmd.js")).default;
|
|
9
|
+
}
|
|
10
|
+
export async function cmdBuild() {
|
|
11
|
+
return (await import("./build/cmd.js")).default;
|
|
12
|
+
}
|
|
13
|
+
export async function cmdPub() {
|
|
14
|
+
return (await import("./pub/cmd.js")).default;
|
|
15
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
declare const _default: import("@reliverse/rempts").Command<{
|
|
2
|
+
directory: {
|
|
3
|
+
type: "string";
|
|
4
|
+
description: string;
|
|
5
|
+
default: string;
|
|
6
|
+
};
|
|
7
|
+
all: {
|
|
8
|
+
type: "boolean";
|
|
9
|
+
description: string;
|
|
10
|
+
default: false;
|
|
11
|
+
};
|
|
12
|
+
ignore: {
|
|
13
|
+
type: "string";
|
|
14
|
+
description: string;
|
|
15
|
+
default: string;
|
|
16
|
+
};
|
|
17
|
+
json: {
|
|
18
|
+
type: "boolean";
|
|
19
|
+
description: string;
|
|
20
|
+
default: false;
|
|
21
|
+
};
|
|
22
|
+
builtins: {
|
|
23
|
+
type: "boolean";
|
|
24
|
+
description: string;
|
|
25
|
+
default: false;
|
|
26
|
+
};
|
|
27
|
+
}>;
|
|
28
|
+
export default _default;
|
package/bin/app/deps/cmd.js
CHANGED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { re } from "@reliverse/relico";
|
|
2
|
+
import { defineArgs, defineCommand } from "@reliverse/rempts";
|
|
3
|
+
import path from "pathe";
|
|
4
|
+
import { analyzeDependencies } from "./impl/analyzer.js";
|
|
5
|
+
import { formatOutput } from "./impl/formatter.js";
|
|
6
|
+
export default defineCommand({
|
|
7
|
+
meta: {
|
|
8
|
+
name: "deps",
|
|
9
|
+
version: "1.0.0",
|
|
10
|
+
description: "Find dependencies used but not listed in package.json"
|
|
11
|
+
},
|
|
12
|
+
args: defineArgs({
|
|
13
|
+
directory: {
|
|
14
|
+
type: "string",
|
|
15
|
+
description: "directory to scan (defaults to current directory)",
|
|
16
|
+
default: "."
|
|
17
|
+
},
|
|
18
|
+
all: {
|
|
19
|
+
type: "boolean",
|
|
20
|
+
description: "show all dependencies (both listed and not listed)",
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
ignore: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "comma-separated patterns to ignore",
|
|
26
|
+
default: ""
|
|
27
|
+
},
|
|
28
|
+
json: {
|
|
29
|
+
type: "boolean",
|
|
30
|
+
description: "output in JSON format",
|
|
31
|
+
default: false
|
|
32
|
+
},
|
|
33
|
+
builtins: {
|
|
34
|
+
type: "boolean",
|
|
35
|
+
description: "include Node.js built-in modules in the output",
|
|
36
|
+
default: false
|
|
37
|
+
}
|
|
38
|
+
}),
|
|
39
|
+
async run({ args }) {
|
|
40
|
+
try {
|
|
41
|
+
const directory = path.resolve(args.directory);
|
|
42
|
+
const ignorePatterns = args.ignore ? args.ignore.split(",") : [];
|
|
43
|
+
const options = {
|
|
44
|
+
directory,
|
|
45
|
+
showAll: args.all,
|
|
46
|
+
ignorePatterns,
|
|
47
|
+
json: args.json,
|
|
48
|
+
builtins: args.builtins
|
|
49
|
+
};
|
|
50
|
+
console.log(re.gray(`Scanning directory: ${directory}`));
|
|
51
|
+
const result = await analyzeDependencies(options);
|
|
52
|
+
const output = formatOutput(result, options);
|
|
53
|
+
console.log(output);
|
|
54
|
+
if (result.missingDependencies.length > 0) {
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
} catch (error) {
|
|
58
|
+
console.error("Error:", error);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
@@ -25,7 +25,7 @@ export const analyzeDependencies = async (options) => {
|
|
|
25
25
|
for (const dependency of allDependencies) {
|
|
26
26
|
if (!listedDependencies.has(dependency)) {
|
|
27
27
|
if (builtinModules.has(dependency)) {
|
|
28
|
-
if (options.
|
|
28
|
+
if (options.builtins) {
|
|
29
29
|
builtinModulesList.push(dependency);
|
|
30
30
|
}
|
|
31
31
|
} else {
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PackageJson } from "./types.js";
|
|
2
|
+
export declare const findSourceFiles: (directory: string, ignorePatterns: string[]) => Promise<string[]>;
|
|
3
|
+
export declare const readFile: (filePath: string) => Promise<string>;
|
|
4
|
+
export declare const readPackageJson: (directory: string) => Promise<PackageJson>;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
1
2
|
import { glob } from "glob";
|
|
2
|
-
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
|
-
import util from "node:util";
|
|
5
|
-
const readFileAsync = util.promisify(fs.readFile);
|
|
6
4
|
export const findSourceFiles = async (directory, ignorePatterns) => {
|
|
7
5
|
const pattern = `${directory}/**/*.{js,jsx,ts,tsx}`;
|
|
8
6
|
const defaultIgnores = [
|
|
@@ -24,7 +22,7 @@ export const findSourceFiles = async (directory, ignorePatterns) => {
|
|
|
24
22
|
};
|
|
25
23
|
export const readFile = async (filePath) => {
|
|
26
24
|
try {
|
|
27
|
-
return await
|
|
25
|
+
return await fs.readFile(filePath, "utf8");
|
|
28
26
|
} catch (error) {
|
|
29
27
|
console.error(`Error reading file ${filePath}:`, error);
|
|
30
28
|
return "";
|
|
@@ -13,7 +13,7 @@ export const formatOutput = (result, options) => {
|
|
|
13
13
|
`;
|
|
14
14
|
output += `${chalk.gray("\u2022 ")}Missing from package.json: ${result.missingDependencies.length}
|
|
15
15
|
`;
|
|
16
|
-
if (options.
|
|
16
|
+
if (options.builtins) {
|
|
17
17
|
output += `${chalk.gray("\u2022 ")}Node.js built-in modules: ${result.builtinModules.length}
|
|
18
18
|
`;
|
|
19
19
|
}
|
|
@@ -34,7 +34,7 @@ export const formatOutput = (result, options) => {
|
|
|
34
34
|
} else {
|
|
35
35
|
output += chalk.bold.green("No missing dependencies found! \u{1F389}\n\n");
|
|
36
36
|
}
|
|
37
|
-
if (options.
|
|
37
|
+
if (options.builtins && result.builtinModules.length > 0) {
|
|
38
38
|
output += chalk.bold.blue("Node.js Built-in Modules Used:\n");
|
|
39
39
|
for (const dep of result.builtinModules) {
|
|
40
40
|
output += `${chalk.gray("\u2022 ")}${chalk.blue(dep)}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { PackageJson } from "./types.js";
|
|
2
|
+
export declare const extractPackageNames: (fileContent: string) => Set<string>;
|
|
3
|
+
export declare const normalizePackageName: (importPath: string) => string | null;
|
|
4
|
+
export declare const getListedDependencies: (packageJson: PackageJson) => Set<string>;
|
|
5
|
+
export declare const getBuiltinModules: () => Set<string>;
|