jetup 0.0.1
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/LICENSE +21 -0
- package/README.md +54 -0
- package/config/config.json +55 -0
- package/dist/app.d.ts +21 -0
- package/dist/app.js +116 -0
- package/dist/app.js.map +1 -0
- package/dist/framework/base/base.d.ts +16 -0
- package/dist/framework/base/base.js +72 -0
- package/dist/framework/base/base.js.map +1 -0
- package/dist/framework/base/index.d.ts +3 -0
- package/dist/framework/base/index.js +7 -0
- package/dist/framework/base/index.js.map +1 -0
- package/dist/framework/base/named.d.ts +6 -0
- package/dist/framework/base/named.js +16 -0
- package/dist/framework/base/named.js.map +1 -0
- package/dist/framework/base/registry.d.ts +12 -0
- package/dist/framework/base/registry.js +36 -0
- package/dist/framework/base/registry.js.map +1 -0
- package/dist/framework/config/config.d.ts +2 -0
- package/dist/framework/config/config.js +19 -0
- package/dist/framework/config/config.js.map +1 -0
- package/dist/framework/config/default.json +5 -0
- package/dist/framework/config/index.d.ts +8 -0
- package/dist/framework/config/index.js +29 -0
- package/dist/framework/config/index.js.map +1 -0
- package/dist/framework/index.d.ts +3 -0
- package/dist/framework/index.js +7 -0
- package/dist/framework/index.js.map +1 -0
- package/dist/framework/logger/index.d.ts +27 -0
- package/dist/framework/logger/index.js +80 -0
- package/dist/framework/logger/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/eslint/index.d.ts +5 -0
- package/dist/modules/eslint/index.js +18 -0
- package/dist/modules/eslint/index.js.map +1 -0
- package/dist/modules/husky/index.d.ts +6 -0
- package/dist/modules/husky/index.js +27 -0
- package/dist/modules/husky/index.js.map +1 -0
- package/dist/modules/husky/pre-commit +1 -0
- package/dist/modules/index.d.ts +9 -0
- package/dist/modules/index.js +13 -0
- package/dist/modules/index.js.map +1 -0
- package/dist/modules/jest/_setup.js +5 -0
- package/dist/modules/jest/index.d.ts +6 -0
- package/dist/modules/jest/index.js +37 -0
- package/dist/modules/jest/index.js.map +1 -0
- package/dist/modules/jest/jest.config.js +40 -0
- package/dist/modules/lint-staged/.lintstagedrc.json +5 -0
- package/dist/modules/lint-staged/index.d.ts +6 -0
- package/dist/modules/lint-staged/index.js +23 -0
- package/dist/modules/lint-staged/index.js.map +1 -0
- package/dist/modules/package/index.d.ts +6 -0
- package/dist/modules/package/index.js +19 -0
- package/dist/modules/package/index.js.map +1 -0
- package/dist/modules/package/package.json +17 -0
- package/dist/modules/prettier/.prettierignore +37 -0
- package/dist/modules/prettier/.prettierrc +7 -0
- package/dist/modules/prettier/index.d.ts +6 -0
- package/dist/modules/prettier/index.js +30 -0
- package/dist/modules/prettier/index.js.map +1 -0
- package/dist/modules/project/index.d.ts +5 -0
- package/dist/modules/project/index.js +23 -0
- package/dist/modules/project/index.js.map +1 -0
- package/dist/modules/src/index.d.ts +6 -0
- package/dist/modules/src/index.js +23 -0
- package/dist/modules/src/index.js.map +1 -0
- package/dist/modules/typescript/index.d.ts +5 -0
- package/dist/modules/typescript/index.js +22 -0
- package/dist/modules/typescript/index.js.map +1 -0
- package/dist/modules/typescript/tsconfig.json +26 -0
- package/dist/presets/base.d.ts +5 -0
- package/dist/presets/base.js +14 -0
- package/dist/presets/base.js.map +1 -0
- package/dist/presets/index.d.ts +1 -0
- package/dist/presets/index.js +5 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/ts.d.ts +5 -0
- package/dist/presets/ts.js +23 -0
- package/dist/presets/ts.js.map +1 -0
- package/dist/types/config.d.ts +4 -0
- package/dist/types/config.js +3 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cmd.d.ts +3 -0
- package/dist/utils/cmd.js +110 -0
- package/dist/utils/cmd.js.map +1 -0
- package/dist/utils/cwd.d.ts +4 -0
- package/dist/utils/cwd.js +11 -0
- package/dist/utils/cwd.js.map +1 -0
- package/dist/utils/files.d.ts +9 -0
- package/dist/utils/files.js +83 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.js +43 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/package.d.ts +2 -0
- package/dist/utils/package.js +18 -0
- package/dist/utils/package.js.map +1 -0
- package/lib/clean.js +12 -0
- package/lib/post-build.js +59 -0
- package/package.json +86 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Aldo Suhartono Putra
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+

