@warlock.js/core 2.8.10 → 3.0.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/bin/warlock-loader.mjs +256 -0
- package/cjs/application.js +1 -1
- package/cjs/application.js.map +1 -1
- package/cjs/aws/get-aws-configurations.js +1 -1
- package/cjs/aws/get-aws-configurations.js.map +1 -1
- package/cjs/aws/index.d.ts.map +1 -1
- package/cjs/aws/index.js +73 -13
- package/cjs/aws/index.js.map +1 -1
- package/cjs/builder/app-builder.d.ts.map +1 -1
- package/cjs/builder/app-builder.js +12 -1
- package/cjs/builder/app-builder.js.map +1 -1
- package/cjs/builder/build-http-app.d.ts +27 -1
- package/cjs/builder/build-http-app.d.ts.map +1 -1
- package/cjs/builder/build-http-app.js +148 -7
- package/cjs/builder/build-http-app.js.map +1 -1
- package/cjs/builder/config-types-generator.d.ts +6 -0
- package/cjs/builder/config-types-generator.d.ts.map +1 -0
- package/cjs/builder/config-types-generator.js +67 -0
- package/cjs/builder/config-types-generator.js.map +1 -0
- package/cjs/code-quality/checkers/eslint-checker.d.ts +14 -0
- package/cjs/code-quality/checkers/eslint-checker.d.ts.map +1 -0
- package/cjs/code-quality/checkers/eslint-checker.js +39 -0
- package/cjs/code-quality/checkers/eslint-checker.js.map +1 -0
- package/cjs/code-quality/checkers/typescript-checker.d.ts +16 -0
- package/cjs/code-quality/checkers/typescript-checker.d.ts.map +1 -0
- package/cjs/code-quality/checkers/typescript-checker.js +76 -0
- package/cjs/code-quality/checkers/typescript-checker.js.map +1 -0
- package/cjs/code-quality/config.d.ts +29 -0
- package/cjs/code-quality/config.d.ts.map +1 -0
- package/cjs/code-quality/config.js +25 -0
- package/cjs/code-quality/config.js.map +1 -0
- package/cjs/code-quality/formatters/eslint-formatter.d.ts +12 -0
- package/cjs/code-quality/formatters/eslint-formatter.d.ts.map +1 -0
- package/cjs/code-quality/formatters/eslint-formatter.js +56 -0
- package/cjs/code-quality/formatters/eslint-formatter.js.map +1 -0
- package/cjs/code-quality/formatters/summary-formatter.d.ts +33 -0
- package/cjs/code-quality/formatters/summary-formatter.d.ts.map +1 -0
- package/cjs/code-quality/formatters/summary-formatter.js +54 -0
- package/cjs/code-quality/formatters/summary-formatter.js.map +1 -0
- package/cjs/code-quality/formatters/typescript-formatter.d.ts +9 -0
- package/cjs/code-quality/formatters/typescript-formatter.d.ts.map +1 -0
- package/cjs/code-quality/formatters/typescript-formatter.js +64 -0
- package/cjs/code-quality/formatters/typescript-formatter.js.map +1 -0
- package/cjs/code-quality/index.d.ts +16 -0
- package/cjs/code-quality/index.d.ts.map +1 -0
- package/cjs/code-quality/project-scanner.d.ts +6 -0
- package/cjs/code-quality/project-scanner.d.ts.map +1 -0
- package/cjs/code-quality/project-scanner.js +72 -0
- package/cjs/code-quality/project-scanner.js.map +1 -0
- package/cjs/code-quality/single-file-checker.d.ts +6 -0
- package/cjs/code-quality/single-file-checker.d.ts.map +1 -0
- package/cjs/code-quality/single-file-checker.js +76 -0
- package/cjs/code-quality/single-file-checker.js.map +1 -0
- package/cjs/config/index.d.ts +1 -1
- package/cjs/config/index.d.ts.map +1 -1
- package/cjs/config/typed-config.d.ts +38 -0
- package/cjs/config/typed-config.d.ts.map +1 -0
- package/cjs/config/typed-config.js +27 -0
- package/cjs/config/typed-config.js.map +1 -0
- package/cjs/console/commander.js +1 -1
- package/cjs/console/commander.js.map +1 -1
- package/cjs/http/plugins.js +8 -6
- package/cjs/http/plugins.js.map +1 -1
- package/cjs/http/request.d.ts +4 -0
- package/cjs/http/request.d.ts.map +1 -1
- package/cjs/http/request.js +16 -1
- package/cjs/http/request.js.map +1 -1
- package/cjs/http/response.d.ts.map +1 -1
- package/cjs/http/response.js +15 -3
- package/cjs/http/response.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.d.ts.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/modules/uploads/controllers/get-uploaded-file-with-hash.d.ts.map +1 -1
- package/cjs/modules/uploads/controllers/get-uploaded-file-with-hash.js +19 -2
- package/cjs/modules/uploads/controllers/get-uploaded-file-with-hash.js.map +1 -1
- package/cjs/modules/uploads/controllers/get-uploaded-file.d.ts.map +1 -1
- package/cjs/modules/uploads/controllers/get-uploaded-file.js.map +1 -1
- package/cjs/modules/uploads/events/compress-uploaded-file.d.ts.map +1 -1
- package/cjs/modules/uploads/events/compress-uploaded-file.js +28 -3
- package/cjs/modules/uploads/events/compress-uploaded-file.js.map +1 -1
- package/cjs/modules/uploads/events/index.js +1 -1
- package/cjs/modules/uploads/events/index.js.map +1 -1
- package/cjs/modules/uploads/utils/get-watermark-options.js +1 -1
- package/cjs/modules/uploads/utils/get-watermark-options.js.map +1 -1
- package/cjs/output/output.js +1 -1
- package/cjs/output/output.js.map +1 -1
- package/cjs/react/vite-config.d.ts.map +1 -1
- package/cjs/react/vite-config.js +2 -1
- package/cjs/react/vite-config.js.map +1 -1
- package/cjs/router/router.d.ts.map +1 -1
- package/cjs/router/router.js +9 -1
- package/cjs/router/router.js.map +1 -1
- package/cjs/starters/http-server-starter.d.ts +5 -0
- package/cjs/starters/http-server-starter.d.ts.map +1 -0
- package/cjs/starters/http-server-starter.js +27 -0
- package/cjs/starters/http-server-starter.js.map +1 -0
- package/cjs/starters/serve-log.d.ts +8 -0
- package/cjs/starters/serve-log.d.ts.map +1 -0
- package/cjs/starters/serve-log.js +43 -0
- package/cjs/starters/serve-log.js.map +1 -0
- package/cjs/starters/start-http-server.d.ts +1 -0
- package/cjs/starters/start-http-server.d.ts.map +1 -1
- package/cjs/starters/start-http-server.js +66 -62
- package/cjs/starters/start-http-server.js.map +1 -1
- package/cjs/utils/_database-log.d.ts +3 -3
- package/cjs/utils/_database-log.d.ts.map +1 -1
- package/cjs/utils/glob.d.ts +4 -0
- package/cjs/utils/glob.d.ts.map +1 -0
- package/cjs/utils/glob.js +53 -0
- package/cjs/utils/glob.js.map +1 -0
- package/cjs/utils/internal.d.ts +1 -0
- package/cjs/utils/internal.d.ts.map +1 -1
- package/cjs/validator/validateAll.d.ts.map +1 -1
- package/cjs/validator/validateAll.js +1 -1
- package/cjs/validator/validateAll.js.map +1 -1
- package/esm/application.js +1 -1
- package/esm/application.js.map +1 -1
- package/esm/aws/get-aws-configurations.js +1 -1
- package/esm/aws/get-aws-configurations.js.map +1 -1
- package/esm/aws/index.d.ts.map +1 -1
- package/esm/aws/index.js +73 -13
- package/esm/aws/index.js.map +1 -1
- package/esm/builder/app-builder.d.ts.map +1 -1
- package/esm/builder/app-builder.js +12 -1
- package/esm/builder/app-builder.js.map +1 -1
- package/esm/builder/build-http-app.d.ts +27 -1
- package/esm/builder/build-http-app.d.ts.map +1 -1
- package/esm/builder/build-http-app.js +148 -7
- package/esm/builder/build-http-app.js.map +1 -1
- package/esm/builder/config-types-generator.d.ts +6 -0
- package/esm/builder/config-types-generator.d.ts.map +1 -0
- package/esm/builder/config-types-generator.js +67 -0
- package/esm/builder/config-types-generator.js.map +1 -0
- package/esm/code-quality/checkers/eslint-checker.d.ts +14 -0
- package/esm/code-quality/checkers/eslint-checker.d.ts.map +1 -0
- package/esm/code-quality/checkers/eslint-checker.js +39 -0
- package/esm/code-quality/checkers/eslint-checker.js.map +1 -0
- package/esm/code-quality/checkers/typescript-checker.d.ts +16 -0
- package/esm/code-quality/checkers/typescript-checker.d.ts.map +1 -0
- package/esm/code-quality/checkers/typescript-checker.js +76 -0
- package/esm/code-quality/checkers/typescript-checker.js.map +1 -0
- package/esm/code-quality/config.d.ts +29 -0
- package/esm/code-quality/config.d.ts.map +1 -0
- package/esm/code-quality/config.js +25 -0
- package/esm/code-quality/config.js.map +1 -0
- package/esm/code-quality/formatters/eslint-formatter.d.ts +12 -0
- package/esm/code-quality/formatters/eslint-formatter.d.ts.map +1 -0
- package/esm/code-quality/formatters/eslint-formatter.js +56 -0
- package/esm/code-quality/formatters/eslint-formatter.js.map +1 -0
- package/esm/code-quality/formatters/summary-formatter.d.ts +33 -0
- package/esm/code-quality/formatters/summary-formatter.d.ts.map +1 -0
- package/esm/code-quality/formatters/summary-formatter.js +54 -0
- package/esm/code-quality/formatters/summary-formatter.js.map +1 -0
- package/esm/code-quality/formatters/typescript-formatter.d.ts +9 -0
- package/esm/code-quality/formatters/typescript-formatter.d.ts.map +1 -0
- package/esm/code-quality/formatters/typescript-formatter.js +64 -0
- package/esm/code-quality/formatters/typescript-formatter.js.map +1 -0
- package/esm/code-quality/index.d.ts +16 -0
- package/esm/code-quality/index.d.ts.map +1 -0
- package/esm/code-quality/project-scanner.d.ts +6 -0
- package/esm/code-quality/project-scanner.d.ts.map +1 -0
- package/esm/code-quality/project-scanner.js +72 -0
- package/esm/code-quality/project-scanner.js.map +1 -0
- package/esm/code-quality/single-file-checker.d.ts +6 -0
- package/esm/code-quality/single-file-checker.d.ts.map +1 -0
- package/esm/code-quality/single-file-checker.js +76 -0
- package/esm/code-quality/single-file-checker.js.map +1 -0
- package/esm/config/index.d.ts +1 -1
- package/esm/config/index.d.ts.map +1 -1
- package/esm/config/typed-config.d.ts +38 -0
- package/esm/config/typed-config.d.ts.map +1 -0
- package/esm/config/typed-config.js +27 -0
- package/esm/config/typed-config.js.map +1 -0
- package/esm/console/commander.js +1 -1
- package/esm/console/commander.js.map +1 -1
- package/esm/http/plugins.js +8 -6
- package/esm/http/plugins.js.map +1 -1
- package/esm/http/request.d.ts +4 -0
- package/esm/http/request.d.ts.map +1 -1
- package/esm/http/request.js +17 -2
- package/esm/http/request.js.map +1 -1
- package/esm/http/response.d.ts.map +1 -1
- package/esm/http/response.js +15 -3
- package/esm/http/response.js.map +1 -1
- package/esm/index.d.ts +2 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/modules/uploads/controllers/get-uploaded-file-with-hash.d.ts.map +1 -1
- package/esm/modules/uploads/controllers/get-uploaded-file-with-hash.js +19 -2
- package/esm/modules/uploads/controllers/get-uploaded-file-with-hash.js.map +1 -1
- package/esm/modules/uploads/controllers/get-uploaded-file.d.ts.map +1 -1
- package/esm/modules/uploads/controllers/get-uploaded-file.js.map +1 -1
- package/esm/modules/uploads/events/compress-uploaded-file.d.ts.map +1 -1
- package/esm/modules/uploads/events/compress-uploaded-file.js +28 -3
- package/esm/modules/uploads/events/compress-uploaded-file.js.map +1 -1
- package/esm/modules/uploads/events/index.js +1 -1
- package/esm/modules/uploads/events/index.js.map +1 -1
- package/esm/modules/uploads/utils/get-watermark-options.js +1 -1
- package/esm/modules/uploads/utils/get-watermark-options.js.map +1 -1
- package/esm/output/output.js +1 -1
- package/esm/output/output.js.map +1 -1
- package/esm/react/vite-config.d.ts.map +1 -1
- package/esm/react/vite-config.js +2 -1
- package/esm/react/vite-config.js.map +1 -1
- package/esm/router/router.d.ts.map +1 -1
- package/esm/router/router.js +9 -1
- package/esm/router/router.js.map +1 -1
- package/esm/starters/http-server-starter.d.ts +5 -0
- package/esm/starters/http-server-starter.d.ts.map +1 -0
- package/esm/starters/http-server-starter.js +27 -0
- package/esm/starters/http-server-starter.js.map +1 -0
- package/esm/starters/serve-log.d.ts +8 -0
- package/esm/starters/serve-log.d.ts.map +1 -0
- package/esm/starters/serve-log.js +43 -0
- package/esm/starters/serve-log.js.map +1 -0
- package/esm/starters/start-http-server.d.ts +1 -0
- package/esm/starters/start-http-server.d.ts.map +1 -1
- package/esm/starters/start-http-server.js +66 -62
- package/esm/starters/start-http-server.js.map +1 -1
- package/esm/utils/_database-log.d.ts +3 -3
- package/esm/utils/_database-log.d.ts.map +1 -1
- package/esm/utils/glob.d.ts +4 -0
- package/esm/utils/glob.d.ts.map +1 -0
- package/esm/utils/glob.js +53 -0
- package/esm/utils/glob.js.map +1 -0
- package/esm/utils/internal.d.ts +1 -0
- package/esm/utils/internal.d.ts.map +1 -1
- package/esm/validator/validateAll.d.ts.map +1 -1
- package/esm/validator/validateAll.js +1 -1
- package/esm/validator/validateAll.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,111 @@
|
|
|
1
|
-
'use strict';var fs=require('@mongez/fs'),paths=require('../utils/paths.js'),appBuilder=require('./app-builder.js'),configLoaderBuilder=require('./config-loader-builder.js')
|
|
1
|
+
'use strict';var fs=require('@mongez/fs'),path=require('path'),serveLog=require('../starters/serve-log.js'),glob=require('../utils/glob.js'),paths=require('../utils/paths.js'),appBuilder=require('./app-builder.js'),configLoaderBuilder=require('./config-loader-builder.js'),configTypesGenerator=require('./config-types-generator.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);const mainfestFilePath = paths.warlockPath("manifest.json");
|
|
2
|
+
const cacheBundlePath = paths.warlockPath(".cache/cache-bundle.json");
|
|
3
|
+
async function createManifestFile() {
|
|
4
|
+
if (await fs.fileExistsAsync(mainfestFilePath)) {
|
|
5
|
+
return await buildMainfestFile();
|
|
6
|
+
}
|
|
7
|
+
// no need to await the build as we will just update the contents of the file
|
|
8
|
+
buildMainfestFile();
|
|
9
|
+
}
|
|
10
|
+
async function buildMainfestFile() {
|
|
11
|
+
// get all files within the src directory
|
|
12
|
+
const [allFiles, aliases] = await Promise.all([
|
|
13
|
+
glob.globFiles(paths.srcPath(), { extensions: [".ts", ".tsx"] }),
|
|
14
|
+
loadAliases(),
|
|
15
|
+
]);
|
|
16
|
+
// now normalize the paths and remove the root directory from it and replace any \ with /
|
|
17
|
+
const normalizedPaths = allFiles.map(filePath => {
|
|
18
|
+
// do initial code quality check
|
|
19
|
+
const importPath = filePath
|
|
20
|
+
.replace(paths.srcPath(), "")
|
|
21
|
+
.replace(/\\/g, "/")
|
|
22
|
+
.replace(/^\//, "")
|
|
23
|
+
// remove the .ts or .tsx extension
|
|
24
|
+
.replace(/\.tsx?$/, "");
|
|
25
|
+
const fullPath = filePath
|
|
26
|
+
.replace(paths.srcPath(), "")
|
|
27
|
+
.replace(/\\/g, "/")
|
|
28
|
+
.replace(/^\//, "");
|
|
29
|
+
return {
|
|
30
|
+
import: importPath,
|
|
31
|
+
path: fullPath,
|
|
32
|
+
fullPath: filePath.replace(/\\/g, "/"),
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
// Create a lookup map for efficient path resolution
|
|
36
|
+
const importLookup = {};
|
|
37
|
+
const directoryIndexLookup = {};
|
|
38
|
+
for (const file of normalizedPaths) {
|
|
39
|
+
// Direct import lookup (e.g., "app/main" -> "app/main.ts")
|
|
40
|
+
importLookup[file.import] = {
|
|
41
|
+
path: file.path,
|
|
42
|
+
fullPath: file.fullPath,
|
|
43
|
+
};
|
|
44
|
+
// Directory index lookup (e.g., "app" -> "app/index.ts")
|
|
45
|
+
if (file.import.endsWith("/index")) {
|
|
46
|
+
const dirPath = file.import.replace(/\/index$/, "");
|
|
47
|
+
directoryIndexLookup[dirPath] = {
|
|
48
|
+
path: file.path,
|
|
49
|
+
fullPath: file.fullPath,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// now create the manifest file
|
|
54
|
+
const manifest = {
|
|
55
|
+
files: normalizedPaths,
|
|
56
|
+
aliases,
|
|
57
|
+
importLookup,
|
|
58
|
+
directoryIndexLookup,
|
|
59
|
+
};
|
|
60
|
+
await fs.putFileAsync(mainfestFilePath, JSON.stringify(manifest, null, 2));
|
|
61
|
+
return manifest;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Normalize Windows paths into forward slashes (for URL consistency)
|
|
65
|
+
*/
|
|
66
|
+
function normalizePath(p) {
|
|
67
|
+
return p.replace(/\\/g, "/");
|
|
68
|
+
}
|
|
69
|
+
let aliases = {};
|
|
70
|
+
/**
|
|
71
|
+
* Parse tsconfig.json and update alias map.
|
|
72
|
+
*/
|
|
73
|
+
async function loadAliases(force = false) {
|
|
74
|
+
if (!force && Object.keys(aliases).length) {
|
|
75
|
+
return aliases;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const tsconfigRaw = await fs.getJsonFileAsync(paths.rootPath("tsconfig.json"));
|
|
79
|
+
const paths$1 = tsconfigRaw.compilerOptions?.paths ?? {};
|
|
80
|
+
const baseUrl = tsconfigRaw.compilerOptions?.baseUrl ?? ".";
|
|
81
|
+
const root = path__default.default.resolve(process.cwd(), baseUrl);
|
|
82
|
+
const resolved = {};
|
|
83
|
+
for (const [alias, targets] of Object.entries(paths$1)) {
|
|
84
|
+
const cleanKey = alias.replace(/\*$/, "");
|
|
85
|
+
const cleanTarget = (targets?.[0] ?? "").replace(/\*$/, "");
|
|
86
|
+
resolved[cleanKey] = {
|
|
87
|
+
path: normalizePath(path__default.default
|
|
88
|
+
.resolve(root, cleanTarget)
|
|
89
|
+
.replace(paths.srcPath(), "")
|
|
90
|
+
.replace(/\\/g, "/")
|
|
91
|
+
.replace(/^\//, "")),
|
|
92
|
+
type: cleanTarget.endsWith(".tsx") || cleanTarget.endsWith(".ts")
|
|
93
|
+
? "file"
|
|
94
|
+
: "folder",
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
aliases = resolved;
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
console.warn("⚠️ Warlock loader: could not parse tsconfig.json — using empty aliases.");
|
|
101
|
+
aliases = {};
|
|
102
|
+
}
|
|
103
|
+
return aliases;
|
|
104
|
+
}
|
|
105
|
+
// Order matters: bootstrap and environment must be first
|
|
2
106
|
const moduleBuilders = {
|
|
107
|
+
mainfest: createManifestFile,
|
|
108
|
+
configTypes: configTypesGenerator.generateConfigTypes,
|
|
3
109
|
bootstrap: appBuilder.createBootstrapFile,
|
|
4
110
|
environment: appBuilder.createEnvironmentModeDisplayFile,
|
|
5
111
|
config: configLoaderBuilder.createConfigLoader,
|
|
@@ -9,17 +115,50 @@ const moduleBuilders = {
|
|
|
9
115
|
routes: appBuilder.loadRoutesFiles,
|
|
10
116
|
starter: createHttpApplicationStarter,
|
|
11
117
|
};
|
|
118
|
+
const log = serveLog.httpLog;
|
|
119
|
+
/**
|
|
120
|
+
* Build consolidated cache bundle for faster startup
|
|
121
|
+
*/
|
|
122
|
+
async function buildCacheBundle() {
|
|
123
|
+
log.info("cache", "bundle", "Building consolidated cache bundle...");
|
|
124
|
+
const cacheDir = paths.warlockPath(".cache");
|
|
125
|
+
const cacheFiles = await glob.globFiles(cacheDir, {
|
|
126
|
+
extensions: [".ts", ".tsx", ".js"],
|
|
127
|
+
});
|
|
128
|
+
const bundle = {};
|
|
129
|
+
let filesProcessed = 0;
|
|
130
|
+
for (const filePath of cacheFiles) {
|
|
131
|
+
// Skip the bundle file itself
|
|
132
|
+
if (filePath.includes("cache-bundle.json"))
|
|
133
|
+
continue;
|
|
134
|
+
const fileName = path__default.default.basename(filePath);
|
|
135
|
+
const content = await fs.getFileAsync(filePath);
|
|
136
|
+
bundle[fileName] = content;
|
|
137
|
+
filesProcessed++;
|
|
138
|
+
}
|
|
139
|
+
await fs.putFileAsync(cacheBundlePath, JSON.stringify(bundle));
|
|
140
|
+
log.success("cache", "bundle", `Bundle created with ${filesProcessed} files`);
|
|
141
|
+
return bundle;
|
|
142
|
+
}
|
|
12
143
|
async function buildHttpApp() {
|
|
13
|
-
await fs.ensureDirectoryAsync(paths.warlockPath());
|
|
14
|
-
//
|
|
15
|
-
|
|
144
|
+
await fs.ensureDirectoryAsync(paths.warlockPath(".cache"));
|
|
145
|
+
// Build all modules in parallel since they're written to separate files
|
|
146
|
+
const buildPromises = Object.entries(moduleBuilders).map(async ([name, builder]) => {
|
|
16
147
|
try {
|
|
17
148
|
await builder();
|
|
18
149
|
}
|
|
19
150
|
catch (error) {
|
|
20
|
-
|
|
151
|
+
log.error("app", name, "failed to build module" +
|
|
152
|
+
(error instanceof Error ? error.message : String(error)));
|
|
21
153
|
throw error;
|
|
22
154
|
}
|
|
155
|
+
});
|
|
156
|
+
await Promise.all(buildPromises);
|
|
157
|
+
// Build cache bundle after all modules are built
|
|
158
|
+
// await buildCacheBundle();
|
|
159
|
+
const mainEntry = paths.warlockPath("http.ts");
|
|
160
|
+
if (await fs.fileExistsAsync(mainEntry)) {
|
|
161
|
+
return mainEntry;
|
|
23
162
|
}
|
|
24
163
|
// Create the main entry point that imports all modules in order
|
|
25
164
|
const mainEntryContent = `
|
|
@@ -38,14 +177,16 @@ import "./routes";
|
|
|
38
177
|
|
|
39
178
|
// Start the application
|
|
40
179
|
import "./start-http-application";`;
|
|
41
|
-
const mainEntry = paths.warlockPath("http.ts");
|
|
42
180
|
await fs.putFileAsync(mainEntry, mainEntryContent);
|
|
43
181
|
return mainEntry;
|
|
44
182
|
}
|
|
45
183
|
async function createHttpApplicationStarter() {
|
|
184
|
+
if (await fs.fileExistsAsync(paths.warlockPath("start-http-application.ts"))) {
|
|
185
|
+
return "import './start-http-application'";
|
|
186
|
+
}
|
|
46
187
|
const { addImport, addContent, saveAs } = appBuilder.createAppBuilder();
|
|
47
188
|
addImport(`import { startHttpApplication } from "@warlock.js/core"`);
|
|
48
189
|
addContent(`startHttpApplication();`);
|
|
49
190
|
await saveAs("start-http-application");
|
|
50
191
|
return `import "./start-http-application"`;
|
|
51
|
-
}exports.buildHttpApp=buildHttpApp;exports.createHttpApplicationStarter=createHttpApplicationStarter;exports.moduleBuilders=moduleBuilders;//# sourceMappingURL=build-http-app.js.map
|
|
192
|
+
}exports.buildCacheBundle=buildCacheBundle;exports.buildHttpApp=buildHttpApp;exports.createHttpApplicationStarter=createHttpApplicationStarter;exports.createManifestFile=createManifestFile;exports.moduleBuilders=moduleBuilders;//# sourceMappingURL=build-http-app.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-http-app.js","sources":["../../src/builder/build-http-app.ts"],"sourcesContent":[null],"names":["createBootstrapFile","createEnvironmentModeDisplayFile","createConfigLoader","loadMainFiles","loadLocalesFiles","loadEventFiles","loadRoutesFiles","
|
|
1
|
+
{"version":3,"file":"build-http-app.js","sources":["../../src/builder/build-http-app.ts"],"sourcesContent":[null],"names":["warlockPath","fileExistsAsync","globFiles","srcPath","putFileAsync","getJsonFileAsync","rootPath","paths","path","generateConfigTypes","createBootstrapFile","createEnvironmentModeDisplayFile","createConfigLoader","loadMainFiles","loadLocalesFiles","loadEventFiles","loadRoutesFiles","httpLog","getFileAsync","ensureDirectoryAsync","createAppBuilder"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-types-generator.d.ts","sourceRoot":"","sources":["../../src/builder/config-types-generator.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,mBAAmB,sBAwExC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';var fs=require('@mongez/fs'),path=require('path'),glob=require('../utils/glob.js'),paths=require('../utils/paths.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);/**
|
|
2
|
+
* Generate TypeScript types for config keys using module augmentation
|
|
3
|
+
* This enables autocomplete and type safety for config.get()
|
|
4
|
+
*/
|
|
5
|
+
async function generateConfigTypes() {
|
|
6
|
+
try {
|
|
7
|
+
// Find all config files in src/config/
|
|
8
|
+
const configDir = paths.rootPath("src/config");
|
|
9
|
+
const configFiles = await glob.globFiles(configDir, {
|
|
10
|
+
extensions: [".ts", ".tsx", ".js"],
|
|
11
|
+
});
|
|
12
|
+
// Extract config keys from file names
|
|
13
|
+
const configKeys = configFiles
|
|
14
|
+
.map(filePath => {
|
|
15
|
+
const fileName = path__default.default.basename(filePath);
|
|
16
|
+
// Remove extension (.ts, .tsx, .js)
|
|
17
|
+
return fileName.replace(/\.(ts|tsx|js)$/, "");
|
|
18
|
+
})
|
|
19
|
+
.filter(key => key !== "index") // Skip index files
|
|
20
|
+
.sort(); // Alphabetical order for consistency
|
|
21
|
+
// Generate module augmentation file
|
|
22
|
+
const typeDefinition = `/**
|
|
23
|
+
* Auto-generated config types via Module Augmentation
|
|
24
|
+
* DO NOT EDIT MANUALLY - This file is regenerated on every build
|
|
25
|
+
*
|
|
26
|
+
* Add new config files to src/config/ and they will be automatically detected
|
|
27
|
+
*
|
|
28
|
+
* For deep type inference, augment ConfigTypeMap:
|
|
29
|
+
*
|
|
30
|
+
* declare module "@warlock.js/core" {
|
|
31
|
+
* interface ConfigTypeMap {
|
|
32
|
+
* database: import("@warlock.js/cascade").DatabaseConfigurations;
|
|
33
|
+
* app: import("@warlock.js/core").AppConfigurations;
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
*/
|
|
37
|
+
|
|
38
|
+
declare module "@warlock.js/core" {
|
|
39
|
+
/**
|
|
40
|
+
* Project-specific config keys (autocomplete in config.get())
|
|
41
|
+
*/
|
|
42
|
+
export type ConfigKeys = ${configKeys.map(key => `"${key}"`).join(" | ")};
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Augment this interface to add return types for config.get()
|
|
46
|
+
*
|
|
47
|
+
* Example:
|
|
48
|
+
* interface ConfigTypeMap {
|
|
49
|
+
* database: import("@warlock.js/cascade").DatabaseConfigurations;
|
|
50
|
+
* }
|
|
51
|
+
*/
|
|
52
|
+
// interface ConfigTypeMap {} // Uncomment and add your types here
|
|
53
|
+
}
|
|
54
|
+
`;
|
|
55
|
+
// Ensure .warlock directory exists
|
|
56
|
+
await fs.ensureDirectoryAsync(paths.warlockPath());
|
|
57
|
+
// Write type augmentation file
|
|
58
|
+
const outputPath = paths.warlockPath("config-augmentation.d.ts");
|
|
59
|
+
await fs.putFileAsync(outputPath, typeDefinition);
|
|
60
|
+
console.log(`✓ Generated config types for ${configKeys.length} configurations: ${configKeys.join(", ")}`);
|
|
61
|
+
return configKeys;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.warn("⚠️ Failed to generate config types:", error instanceof Error ? error.message : String(error));
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
}exports.generateConfigTypes=generateConfigTypes;//# sourceMappingURL=config-types-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-types-generator.js","sources":["../../src/builder/config-types-generator.ts"],"sourcesContent":[null],"names":["rootPath","globFiles","path","ensureDirectoryAsync","warlockPath","putFileAsync"],"mappings":"yPAKA;;;AAGG;AACI,eAAe,mBAAmB,GAAA;IACvC,IAAI;;AAEF,QAAA,MAAM,SAAS,GAAGA,cAAQ,CAAC,YAAY,CAAC,CAAC;AACzC,QAAA,MAAM,WAAW,GAAG,MAAMC,cAAS,CAAC,SAAS,EAAE;AAC7C,YAAA,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;AACnC,SAAA,CAAC,CAAC;;QAGH,MAAM,UAAU,GAAG,WAAW;aAC3B,GAAG,CAAC,QAAQ,IAAG;YACd,MAAM,QAAQ,GAAGC,qBAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;YAEzC,OAAO,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AAChD,SAAC,CAAC;aACD,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,OAAO,CAAC;aAC9B,IAAI,EAAE,CAAC;;AAGV,QAAA,MAAM,cAAc,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;AAoBE,2BAAA,EAAA,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAI,CAAA,EAAA,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;;;;CAYzE,CAAC;;AAGE,QAAA,MAAMC,uBAAoB,CAACC,iBAAW,EAAE,CAAC,CAAC;;AAG1C,QAAA,MAAM,UAAU,GAAGA,iBAAW,CAAC,0BAA0B,CAAC,CAAC;AAC3D,QAAA,MAAMC,eAAY,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AAE/C,QAAA,OAAO,CAAC,GAAG,CACT,CAAgC,6BAAA,EAAA,UAAU,CAAC,MAAM,CAAA,iBAAA,EAAoB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAC7F,CAAC;AAEF,QAAA,OAAO,UAAU,CAAC;AACnB,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CACV,qCAAqC,EACrC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;AACF,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACH"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ESLintResult = {
|
|
2
|
+
tool: "ESLint";
|
|
3
|
+
filePath: string;
|
|
4
|
+
results: any;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Check a single file for ESLint errors
|
|
8
|
+
*/
|
|
9
|
+
export declare function checkSingleFile(filePath: string): Promise<ESLintResult | null>;
|
|
10
|
+
/**
|
|
11
|
+
* Check entire project for ESLint errors
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkProject(projectPath: string): Promise<ESLintResult[]>;
|
|
14
|
+
//# sourceMappingURL=eslint-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-checker.d.ts","sourceRoot":"","sources":["../../../src/code-quality/checkers/eslint-checker.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAa9B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';var eslint=require('eslint');// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
2
|
+
// @ts-ignore - ESLint types not available
|
|
3
|
+
/**
|
|
4
|
+
* Check a single file for ESLint errors
|
|
5
|
+
*/
|
|
6
|
+
async function checkSingleFile(filePath) {
|
|
7
|
+
try {
|
|
8
|
+
const eslint$1 = new eslint.ESLint();
|
|
9
|
+
const results = await eslint$1.lintFiles([filePath]);
|
|
10
|
+
return {
|
|
11
|
+
tool: "ESLint",
|
|
12
|
+
filePath,
|
|
13
|
+
results: results[0],
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check entire project for ESLint errors
|
|
22
|
+
*/
|
|
23
|
+
async function checkProject(projectPath) {
|
|
24
|
+
try {
|
|
25
|
+
const eslint$1 = new eslint.ESLint();
|
|
26
|
+
// ESLint will automatically use .eslintrc and scan the directory
|
|
27
|
+
const results = await eslint$1.lintFiles([`${projectPath}/**/*.{ts,tsx}`]);
|
|
28
|
+
// Filter out files with no issues for cleaner results
|
|
29
|
+
const resultsWithIssues = results.filter((result) => result.errorCount > 0 || result.warningCount > 0);
|
|
30
|
+
return resultsWithIssues.map((result) => ({
|
|
31
|
+
tool: "ESLint",
|
|
32
|
+
filePath: result.filePath.replace(/\\/g, "/"),
|
|
33
|
+
results: result,
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
}exports.checkProject=checkProject;exports.checkSingleFile=checkSingleFile;//# sourceMappingURL=eslint-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-checker.js","sources":["../../../src/code-quality/checkers/eslint-checker.ts"],"sourcesContent":[null],"names":["eslint","ESLint"],"mappings":"0CAAA;AACA;AASA;;AAEG;AACI,eAAe,eAAe,CACnC,QAAgB,EAAA;IAEhB,IAAI;AACF,QAAA,MAAMA,QAAM,GAAG,IAAIC,aAAM,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAMD,QAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEnD,OAAO;AACL,YAAA,IAAI,EAAE,QAAQ;YACd,QAAQ;AACR,YAAA,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;SACpB,CAAC;AACH,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AACH,CAAC;AAED;;AAEG;AACI,eAAe,YAAY,CAChC,WAAmB,EAAA;IAEnB,IAAI;AACF,QAAA,MAAMA,QAAM,GAAG,IAAIC,aAAM,EAAE,CAAC;;AAG5B,QAAA,MAAM,OAAO,GAAG,MAAMD,QAAM,CAAC,SAAS,CAAC,CAAC,CAAG,EAAA,WAAW,CAAgB,cAAA,CAAA,CAAC,CAAC,CAAC;;QAGzE,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CACtC,CAAC,MAAW,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAClE,CAAC;QAEF,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAW,MAAM;AAC7C,YAAA,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AAC7C,YAAA,OAAO,EAAE,MAAM;AAChB,SAAA,CAAC,CAAC,CAAC;AACL,KAAA;AAAC,IAAA,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,EAAE,CAAC;AACX,KAAA;AACH"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
export type TypeScriptResult = {
|
|
3
|
+
tool: "TypeScript";
|
|
4
|
+
filePath: string;
|
|
5
|
+
diagnostics: ts.Diagnostic[];
|
|
6
|
+
sourceFile: ts.SourceFile;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Check a single file for TypeScript errors
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkSingleFile(filePath: string): Promise<TypeScriptResult | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Check entire project for TypeScript errors
|
|
14
|
+
*/
|
|
15
|
+
export declare function checkProject(projectPath: string): Promise<TypeScriptResult[]>;
|
|
16
|
+
//# sourceMappingURL=typescript-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-checker.d.ts","sourceRoot":"","sources":["../../../src/code-quality/checkers/typescript-checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC;IAC7B,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAwClC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA4D7B"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
'use strict';var ts=require('typescript');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ts__default=/*#__PURE__*/_interopDefault(ts);/**
|
|
2
|
+
* Check a single file for TypeScript errors
|
|
3
|
+
*/
|
|
4
|
+
async function checkSingleFile(filePath) {
|
|
5
|
+
try {
|
|
6
|
+
const configPath = ts__default.default.findConfigFile(process.cwd(), ts__default.default.sys.fileExists, "tsconfig.json");
|
|
7
|
+
if (!configPath) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const configFile = ts__default.default.readConfigFile(configPath, ts__default.default.sys.readFile);
|
|
11
|
+
const parsedConfig = ts__default.default.parseJsonConfigFileContent(configFile.config, ts__default.default.sys, process.cwd());
|
|
12
|
+
const program = ts__default.default.createProgram([filePath], parsedConfig.options);
|
|
13
|
+
const sourceFile = program.getSourceFile(filePath);
|
|
14
|
+
if (!sourceFile) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
const diagnostics = [
|
|
18
|
+
...program.getSyntacticDiagnostics(sourceFile),
|
|
19
|
+
...program.getSemanticDiagnostics(sourceFile),
|
|
20
|
+
];
|
|
21
|
+
return {
|
|
22
|
+
tool: "TypeScript",
|
|
23
|
+
filePath: filePath.replace(/\\/g, "/"),
|
|
24
|
+
diagnostics,
|
|
25
|
+
sourceFile,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Check entire project for TypeScript errors
|
|
34
|
+
*/
|
|
35
|
+
async function checkProject(projectPath) {
|
|
36
|
+
try {
|
|
37
|
+
const configPath = ts__default.default.findConfigFile(projectPath, ts__default.default.sys.fileExists, "tsconfig.json");
|
|
38
|
+
if (!configPath) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const configFile = ts__default.default.readConfigFile(configPath, ts__default.default.sys.readFile);
|
|
42
|
+
const parsedConfig = ts__default.default.parseJsonConfigFileContent(configFile.config, ts__default.default.sys, projectPath);
|
|
43
|
+
// Create program with entire project
|
|
44
|
+
const program = ts__default.default.createProgram(parsedConfig.fileNames, parsedConfig.options);
|
|
45
|
+
// Get all diagnostics for all files
|
|
46
|
+
const allDiagnostics = ts__default.default.getPreEmitDiagnostics(program);
|
|
47
|
+
// Group diagnostics by file
|
|
48
|
+
const diagnosticsByFile = new Map();
|
|
49
|
+
for (const diagnostic of allDiagnostics) {
|
|
50
|
+
if (diagnostic.file) {
|
|
51
|
+
const fileName = diagnostic.file.fileName;
|
|
52
|
+
if (!diagnosticsByFile.has(fileName)) {
|
|
53
|
+
diagnosticsByFile.set(fileName, []);
|
|
54
|
+
}
|
|
55
|
+
diagnosticsByFile.get(fileName).push(diagnostic);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// Convert to results array
|
|
59
|
+
const results = [];
|
|
60
|
+
for (const [fileName, diagnostics] of diagnosticsByFile) {
|
|
61
|
+
const sourceFile = program.getSourceFile(fileName);
|
|
62
|
+
if (sourceFile) {
|
|
63
|
+
results.push({
|
|
64
|
+
tool: "TypeScript",
|
|
65
|
+
filePath: fileName,
|
|
66
|
+
diagnostics,
|
|
67
|
+
sourceFile,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return results;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
}exports.checkProject=checkProject;exports.checkSingleFile=checkSingleFile;//# sourceMappingURL=typescript-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-checker.js","sources":["../../../src/code-quality/checkers/typescript-checker.ts"],"sourcesContent":[null],"names":["ts"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display strategies for code quality results
|
|
3
|
+
*/
|
|
4
|
+
export type DisplayStrategy = "sequential" | "combined" | "typescript-only" | "eslint-only" | "silent";
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for code quality checks
|
|
7
|
+
*/
|
|
8
|
+
export type CodeQualityConfig = {
|
|
9
|
+
displayStrategy: DisplayStrategy;
|
|
10
|
+
showSuccessMessages: boolean;
|
|
11
|
+
showWarnings: boolean;
|
|
12
|
+
showErrors: boolean;
|
|
13
|
+
showCodeSnippets: boolean;
|
|
14
|
+
contextLines: number;
|
|
15
|
+
enableInitialScan: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Configure the code quality checker
|
|
19
|
+
*/
|
|
20
|
+
export declare function configure(newConfig: Partial<CodeQualityConfig>): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get current configuration
|
|
23
|
+
*/
|
|
24
|
+
export declare function getConfig(): CodeQualityConfig;
|
|
25
|
+
/**
|
|
26
|
+
* Reset configuration to defaults
|
|
27
|
+
*/
|
|
28
|
+
export declare function resetConfig(): void;
|
|
29
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/code-quality/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB,YAAY,GACZ,UAAU,GACV,iBAAiB,GACjB,aAAa,GACb,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,EAAE,eAAe,CAAC;IACjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAiBF;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,QAE9D;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,iBAAiB,CAE7C;AAED;;GAEG;AACH,wBAAgB,WAAW,SAE1B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';/**
|
|
2
|
+
* Default configuration
|
|
3
|
+
*/
|
|
4
|
+
const defaultConfig = {
|
|
5
|
+
displayStrategy: "sequential",
|
|
6
|
+
showSuccessMessages: true,
|
|
7
|
+
showWarnings: true,
|
|
8
|
+
showErrors: true,
|
|
9
|
+
showCodeSnippets: true,
|
|
10
|
+
contextLines: 2,
|
|
11
|
+
enableInitialScan: true,
|
|
12
|
+
};
|
|
13
|
+
let config = { ...defaultConfig };
|
|
14
|
+
/**
|
|
15
|
+
* Configure the code quality checker
|
|
16
|
+
*/
|
|
17
|
+
function configure(newConfig) {
|
|
18
|
+
config = { ...config, ...newConfig };
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get current configuration
|
|
22
|
+
*/
|
|
23
|
+
function getConfig() {
|
|
24
|
+
return { ...config };
|
|
25
|
+
}exports.configure=configure;exports.getConfig=getConfig;//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../src/code-quality/config.ts"],"sourcesContent":[null],"names":[],"mappings":"aAuBA;;AAEG;AACH,MAAM,aAAa,GAAsB;AACvC,IAAA,eAAe,EAAE,YAAY;AAC7B,IAAA,mBAAmB,EAAE,IAAI;AACzB,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,IAAI,MAAM,GAAsB,EAAE,GAAG,aAAa,EAAE,CAAC;AAErD;;AAEG;AACG,SAAU,SAAS,CAAC,SAAqC,EAAA;IAC7D,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAED;;AAEG;SACa,SAAS,GAAA;AACvB,IAAA,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;AACvB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Display ESLint errors for a single file
|
|
3
|
+
*/
|
|
4
|
+
export declare function displayErrors(result: {
|
|
5
|
+
filePath: string;
|
|
6
|
+
results: any;
|
|
7
|
+
}): void;
|
|
8
|
+
/**
|
|
9
|
+
* Display compact file list (for project scan)
|
|
10
|
+
*/
|
|
11
|
+
export declare function displayCompactSummary(results: any, filePath: string): void;
|
|
12
|
+
//# sourceMappingURL=eslint-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-formatter.d.ts","sourceRoot":"","sources":["../../../src/code-quality/formatters/eslint-formatter.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAA;CAAE,QA0FvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,QAsBnE"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';var copper=require('@mongez/copper'),path=require('path'),config=require('../config.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var path__default=/*#__PURE__*/_interopDefault(path);/**
|
|
2
|
+
* Display ESLint errors for a single file
|
|
3
|
+
*/
|
|
4
|
+
function displayErrors(result) {
|
|
5
|
+
const config$1 = config.getConfig();
|
|
6
|
+
const { results, filePath } = result;
|
|
7
|
+
const fileName = path__default.default.relative(process.cwd(), filePath).replace(/\\/g, "/");
|
|
8
|
+
if (results.errorCount === 0 && results.warningCount === 0) {
|
|
9
|
+
if (config$1.showSuccessMessages) {
|
|
10
|
+
console.log(copper.colors.green(`\n✓ ${copper.colors.bold("ESLint")} ${copper.colors.dim("→")} ${copper.colors.greenBright("No issues")} ${copper.colors.dim(`in ${path__default.default.basename(filePath)}`)}`));
|
|
11
|
+
}
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
for (const message of results.messages) {
|
|
15
|
+
const isError = message.severity === 2;
|
|
16
|
+
const isWarning = message.severity === 1;
|
|
17
|
+
if (isError && !config$1.showErrors)
|
|
18
|
+
continue;
|
|
19
|
+
if (isWarning && !config$1.showWarnings)
|
|
20
|
+
continue;
|
|
21
|
+
const level = isError ? "ERROR" : "WARNING";
|
|
22
|
+
const levelColor = isError ? copper.colors.redBright : copper.colors.yellowBright;
|
|
23
|
+
const icon = isError ? "✖" : "⚠";
|
|
24
|
+
console.log(`\n${levelColor(icon)} ${levelColor(copper.colors.bold(level))} ${copper.colors.dim("in")} ${copper.colors.cyanBright(fileName)}${copper.colors.dim(`(${message.line},${message.column})`)}`);
|
|
25
|
+
console.log(` ${copper.colors.magentaBright(message.ruleId || "eslint")} ${copper.colors.dim("→")} ${message.message}`);
|
|
26
|
+
if (config$1.showCodeSnippets && results.source) {
|
|
27
|
+
const lines = results.source.split("\n");
|
|
28
|
+
const line = message.line - 1;
|
|
29
|
+
const startLine = Math.max(0, line - config$1.contextLines);
|
|
30
|
+
const endLine = Math.min(lines.length - 1, line + config$1.contextLines);
|
|
31
|
+
for (let i = startLine; i <= endLine; i++) {
|
|
32
|
+
const lineNum = (i + 1).toString().padStart(4, " ");
|
|
33
|
+
const isErrorLine = i === line;
|
|
34
|
+
const prefix = isErrorLine ? levelColor(">") : " ";
|
|
35
|
+
if (isErrorLine) {
|
|
36
|
+
console.log(`${prefix} ${copper.colors.dim(lineNum)} ${copper.colors.dim("│")} ${levelColor(lines[i])}`);
|
|
37
|
+
const padding = " ".repeat((message.column || 1) + lineNum.length + 3);
|
|
38
|
+
const pointer = levelColor("~".repeat(Math.max(1, message.endColumn ? message.endColumn - message.column : 1)));
|
|
39
|
+
console.log(` ${padding}${pointer}`);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(`${prefix} ${copper.colors.dim(lineNum)} ${copper.colors.dim("│")} ${copper.colors.dim(lines[i])}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Summary
|
|
48
|
+
const summary = [];
|
|
49
|
+
if (results.errorCount > 0) {
|
|
50
|
+
summary.push(copper.colors.red(`${results.errorCount} error${results.errorCount > 1 ? "s" : ""}`));
|
|
51
|
+
}
|
|
52
|
+
if (results.warningCount > 0) {
|
|
53
|
+
summary.push(copper.colors.yellow(`${results.warningCount} warning${results.warningCount > 1 ? "s" : ""}`));
|
|
54
|
+
}
|
|
55
|
+
console.log(`\n${copper.colors.dim("╰─")} ${copper.colors.bold("ESLint")} ${copper.colors.dim("→")} ${summary.join(copper.colors.dim(" and "))}`);
|
|
56
|
+
}exports.displayErrors=displayErrors;//# sourceMappingURL=eslint-formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eslint-formatter.js","sources":["../../../src/code-quality/formatters/eslint-formatter.ts"],"sourcesContent":[null],"names":["config","getConfig","path","colors"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
type ScanSummary = {
|
|
3
|
+
typescript: {
|
|
4
|
+
errorCount: number;
|
|
5
|
+
warningCount: number;
|
|
6
|
+
filesWithIssues: Array<{
|
|
7
|
+
file: string;
|
|
8
|
+
errors: number;
|
|
9
|
+
warnings: number;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
eslint: {
|
|
13
|
+
errorCount: number;
|
|
14
|
+
warningCount: number;
|
|
15
|
+
filesWithIssues: Array<{
|
|
16
|
+
file: string;
|
|
17
|
+
errors: number;
|
|
18
|
+
warnings: number;
|
|
19
|
+
}>;
|
|
20
|
+
};
|
|
21
|
+
totalFiles: number;
|
|
22
|
+
scanTime: number;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Display project scan summary
|
|
26
|
+
*/
|
|
27
|
+
export declare function displayScanSummary(summary: ScanSummary): void;
|
|
28
|
+
/**
|
|
29
|
+
* Display compact file list (for project scan)
|
|
30
|
+
*/
|
|
31
|
+
export declare function displayCompactSummary(diagnostics: ts.Diagnostic[], filePath: string): void;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=summary-formatter.d.ts.map
|