@simplysm/sd-cli 12.5.20 → 12.5.22
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/dist/{build-tools → entry}/SdCliCordova.d.ts +5 -6
- package/dist/{build-tools → entry}/SdCliCordova.js +117 -99
- package/dist/entry/SdCliCordova.js.map +1 -0
- package/dist/entry/SdCliElectron.d.ts +2 -2
- package/dist/entry/SdCliElectron.js +50 -40
- package/dist/entry/SdCliElectron.js.map +1 -1
- package/dist/entry/SdCliLocalUpdate.d.ts +1 -2
- package/dist/entry/SdCliLocalUpdate.js +26 -27
- package/dist/entry/SdCliLocalUpdate.js.map +1 -1
- package/dist/entry/SdCliProject.d.ts +1 -5
- package/dist/entry/SdCliProject.js +62 -288
- package/dist/entry/SdCliProject.js.map +1 -1
- package/dist/index.d.ts +23 -17
- package/dist/index.js +23 -17
- package/dist/index.js.map +1 -1
- package/dist/pkg-builders/SdMultiBuildRunner.d.ts +21 -0
- package/dist/pkg-builders/SdMultiBuildRunner.js +174 -0
- package/dist/pkg-builders/SdMultiBuildRunner.js.map +1 -0
- package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.d.ts +4 -0
- package/dist/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.js +7 -7
- package/dist/pkg-builders/client/SdCliNgRoutesFileGenerator.js.map +1 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.d.ts +20 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.js +135 -0
- package/dist/pkg-builders/client/SdClientBuildRunner.js.map +1 -0
- package/dist/pkg-builders/client/SdNgBundler.d.ts +29 -0
- package/dist/{build-tools → pkg-builders/client}/SdNgBundler.js +100 -95
- package/dist/pkg-builders/client/SdNgBundler.js.map +1 -0
- package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.d.ts +1 -2
- package/dist/{build-tools → pkg-builders/client}/SdNgBundlerContext.js +19 -45
- package/dist/pkg-builders/client/SdNgBundlerContext.js.map +1 -0
- package/dist/pkg-builders/client/createSdNgPlugin.d.ts +10 -0
- package/dist/{bundle-plugins/sdNgPlugin.js → pkg-builders/client/createSdNgPlugin.js} +32 -33
- package/dist/pkg-builders/client/createSdNgPlugin.js.map +1 -0
- package/dist/pkg-builders/lib/SdCliIndexFileGenerator.d.ts +5 -0
- package/dist/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.js +11 -11
- package/dist/pkg-builders/lib/SdCliIndexFileGenerator.js.map +1 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.d.ts +16 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.js +81 -0
- package/dist/pkg-builders/lib/SdJsLibBuildRunner.js.map +1 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.d.ts +13 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.js +89 -0
- package/dist/pkg-builders/lib/SdTsLibBuildRunner.js.map +1 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.d.ts +14 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.js +54 -0
- package/dist/pkg-builders/lib/SdTsLibBuilder.js.map +1 -0
- package/dist/pkg-builders/server/SdServerBuildRunner.d.ts +17 -0
- package/dist/{builders/SdCliServerBuilder.js → pkg-builders/server/SdServerBuildRunner.js} +48 -53
- package/dist/pkg-builders/server/SdServerBuildRunner.js.map +1 -0
- package/dist/pkg-builders/server/SdServerBundler.d.ts +19 -0
- package/dist/{build-tools → pkg-builders/server}/SdServerBundler.js +25 -30
- package/dist/pkg-builders/server/SdServerBundler.js.map +1 -0
- package/dist/pkg-builders/server/createSdServerPlugin.d.ts +10 -0
- package/dist/pkg-builders/server/createSdServerPlugin.js +53 -0
- package/dist/pkg-builders/server/createSdServerPlugin.js.map +1 -0
- package/dist/sd-cli.js +61 -54
- package/dist/sd-cli.js.map +1 -1
- package/dist/ts-builder/SdTsCompileWorker.d.ts +9 -0
- package/dist/ts-builder/SdTsCompileWorker.js +16 -0
- package/dist/ts-builder/SdTsCompileWorker.js.map +1 -0
- package/dist/ts-builder/SdTsCompiler.d.ts +7 -0
- package/dist/{build-tools → ts-builder}/SdTsCompiler.js +226 -212
- package/dist/ts-builder/SdTsCompiler.js.map +1 -0
- package/dist/types/build-plugin.type.d.ts +14 -0
- package/dist/types/build-plugin.type.js +2 -0
- package/dist/types/build-plugin.type.js.map +1 -0
- package/dist/types/build.type.d.ts +15 -0
- package/dist/types/build.type.js +2 -0
- package/dist/types/build.type.js.map +1 -0
- package/dist/types/common-configs.type.d.ts +22 -0
- package/dist/types/common-configs.type.js +2 -0
- package/dist/types/common-configs.type.js.map +1 -0
- package/dist/types/sd-configs.type.d.ts +99 -0
- package/dist/types/sd-configs.type.js +2 -0
- package/dist/types/sd-configs.type.js.map +1 -0
- package/dist/types/ts-compiler.type.d.ts +29 -0
- package/dist/types/ts-compiler.type.js +2 -0
- package/dist/types/ts-compiler.type.js.map +1 -0
- package/dist/types/workers.type.d.ts +49 -0
- package/dist/types/workers.type.js +2 -0
- package/dist/types/workers.type.js.map +1 -0
- package/dist/utils/SdCliConvertMessageUtil.d.ts +21 -0
- package/dist/utils/SdCliConvertMessageUtil.js +137 -0
- package/dist/utils/SdCliConvertMessageUtil.js.map +1 -0
- package/dist/workers/compile-worker.js +27 -0
- package/dist/workers/compile-worker.js.map +1 -0
- package/dist/workers/lint-worker.js +36 -0
- package/dist/workers/lint-worker.js.map +1 -0
- package/dist/workers/server-worker.d.ts +1 -0
- package/dist/workers/server-worker.js +49 -0
- package/dist/workers/server-worker.js.map +1 -0
- package/lib/dev-worker.cjs +5 -0
- package/package.json +7 -7
- package/src/entry/SdCliCordova.ts +363 -0
- package/src/entry/SdCliElectron.ts +96 -69
- package/src/entry/SdCliLocalUpdate.ts +43 -44
- package/src/entry/SdCliProject.ts +72 -417
- package/src/index.ts +23 -17
- package/src/pkg-builders/SdMultiBuildRunner.ts +250 -0
- package/src/{build-tools → pkg-builders/client}/SdCliNgRoutesFileGenerator.ts +7 -7
- package/src/pkg-builders/client/SdClientBuildRunner.ts +191 -0
- package/src/{build-tools → pkg-builders/client}/SdNgBundler.ts +125 -121
- package/src/pkg-builders/client/SdNgBundlerContext.ts +111 -0
- package/src/{bundle-plugins/sdNgPlugin.ts → pkg-builders/client/createSdNgPlugin.ts} +43 -46
- package/src/{build-tools → pkg-builders/lib}/SdCliIndexFileGenerator.ts +11 -11
- package/src/pkg-builders/lib/SdJsLibBuildRunner.ts +105 -0
- package/src/pkg-builders/lib/SdTsLibBuildRunner.ts +128 -0
- package/src/pkg-builders/lib/SdTsLibBuilder.ts +69 -0
- package/src/{builders/SdCliServerBuilder.ts → pkg-builders/server/SdServerBuildRunner.ts} +66 -78
- package/src/{build-tools → pkg-builders/server}/SdServerBundler.ts +40 -41
- package/src/pkg-builders/server/createSdServerPlugin.ts +77 -0
- package/src/sd-cli.ts +197 -211
- package/src/ts-builder/SdTsCompileWorker.ts +21 -0
- package/src/ts-builder/SdTsCompiler.ts +758 -0
- package/src/types/build-plugin.type.ts +16 -0
- package/src/types/build.type.ts +17 -0
- package/src/types/common-configs.type.ts +27 -0
- package/src/types/sd-configs.type.ts +114 -0
- package/src/types/ts-compiler.type.ts +29 -0
- package/src/types/workers.type.ts +27 -0
- package/src/utils/SdCliConvertMessageUtil.ts +177 -0
- package/src/workers/compile-worker.ts +31 -0
- package/src/workers/lint-worker.ts +44 -0
- package/src/workers/server-worker.ts +52 -0
- package/tsconfig.json +7 -1
- package/dist/build-cluster.js +0 -201
- package/dist/build-cluster.js.map +0 -1
- package/dist/build-tools/SdCliCordova.js.map +0 -1
- package/dist/build-tools/SdCliIndexFileGenerator.d.ts +0 -5
- package/dist/build-tools/SdCliIndexFileGenerator.js.map +0 -1
- package/dist/build-tools/SdCliNgRoutesFileGenerator.d.ts +0 -4
- package/dist/build-tools/SdCliNgRoutesFileGenerator.js.map +0 -1
- package/dist/build-tools/SdLinter.d.ts +0 -5
- package/dist/build-tools/SdLinter.js +0 -49
- package/dist/build-tools/SdLinter.js.map +0 -1
- package/dist/build-tools/SdNgBundler.d.ts +0 -29
- package/dist/build-tools/SdNgBundler.js.map +0 -1
- package/dist/build-tools/SdNgBundlerContext.js.map +0 -1
- package/dist/build-tools/SdServerBundler.d.ts +0 -20
- package/dist/build-tools/SdServerBundler.js.map +0 -1
- package/dist/build-tools/SdTsCompiler.d.ts +0 -34
- package/dist/build-tools/SdTsCompiler.js.map +0 -1
- package/dist/build-tools/SdTsLibBundler.d.ts +0 -13
- package/dist/build-tools/SdTsLibBundler.js +0 -58
- package/dist/build-tools/SdTsLibBundler.js.map +0 -1
- package/dist/builders/SdCliClientBuilder.d.ts +0 -18
- package/dist/builders/SdCliClientBuilder.js +0 -151
- package/dist/builders/SdCliClientBuilder.js.map +0 -1
- package/dist/builders/SdCliJsLibLinter.d.ts +0 -13
- package/dist/builders/SdCliJsLibLinter.js +0 -60
- package/dist/builders/SdCliJsLibLinter.js.map +0 -1
- package/dist/builders/SdCliServerBuilder.d.ts +0 -15
- package/dist/builders/SdCliServerBuilder.js.map +0 -1
- package/dist/builders/SdCliTsLibBuilder.d.ts +0 -12
- package/dist/builders/SdCliTsLibBuilder.js +0 -90
- package/dist/builders/SdCliTsLibBuilder.js.map +0 -1
- package/dist/bundle-plugins/sdNgPlugin.d.ts +0 -16
- package/dist/bundle-plugins/sdNgPlugin.js.map +0 -1
- package/dist/bundle-plugins/sdServerPlugin.d.ts +0 -16
- package/dist/bundle-plugins/sdServerPlugin.js +0 -63
- package/dist/bundle-plugins/sdServerPlugin.js.map +0 -1
- package/dist/commons.d.ts +0 -145
- package/dist/commons.js +0 -2
- package/dist/commons.js.map +0 -1
- package/dist/server-worker.js +0 -57
- package/dist/server-worker.js.map +0 -1
- package/dist/utils/SdCliBuildResultUtil.d.ts +0 -16
- package/dist/utils/SdCliBuildResultUtil.js +0 -54
- package/dist/utils/SdCliBuildResultUtil.js.map +0 -1
- package/src/build-cluster.ts +0 -212
- package/src/build-tools/SdCliCordova.ts +0 -340
- package/src/build-tools/SdLinter.ts +0 -65
- package/src/build-tools/SdNgBundlerContext.ts +0 -137
- package/src/build-tools/SdTsCompiler.ts +0 -754
- package/src/build-tools/SdTsLibBundler.ts +0 -72
- package/src/builders/SdCliClientBuilder.ts +0 -211
- package/src/builders/SdCliJsLibLinter.ts +0 -72
- package/src/builders/SdCliTsLibBuilder.ts +0 -126
- package/src/bundle-plugins/sdServerPlugin.ts +0 -94
- package/src/commons.ts +0 -171
- package/src/server-worker.ts +0 -65
- package/src/utils/SdCliBuildResultUtil.ts +0 -63
- /package/dist/{build-cluster.d.ts → workers/compile-worker.d.ts} +0 -0
- /package/dist/{server-worker.d.ts → workers/lint-worker.d.ts} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import esbuild from "esbuild";
|
|
2
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
3
|
+
|
|
4
|
+
export interface ISdCliServerPluginResultCache {
|
|
5
|
+
watchFileSet?: Set<TNormPath>;
|
|
6
|
+
affectedFileSet?: Set<TNormPath>;
|
|
7
|
+
outputFiles?: esbuild.OutputFile[];
|
|
8
|
+
metafile?: esbuild.Metafile;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ISdCliNgPluginResultCache {
|
|
12
|
+
watchFileSet?: Set<TNormPath>;
|
|
13
|
+
affectedFileSet?: Set<TNormPath>;
|
|
14
|
+
outputFiles?: esbuild.OutputFile[];
|
|
15
|
+
metafile?: esbuild.Metafile;
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
2
|
+
|
|
3
|
+
export interface ISdBuildRunnerResult {
|
|
4
|
+
affectedFilePathSet: Set<TNormPath>;
|
|
5
|
+
buildMessages: ISdBuildMessage[];
|
|
6
|
+
emitFileSet: Set<TNormPath>;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface ISdBuildMessage {
|
|
10
|
+
filePath: TNormPath | undefined;
|
|
11
|
+
line: number | undefined;
|
|
12
|
+
char: number | undefined;
|
|
13
|
+
code: string | undefined;
|
|
14
|
+
severity: "error" | "warning" | "suggestion" | "message";
|
|
15
|
+
message: string;
|
|
16
|
+
type: string | undefined;
|
|
17
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface INpmConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
description?: string;
|
|
4
|
+
version: string;
|
|
5
|
+
workspaces?: string[];
|
|
6
|
+
|
|
7
|
+
dependencies?: Record<string, string>;
|
|
8
|
+
optionalDependencies?: Record<string, string>;
|
|
9
|
+
devDependencies?: Record<string, string>;
|
|
10
|
+
peerDependencies?: Record<string, string>;
|
|
11
|
+
peerDependenciesMeta?: Record<
|
|
12
|
+
string,
|
|
13
|
+
{
|
|
14
|
+
optional?: boolean;
|
|
15
|
+
}
|
|
16
|
+
>;
|
|
17
|
+
|
|
18
|
+
resolutions?: Record<string, string>;
|
|
19
|
+
|
|
20
|
+
scripts?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ITsConfig {
|
|
24
|
+
files?: string[];
|
|
25
|
+
compilerOptions: { lib: string[] };
|
|
26
|
+
angularCompilerOptions?: {};
|
|
27
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export interface ISdProjectConfig {
|
|
2
|
+
packages: Record<string, TSdPackageConfig | undefined>;
|
|
3
|
+
localUpdates?: Record<string, string>;
|
|
4
|
+
postPublish?: TSdPostPublishConfig[];
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export type TSdProjectConfigFn = (isDev: boolean, opts?: string[]) => ISdProjectConfig;
|
|
8
|
+
|
|
9
|
+
export type TSdPackageConfig = ISdLibPackageConfig | ISdServerPackageConfig | ISdClientPackageConfig;
|
|
10
|
+
|
|
11
|
+
export interface ISdLibPackageConfig {
|
|
12
|
+
type: "library";
|
|
13
|
+
publish?: "npm";
|
|
14
|
+
polyfills?: string[];
|
|
15
|
+
noGenIndex?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ISdServerPackageConfig {
|
|
19
|
+
type: "server";
|
|
20
|
+
externals?: string[];
|
|
21
|
+
publish?: ISdLocalDirectoryPublishConfig | ISdFtpPublishConfig;
|
|
22
|
+
configs?: Record<string, any>;
|
|
23
|
+
env?: Record<string, string>;
|
|
24
|
+
pm2?: {
|
|
25
|
+
name?: string;
|
|
26
|
+
ignoreWatchPaths?: string[];
|
|
27
|
+
noInterpreter?: boolean;
|
|
28
|
+
noStartScript?: boolean;
|
|
29
|
+
};
|
|
30
|
+
iis?: {
|
|
31
|
+
nodeExeFilePath?: string;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export interface ISdClientPackageConfig {
|
|
36
|
+
type: "client";
|
|
37
|
+
server?: string | { port: number };
|
|
38
|
+
publish?: ISdLocalDirectoryPublishConfig | ISdFtpPublishConfig;
|
|
39
|
+
env?: Record<string, string>;
|
|
40
|
+
configs?: Record<string, any>;
|
|
41
|
+
noLazyRoute?: boolean;
|
|
42
|
+
forceProductionMode?: boolean;
|
|
43
|
+
|
|
44
|
+
builder?: {
|
|
45
|
+
web?: ISdClientBuilderWebConfig;
|
|
46
|
+
electron?: ISdClientBuilderElectronConfig;
|
|
47
|
+
cordova?: ISdClientBuilderCordovaConfig;
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface ISdLocalDirectoryPublishConfig {
|
|
52
|
+
type: "local-directory";
|
|
53
|
+
path: string;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface ISdFtpPublishConfig {
|
|
57
|
+
type: "ftp" | "ftps" | "sftp";
|
|
58
|
+
host: string;
|
|
59
|
+
port?: number;
|
|
60
|
+
path?: string;
|
|
61
|
+
user?: string;
|
|
62
|
+
pass?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface ISdClientBuilderElectronConfig {
|
|
66
|
+
appId: string;
|
|
67
|
+
installerIcon?: string;
|
|
68
|
+
postInstallScript?: string;
|
|
69
|
+
// devServerHost?: string;
|
|
70
|
+
// devServerPort?: number;
|
|
71
|
+
reinstallDependencies?: string[];
|
|
72
|
+
env?: Record<string, string>;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface ISdClientBuilderWebConfig {
|
|
76
|
+
// devServerHost?: string;
|
|
77
|
+
// devServerPort?: number;
|
|
78
|
+
env?: Record<string, string>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface ISdClientBuilderCordovaConfig {
|
|
82
|
+
appId: string;
|
|
83
|
+
appName: string;
|
|
84
|
+
plugins?: string[];
|
|
85
|
+
icon?: string;
|
|
86
|
+
debug?: boolean;
|
|
87
|
+
platform?: {
|
|
88
|
+
browser?: {};
|
|
89
|
+
android?: {
|
|
90
|
+
bundle?: boolean;
|
|
91
|
+
sign?: {
|
|
92
|
+
keystore: string;
|
|
93
|
+
storePassword: string;
|
|
94
|
+
alias: string;
|
|
95
|
+
password: string;
|
|
96
|
+
keystoreType: string;
|
|
97
|
+
};
|
|
98
|
+
sdkVersion?: number;
|
|
99
|
+
permissions?: {
|
|
100
|
+
name: string;
|
|
101
|
+
maxSdkVersion?: number;
|
|
102
|
+
}[];
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
env?: Record<string, string>;
|
|
106
|
+
browserslist?: string[];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
export type TSdPostPublishConfig = ISdPostPublishScriptConfig;
|
|
110
|
+
|
|
111
|
+
export interface ISdPostPublishScriptConfig {
|
|
112
|
+
type: "script";
|
|
113
|
+
script: string;
|
|
114
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { CompilerOptions } from "typescript";
|
|
2
|
+
import esbuild from "esbuild";
|
|
3
|
+
import { ISdBuildMessage } from "./build.type";
|
|
4
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
5
|
+
|
|
6
|
+
export interface SdTsCompilerOptions {
|
|
7
|
+
pkgPath: TNormPath;
|
|
8
|
+
additionalOptions: CompilerOptions;
|
|
9
|
+
isForBundle: boolean;
|
|
10
|
+
isDevMode: boolean;
|
|
11
|
+
watchScopePaths: TNormPath[];
|
|
12
|
+
globalStyleFilePath?: TNormPath;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ISdTsCompilerResult {
|
|
16
|
+
messages: ISdBuildMessage[];
|
|
17
|
+
stylesheetBundlingResultMap: Map<TNormPath, IStylesheetBundlingResult>;
|
|
18
|
+
emittedFilesCacheMap: Map<TNormPath, { outAbsPath?: TNormPath; text: string }[]>;
|
|
19
|
+
emitFileSet: Set<TNormPath>;
|
|
20
|
+
watchFileSet: Set<TNormPath>;
|
|
21
|
+
affectedFileSet: Set<TNormPath>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface IStylesheetBundlingResult {
|
|
25
|
+
outputFiles: esbuild.OutputFile[];
|
|
26
|
+
metafile?: esbuild.Metafile;
|
|
27
|
+
errors?: esbuild.Message[];
|
|
28
|
+
warnings?: esbuild.Message[];
|
|
29
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ESLint } from "eslint";
|
|
2
|
+
import { ISdTsCompilerResult, SdTsCompilerOptions } from "./ts-compiler.type";
|
|
3
|
+
import { TNormPath } from "@simplysm/sd-core-node";
|
|
4
|
+
|
|
5
|
+
export interface TServerWorkerType {
|
|
6
|
+
methods: {
|
|
7
|
+
listen: { params: [{ path: string } | { port: number }]; returnType: number };
|
|
8
|
+
setPathProxy: { params: [Record<string, string | number>]; returnType: void };
|
|
9
|
+
broadcastReload: { params: [Set<string>]; returnType: void };
|
|
10
|
+
};
|
|
11
|
+
events: {};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface TSdLintWorkerType {
|
|
15
|
+
methods: {
|
|
16
|
+
lint: { params: [{ cwd: string; fileSet: Set<string> }]; returnType: ESLint.LintResult[] };
|
|
17
|
+
};
|
|
18
|
+
events: {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface TSdTsCompileWorkerType {
|
|
22
|
+
methods: {
|
|
23
|
+
initialize: { params: [SdTsCompilerOptions]; returnType: void };
|
|
24
|
+
compile: { params: [Set<TNormPath>?]; returnType: ISdTsCompilerResult };
|
|
25
|
+
};
|
|
26
|
+
events: {};
|
|
27
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import os from "os";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { PartialMessage } from "esbuild";
|
|
5
|
+
import { ESLint } from "eslint";
|
|
6
|
+
import { ISdBuildMessage } from "../types/build.type";
|
|
7
|
+
import { PathUtil } from "@simplysm/sd-core-node";
|
|
8
|
+
|
|
9
|
+
export class SdCliConvertMessageUtil {
|
|
10
|
+
static convertToBuildMessagesFromTsDiag(diags: ts.Diagnostic[]): ISdBuildMessage[] {
|
|
11
|
+
return diags.map((diag) => {
|
|
12
|
+
const severity =
|
|
13
|
+
diag.category === ts.DiagnosticCategory.Error
|
|
14
|
+
? ("error" as const)
|
|
15
|
+
: diag.category === ts.DiagnosticCategory.Warning
|
|
16
|
+
? ("warning" as const)
|
|
17
|
+
: diag.category === ts.DiagnosticCategory.Suggestion
|
|
18
|
+
? ("suggestion" as const)
|
|
19
|
+
: ("message" as const);
|
|
20
|
+
|
|
21
|
+
const code = `TS${diag.code}`;
|
|
22
|
+
const message = ts.flattenDiagnosticMessageText(diag.messageText, os.EOL);
|
|
23
|
+
|
|
24
|
+
const filePath = diag.file ? PathUtil.norm(path.resolve(diag.file.fileName)) : undefined;
|
|
25
|
+
const position =
|
|
26
|
+
diag.file && diag.start !== undefined ? diag.file.getLineAndCharacterOfPosition(diag.start) : undefined;
|
|
27
|
+
const line = position ? position.line + 1 : undefined;
|
|
28
|
+
const char = position ? position.character + 1 : undefined;
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
filePath,
|
|
32
|
+
line,
|
|
33
|
+
char,
|
|
34
|
+
code,
|
|
35
|
+
severity,
|
|
36
|
+
message,
|
|
37
|
+
type: "compile",
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
static convertToBuildMessagesFromEsbuild(
|
|
43
|
+
result: {
|
|
44
|
+
errors?: PartialMessage[];
|
|
45
|
+
warnings?: PartialMessage[];
|
|
46
|
+
},
|
|
47
|
+
orgPath: string,
|
|
48
|
+
): ISdBuildMessage[] {
|
|
49
|
+
const convertFn = (msg: PartialMessage, severity: "error" | "warning") => {
|
|
50
|
+
const filePath = msg.location?.file != null ? PathUtil.norm(orgPath, msg.location.file) : undefined;
|
|
51
|
+
const line = msg.location?.line;
|
|
52
|
+
const char = msg.location?.column;
|
|
53
|
+
const code = msg.text!.slice(0, msg.text!.indexOf(":"));
|
|
54
|
+
const message = `${msg.text!.slice(msg.text!.indexOf(":") + 1)}${Boolean(msg.id) ? ` (${msg.id})` : ``}`;
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
filePath,
|
|
58
|
+
line,
|
|
59
|
+
char,
|
|
60
|
+
code,
|
|
61
|
+
severity,
|
|
62
|
+
message,
|
|
63
|
+
type: msg.pluginName,
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
return [
|
|
68
|
+
...(result.errors?.map((msg) => convertFn(msg, "error")) ?? []),
|
|
69
|
+
...(result.warnings?.map((msg) => convertFn(msg, "warning")) ?? []),
|
|
70
|
+
];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static convertToBuildMessagesFromEslint(results: ESLint.LintResult[]): ISdBuildMessage[] {
|
|
74
|
+
return results.mapMany((result) =>
|
|
75
|
+
result.messages.map((msg) => ({
|
|
76
|
+
filePath: PathUtil.norm(result.filePath),
|
|
77
|
+
line: msg.line,
|
|
78
|
+
char: msg.column,
|
|
79
|
+
code: msg.messageId,
|
|
80
|
+
severity: msg.severity === 1 ? ("warning" as const) : ("error" as const),
|
|
81
|
+
message: msg.message + (Boolean(msg.ruleId) ? ` (${msg.ruleId})` : ``),
|
|
82
|
+
type: "lint" as const,
|
|
83
|
+
})),
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static convertToEsbuildFromBuildMessages(
|
|
88
|
+
messages: ISdBuildMessage[],
|
|
89
|
+
orgPath: string,
|
|
90
|
+
): {
|
|
91
|
+
errors: PartialMessage[];
|
|
92
|
+
warnings: PartialMessage[];
|
|
93
|
+
} {
|
|
94
|
+
return {
|
|
95
|
+
errors: messages
|
|
96
|
+
.filter((msg) => msg.severity === "error")
|
|
97
|
+
.map((msg) => ({
|
|
98
|
+
id: msg.code,
|
|
99
|
+
pluginName: msg.type,
|
|
100
|
+
text: msg.message,
|
|
101
|
+
location: {
|
|
102
|
+
file: Boolean(msg.filePath) ? path.relative(orgPath, msg.filePath!) : undefined,
|
|
103
|
+
line: msg.line,
|
|
104
|
+
column: msg.char,
|
|
105
|
+
},
|
|
106
|
+
})),
|
|
107
|
+
warnings: messages
|
|
108
|
+
.filter((msg) => msg.severity !== "error")
|
|
109
|
+
.map((msg) => ({
|
|
110
|
+
id: msg.code,
|
|
111
|
+
pluginName: msg.type,
|
|
112
|
+
text: msg.message,
|
|
113
|
+
location: {
|
|
114
|
+
file: Boolean(msg.filePath) ? path.relative(orgPath, msg.filePath!) : undefined,
|
|
115
|
+
line: msg.line,
|
|
116
|
+
column: msg.char,
|
|
117
|
+
},
|
|
118
|
+
})),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
static convertToEsbuildFromEslint(
|
|
123
|
+
results: ESLint.LintResult[],
|
|
124
|
+
orgPath: string,
|
|
125
|
+
): {
|
|
126
|
+
errors: PartialMessage[];
|
|
127
|
+
warnings: PartialMessage[];
|
|
128
|
+
} {
|
|
129
|
+
return {
|
|
130
|
+
errors: results.mapMany((r) =>
|
|
131
|
+
r.messages
|
|
132
|
+
.filter((m) => m.severity === 2)
|
|
133
|
+
.map((m) => {
|
|
134
|
+
return {
|
|
135
|
+
pluginName: "lint",
|
|
136
|
+
text: m.messageId + ": " + m.message + (Boolean(m.ruleId) ? ` (${m.ruleId})` : ``),
|
|
137
|
+
location: {
|
|
138
|
+
file: path.relative(orgPath, r.filePath),
|
|
139
|
+
line: m.line,
|
|
140
|
+
column: m.column,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}),
|
|
144
|
+
),
|
|
145
|
+
warnings: results.mapMany((r) =>
|
|
146
|
+
r.messages
|
|
147
|
+
.filter((m) => m.severity !== 2)
|
|
148
|
+
.map((m) => {
|
|
149
|
+
return {
|
|
150
|
+
pluginName: "lint",
|
|
151
|
+
text: m.messageId + ": " + m.message + (Boolean(m.ruleId) ? ` (${m.ruleId})` : ``),
|
|
152
|
+
location: {
|
|
153
|
+
file: path.relative(orgPath, r.filePath),
|
|
154
|
+
line: m.line,
|
|
155
|
+
column: m.column,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}),
|
|
159
|
+
),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
static getBuildMessageString(result: ISdBuildMessage): string {
|
|
164
|
+
let str = "";
|
|
165
|
+
if (result.filePath !== undefined) {
|
|
166
|
+
str += `${result.filePath}(${result.line ?? 0}, ${result.char ?? 0}): `;
|
|
167
|
+
}
|
|
168
|
+
str += `[${result.type}] `;
|
|
169
|
+
str += `${result.severity} `;
|
|
170
|
+
if (result.code !== undefined) {
|
|
171
|
+
str += `${result.code} `;
|
|
172
|
+
}
|
|
173
|
+
str += `: ${result.message}`;
|
|
174
|
+
|
|
175
|
+
return str;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createSdWorker, Logger, LoggerSeverity, TNormPath } from "@simplysm/sd-core-node";
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
import { SdTsCompiler } from "../ts-builder/SdTsCompiler";
|
|
4
|
+
import { TSdTsCompileWorkerType } from "../types/workers.type";
|
|
5
|
+
import { SdTsCompilerOptions } from "../types/ts-compiler.type";
|
|
6
|
+
|
|
7
|
+
Error.stackTraceLimit = Infinity;
|
|
8
|
+
EventEmitter.defaultMaxListeners = 0;
|
|
9
|
+
|
|
10
|
+
if (process.env["SD_DEBUG"] != null) {
|
|
11
|
+
Logger.setConfig({
|
|
12
|
+
console: {
|
|
13
|
+
level: LoggerSeverity.debug,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
Logger.setConfig({
|
|
18
|
+
dot: true,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
let compiler: SdTsCompiler;
|
|
23
|
+
|
|
24
|
+
createSdWorker<TSdTsCompileWorkerType>({
|
|
25
|
+
initialize(opt: SdTsCompilerOptions) {
|
|
26
|
+
compiler = new SdTsCompiler(opt);
|
|
27
|
+
},
|
|
28
|
+
async compile(modifiedFileSet?: Set<TNormPath>) {
|
|
29
|
+
return await compiler.compileAsync(modifiedFileSet);
|
|
30
|
+
},
|
|
31
|
+
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { createSdWorker, FsUtil, Logger, LoggerSeverity, PathUtil } from "@simplysm/sd-core-node";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { ESLint } from "eslint";
|
|
4
|
+
import { EventEmitter } from "events";
|
|
5
|
+
import { TSdLintWorkerType } from "../types/workers.type";
|
|
6
|
+
|
|
7
|
+
Error.stackTraceLimit = Infinity;
|
|
8
|
+
EventEmitter.defaultMaxListeners = 0;
|
|
9
|
+
|
|
10
|
+
if (process.env["SD_DEBUG"] != null) {
|
|
11
|
+
Logger.setConfig({
|
|
12
|
+
console: {
|
|
13
|
+
level: LoggerSeverity.debug,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
} else {
|
|
17
|
+
Logger.setConfig({
|
|
18
|
+
dot: true,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
createSdWorker<TSdLintWorkerType>({
|
|
23
|
+
async lint(opt: { cwd: string; fileSet: Set<string> }) {
|
|
24
|
+
const isTsPackage = FsUtil.exists(path.resolve(opt.cwd, "tsconfig.json"));
|
|
25
|
+
|
|
26
|
+
const lintFilePaths = Array.from(opt.fileSet)
|
|
27
|
+
.filter((item) => PathUtil.isChildPath(item, opt.cwd))
|
|
28
|
+
.filter(
|
|
29
|
+
(item) =>
|
|
30
|
+
(isTsPackage && !item.endsWith(".d.ts") && item.endsWith(".ts")) ||
|
|
31
|
+
item.endsWith(".js") ||
|
|
32
|
+
item.endsWith(".tsx") ||
|
|
33
|
+
item.endsWith(".jsx"),
|
|
34
|
+
)
|
|
35
|
+
.filter((item) => FsUtil.exists(item));
|
|
36
|
+
|
|
37
|
+
if (lintFilePaths.length === 0) {
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const linter = new ESLint({ cwd: opt.cwd, cache: false });
|
|
42
|
+
return await linter.lintFiles(lintFilePaths);
|
|
43
|
+
},
|
|
44
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { pathToFileURL } from "url";
|
|
3
|
+
import { SdServiceServer } from "@simplysm/sd-service-server";
|
|
4
|
+
import { createSdWorker, Logger, LoggerSeverity } from "@simplysm/sd-core-node";
|
|
5
|
+
import { EventEmitter } from "events";
|
|
6
|
+
import { TServerWorkerType } from "../types/workers.type";
|
|
7
|
+
|
|
8
|
+
Error.stackTraceLimit = Infinity;
|
|
9
|
+
EventEmitter.defaultMaxListeners = 0;
|
|
10
|
+
|
|
11
|
+
if (process.env["SD_DEBUG"] != null) {
|
|
12
|
+
Logger.setConfig({
|
|
13
|
+
console: {
|
|
14
|
+
level: LoggerSeverity.debug,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
} else {
|
|
18
|
+
Logger.setConfig({
|
|
19
|
+
dot: true,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
let server: SdServiceServer;
|
|
24
|
+
|
|
25
|
+
createSdWorker<TServerWorkerType>({
|
|
26
|
+
async listen(pkgInfo: { path: string } | { port: number }) {
|
|
27
|
+
if ("path" in pkgInfo) {
|
|
28
|
+
const mainFilePath = path.resolve(pkgInfo.path, "dist/main.js");
|
|
29
|
+
const serverModule = await import(pathToFileURL(mainFilePath).href);
|
|
30
|
+
const currServer = serverModule.default as SdServiceServer | undefined;
|
|
31
|
+
if (currServer == null) {
|
|
32
|
+
throw new Error(`${mainFilePath}(0, 0): 'SdServiceServer'를 'export'해야 합니다.`);
|
|
33
|
+
}
|
|
34
|
+
server = currServer;
|
|
35
|
+
} else {
|
|
36
|
+
server = new SdServiceServer({
|
|
37
|
+
rootPath: process.cwd(),
|
|
38
|
+
services: [],
|
|
39
|
+
port: pkgInfo.port,
|
|
40
|
+
});
|
|
41
|
+
await server.listenAsync();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return server.options.port;
|
|
45
|
+
},
|
|
46
|
+
setPathProxy(pathProxy: Record<string, string | number>) {
|
|
47
|
+
server.pathProxy = pathProxy;
|
|
48
|
+
},
|
|
49
|
+
broadcastReload(changedFileSet: Set<string>) {
|
|
50
|
+
server.broadcastReload(changedFileSet);
|
|
51
|
+
},
|
|
52
|
+
});
|
package/tsconfig.json
CHANGED
|
@@ -5,5 +5,11 @@
|
|
|
5
5
|
"outDir": "./dist",
|
|
6
6
|
"types": ["node", "eslint", "yargs"]
|
|
7
7
|
},
|
|
8
|
-
"files": [
|
|
8
|
+
"files": [
|
|
9
|
+
"./src/index.ts",
|
|
10
|
+
"./src/sd-cli.ts",
|
|
11
|
+
"./src/workers/compile-worker.ts",
|
|
12
|
+
"./src/workers/lint-worker.ts",
|
|
13
|
+
"./src/workers/server-worker.ts"
|
|
14
|
+
]
|
|
9
15
|
}
|