|
|
2
|
+
|
|
3
|
+
# Jetup
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
[](https://opensource.org/license/mit)
|
|
7
|
+
|
|
8
|
+
Jetup: JavaScript Project Setup! Jetting-up your next JS project in seconds with one command, using fully modular, customizable presets, instantly ready to code!
|
|
9
|
+
|
|
10
|
+
### Usage
|
|
11
|
+
|
|
12
|
+
Scaffold a new project in the current directory using the default preset:
|
|
13
|
+
|
|
14
|
+
```sh
|
|
15
|
+
npx jetup
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Scaffold a new project `my-app` with preset `ts`:
|
|
19
|
+
|
|
20
|
+
```sh
|
|
21
|
+
npx jetup my-app ts
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Use a custom config file:
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
npx jetup -c ./myconfig.json
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
All available arguments and options:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
jetup [options] [location] [preset]
|
|
34
|
+
|
|
35
|
+
Arguments:
|
|
36
|
+
location Project location (default: current directory) (default: ".")
|
|
37
|
+
preset Jetup preset to use (default: "ts") (default: "ts")
|
|
38
|
+
|
|
39
|
+
Options:
|
|
40
|
+
-V, --version output the version number
|
|
41
|
+
--preset <presetName> Override preset to use
|
|
42
|
+
-c, --config <path> Path to config file (env: JETUP_CONFIG)
|
|
43
|
+
-h, --help display help for command
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## License
|
|
47
|
+
|
|
48
|
+
MIT
|
|
49
|
+
|
|
50
|
+
## Links
|
|
51
|
+
|
|
52
|
+
- [GitHub Repository](https://github.com/aldhosutra/jetup)
|
|
53
|
+
- [Documentation](https://jetup.js.org)
|
|
54
|
+
- [Report Issues](https://github.com/aldhosutra/jetup/issues)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"esLint": {
|
|
3
|
+
"installedIfDepsExists": ["@eslint/js", "eslint", "typescript-eslint"],
|
|
4
|
+
"installedIfFilesOrFoldersExists": ["eslint.config.mjs"]
|
|
5
|
+
},
|
|
6
|
+
"husky": {
|
|
7
|
+
"installedIfDepsExists": ["husky"],
|
|
8
|
+
"installedIfFilesOrFoldersExists": [".husky"]
|
|
9
|
+
},
|
|
10
|
+
"jest": {
|
|
11
|
+
"installedIfDepsExists": ["@types/jest", "jest", "jest-extended", "jest-junit", "ts-jest"],
|
|
12
|
+
"installedIfFilesOrFoldersExists": [
|
|
13
|
+
"test",
|
|
14
|
+
"test/_setup.js",
|
|
15
|
+
"test/unit/index.spec.ts",
|
|
16
|
+
"jest.config.js"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"lintStaged": {
|
|
20
|
+
"installedIfDepsExists": ["lint-staged"],
|
|
21
|
+
"installedIfFilesOrFoldersExists": [".lintstagedrc.json"]
|
|
22
|
+
},
|
|
23
|
+
"package": {
|
|
24
|
+
"installedIfDepsExists": [
|
|
25
|
+
"@types/jest",
|
|
26
|
+
"husky",
|
|
27
|
+
"jest",
|
|
28
|
+
"jest-extended",
|
|
29
|
+
"jest-junit",
|
|
30
|
+
"lint-staged@15.5.2",
|
|
31
|
+
"prettier",
|
|
32
|
+
"ts-jest",
|
|
33
|
+
"tslib",
|
|
34
|
+
"typescript",
|
|
35
|
+
"typescript-eslint"
|
|
36
|
+
],
|
|
37
|
+
"installedIfFilesOrFoldersExists": []
|
|
38
|
+
},
|
|
39
|
+
"prettier": {
|
|
40
|
+
"installedIfDepsExists": ["prettier"],
|
|
41
|
+
"installedIfFilesOrFoldersExists": [".prettierignore", ".prettierrc"]
|
|
42
|
+
},
|
|
43
|
+
"project": {
|
|
44
|
+
"installedIfDepsExists": [],
|
|
45
|
+
"installedIfFilesOrFoldersExists": ["package.json"]
|
|
46
|
+
},
|
|
47
|
+
"src": {
|
|
48
|
+
"installedIfDepsExists": [],
|
|
49
|
+
"installedIfFilesOrFoldersExists": ["src/index.ts"]
|
|
50
|
+
},
|
|
51
|
+
"typescript": {
|
|
52
|
+
"installedIfDepsExists": ["typescript", "typescript-eslint"],
|
|
53
|
+
"installedIfFilesOrFoldersExists": ["tsconfig.json"]
|
|
54
|
+
}
|
|
55
|
+
}
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Command, OptionValues } from 'commander';
|
|
2
|
+
import { ConfigModule, LoggerModule, ModuleRegistry } from './framework';
|
|
3
|
+
import { TsPresets } from './presets';
|
|
4
|
+
import { BasePresets } from './presets/base';
|
|
5
|
+
export declare class JetupApp {
|
|
6
|
+
protected _moduleRegistry: ModuleRegistry;
|
|
7
|
+
protected _configModule: ConfigModule;
|
|
8
|
+
protected _logger: LoggerModule;
|
|
9
|
+
protected _program: Command;
|
|
10
|
+
protected _options: OptionValues;
|
|
11
|
+
protected _footer: string;
|
|
12
|
+
protected _presets: TsPresets[];
|
|
13
|
+
protected _selectedPreset: BasePresets;
|
|
14
|
+
init(): Promise<void>;
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
private _parseArgument;
|
|
17
|
+
private _parsePreset;
|
|
18
|
+
private _parseLocation;
|
|
19
|
+
private _runHandler;
|
|
20
|
+
private _printFooter;
|
|
21
|
+
}
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JetupApp = void 0;
|
|
4
|
+
const figlet = require("figlet");
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const commander_1 = require("commander");
|
|
7
|
+
const framework_1 = require("./framework");
|
|
8
|
+
const presets_1 = require("./presets");
|
|
9
|
+
const packageJson = require("../package.json");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const cwd_1 = require("./utils/cwd");
|
|
12
|
+
class JetupApp {
|
|
13
|
+
constructor() {
|
|
14
|
+
this._moduleRegistry = new framework_1.ModuleRegistry();
|
|
15
|
+
this._configModule = new framework_1.ConfigModule();
|
|
16
|
+
this._logger = new framework_1.LoggerModule();
|
|
17
|
+
this._program = new commander_1.Command();
|
|
18
|
+
this._footer = `\nPlease give Jetup a star, and visit our website!:\n ${packageJson.repository.url.replace('.git', '').replace('git+', '')}\n ${packageJson.homepage}`;
|
|
19
|
+
this._presets = [new presets_1.TsPresets()];
|
|
20
|
+
}
|
|
21
|
+
async init() {
|
|
22
|
+
this._program
|
|
23
|
+
.name(packageJson.name.charAt(0).toUpperCase() + packageJson.name.substring(1))
|
|
24
|
+
.description(packageJson.description)
|
|
25
|
+
.version(packageJson.version);
|
|
26
|
+
this._program
|
|
27
|
+
.addArgument(new commander_1.Argument('[location]', 'Project location (default: current directory)').default('.'))
|
|
28
|
+
.addArgument(new commander_1.Argument('[preset]', 'Jetup preset to use (default: "ts")').default('ts'))
|
|
29
|
+
.addOption(new commander_1.Option('--preset <presetName>', 'Override preset to use'))
|
|
30
|
+
.addOption(new commander_1.Option('-c, --config <path>', 'Path to config file').env('JETUP_CONFIG'))
|
|
31
|
+
.action(this._parseArgument.bind(this));
|
|
32
|
+
this._program.addHelpText('after', `
|
|
33
|
+
Example call:
|
|
34
|
+
$ npx jetup`);
|
|
35
|
+
this._program.addHelpText('afterAll', this._footer);
|
|
36
|
+
try {
|
|
37
|
+
this._program.parse(process.argv);
|
|
38
|
+
this._options = this._program.opts();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
this._logger.start('');
|
|
42
|
+
this._logger.error(`Failed to parse CLI input: ${err.message}`);
|
|
43
|
+
process.exitCode = 1;
|
|
44
|
+
process.exit();
|
|
45
|
+
}
|
|
46
|
+
this._configModule.setRegistry(this._moduleRegistry);
|
|
47
|
+
this._logger.setRegistry(this._moduleRegistry);
|
|
48
|
+
}
|
|
49
|
+
async run() {
|
|
50
|
+
console.log(figlet.textSync('jetup'));
|
|
51
|
+
console.log();
|
|
52
|
+
try {
|
|
53
|
+
await this._runHandler();
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
this._logger.error(`An error occurred: ${err.message}`);
|
|
57
|
+
process.exitCode = 1;
|
|
58
|
+
process.exit();
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
this._printFooter();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
_parseArgument(location, selectedPresetName, options) {
|
|
65
|
+
if (options.config)
|
|
66
|
+
this._configModule.setConfigFile(options.config);
|
|
67
|
+
this._parsePreset(selectedPresetName, options);
|
|
68
|
+
this._parseLocation(location);
|
|
69
|
+
}
|
|
70
|
+
_parsePreset(selectedPresetName, options) {
|
|
71
|
+
if (selectedPresetName && options.preset && selectedPresetName !== options.preset) {
|
|
72
|
+
this._logger.warn(`Both positional preset "${selectedPresetName}" and --preset "${options.preset}" provided. Using --preset.`);
|
|
73
|
+
}
|
|
74
|
+
const presetName = options.preset || selectedPresetName || 'ts';
|
|
75
|
+
const preset = this._presets.find(p => p.name === presetName);
|
|
76
|
+
if (!preset)
|
|
77
|
+
throw new Error(`Preset "${presetName}" not found`);
|
|
78
|
+
this._selectedPreset = preset;
|
|
79
|
+
}
|
|
80
|
+
_parseLocation(location) {
|
|
81
|
+
const projectLocation = location || '.';
|
|
82
|
+
if (projectLocation === '.')
|
|
83
|
+
return;
|
|
84
|
+
const cwdValue = (0, utils_1.cwd)(projectLocation);
|
|
85
|
+
if (!(0, utils_1.isFolderExists)(cwdValue))
|
|
86
|
+
(0, fs_1.mkdirSync)(cwdValue);
|
|
87
|
+
cwd_1.CWD.setValue(projectLocation);
|
|
88
|
+
for (const module of this._selectedPreset.modules) {
|
|
89
|
+
module.setCWD(projectLocation);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
async _runHandler() {
|
|
93
|
+
this._logger.start(`starting ${packageJson.name}`);
|
|
94
|
+
this._logger.end(`Jetting-Up "${this._selectedPreset.name}" preset with following modules: [${this._selectedPreset.modules.map(t => t.name).join(',')}]`);
|
|
95
|
+
for (const module of this._selectedPreset.modules) {
|
|
96
|
+
this._logger.start(`setting up "${module.name}" module...`);
|
|
97
|
+
module.setRegistry(this._moduleRegistry);
|
|
98
|
+
if (!(await module.isInstalled())) {
|
|
99
|
+
await module.installDeps();
|
|
100
|
+
await module.setup();
|
|
101
|
+
this._logger.end(`setup "${module.name}" module completed!`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
this._logger.end(`module "${module.name}" already installed...`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
this._logger.start(``);
|
|
108
|
+
this._logger.end(`Jetting-Up "${this._selectedPreset.name}" preset completed!`);
|
|
109
|
+
}
|
|
110
|
+
_printFooter() {
|
|
111
|
+
console.log(this._footer);
|
|
112
|
+
console.log('');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
exports.JetupApp = JetupApp;
|
|
116
|
+
//# sourceMappingURL=app.js.map
|
package/dist/app.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ModuleConfig } from '../../types';
|
|
2
|
+
import { LoggerModule } from '../logger';
|
|
3
|
+
import { Constructor, ModuleRegistry } from './registry';
|
|
4
|
+
export declare class BaseModule {
|
|
5
|
+
protected config: ModuleConfig;
|
|
6
|
+
protected logger: LoggerModule;
|
|
7
|
+
protected cwd: string;
|
|
8
|
+
protected registry: Constructor | undefined;
|
|
9
|
+
protected autoInstallDeps: boolean;
|
|
10
|
+
get name(): string;
|
|
11
|
+
setCWD(cwd: string): void;
|
|
12
|
+
setRegistry(registry: ModuleRegistry): void;
|
|
13
|
+
isInstalled(): Promise<boolean>;
|
|
14
|
+
setup(): Promise<void>;
|
|
15
|
+
installDeps(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseModule = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const config_1 = require("../config");
|
|
6
|
+
const logger_1 = require("../logger");
|
|
7
|
+
class BaseModule {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.cwd = (0, utils_1.cwd)();
|
|
10
|
+
this.autoInstallDeps = false;
|
|
11
|
+
}
|
|
12
|
+
get name() {
|
|
13
|
+
const name = this.constructor.name.replace('Module', '');
|
|
14
|
+
return name.charAt(0).toLowerCase() + name.substring(1);
|
|
15
|
+
}
|
|
16
|
+
setCWD(cwd) {
|
|
17
|
+
this.cwd = cwd;
|
|
18
|
+
}
|
|
19
|
+
setRegistry(registry) {
|
|
20
|
+
if (!this.registry)
|
|
21
|
+
throw new Error(`${this.name}.registry is not configured`);
|
|
22
|
+
registry.register(this.registry, this);
|
|
23
|
+
const configModule = registry.get(config_1.ConfigModule);
|
|
24
|
+
const config = configModule.get(this.name);
|
|
25
|
+
this.config = config;
|
|
26
|
+
const loggerModule = registry.get(logger_1.LoggerModule);
|
|
27
|
+
this.logger = loggerModule;
|
|
28
|
+
}
|
|
29
|
+
async isInstalled() {
|
|
30
|
+
let depsExists = this.config.installedIfDepsExists.length === 0;
|
|
31
|
+
let filesOrFoldersExists = this.config.installedIfFilesOrFoldersExists.length === 0;
|
|
32
|
+
this.logger.info(`checking whether ${this.name} module is already installed...`);
|
|
33
|
+
depsExists = this.config.installedIfDepsExists.every(deps => {
|
|
34
|
+
const dep = (0, utils_1.getPackageName)(deps);
|
|
35
|
+
const exists = (0, utils_1.hasJsonProperty)((0, utils_1.cwd)('package.json'), `devDependencies.${dep}`);
|
|
36
|
+
this.logger.info(`Dependency "${dep}" ${exists ? 'found' : 'not found'} in package.json devDependencies`);
|
|
37
|
+
return exists;
|
|
38
|
+
});
|
|
39
|
+
filesOrFoldersExists = this.config.installedIfFilesOrFoldersExists.every(filesOrFolders => {
|
|
40
|
+
const exists = (0, utils_1.isFolderExists)((0, utils_1.cwd)(filesOrFolders)) || (0, utils_1.isFileExists)((0, utils_1.cwd)(filesOrFolders));
|
|
41
|
+
this.logger.info(`File/folder "${filesOrFolders}" ${exists ? 'found' : 'not found'}`);
|
|
42
|
+
return exists;
|
|
43
|
+
});
|
|
44
|
+
if (depsExists && filesOrFoldersExists) {
|
|
45
|
+
this.logger.info(`module "${this.name}" is already installed! Skipping setup...`);
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
this.logger.info(`module "${this.name}" is not yet installed! Continuing setup...`);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
async setup() {
|
|
52
|
+
throw new Error(`setup for class ${this.constructor.name} is not implemented`);
|
|
53
|
+
}
|
|
54
|
+
async installDeps() {
|
|
55
|
+
if (this.autoInstallDeps && this.config.installedIfDepsExists.length > 0) {
|
|
56
|
+
this.logger.info(`auto installing dev dependencies of "${this.name}" module...`);
|
|
57
|
+
const depsExists = this.config.installedIfDepsExists.every(deps => {
|
|
58
|
+
const dep = (0, utils_1.getPackageName)(deps);
|
|
59
|
+
const exists = (0, utils_1.hasJsonProperty)((0, utils_1.cwd)('package.json'), `devDependencies.${dep}`);
|
|
60
|
+
this.logger.info(`Dependency "${dep}" ${exists ? 'found' : 'not found'} in package.json devDependencies`);
|
|
61
|
+
return exists;
|
|
62
|
+
});
|
|
63
|
+
if (!depsExists) {
|
|
64
|
+
this.logger.info(`installing [${this.config.installedIfDepsExists.join(', ')}] as devDependencies`);
|
|
65
|
+
await (0, utils_1.packageInstallDev)(this.config.installedIfDepsExists.join(' '));
|
|
66
|
+
}
|
|
67
|
+
this.logger.info(`dependencies installation of "${this.name}" module completed!`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.BaseModule = BaseModule;
|
|
72
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/framework/base/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./registry"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./base"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./named"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/framework/base/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,iDAAuB;AACvB,kDAAwB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseNamedModule = void 0;
|
|
4
|
+
class BaseNamedModule {
|
|
5
|
+
setRegistry(registry) {
|
|
6
|
+
if (!this.registry)
|
|
7
|
+
throw new Error(`${this.name}.registry is not configured`);
|
|
8
|
+
registry.register(this.registry, this);
|
|
9
|
+
}
|
|
10
|
+
get name() {
|
|
11
|
+
const name = this.constructor.name.replace('Module', '');
|
|
12
|
+
return name.charAt(0).toLowerCase() + name.substring(1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.BaseNamedModule = BaseNamedModule;
|
|
16
|
+
//# sourceMappingURL=named.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"named.js","sourceRoot":"","sources":["../../../src/framework/base/named.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAGpB,WAAW,CAAC,QAAwB;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;QAC/E,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,IAAW,IAAI;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;CACD;AAZD,0CAYC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface Module {
|
|
2
|
+
name: string;
|
|
3
|
+
}
|
|
4
|
+
export type Constructor = new (...args: any) => Module;
|
|
5
|
+
export declare class ModuleRegistry {
|
|
6
|
+
private readonly _registry;
|
|
7
|
+
register<K extends Constructor>(key: K, value: InstanceType<K>): void;
|
|
8
|
+
get<K extends Constructor>(key: K): InstanceType<K>;
|
|
9
|
+
keys(): string[];
|
|
10
|
+
values(): Module[];
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModuleRegistry = void 0;
|
|
4
|
+
class ModuleRegistry {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._registry = new Map();
|
|
7
|
+
}
|
|
8
|
+
register(key, value) {
|
|
9
|
+
this._registry.set(key, value);
|
|
10
|
+
}
|
|
11
|
+
get(key) {
|
|
12
|
+
const named = this._registry.get(key);
|
|
13
|
+
if (!named) {
|
|
14
|
+
throw new Error(`Class ${key.name} is not registered.`);
|
|
15
|
+
}
|
|
16
|
+
return named;
|
|
17
|
+
}
|
|
18
|
+
keys() {
|
|
19
|
+
const result = [];
|
|
20
|
+
for (const klass of this._registry.values()) {
|
|
21
|
+
result.push(klass.name);
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
values() {
|
|
26
|
+
const result = [];
|
|
27
|
+
for (const klass of this._registry.values()) {
|
|
28
|
+
result.push({
|
|
29
|
+
name: klass.name,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.ModuleRegistry = ModuleRegistry;
|
|
36
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/framework/base/registry.ts"],"names":[],"mappings":";;;AAkBA,MAAa,cAAc;IAA3B;QACkB,cAAS,GAAc,IAAI,GAAG,EAAE,CAAC;IA+BnD,CAAC;IA7BO,QAAQ,CAAwB,GAAM,EAAE,KAAsB;QACpE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,GAAG,CAAwB,GAAM;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,qBAAqB,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAEM,IAAI;QACV,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAEM,MAAM;QACZ,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,KAAK,CAAC,IAAI;aAChB,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAhCD,wCAgCC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDefaultConfig = getDefaultConfig;
|
|
4
|
+
exports.parseConfig = parseConfig;
|
|
5
|
+
const dotenv_1 = require("dotenv");
|
|
6
|
+
const merge = require("lodash.merge");
|
|
7
|
+
const appConfig = require("../../../config/config.json");
|
|
8
|
+
const defaultConfig = require("./default.json");
|
|
9
|
+
(0, dotenv_1.config)();
|
|
10
|
+
function getDefaultConfig() {
|
|
11
|
+
return merge(defaultConfig, appConfig, parseConfigEnv());
|
|
12
|
+
}
|
|
13
|
+
function parseConfig(config) {
|
|
14
|
+
return merge(defaultConfig, config, parseConfigEnv());
|
|
15
|
+
}
|
|
16
|
+
function parseConfigEnv() {
|
|
17
|
+
return {};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/framework/config/config.ts"],"names":[],"mappings":";;AAOA,4CAEC;AAED,kCAEC;AAbD,mCAAgC;AAChC,sCAAsC;AACtC,yDAAyD;AACzD,gDAAgD;AAEhD,IAAA,eAAM,GAAE,CAAC;AAET,SAAgB,gBAAgB;IAC/B,OAAO,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,WAAW,CAAC,MAA+B;IAC1D,OAAO,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,cAAc;IACtB,OAAO,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseNamedModule } from '../base/named';
|
|
2
|
+
export declare class ConfigModule extends BaseNamedModule {
|
|
3
|
+
protected registry: typeof ConfigModule;
|
|
4
|
+
protected _appConfig: Record<string, unknown>;
|
|
5
|
+
constructor();
|
|
6
|
+
get<T>(moduleName: string): T;
|
|
7
|
+
setConfigFile(path: string): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigModule = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const named_1 = require("../base/named");
|
|
6
|
+
const config_1 = require("./config");
|
|
7
|
+
class ConfigModule extends named_1.BaseNamedModule {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.registry = ConfigModule;
|
|
11
|
+
this._appConfig = (0, config_1.getDefaultConfig)();
|
|
12
|
+
}
|
|
13
|
+
get(moduleName) {
|
|
14
|
+
if (!Object.keys(this._appConfig).includes(moduleName)) {
|
|
15
|
+
throw new Error(`config for module ${moduleName} is not defined`);
|
|
16
|
+
}
|
|
17
|
+
return this._appConfig[moduleName];
|
|
18
|
+
}
|
|
19
|
+
setConfigFile(path) {
|
|
20
|
+
if (!path)
|
|
21
|
+
return;
|
|
22
|
+
if (!(0, utils_1.isFileExists)(path))
|
|
23
|
+
throw new Error(`provided config path "${path}" doesn't exists`);
|
|
24
|
+
const config = JSON.parse((0, utils_1.readFile)(path));
|
|
25
|
+
this._appConfig = (0, config_1.parseConfig)(config);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.ConfigModule = ConfigModule;
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/framework/config/index.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AACrD,yCAAgD;AAChD,qCAAyD;AAEzD,MAAa,YAAa,SAAQ,uBAAe;IAIhD;QACC,KAAK,EAAE,CAAC;QAJC,aAAQ,GAAG,YAAY,CAAC;QAKjC,IAAI,CAAC,UAAU,GAAG,IAAA,yBAAgB,GAAE,CAAC;IACtC,CAAC;IAEM,GAAG,CAAI,UAAkB;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,iBAAiB,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAM,CAAC;IACzC,CAAC;IAEM,aAAa,CAAC,IAAY;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,CAAC,IAAA,oBAAY,EAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,kBAAkB,CAAC,CAAC;QAE1F,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CACD;AAvBD,oCAuBC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./base"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./config"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./logger"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,mDAAyB;AACzB,mDAAyB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Spinner } from 'nanospinner';
|
|
2
|
+
import { ModuleRegistry } from '../base/registry';
|
|
3
|
+
import { BaseNamedModule } from '../base/named';
|
|
4
|
+
interface Logger {
|
|
5
|
+
info: (message: string) => void;
|
|
6
|
+
warn: (message: string) => void;
|
|
7
|
+
debug: (message: string) => void;
|
|
8
|
+
error: (message: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare class LoggerModule extends BaseNamedModule {
|
|
11
|
+
protected _logger: Logger;
|
|
12
|
+
protected _spinner: (Spinner & {
|
|
13
|
+
debug?: (message: string) => void;
|
|
14
|
+
}) | undefined;
|
|
15
|
+
protected registry: typeof LoggerModule;
|
|
16
|
+
protected verbose: boolean;
|
|
17
|
+
setRegistry(registry: ModuleRegistry): void;
|
|
18
|
+
info(...messages: unknown[]): void;
|
|
19
|
+
warn(...messages: unknown[]): void;
|
|
20
|
+
error(...messages: unknown[]): void;
|
|
21
|
+
debug(...messages: unknown[]): void;
|
|
22
|
+
start(text?: string): void;
|
|
23
|
+
stop(): void;
|
|
24
|
+
end(text?: string): void;
|
|
25
|
+
private _getLogger;
|
|
26
|
+
}
|
|
27
|
+
export {};
|