@simplysm/sd-cli 7.0.247 → 7.0.263
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -0
- package/dist/bin/sd-cli.mjs +171 -13
- package/dist/build-tool/SdCliElectron.mjs +3 -2
- package/dist/builder/SdCliClientBuilder.mjs +33 -35
- package/dist/builder/SdCliServerBuilder.d.ts +1 -0
- package/dist/builder/SdCliServerBuilder.mjs +58 -22
- package/dist/builder/SdCliTsLibBuilder.mjs +18 -12
- package/dist/commons.d.ts +9 -1
- package/dist/entry-points/SdCliProjectGenerator.d.ts +37 -0
- package/dist/entry-points/SdCliProjectGenerator.mjs +288 -0
- package/dist/entry-points/SdCliWorkspace.d.ts +6 -3
- package/dist/entry-points/SdCliWorkspace.mjs +147 -120
- package/dist/entry-points/file/base/fc_package_eslintrc.d.ts +3 -0
- package/dist/entry-points/file/base/fc_package_eslintrc.mjs +31 -0
- package/dist/entry-points/file/base/fc_package_npmconfig.d.ts +9 -0
- package/dist/entry-points/file/base/fc_package_npmconfig.mjs +32 -0
- package/dist/entry-points/file/base/fc_package_tsconfig.d.ts +4 -0
- package/dist/entry-points/file/base/fc_package_tsconfig.mjs +12 -0
- package/dist/entry-points/file/client/fc_package_AppModule.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_AppModule.mjs +37 -0
- package/dist/entry-points/file/client/fc_package_AppPage.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_AppPage.mjs +34 -0
- package/dist/entry-points/file/client/fc_package_appicons.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_appicons.mjs +6 -0
- package/dist/entry-points/file/client/fc_package_client_main.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_client_main.mjs +19 -0
- package/dist/entry-points/file/client/fc_package_index.d.ts +3 -0
- package/dist/entry-points/file/client/fc_package_index.mjs +88 -0
- package/dist/entry-points/file/client/fc_package_manifest.d.ts +5 -0
- package/dist/entry-points/file/client/fc_package_manifest.mjs +54 -0
- package/dist/entry-points/file/client/fc_package_polyfills.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_polyfills.mjs +11 -0
- package/dist/entry-points/file/client/fc_package_styles.d.ts +1 -0
- package/dist/entry-points/file/client/fc_package_styles.mjs +7 -0
- package/dist/entry-points/file/db/fc_package_DbContext.d.ts +3 -0
- package/dist/entry-points/file/db/fc_package_DbContext.mjs +14 -0
- package/dist/entry-points/file/db/fc_package_DbModel.d.ts +4 -0
- package/dist/entry-points/file/db/fc_package_DbModel.mjs +12 -0
- package/dist/entry-points/file/project/fc_project_editor_config.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_editor_config.mjs +22 -0
- package/dist/entry-points/file/project/fc_project_eslintrc.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_eslintrc.mjs +30 -0
- package/dist/entry-points/file/project/fc_project_gitattributes.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_gitattributes.mjs +6 -0
- package/dist/entry-points/file/project/fc_project_gitignore.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_gitignore.mjs +17 -0
- package/dist/entry-points/file/project/fc_project_npmconfig.d.ts +7 -0
- package/dist/entry-points/file/project/fc_project_npmconfig.mjs +35 -0
- package/dist/entry-points/file/project/fc_project_readme.d.ts +3 -0
- package/dist/entry-points/file/project/fc_project_readme.mjs +12 -0
- package/dist/entry-points/file/project/fc_project_simplysm.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_simplysm.mjs +2 -0
- package/dist/entry-points/file/project/fc_project_tsconfig.d.ts +1 -0
- package/dist/entry-points/file/project/fc_project_tsconfig.mjs +26 -0
- package/dist/entry-points/file/server/fc_package_server_main.d.ts +4 -0
- package/dist/entry-points/file/server/fc_package_server_main.mjs +60 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.mjs +24 -1
- package/dist/packages/SdCliPackage.d.ts +1 -0
- package/dist/packages/SdCliPackage.mjs +68 -62
- package/dist/utils/SdCliBuildResultUtil.mjs +2 -2
- package/dist/worker/server-worker.d.ts +1 -0
- package/dist/worker/server-worker.mjs +67 -0
- package/package.json +10 -8
- package/src/bin/sd-cli.ts +198 -12
- package/src/build-tool/SdCliElectron.ts +2 -1
- package/src/builder/SdCliClientBuilder.ts +36 -36
- package/src/builder/SdCliJsLibBuilder.ts +70 -70
- package/src/builder/SdCliServerBuilder.ts +58 -20
- package/src/builder/SdCliTsLibBuilder.ts +450 -445
- package/src/commons.ts +7 -1
- package/src/entry-points/SdCliProjectGenerator.ts +353 -0
- package/src/entry-points/SdCliWorkspace.ts +171 -137
- package/src/entry-points/file/assets/assets/icons/icon-128x128.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-144x144.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-152x152.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-192x192.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-384x384.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-512x512.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-72x72.png +0 -0
- package/src/entry-points/file/assets/assets/icons/icon-96x96.png +0 -0
- package/src/entry-points/file/assets/favicon.ico +0 -0
- package/src/entry-points/file/base/fc_package_eslintrc.ts +30 -0
- package/src/entry-points/file/base/fc_package_npmconfig.ts +43 -0
- package/src/entry-points/file/base/fc_package_tsconfig.ts +11 -0
- package/src/entry-points/file/client/fc_package_AppModule.ts +36 -0
- package/src/entry-points/file/client/fc_package_AppPage.ts +33 -0
- package/src/entry-points/file/client/fc_package_appicons.ts +5 -0
- package/src/entry-points/file/client/fc_package_client_main.ts +18 -0
- package/src/entry-points/file/client/fc_package_index.ts +87 -0
- package/src/entry-points/file/client/fc_package_manifest.ts +53 -0
- package/src/entry-points/file/client/fc_package_polyfills.ts +10 -0
- package/src/entry-points/file/client/fc_package_styles.ts +6 -0
- package/src/entry-points/file/db/fc_package_DbContext.ts +14 -0
- package/src/entry-points/file/db/fc_package_DbModel.ts +11 -0
- package/src/entry-points/file/project/fc_project_editor_config.ts +21 -0
- package/src/entry-points/file/project/fc_project_eslintrc.ts +29 -0
- package/src/entry-points/file/project/fc_project_gitattributes.ts +5 -0
- package/src/entry-points/file/project/fc_project_gitignore.ts +16 -0
- package/src/entry-points/file/project/fc_project_npmconfig.ts +34 -0
- package/src/entry-points/file/project/fc_project_readme.ts +11 -0
- package/src/entry-points/file/project/fc_project_simplysm.ts +1 -0
- package/src/entry-points/file/project/fc_project_tsconfig.ts +25 -0
- package/src/entry-points/file/server/fc_package_server_main.ts +62 -0
- package/src/index.ts +23 -0
- package/src/packages/SdCliPackage.ts +75 -58
- package/src/utils/SdCliBuildResultUtil.ts +76 -76
- package/src/worker/server-worker.ts +72 -0
- package/tsconfig-build.json +2 -1
- package/tsconfig.json +2 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export const fc_package_index = (opt: { description: string }): string => /* language=html */ `
|
|
2
|
+
|
|
3
|
+
<!doctype html>
|
|
4
|
+
<html lang="ko">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<title>${opt.description}</title>
|
|
8
|
+
<meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover">
|
|
9
|
+
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
|
|
10
|
+
<meta name="format-detection" content="telephone=no">
|
|
11
|
+
<meta name="msapplication-tap-highlight" content="no">
|
|
12
|
+
</head>
|
|
13
|
+
<body>
|
|
14
|
+
<app-root>
|
|
15
|
+
<style>
|
|
16
|
+
*,
|
|
17
|
+
*:after,
|
|
18
|
+
*:before {
|
|
19
|
+
box-sizing: border-box;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
html, body {
|
|
23
|
+
padding: 0;
|
|
24
|
+
margin: 0;
|
|
25
|
+
background: #f5f5f5;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.app-loader-bar {
|
|
29
|
+
position: fixed;
|
|
30
|
+
top: 0;
|
|
31
|
+
left: 0;
|
|
32
|
+
height: 2px;
|
|
33
|
+
width: 100%;
|
|
34
|
+
background-color: white;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.app-loader-bar > div {
|
|
38
|
+
position: fixed;
|
|
39
|
+
top: 0;
|
|
40
|
+
left: 0;
|
|
41
|
+
display: inline-block;
|
|
42
|
+
height: 2px;
|
|
43
|
+
width: 100%;
|
|
44
|
+
|
|
45
|
+
transform-origin: left;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.app-loader-bar > div:first-child {
|
|
49
|
+
background-color: #3f51b5;
|
|
50
|
+
animation: app-loader-bar-1 2s infinite ease-in;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.app-loader-bar > div:last-child {
|
|
54
|
+
background-color: white;
|
|
55
|
+
animation: app-loader-bar-2 2s infinite ease-out;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@keyframes app-loader-bar-1 {
|
|
59
|
+
0% {
|
|
60
|
+
transform: scaleX(0);
|
|
61
|
+
}
|
|
62
|
+
60%, 100% {
|
|
63
|
+
transform: scaleX(1.0);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@keyframes app-loader-bar-2 {
|
|
68
|
+
0%, 50% {
|
|
69
|
+
transform: scaleX(0);
|
|
70
|
+
}
|
|
71
|
+
100% {
|
|
72
|
+
transform: scaleX(1.0);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
</style>
|
|
76
|
+
|
|
77
|
+
<div class="app-loader-bar">
|
|
78
|
+
<div></div>
|
|
79
|
+
<div></div>
|
|
80
|
+
</div>
|
|
81
|
+
</app-root>
|
|
82
|
+
|
|
83
|
+
<noscript>Please enable JavaScript to continue using this application.</noscript>
|
|
84
|
+
</body>
|
|
85
|
+
</html>
|
|
86
|
+
|
|
87
|
+
`.trim();
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const fc_package_manifest = (opt: { author: string; description: string; version: string }): string => JSON.stringify({
|
|
2
|
+
"name": opt.description,
|
|
3
|
+
"short_name": opt.description,
|
|
4
|
+
"version": opt.version,
|
|
5
|
+
"description": opt.description,
|
|
6
|
+
"author": opt.author,
|
|
7
|
+
"theme_color": "#263238",
|
|
8
|
+
"background_color": "#f5f5f5",
|
|
9
|
+
"display": "standalone",
|
|
10
|
+
"start_url": "index.html",
|
|
11
|
+
"icons": [
|
|
12
|
+
{
|
|
13
|
+
"src": "assets/icons/icon-72x72.png",
|
|
14
|
+
"sizes": "72x72",
|
|
15
|
+
"type": "image/png"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"src": "assets/icons/icon-96x96.png",
|
|
19
|
+
"sizes": "96x96",
|
|
20
|
+
"type": "image/png"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"src": "assets/icons/icon-128x128.png",
|
|
24
|
+
"sizes": "128x128",
|
|
25
|
+
"type": "image/png"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"src": "assets/icons/icon-144x144.png",
|
|
29
|
+
"sizes": "144x144",
|
|
30
|
+
"type": "image/png"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"src": "assets/icons/icon-152x152.png",
|
|
34
|
+
"sizes": "152x152",
|
|
35
|
+
"type": "image/png"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"src": "assets/icons/icon-192x192.png",
|
|
39
|
+
"sizes": "192x192",
|
|
40
|
+
"type": "image/png"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"src": "assets/icons/icon-384x384.png",
|
|
44
|
+
"sizes": "384x384",
|
|
45
|
+
"type": "image/png"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"src": "assets/icons/icon-512x512.png",
|
|
49
|
+
"sizes": "512x512",
|
|
50
|
+
"type": "image/png"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}, undefined, 2);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { StringUtil } from "@simplysm/sd-core-common";
|
|
2
|
+
|
|
3
|
+
export const fc_package_DbContext = (opt: { name: string }): string => /* language=ts */ `
|
|
4
|
+
|
|
5
|
+
import { Type } from "@simplysm/sd-core-common";
|
|
6
|
+
import { IDbMigration, DbContext } from "@simplysm/sd-orm-common";
|
|
7
|
+
|
|
8
|
+
export class ${StringUtil.toPascalCase(opt.name)}DbContext extends DbContext {
|
|
9
|
+
public get migrations(): Type<IDbMigration>[] {
|
|
10
|
+
return [];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
`.trim();
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const fc_package_DbModel = (opt: { name: string; description: string }): string => /* language=ts */ `
|
|
2
|
+
|
|
3
|
+
import { Column, Table } from "@simplysm/sd-orm-common";
|
|
4
|
+
|
|
5
|
+
@Table({ description: "${opt.description}" })
|
|
6
|
+
export class ${opt.name} {
|
|
7
|
+
@Column({ description: "ID", autoIncrement: true, primaryKey: 1 })
|
|
8
|
+
public id?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
`.trim();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const fc_project_editor_config = (): string => /* language=editorconfig */ `
|
|
2
|
+
|
|
3
|
+
root = true
|
|
4
|
+
|
|
5
|
+
[*]
|
|
6
|
+
end_of_line = lf
|
|
7
|
+
insert_final_newline = true
|
|
8
|
+
|
|
9
|
+
charset = utf-8
|
|
10
|
+
indent_style = space
|
|
11
|
+
indent_size = 2
|
|
12
|
+
|
|
13
|
+
ij_any_else_on_new_line = true
|
|
14
|
+
ij_any_catch_on_new_line = true
|
|
15
|
+
ij_any_finally_on_new_line = true
|
|
16
|
+
ij_typescript_spaces_within_object_literal_braces = true
|
|
17
|
+
ij_typescript_spaces_within_imports = true
|
|
18
|
+
ij_javascript_spaces_within_object_literal_braces = true
|
|
19
|
+
ij_javascript_spaces_within_imports = true
|
|
20
|
+
|
|
21
|
+
`.trim();
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export const fc_project_eslintrc = (): string => /* language=cjs */ `
|
|
2
|
+
|
|
3
|
+
module.exports = {
|
|
4
|
+
root: true,
|
|
5
|
+
ignorePatterns: [
|
|
6
|
+
"**/node_modules/**",
|
|
7
|
+
"**/dist/**",
|
|
8
|
+
"**/.*/**"
|
|
9
|
+
],
|
|
10
|
+
overrides: [
|
|
11
|
+
{
|
|
12
|
+
files: ["*.js", "*.cjs", "*.mjs"],
|
|
13
|
+
extends: ["plugin:@simplysm/base"]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
files: ["*.mjs"],
|
|
17
|
+
parserOptions: {
|
|
18
|
+
ecmaVersion: 2020,
|
|
19
|
+
sourceType: "module"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
files: ["*.ts"],
|
|
24
|
+
extends: ["plugin:@simplysm/typescript"]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
`.trim();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const fc_project_gitignore = (): string => /* language=gitignore */ `
|
|
2
|
+
|
|
3
|
+
.idea/**/workspace.xml
|
|
4
|
+
.idea/shelf
|
|
5
|
+
node_modules
|
|
6
|
+
tsconfig-build.json
|
|
7
|
+
dist
|
|
8
|
+
.cache
|
|
9
|
+
.cordova
|
|
10
|
+
_logs
|
|
11
|
+
_modules
|
|
12
|
+
_routes.ts
|
|
13
|
+
~$*.xlsx
|
|
14
|
+
.*
|
|
15
|
+
|
|
16
|
+
`.trim();
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const fc_project_npmconfig = (opt: { name: string; description: string; author: string; gitUrl: string; cliVersion?: string }): string => JSON.stringify({
|
|
2
|
+
name: opt.name,
|
|
3
|
+
version: "1.0.0",
|
|
4
|
+
description: opt.description,
|
|
5
|
+
author: opt.author,
|
|
6
|
+
repository: {
|
|
7
|
+
type: "git",
|
|
8
|
+
url: opt.gitUrl
|
|
9
|
+
},
|
|
10
|
+
type: "module",
|
|
11
|
+
license: "UNLICENSED",
|
|
12
|
+
private: true,
|
|
13
|
+
engines: {
|
|
14
|
+
node: "^16"
|
|
15
|
+
},
|
|
16
|
+
workspaces: [
|
|
17
|
+
"packages/*"
|
|
18
|
+
],
|
|
19
|
+
scripts: {
|
|
20
|
+
"watch": "sd-cli watch",
|
|
21
|
+
"build": "sd-cli build",
|
|
22
|
+
"publish": "sd-cli publish",
|
|
23
|
+
"----- utils": "",
|
|
24
|
+
"postinstall": "sd-cli prepare"
|
|
25
|
+
},
|
|
26
|
+
devDependencies: {
|
|
27
|
+
"@simplysm/eslint-plugin": "~7.0.0",
|
|
28
|
+
"@simplysm/sd-cli": opt.cliVersion ?? "~7.0.0",
|
|
29
|
+
"@types/node": "^17.0.12",
|
|
30
|
+
"cross-env": "^7.0.3",
|
|
31
|
+
"eslint": "^8.7.0",
|
|
32
|
+
"typescript": "~4.5.5"
|
|
33
|
+
}
|
|
34
|
+
}, undefined, 2);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const fc_project_simplysm = (): string => JSON.stringify({}, undefined, 2);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export const fc_project_tsconfig = (): string => JSON.stringify({
|
|
2
|
+
compilerOptions: {
|
|
3
|
+
declaration: true,
|
|
4
|
+
downlevelIteration: true,
|
|
5
|
+
experimentalDecorators: true,
|
|
6
|
+
emitDecoratorMetadata: true,
|
|
7
|
+
module: "ES2020",
|
|
8
|
+
target: "ES2020",
|
|
9
|
+
strict: true,
|
|
10
|
+
moduleResolution: "node",
|
|
11
|
+
esModuleInterop: true,
|
|
12
|
+
noImplicitOverride: true,
|
|
13
|
+
noImplicitReturns: true,
|
|
14
|
+
noImplicitAny: false,
|
|
15
|
+
useUnknownInCatchVariables: false,
|
|
16
|
+
noFallthroughCasesInSwitch: true,
|
|
17
|
+
inlineSourceMap: true,
|
|
18
|
+
skipDefaultLibCheck: true,
|
|
19
|
+
skipLibCheck: true,
|
|
20
|
+
forceConsistentCasingInFileNames: true,
|
|
21
|
+
noPropertyAccessFromIndexSignature: true,
|
|
22
|
+
importHelpers: true,
|
|
23
|
+
noUnusedLocals: true
|
|
24
|
+
}
|
|
25
|
+
}, undefined, 2);
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import { INpmConfig } from "../../../commons";
|
|
3
|
+
import { FsUtil } from "@simplysm/sd-core-node";
|
|
4
|
+
|
|
5
|
+
export const fc_package_server_main = (opt: { projPath: string; pkgName: string }): string => {
|
|
6
|
+
const projNpmConfig = FsUtil.readJson(path.resolve(opt.projPath, "package.json")) as INpmConfig;
|
|
7
|
+
|
|
8
|
+
return /* language=ts */ `
|
|
9
|
+
|
|
10
|
+
import { SdServiceServer } from "@simplysm/sd-service-server";
|
|
11
|
+
import { Logger, LoggerSeverity } from "@simplysm/sd-core-node";
|
|
12
|
+
import path from "path";
|
|
13
|
+
|
|
14
|
+
Error.stackTraceLimit = Infinity;
|
|
15
|
+
|
|
16
|
+
if (process.env["NODE_ENV"] === "production") {
|
|
17
|
+
Logger.setConfig({
|
|
18
|
+
console: {
|
|
19
|
+
level: LoggerSeverity.none
|
|
20
|
+
},
|
|
21
|
+
file: {
|
|
22
|
+
level: LoggerSeverity.debug,
|
|
23
|
+
outDir: path.resolve(__dirname, "_logs")
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
else if (process.env["SD_CLI_LOGGER_SEVERITY"] === "DEBUG") {
|
|
28
|
+
Logger.setConfig({
|
|
29
|
+
console: {
|
|
30
|
+
level: LoggerSeverity.debug
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
Logger.setConfig({
|
|
36
|
+
console: {
|
|
37
|
+
level: LoggerSeverity.log,
|
|
38
|
+
},
|
|
39
|
+
file: {
|
|
40
|
+
level: LoggerSeverity.debug,
|
|
41
|
+
outDir: path.resolve(process.cwd(), "_logs")
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const server = new SdServiceServer({
|
|
47
|
+
rootPath: __dirname,
|
|
48
|
+
services: [],
|
|
49
|
+
port: 50180
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const logger = Logger.get(["${projNpmConfig.name}", "${opt.pkgName}"]);
|
|
53
|
+
|
|
54
|
+
server.listenAsync().catch((err) => {
|
|
55
|
+
logger.error(err);
|
|
56
|
+
process.exit(1);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
export = server;
|
|
60
|
+
|
|
61
|
+
`.trim();
|
|
62
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -10,10 +10,33 @@ export * from "./builder/SdCliJsLibBuilder";
|
|
|
10
10
|
export * from "./builder/SdCliServerBuilder";
|
|
11
11
|
export * from "./builder/SdCliTsLibBuilder";
|
|
12
12
|
export * from "./commons";
|
|
13
|
+
export * from "./entry-points/file/base/fc_package_eslintrc";
|
|
14
|
+
export * from "./entry-points/file/base/fc_package_npmconfig";
|
|
15
|
+
export * from "./entry-points/file/base/fc_package_tsconfig";
|
|
16
|
+
export * from "./entry-points/file/client/fc_package_appicons";
|
|
17
|
+
export * from "./entry-points/file/client/fc_package_AppModule";
|
|
18
|
+
export * from "./entry-points/file/client/fc_package_AppPage";
|
|
19
|
+
export * from "./entry-points/file/client/fc_package_client_main";
|
|
20
|
+
export * from "./entry-points/file/client/fc_package_index";
|
|
21
|
+
export * from "./entry-points/file/client/fc_package_manifest";
|
|
22
|
+
export * from "./entry-points/file/client/fc_package_polyfills";
|
|
23
|
+
export * from "./entry-points/file/client/fc_package_styles";
|
|
24
|
+
export * from "./entry-points/file/db/fc_package_DbContext";
|
|
25
|
+
export * from "./entry-points/file/db/fc_package_DbModel";
|
|
26
|
+
export * from "./entry-points/file/project/fc_project_editor_config";
|
|
27
|
+
export * from "./entry-points/file/project/fc_project_eslintrc";
|
|
28
|
+
export * from "./entry-points/file/project/fc_project_gitattributes";
|
|
29
|
+
export * from "./entry-points/file/project/fc_project_gitignore";
|
|
30
|
+
export * from "./entry-points/file/project/fc_project_npmconfig";
|
|
31
|
+
export * from "./entry-points/file/project/fc_project_readme";
|
|
32
|
+
export * from "./entry-points/file/project/fc_project_simplysm";
|
|
33
|
+
export * from "./entry-points/file/project/fc_project_tsconfig";
|
|
34
|
+
export * from "./entry-points/file/server/fc_package_server_main";
|
|
13
35
|
export * from "./entry-points/SdCliFileCrypto";
|
|
14
36
|
export * from "./entry-points/SdCliLocalUpdate";
|
|
15
37
|
export * from "./entry-points/SdCliNpm";
|
|
16
38
|
export * from "./entry-points/SdCliPrepare";
|
|
39
|
+
export * from "./entry-points/SdCliProjectGenerator";
|
|
17
40
|
export * from "./entry-points/SdCliWorkspace";
|
|
18
41
|
export * from "./ng-tools/babel/SdCliBbFileMetadata";
|
|
19
42
|
export * from "./ng-tools/babel/SdCliBbRootMetadata";
|
|
@@ -74,41 +74,27 @@ export class SdCliPackage extends EventEmitter {
|
|
|
74
74
|
await this._genBuildTsconfigAsync();
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.rootPath,
|
|
82
|
-
JsonConvert.stringify(this.config),
|
|
83
|
-
this._workspaceRootPath
|
|
84
|
-
], {
|
|
85
|
-
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
86
|
-
env: process.env
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
worker.on("error", (err) => {
|
|
90
|
-
reject(err);
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
worker.stdout!.pipe(process.stdout);
|
|
94
|
-
worker.stderr!.pipe(process.stderr);
|
|
95
|
-
|
|
96
|
-
worker.on("message", (json: string) => {
|
|
97
|
-
const msg = JsonConvert.parse(json);
|
|
77
|
+
await this._runBuildWorkerAsync(
|
|
78
|
+
"watch",
|
|
79
|
+
(message) => {
|
|
80
|
+
const msg = JsonConvert.parse(message);
|
|
98
81
|
if (msg.event === "ready") {
|
|
99
|
-
|
|
82
|
+
return true;
|
|
100
83
|
}
|
|
101
84
|
else if (msg.event === "change") {
|
|
102
85
|
this.emit("change");
|
|
86
|
+
return undefined;
|
|
103
87
|
}
|
|
104
88
|
else if (msg.event === "complete") {
|
|
105
89
|
this.emit("complete", msg.body);
|
|
90
|
+
return undefined;
|
|
106
91
|
}
|
|
107
92
|
else {
|
|
108
|
-
|
|
93
|
+
return new NeverEntryError();
|
|
109
94
|
}
|
|
110
|
-
}
|
|
111
|
-
|
|
95
|
+
},
|
|
96
|
+
(err) => err
|
|
97
|
+
);
|
|
112
98
|
}
|
|
113
99
|
|
|
114
100
|
public async buildAsync(): Promise<ISdCliPackageBuildResult[]> {
|
|
@@ -118,40 +104,18 @@ export class SdCliPackage extends EventEmitter {
|
|
|
118
104
|
await this._genBuildTsconfigAsync();
|
|
119
105
|
}
|
|
120
106
|
|
|
121
|
-
|
|
122
|
-
return await new Promise<ISdCliPackageBuildResult[]>((resolve, reject) => {
|
|
123
|
-
const worker = cp.fork(workerPath, [
|
|
124
|
-
"build",
|
|
125
|
-
this.rootPath,
|
|
126
|
-
JsonConvert.stringify(this.config),
|
|
127
|
-
this._workspaceRootPath
|
|
128
|
-
], {
|
|
129
|
-
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
130
|
-
env: process.env
|
|
131
|
-
});
|
|
107
|
+
let result: ISdCliPackageBuildResult[] = [];
|
|
132
108
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
worker.on("message", (json: string) => {
|
|
143
|
-
result = JsonConvert.parse(json);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
worker.on("exit", (code) => {
|
|
147
|
-
if (code !== 0) {
|
|
148
|
-
reject(new Error(`오류와 함께 닫힘 (${code})`));
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
109
|
+
await this._runBuildWorkerAsync(
|
|
110
|
+
"build",
|
|
111
|
+
(message) => {
|
|
112
|
+
result = JsonConvert.parse(message);
|
|
113
|
+
return undefined;
|
|
114
|
+
},
|
|
115
|
+
err => err
|
|
116
|
+
);
|
|
151
117
|
|
|
152
|
-
|
|
153
|
-
});
|
|
154
|
-
});
|
|
118
|
+
return result;
|
|
155
119
|
}
|
|
156
120
|
|
|
157
121
|
public async publishAsync(): Promise<void> {
|
|
@@ -167,7 +131,11 @@ export class SdCliPackage extends EventEmitter {
|
|
|
167
131
|
}
|
|
168
132
|
else {
|
|
169
133
|
if (this.config.publish.type === "github") {
|
|
170
|
-
|
|
134
|
+
if (!this._npmConfig.repository) {
|
|
135
|
+
throw new Error("패키지의 package.json에 repository가 설정되지 않아 github로 배포할 수 없습니다.");
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
const repoUrl = this._npmConfig.repository.url;
|
|
171
139
|
const repoOwner = repoUrl.split("/").slice(-2)[0];
|
|
172
140
|
const repoName = repoUrl.split("/").slice(-2)[1].replace(/\..*/g, "");
|
|
173
141
|
|
|
@@ -239,4 +207,53 @@ export class SdCliPackage extends EventEmitter {
|
|
|
239
207
|
const buildTsconfigFilePath = path.resolve(this.rootPath, "tsconfig-build.json");
|
|
240
208
|
await FsUtil.writeJsonAsync(buildTsconfigFilePath, buildTsconfig, { space: 2 });
|
|
241
209
|
}
|
|
210
|
+
|
|
211
|
+
private async _runBuildWorkerAsync(cmd: string, success: (message: string) => undefined | true | Error, error: (err: Error) => undefined | true | Error): Promise<void> {
|
|
212
|
+
return await new Promise<void>(async (resolve, reject) => {
|
|
213
|
+
const worker = cp.fork(
|
|
214
|
+
fileURLToPath(await import.meta.resolve!("../worker/build-worker")),
|
|
215
|
+
[
|
|
216
|
+
cmd,
|
|
217
|
+
this.rootPath,
|
|
218
|
+
JsonConvert.stringify(this.config),
|
|
219
|
+
this._workspaceRootPath
|
|
220
|
+
],
|
|
221
|
+
{
|
|
222
|
+
stdio: ["pipe", "pipe", "pipe", "ipc"],
|
|
223
|
+
env: process.env
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
worker.on("error", (err) => {
|
|
227
|
+
const r = error(err);
|
|
228
|
+
if (r === true) {
|
|
229
|
+
resolve();
|
|
230
|
+
}
|
|
231
|
+
else if (r != null) {
|
|
232
|
+
reject(r);
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
worker.stdout!.pipe(process.stdout);
|
|
237
|
+
worker.stderr!.pipe(process.stderr);
|
|
238
|
+
|
|
239
|
+
worker.on("message", (json: string) => {
|
|
240
|
+
const r = success(json);
|
|
241
|
+
if (r === true) {
|
|
242
|
+
resolve();
|
|
243
|
+
}
|
|
244
|
+
else if (r != null) {
|
|
245
|
+
reject(r);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
worker.on("exit", (code) => {
|
|
250
|
+
if (code !== 0) {
|
|
251
|
+
reject(new Error(`오류와 함께 닫힘 (${code})`));
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
resolve();
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
}
|
|
242
259
|
}
|