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.
Files changed (108) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +54 -0
  3. package/config/config.json +55 -0
  4. package/dist/app.d.ts +21 -0
  5. package/dist/app.js +116 -0
  6. package/dist/app.js.map +1 -0
  7. package/dist/framework/base/base.d.ts +16 -0
  8. package/dist/framework/base/base.js +72 -0
  9. package/dist/framework/base/base.js.map +1 -0
  10. package/dist/framework/base/index.d.ts +3 -0
  11. package/dist/framework/base/index.js +7 -0
  12. package/dist/framework/base/index.js.map +1 -0
  13. package/dist/framework/base/named.d.ts +6 -0
  14. package/dist/framework/base/named.js +16 -0
  15. package/dist/framework/base/named.js.map +1 -0
  16. package/dist/framework/base/registry.d.ts +12 -0
  17. package/dist/framework/base/registry.js +36 -0
  18. package/dist/framework/base/registry.js.map +1 -0
  19. package/dist/framework/config/config.d.ts +2 -0
  20. package/dist/framework/config/config.js +19 -0
  21. package/dist/framework/config/config.js.map +1 -0
  22. package/dist/framework/config/default.json +5 -0
  23. package/dist/framework/config/index.d.ts +8 -0
  24. package/dist/framework/config/index.js +29 -0
  25. package/dist/framework/config/index.js.map +1 -0
  26. package/dist/framework/index.d.ts +3 -0
  27. package/dist/framework/index.js +7 -0
  28. package/dist/framework/index.js.map +1 -0
  29. package/dist/framework/logger/index.d.ts +27 -0
  30. package/dist/framework/logger/index.js +80 -0
  31. package/dist/framework/logger/index.js.map +1 -0
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +11 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/modules/eslint/index.d.ts +5 -0
  36. package/dist/modules/eslint/index.js +18 -0
  37. package/dist/modules/eslint/index.js.map +1 -0
  38. package/dist/modules/husky/index.d.ts +6 -0
  39. package/dist/modules/husky/index.js +27 -0
  40. package/dist/modules/husky/index.js.map +1 -0
  41. package/dist/modules/husky/pre-commit +1 -0
  42. package/dist/modules/index.d.ts +9 -0
  43. package/dist/modules/index.js +13 -0
  44. package/dist/modules/index.js.map +1 -0
  45. package/dist/modules/jest/_setup.js +5 -0
  46. package/dist/modules/jest/index.d.ts +6 -0
  47. package/dist/modules/jest/index.js +37 -0
  48. package/dist/modules/jest/index.js.map +1 -0
  49. package/dist/modules/jest/jest.config.js +40 -0
  50. package/dist/modules/lint-staged/.lintstagedrc.json +5 -0
  51. package/dist/modules/lint-staged/index.d.ts +6 -0
  52. package/dist/modules/lint-staged/index.js +23 -0
  53. package/dist/modules/lint-staged/index.js.map +1 -0
  54. package/dist/modules/package/index.d.ts +6 -0
  55. package/dist/modules/package/index.js +19 -0
  56. package/dist/modules/package/index.js.map +1 -0
  57. package/dist/modules/package/package.json +17 -0
  58. package/dist/modules/prettier/.prettierignore +37 -0
  59. package/dist/modules/prettier/.prettierrc +7 -0
  60. package/dist/modules/prettier/index.d.ts +6 -0
  61. package/dist/modules/prettier/index.js +30 -0
  62. package/dist/modules/prettier/index.js.map +1 -0
  63. package/dist/modules/project/index.d.ts +5 -0
  64. package/dist/modules/project/index.js +23 -0
  65. package/dist/modules/project/index.js.map +1 -0
  66. package/dist/modules/src/index.d.ts +6 -0
  67. package/dist/modules/src/index.js +23 -0
  68. package/dist/modules/src/index.js.map +1 -0
  69. package/dist/modules/typescript/index.d.ts +5 -0
  70. package/dist/modules/typescript/index.js +22 -0
  71. package/dist/modules/typescript/index.js.map +1 -0
  72. package/dist/modules/typescript/tsconfig.json +26 -0
  73. package/dist/presets/base.d.ts +5 -0
  74. package/dist/presets/base.js +14 -0
  75. package/dist/presets/base.js.map +1 -0
  76. package/dist/presets/index.d.ts +1 -0
  77. package/dist/presets/index.js +5 -0
  78. package/dist/presets/index.js.map +1 -0
  79. package/dist/presets/ts.d.ts +5 -0
  80. package/dist/presets/ts.js +23 -0
  81. package/dist/presets/ts.js.map +1 -0
  82. package/dist/types/config.d.ts +4 -0
  83. package/dist/types/config.js +3 -0
  84. package/dist/types/config.js.map +1 -0
  85. package/dist/types/index.d.ts +1 -0
  86. package/dist/types/index.js +5 -0
  87. package/dist/types/index.js.map +1 -0
  88. package/dist/utils/cmd.d.ts +3 -0
  89. package/dist/utils/cmd.js +110 -0
  90. package/dist/utils/cmd.js.map +1 -0
  91. package/dist/utils/cwd.d.ts +4 -0
  92. package/dist/utils/cwd.js +11 -0
  93. package/dist/utils/cwd.js.map +1 -0
  94. package/dist/utils/files.d.ts +9 -0
  95. package/dist/utils/files.js +83 -0
  96. package/dist/utils/files.js.map +1 -0
  97. package/dist/utils/index.d.ts +4 -0
  98. package/dist/utils/index.js +8 -0
  99. package/dist/utils/index.js.map +1 -0
  100. package/dist/utils/json.d.ts +2 -0
  101. package/dist/utils/json.js +43 -0
  102. package/dist/utils/json.js.map +1 -0
  103. package/dist/utils/package.d.ts +2 -0
  104. package/dist/utils/package.js +18 -0
  105. package/dist/utils/package.js.map +1 -0
  106. package/lib/clean.js +12 -0
  107. package/lib/post-build.js +59 -0
  108. 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
+ ![Header](https://raw.githubusercontent.com/aldhosutra/jetup/HEAD/website/static/img/docusaurus-social-card.jpg)
2
+
3
+ # Jetup
4
+
5
+ ![Repo Size](https://img.shields.io/github/repo-size/aldhosutra/jetup)
6
+ [![License: MIT](https://img.shields.io/github/license/aldhosutra/jetup?color=green)](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
@@ -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,3 @@
1
+ export * from './registry';
2
+ export * from './base';
3
+ export * from './named';
@@ -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,6 @@
1
+ import { Constructor, ModuleRegistry } from './registry';
2
+ export declare class BaseNamedModule {
3
+ protected registry: Constructor | undefined;
4
+ setRegistry(registry: ModuleRegistry): void;
5
+ get name(): string;
6
+ }
@@ -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,2 @@
1
+ export declare function getDefaultConfig(): any;
2
+ export declare function parseConfig(config: Record<string, unknown>): any;
@@ -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,5 @@
1
+ {
2
+ "logger": {
3
+ "verbose": false
4
+ }
5
+ }
@@ -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,3 @@
1
+ export * from './base';
2
+ export * from './config';
3
+ export * from './logger';
@@ -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 {};