tnp 21.0.270 → 21.0.271
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/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/browser/fesm2022/tnp-browser.mjs +7 -2
- package/browser/fesm2022/tnp-browser.mjs.map +1 -1
- package/browser/package.json +1 -1
- package/browser/types/tnp-browser.d.ts +3 -4
- package/browser-prod/fesm2022/tnp-browser-prod.mjs +7 -2
- package/browser-prod/fesm2022/tnp-browser-prod.mjs.map +1 -1
- package/browser-prod/package.json +1 -1
- package/browser-prod/types/tnp-browser-prod.d.ts +3 -4
- package/browser-prod/types/tnp-browser-prod.d.ts.map +1 -1
- package/cli.js +43187 -49939
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/options.d.ts +0 -2
- package/lib/options.js +6 -3
- package/lib/options.js.map +1 -1
- package/lib/package.json +1 -1
- package/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js +121 -117
- package/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js.map +1 -1
- package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-browser.js.map +1 -1
- package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js +3 -3
- package/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js.map +1 -1
- package/lib/project/abstract/ignore-hide.js +2 -0
- package/lib/project/abstract/ignore-hide.js.map +1 -1
- package/lib/project/abstract/node-modules.js +1 -1
- package/lib/project/abstract/node-modules.js.map +1 -1
- package/lib/project/abstract/taon-worker/deployments/deployments.controller.d.ts +2 -2
- package/lib/project/abstract/taon-worker/deployments/deployments.controller.js +8 -6
- package/lib/project/abstract/taon-worker/deployments/deployments.controller.js.map +1 -1
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.controller.js +2 -2
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.controller.js.map +1 -1
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.d.ts +1 -0
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.js +14 -8
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.js.map +1 -1
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js +2 -2
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js.map +1 -1
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.utils.js +1 -1
- package/lib/project/abstract/taon-worker/dev-mode/dev-mode.utils.js.map +1 -1
- package/lib/start-cli.js +25 -32
- package/lib/start-cli.js.map +1 -1
- package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib-esm/lib/build-info._auto-generated_.js +1 -1
- package/lib-esm/lib/options.d.ts +0 -2
- package/lib-esm/lib/options.js +6 -3
- package/lib-esm/lib/options.js.map +1 -1
- package/lib-esm/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js +10 -6
- package/lib-esm/lib/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js.map +1 -1
- package/lib-esm/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-browser.js.map +1 -1
- package/lib-esm/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js +3 -3
- package/lib-esm/lib/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js.map +1 -1
- package/lib-esm/lib/project/abstract/ignore-hide.js +2 -0
- package/lib-esm/lib/project/abstract/ignore-hide.js.map +1 -1
- package/lib-esm/lib/project/abstract/node-modules.js +1 -1
- package/lib-esm/lib/project/abstract/node-modules.js.map +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/deployments/deployments.controller.d.ts +2 -2
- package/lib-esm/lib/project/abstract/taon-worker/deployments/deployments.controller.js +8 -6
- package/lib-esm/lib/project/abstract/taon-worker/deployments/deployments.controller.js.map +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.controller.js +2 -2
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.controller.js.map +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.d.ts +1 -0
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.js +14 -8
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.repository.js.map +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js +2 -2
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js.map +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.utils.js +1 -1
- package/lib-esm/lib/project/abstract/taon-worker/dev-mode/dev-mode.utils.js.map +1 -1
- package/lib-esm/lib/start-cli.js +0 -7
- package/lib-esm/lib/start-cli.js.map +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/options.d.ts +0 -2
- package/lib-prod/options.js +6 -3
- package/lib-prod/options.js.map +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/project/abstract/artifacts/__helpers__/artifacts-helpers.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/__helpers__/branding.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/__helpers__/environment-config/environment-config.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/__helpers__/inside-structures-process.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js +10 -6
- package/lib-prod/project/abstract/artifacts/angular-node-app/artifact-angular-node-app.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/angular-node-app/tools/assets-manager.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/angular-node-app/tools/inside-struct-angular-app.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/artifacts-manager.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/base-artifact.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/docs-webapp/mk-docs.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/electron-app/artifact-electron-app.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/artifact-npm-lib-and-cli-tool.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/code-cut/browser-code-cut.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-isomorphic-lib/compilations/compilation-browser.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js +3 -3
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/build-leader-process.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/copy-manager/copy-manager-standalone.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/files-recreation/files-recreator.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/npm-lib-and-cli-tool/tools/inside-struct-angular-lib.js.map +1 -1
- package/lib-prod/project/abstract/artifacts/vscode-plugin/artifact-vscode-plugin.js.map +1 -1
- package/lib-prod/project/abstract/cloud-flare-projects/cloud-flare-project.js.map +1 -1
- package/lib-prod/project/abstract/ignore-hide.js +2 -0
- package/lib-prod/project/abstract/ignore-hide.js.map +1 -1
- package/lib-prod/project/abstract/node-modules.js +1 -1
- package/lib-prod/project/abstract/node-modules.js.map +1 -1
- package/lib-prod/project/abstract/project-resolve.js.map +1 -1
- package/lib-prod/project/abstract/project.js.map +1 -1
- package/lib-prod/project/abstract/quick-fixes.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/deployments/deployments.controller.d.ts +2 -2
- package/lib-prod/project/abstract/taon-worker/deployments/deployments.controller.js +8 -6
- package/lib-prod/project/abstract/taon-worker/deployments/deployments.controller.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-build/dev-build.controller.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-build/dev-build.repository.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.controller.js +2 -2
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.controller.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.repository.d.ts +1 -0
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.repository.js +14 -8
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.repository.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js +2 -2
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.terminal-ui.js.map +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.utils.js +1 -1
- package/lib-prod/project/abstract/taon-worker/dev-mode/dev-mode.utils.js.map +1 -1
- package/lib-prod/project/cli/cli-APP.js.map +1 -1
- package/lib-prod/project/cli/cli-BRANDING.js.map +1 -1
- package/lib-prod/project/cli/cli-BUILD.js.map +1 -1
- package/lib-prod/project/cli/cli-CLOUD.js.map +1 -1
- package/lib-prod/project/cli/cli-CORE.js.map +1 -1
- package/lib-prod/project/cli/cli-DOCKER.js.map +1 -1
- package/lib-prod/project/cli/cli-DOCS.js.map +1 -1
- package/lib-prod/project/cli/cli-ENV.js.map +1 -1
- package/lib-prod/project/cli/cli-FILE_SYNC.js.map +1 -1
- package/lib-prod/project/cli/cli-GENERATE.js.map +1 -1
- package/lib-prod/project/cli/cli-INIT.js.map +1 -1
- package/lib-prod/project/cli/cli-LANG.js.map +1 -1
- package/lib-prod/project/cli/cli-LINK.js.map +1 -1
- package/lib-prod/project/cli/cli-MIGRATION.js.map +1 -1
- package/lib-prod/project/cli/cli-NEW.js.map +1 -1
- package/lib-prod/project/cli/cli-OPEN.js.map +1 -1
- package/lib-prod/project/cli/cli-REFACTOR.js.map +1 -1
- package/lib-prod/project/cli/cli-RELEASE.js.map +1 -1
- package/lib-prod/project/cli/cli-SUB_PROJECT.js.map +1 -1
- package/lib-prod/project/cli/cli-TEST.js.map +1 -1
- package/lib-prod/project/cli/cli-VERSION.js.map +1 -1
- package/lib-prod/project/cli/cli-VSCODE.js.map +1 -1
- package/lib-prod/project/cli/cli-_GLOBAL_.js.map +1 -1
- package/lib-prod/start-cli.js +0 -7
- package/lib-prod/start-cli.js.map +1 -1
- package/package.json +1 -1
- package/websql/fesm2022/tnp-websql.mjs +7 -2
- package/websql/fesm2022/tnp-websql.mjs.map +1 -1
- package/websql/package.json +1 -1
- package/websql/types/tnp-websql.d.ts +3 -4
- package/websql-prod/fesm2022/tnp-websql-prod.mjs +7 -2
- package/websql-prod/fesm2022/tnp-websql-prod.mjs.map +1 -1
- package/websql-prod/package.json +1 -1
- package/websql-prod/types/tnp-websql-prod.d.ts +3 -4
- package/websql-prod/types/tnp-websql-prod.d.ts.map +1 -1
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ArtifactAngularNodeApp = void 0;
|
|
4
|
-
|
|
4
|
+
//#region imports
|
|
5
|
+
const lib_1 = require("@taon-dev/cloud/lib");
|
|
5
6
|
const lib_2 = require("tnp-core/lib");
|
|
6
7
|
const lib_3 = require("tnp-core/lib");
|
|
7
8
|
const lib_4 = require("tnp-core/lib");
|
|
8
9
|
const lib_5 = require("tnp-core/lib");
|
|
9
10
|
const lib_6 = require("tnp-core/lib");
|
|
10
|
-
const lib_7 = require("tnp-
|
|
11
|
+
const lib_7 = require("tnp-core/lib");
|
|
11
12
|
const lib_8 = require("tnp-helpers/lib");
|
|
13
|
+
const lib_9 = require("tnp-helpers/lib");
|
|
12
14
|
const app_utils_1 = require("../../../../app-utils");
|
|
13
15
|
const constants_1 = require("../../../../constants");
|
|
14
16
|
const options_1 = require("../../../../options");
|
|
15
17
|
const deployments_1 = require("../../taon-worker/deployments");
|
|
16
18
|
const deployments_utils_1 = require("../../taon-worker/deployments/deployments.utils");
|
|
17
|
-
const lib_9 = require("@taon-dev/cloud/lib");
|
|
18
19
|
const production_build_1 = require("../__helpers__/production-build");
|
|
19
20
|
const base_artifact_1 = require("../base-artifact");
|
|
20
21
|
const inside_struct_electron_1 = require("../electron-app/tools/inside-struct-electron");
|
|
@@ -75,9 +76,9 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
75
76
|
// },
|
|
76
77
|
// });
|
|
77
78
|
const copyFromCoreAssets = (fileName) => {
|
|
78
|
-
const coreSource = (0,
|
|
79
|
+
const coreSource = (0, lib_3.crossPlatformPath)([
|
|
79
80
|
this.project.ins
|
|
80
|
-
.by(
|
|
81
|
+
.by(lib_7.LibTypeEnum.ISOMORPHIC_LIB, this.project.framework.frameworkVersion)
|
|
81
82
|
.pathFor(`${(0, app_utils_1.templateFolderForArtifact)(initOptions.release.targetArtifact ===
|
|
82
83
|
options_1.ReleaseArtifactTaon.ELECTRON_APP
|
|
83
84
|
? options_1.ReleaseArtifactTaon.ELECTRON_APP
|
|
@@ -91,7 +92,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
91
92
|
browserTsCodeLib = `${browserTsCodeLib}${constants_1.prodSuffix}`;
|
|
92
93
|
}
|
|
93
94
|
const tmpDest = this.project.pathFor(`${browserTsCodeLib}/${constants_1.assetsFromNgProj}/${fileName}`);
|
|
94
|
-
|
|
95
|
+
lib_8.HelpersTaon.copyFile(coreSource, tmpDest);
|
|
95
96
|
})();
|
|
96
97
|
(() => {
|
|
97
98
|
let browserTsCodeApp = initOptions.build.websql
|
|
@@ -101,7 +102,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
101
102
|
browserTsCodeApp = `${browserTsCodeApp}${constants_1.prodSuffix}`;
|
|
102
103
|
}
|
|
103
104
|
const tmpDest = this.project.pathFor(`${browserTsCodeApp}/${constants_1.assetsFromNgProj}/${fileName}`);
|
|
104
|
-
|
|
105
|
+
lib_8.HelpersTaon.copyFile(coreSource, tmpDest);
|
|
105
106
|
})();
|
|
106
107
|
};
|
|
107
108
|
copyFromCoreAssets(constants_1.CoreAssets.sqlWasmFile);
|
|
@@ -114,18 +115,18 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
114
115
|
async buildPartial(buildOptions) {
|
|
115
116
|
//#region @backendFunc
|
|
116
117
|
// TODO @REMOVE when microfrontends for container ready
|
|
117
|
-
if (this.project.typeIsNot(
|
|
118
|
-
|
|
118
|
+
if (this.project.typeIsNot(lib_7.LibTypeEnum.ISOMORPHIC_LIB)) {
|
|
119
|
+
lib_8.Helpers.error(`Only project type isomorphic-lib can use artifact angular-node-app!`, false, true);
|
|
119
120
|
}
|
|
120
121
|
buildOptions = await this.project.artifactsManager.init(options_1.EnvOptions.from(buildOptions));
|
|
121
122
|
if (buildOptions.release.targetArtifact !==
|
|
122
123
|
options_1.ReleaseArtifactTaon.ANGULAR_NODE_APP &&
|
|
123
124
|
buildOptions.build.ssr) {
|
|
124
|
-
|
|
125
|
+
lib_8.Helpers.warn(`SSR option is not supported for artifact ${buildOptions.release.targetArtifact}, disabling SSR...`);
|
|
125
126
|
buildOptions.build.ssr = false;
|
|
126
127
|
}
|
|
127
128
|
if (buildOptions.build.ssr) {
|
|
128
|
-
|
|
129
|
+
lib_8.Helpers.info(`
|
|
129
130
|
|
|
130
131
|
NOTE: You are building APP with SSR (Server Side Rendering) enabled.
|
|
131
132
|
|
|
@@ -133,13 +134,13 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
133
134
|
}
|
|
134
135
|
const shouldSkipBuild = this.shouldSkipBuild(buildOptions);
|
|
135
136
|
//#region prevent empty base href
|
|
136
|
-
if (!
|
|
137
|
+
if (!lib_3._.isUndefined(buildOptions.build.baseHref) &&
|
|
137
138
|
!buildOptions.release.releaseType &&
|
|
138
139
|
!buildOptions.build.watch) {
|
|
139
|
-
|
|
140
|
+
lib_8.Helpers.error(`Build baseHref only can be specify when build lib code:
|
|
140
141
|
|
|
141
142
|
try commands:
|
|
142
|
-
${
|
|
143
|
+
${lib_2.config.frameworkName} build:lib --base-href ` +
|
|
143
144
|
`${buildOptions.build.baseHref} ` +
|
|
144
145
|
`# it will do lib code build
|
|
145
146
|
|
|
@@ -156,13 +157,13 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
156
157
|
const appDistOutBrowserAngularAbsPath = buildOptions.release.targetArtifact === options_1.ReleaseArtifactTaon.ELECTRON_APP
|
|
157
158
|
? angularTempProj.pathFor(constants_1.distFromNgBuild)
|
|
158
159
|
: this.getOutDirAngularBrowserAppAbsPath(buildOptions);
|
|
159
|
-
const fromFileBaseHref =
|
|
160
|
+
const fromFileBaseHref = lib_8.Helpers.readFile(this.project.pathFor(constants_1.tmpBaseHrefOverwrite));
|
|
160
161
|
buildOptions.build.baseHref = buildOptions.build.baseHref
|
|
161
162
|
? buildOptions.build.baseHref
|
|
162
163
|
: fromFileBaseHref;
|
|
163
164
|
const portAssignedToAppBuild = await this.appHostsRecreateHelper.APP_NG_SERVE_ARTIFACT_PORT_UNIQ_KEY(buildOptions);
|
|
164
165
|
if (buildOptions.build.watch) {
|
|
165
|
-
await
|
|
166
|
+
await lib_8.Helpers.killProcessByPort(portAssignedToAppBuild);
|
|
166
167
|
}
|
|
167
168
|
//#region prepare angular command
|
|
168
169
|
const outPutPathCommand = ` --output-path ${appDistOutBrowserAngularAbsPath} `;
|
|
@@ -170,7 +171,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
170
171
|
? ` --base-href ${buildOptions.build.baseHref} `
|
|
171
172
|
: '';
|
|
172
173
|
if (!buildOptions.build.watch) {
|
|
173
|
-
|
|
174
|
+
lib_8.Helpers.remove(appDistOutBrowserAngularAbsPath);
|
|
174
175
|
}
|
|
175
176
|
//#region serve command
|
|
176
177
|
const ngCloudflareWorkerPort = await this.appHostsRecreateHelper.NODE_BACKEND_PORT_UNIQ_KEY(buildOptions.clone({
|
|
@@ -187,7 +188,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
187
188
|
` --host 0.0.0.0`; // make it accessible in network for development
|
|
188
189
|
//#endregion
|
|
189
190
|
if (buildOptions.build.watch) {
|
|
190
|
-
|
|
191
|
+
lib_8.Helpers.logInfo(`Using ng serve command: ${serveCommand}`);
|
|
191
192
|
}
|
|
192
193
|
//#region build command
|
|
193
194
|
const angularBuildCommand = `${constants_1.TaonCommands.NPM_RUN_NG} build ${buildOptions.release.targetArtifact === options_1.ReleaseArtifactTaon.ELECTRON_APP
|
|
@@ -207,8 +208,8 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
207
208
|
});
|
|
208
209
|
// set correct default config for build/serve in angular.json
|
|
209
210
|
const angularJsonSelectedTask = (0, constants_1.AngularJsonAppOrElectronTaskNameResolveFor)(buildOptions);
|
|
210
|
-
|
|
211
|
-
const indexHtmlAbsPath = (0,
|
|
211
|
+
lib_8.Helpers.logInfo(`Setting angular.json default config for ${angularJsonSelectedTask} `);
|
|
212
|
+
const indexHtmlAbsPath = (0, lib_3.crossPlatformPath)([
|
|
212
213
|
tmpAppForDistRelativePath,
|
|
213
214
|
constants_1.srcNgProxyProject,
|
|
214
215
|
constants_1.CoreNgTemplateFiles.INDEX_HTML_NG_APP,
|
|
@@ -217,10 +218,10 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
217
218
|
// not needed for watch - watch uses app.hosts.ts
|
|
218
219
|
}
|
|
219
220
|
else {
|
|
220
|
-
let contentIndexHtml =
|
|
221
|
+
let contentIndexHtml = lib_8.Helpers.readFile(indexHtmlAbsPath);
|
|
221
222
|
const ENV_DATA_JSON = await this.getBrowserENVJSON(buildOptions);
|
|
222
223
|
contentIndexHtml = contentIndexHtml.replace(constants_1.ENV_INJECT_COMMENT, `<script>window.ENV = ${JSON.stringify(ENV_DATA_JSON)};</script>`);
|
|
223
|
-
|
|
224
|
+
lib_8.Helpers.writeFile(indexHtmlAbsPath, contentIndexHtml);
|
|
224
225
|
}
|
|
225
226
|
this.project.setValueToJSONC([tmpAppForDistRelativePath, constants_1.CoreNgTemplateFiles.ANGULAR_JSON], `projects.${buildOptions.release.targetArtifact === options_1.ReleaseArtifactTaon.ELECTRON_APP
|
|
226
227
|
? constants_1.AngularJsonTaskName.ELECTRON_APP
|
|
@@ -231,7 +232,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
231
232
|
this.project.remove([tmpAppForDistRelativePath, '.angular']);
|
|
232
233
|
}
|
|
233
234
|
// quick fix for tsconfig pathing in ng proxy project
|
|
234
|
-
|
|
235
|
+
lib_8.Helpers.createSymLink(this.project.pathFor(constants_1.tsconfigJsonIsomorphicMainProject), this.project.pathFor([
|
|
235
236
|
tmpAppForDistRelativePath,
|
|
236
237
|
constants_1.srcNgProxyProject,
|
|
237
238
|
constants_1.tsconfigJsonIsomorphicMainProject,
|
|
@@ -249,7 +250,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
249
250
|
: angularBuildCommand;
|
|
250
251
|
//#endregion
|
|
251
252
|
const showInfoAngular = () => {
|
|
252
|
-
|
|
253
|
+
lib_8.Helpers.logInfo(`
|
|
253
254
|
|
|
254
255
|
ARTIFACT ${buildOptions.release.targetArtifact} BUILD COMMAND: ${angularBuildAppCmd}
|
|
255
256
|
|
|
@@ -259,11 +260,11 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
259
260
|
};
|
|
260
261
|
showInfoAngular();
|
|
261
262
|
const projectBasePath = this.project.location;
|
|
262
|
-
const appBaseName =
|
|
263
|
+
const appBaseName = lib_3._.upperFirst(lib_3._.camelCase(this.project.name));
|
|
263
264
|
const noConfigError = `TS2724: '"./app/app"' has no exported member named '${appBaseName}AppConfig'. Did you mean '${appBaseName}Config'?`;
|
|
264
265
|
const noCompoenntError = `TS2614: Module '"./app/app"' has no exported member '${appBaseName}App'. Did you mean to use 'import ${appBaseName}App from "./app/app"' instead?`;
|
|
265
266
|
const externalLibInPorject = 'projects/external-libs/src/lib';
|
|
266
|
-
const taonActionFromParentName =
|
|
267
|
+
const taonActionFromParentName = lib_2.GlobalStorage.get(lib_2.taonActionFromParent);
|
|
267
268
|
if (!shouldSkipBuild) {
|
|
268
269
|
await angularTempProj.execute(angularBuildAppCmd, {
|
|
269
270
|
similarProcessKey: constants_1.TaonCommands.NG,
|
|
@@ -288,7 +289,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
288
289
|
}
|
|
289
290
|
}
|
|
290
291
|
else {
|
|
291
|
-
|
|
292
|
+
lib_8.Helpers.error(`[${lib_2.config.frameworkName}] Angular compilation app build error (code=${code})`, false, true);
|
|
292
293
|
}
|
|
293
294
|
}
|
|
294
295
|
},
|
|
@@ -298,7 +299,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
298
299
|
line = line.replace(tmpAppForDistRelativePath + '/', '');
|
|
299
300
|
if (line.includes(externalLibInPorject + '/')) {
|
|
300
301
|
let [__, packageName] = line.split(externalLibInPorject + '/') || [];
|
|
301
|
-
packageName =
|
|
302
|
+
packageName = lib_3._.first((packageName || '').split('/lib/'));
|
|
302
303
|
if (packageName) {
|
|
303
304
|
const tempSource = (0, app_utils_1.angularProjProxyPath)({
|
|
304
305
|
envOptions: buildOptions,
|
|
@@ -313,11 +314,11 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
313
314
|
'lib',
|
|
314
315
|
]);
|
|
315
316
|
try {
|
|
316
|
-
linkForRealSource =
|
|
317
|
+
linkForRealSource = lib_2.fse.readlinkSync(linkPath);
|
|
317
318
|
}
|
|
318
319
|
catch (error) { }
|
|
319
320
|
if (typeof linkForRealSource === 'string') {
|
|
320
|
-
linkForRealSource = (0,
|
|
321
|
+
linkForRealSource = (0, lib_3.crossPlatformPath)(linkForRealSource).replace(/\/$/, '');
|
|
321
322
|
}
|
|
322
323
|
if (linkForRealSource) {
|
|
323
324
|
const relative = line
|
|
@@ -392,9 +393,9 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
392
393
|
}
|
|
393
394
|
async buildBackend(buildOptions, appDistOutBackendNodeAbsPath) {
|
|
394
395
|
//#region @backendFunc
|
|
395
|
-
|
|
396
|
+
lib_8.Helpers.remove(appDistOutBackendNodeAbsPath);
|
|
396
397
|
//#region bundle code into single file
|
|
397
|
-
await
|
|
398
|
+
await lib_8.HelpersTaon.bundleCodeIntoSingleFile(this.project.pathFor(`${constants_1.distVscodeProj}/${constants_1.appJsBackend}`), (0, lib_3.crossPlatformPath)([
|
|
398
399
|
appDistOutBackendNodeAbsPath,
|
|
399
400
|
`${constants_1.distVscodeProj}/${constants_1.appJsBackend}`,
|
|
400
401
|
]), {
|
|
@@ -417,7 +418,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
417
418
|
`${constants_1.distMainProject}/${constants_1.libFromCompiledDist}/${constants_1.TaonGeneratedFiles.BUILD_INFO_AUTO_GENERATED_JS}`,
|
|
418
419
|
];
|
|
419
420
|
for (const relativePathBundleBackend of copyToBackendBundle) {
|
|
420
|
-
|
|
421
|
+
lib_8.HelpersTaon.copyFile(this.project.pathFor(relativePathBundleBackend), (0, lib_3.crossPlatformPath)([
|
|
421
422
|
appDistOutBackendNodeAbsPath,
|
|
422
423
|
relativePathBundleBackend,
|
|
423
424
|
]));
|
|
@@ -435,17 +436,17 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
435
436
|
for (const nativeDepName of nodeJsAppNativeDeps) {
|
|
436
437
|
const version = this.project.packageJson.dependencies[nativeDepName];
|
|
437
438
|
if (version) {
|
|
438
|
-
|
|
439
|
+
lib_8.Helpers.logInfo(`Setting native dependency ${nativeDepName} to version ${version}`);
|
|
439
440
|
dependenciesNodeJsApp[nativeDepName] =
|
|
440
441
|
this.project.packageJson.dependencies[nativeDepName];
|
|
441
442
|
}
|
|
442
443
|
else {
|
|
443
|
-
|
|
444
|
+
lib_8.Helpers.warn(`Native dependency ${nativeDepName} not found in taon package.json dependencies`);
|
|
444
445
|
}
|
|
445
446
|
}
|
|
446
447
|
//#endregion
|
|
447
448
|
//#region recreate package json
|
|
448
|
-
|
|
449
|
+
lib_8.Helpers.writeJson([appDistOutBackendNodeAbsPath, constants_1.packageJsonNpmLib], {
|
|
449
450
|
name: this.project.packageJson.name,
|
|
450
451
|
version: this.project.packageJson.version,
|
|
451
452
|
dependencies: dependenciesNodeJsApp,
|
|
@@ -541,14 +542,14 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
541
542
|
// appDistOutBrowserAngularAbsPath,
|
|
542
543
|
// });
|
|
543
544
|
let releaseProjPath = appDistOutBrowserAngularAbsPath;
|
|
544
|
-
releaseOptions.release.skipStaticPagesVersioning =
|
|
545
|
+
releaseOptions.release.skipStaticPagesVersioning = lib_3._.isUndefined(releaseOptions.release.skipStaticPagesVersioning)
|
|
545
546
|
? true
|
|
546
547
|
: releaseOptions.release.skipStaticPagesVersioning;
|
|
547
548
|
//#endregion
|
|
548
549
|
if (releaseOptions.release.releaseType === options_1.ReleaseType.MANUAL_STATIC_PAGES) {
|
|
549
550
|
//#region static pages release
|
|
550
551
|
if (!releaseOptions.build.ssr) {
|
|
551
|
-
appDistOutBrowserAngularAbsPath = (0,
|
|
552
|
+
appDistOutBrowserAngularAbsPath = (0, lib_3.crossPlatformPath)([
|
|
552
553
|
appDistOutBrowserAngularAbsPath,
|
|
553
554
|
constants_1.browserNgBuild,
|
|
554
555
|
]);
|
|
@@ -569,7 +570,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
569
570
|
`${this.project.name}${constants_1.suffixLatest}`,
|
|
570
571
|
])
|
|
571
572
|
: this.project.pathFor([
|
|
572
|
-
`.${
|
|
573
|
+
`.${lib_2.config.frameworkName}`,
|
|
573
574
|
`release-${releaseOptions.release.releaseType}`,
|
|
574
575
|
this.currentArtifactName,
|
|
575
576
|
]);
|
|
@@ -578,12 +579,12 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
578
579
|
const worker = this.project.subProject.repo
|
|
579
580
|
.getAll()
|
|
580
581
|
.find(c => c.name === releaseOptions.release.workerName);
|
|
581
|
-
|
|
582
|
-
|
|
582
|
+
lib_8.Helpers.remove([worker.cwdWorker, constants_1.browserNgBuild]);
|
|
583
|
+
lib_8.HelpersTaon.copy([appDistOutBrowserAngularAbsPath, constants_1.browserNgBuild], [worker.cwdWorker, constants_1.browserNgBuild], {
|
|
583
584
|
recursive: true,
|
|
584
585
|
overwrite: true,
|
|
585
586
|
});
|
|
586
|
-
releaseProjPath = (0,
|
|
587
|
+
releaseProjPath = (0, lib_3.crossPlatformPath)([
|
|
587
588
|
worker.absLocationPath,
|
|
588
589
|
constants_1.browserNgBuild,
|
|
589
590
|
]);
|
|
@@ -591,33 +592,33 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
591
592
|
else {
|
|
592
593
|
//#region manual taon release
|
|
593
594
|
//#region copy to local release folder
|
|
594
|
-
|
|
595
|
+
lib_8.HelpersTaon.copy(appDistOutBrowserAngularAbsPath, [
|
|
595
596
|
localReleaseOutputBasePath,
|
|
596
|
-
|
|
597
|
+
lib_3.path.basename(appDistOutBrowserAngularAbsPath),
|
|
597
598
|
]);
|
|
598
|
-
|
|
599
|
+
lib_8.HelpersTaon.copy(appDistOutBackendNodeAbsPath, [
|
|
599
600
|
localReleaseOutputBasePath,
|
|
600
|
-
|
|
601
|
+
lib_3.path.basename(appDistOutBackendNodeAbsPath),
|
|
601
602
|
]);
|
|
602
603
|
releaseProjPath = localReleaseOutputBasePath;
|
|
603
604
|
//#endregion
|
|
604
605
|
//#region update package.json in backend app
|
|
605
|
-
|
|
606
|
+
lib_8.HelpersTaon.setValueToJSON([
|
|
606
607
|
localReleaseOutputBasePath,
|
|
607
|
-
|
|
608
|
+
lib_3.path.basename(appDistOutBackendNodeAbsPath),
|
|
608
609
|
constants_1.packageJsonNpmLib,
|
|
609
|
-
], 'name',
|
|
610
|
-
|
|
610
|
+
], 'name', lib_3.path.basename(appDistOutBackendNodeAbsPath));
|
|
611
|
+
lib_8.HelpersTaon.setValueToJSON([
|
|
611
612
|
localReleaseOutputBasePath,
|
|
612
|
-
|
|
613
|
+
lib_3.path.basename(appDistOutBackendNodeAbsPath),
|
|
613
614
|
constants_1.packageJsonNpmLib,
|
|
614
615
|
], 'version', releaseOptions.release.resolvedNewVersion);
|
|
615
616
|
//#endregion
|
|
616
617
|
//#region update docker-compose files
|
|
617
618
|
const dockerComposeRelativePath = 'docker-templates/docker-compose.yml';
|
|
618
|
-
const dockerComposeYmlDestPath = (0,
|
|
619
|
+
const dockerComposeYmlDestPath = (0, lib_3.crossPlatformPath)([
|
|
619
620
|
localReleaseOutputBasePath,
|
|
620
|
-
|
|
621
|
+
lib_3.path.basename(dockerComposeRelativePath),
|
|
621
622
|
]);
|
|
622
623
|
this.project.framework.recreateFileFromCoreProject({
|
|
623
624
|
relativePathInCoreProject: dockerComposeRelativePath,
|
|
@@ -656,7 +657,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
656
657
|
const domainForContextBE = useDomain
|
|
657
658
|
? domain
|
|
658
659
|
: `http://localhost:${portBackendRelease}`;
|
|
659
|
-
|
|
660
|
+
lib_5.UtilsDotFile.setValuesKeysFromObject([localReleaseOutputBasePath, constants_1.dotEnvFile], {
|
|
660
661
|
[`HOST_BACKEND_PORT_${contextRealIndex}`]: portBackendRelease,
|
|
661
662
|
[`HOST_URL_${contextRealIndex}`]: domainForContextBE,
|
|
662
663
|
[`FRONTEND_NORMAL_APP_PORT_${contextRealIndex}`]: portFrontendRelease,
|
|
@@ -670,45 +671,45 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
670
671
|
}
|
|
671
672
|
: {}),
|
|
672
673
|
});
|
|
673
|
-
|
|
674
|
+
lib_5.UtilsDotFile.setCommentToKeyInDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], `HOST_BACKEND_PORT_${contextRealIndex}`, `${lib_3.CoreModels.tagForTaskName}="${taskNameBackendReleasePort}"`);
|
|
674
675
|
if (i === 0) {
|
|
675
|
-
|
|
676
|
+
lib_5.UtilsDotFile.setCommentToKeyInDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], `HOST_BACKEND_PORT`, `${lib_3.CoreModels.tagForTaskName}="${taskNameBackendReleasePort}"`);
|
|
676
677
|
}
|
|
677
|
-
|
|
678
|
+
lib_5.UtilsDotFile.setCommentToKeyInDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], `FRONTEND_NORMAL_APP_PORT_${contextRealIndex}`, `${lib_3.CoreModels.tagForTaskName}="${taskNameFrontendreleasePort}"`);
|
|
678
679
|
}
|
|
679
680
|
if (!useDomain) {
|
|
680
|
-
|
|
681
|
+
lib_5.UtilsDotFile.addCommentAtTheBeginningOfDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], `HINT! IF YOU NEED DOMAIN USE userDomain=true in env.ts`);
|
|
681
682
|
}
|
|
682
|
-
|
|
683
|
-
|
|
683
|
+
lib_5.UtilsDotFile.setValueToDotFile([localReleaseOutputBasePath, '.env'], 'COMPOSE_PROJECT_NAME', ('TaonDeployment__' +
|
|
684
|
+
lib_3._.camelCase(releaseOptions.website.domain) +
|
|
684
685
|
'__' +
|
|
685
|
-
`v${
|
|
686
|
+
`v${lib_3._.kebabCase(this.project.packageJson.version)}` +
|
|
686
687
|
'__' +
|
|
687
688
|
`release-type-${releaseOptions.release.releaseType}` +
|
|
688
689
|
`--env--${!releaseOptions.release.envName ||
|
|
689
690
|
releaseOptions.release.envName === '__'
|
|
690
691
|
? 'default'
|
|
691
692
|
: releaseOptions.release.envName}${releaseOptions.release.envNumber || ''}`).toLowerCase());
|
|
692
|
-
|
|
693
|
-
|
|
693
|
+
lib_5.UtilsDotFile.setValueToDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], 'BUILD_DATE', `${(0, lib_3.dateformat)(new Date(), 'dd-mm-yyyy_HH:MM:ss')}`);
|
|
694
|
+
lib_5.UtilsDotFile.setValueToDotFile([localReleaseOutputBasePath, constants_1.dotEnvFile], 'NODE_ENV', `production`);
|
|
694
695
|
//#endregion
|
|
695
|
-
const allValuesDotEnv =
|
|
696
|
+
const allValuesDotEnv = lib_5.UtilsDotFile.getValuesKeysAsJsonObject([
|
|
696
697
|
localReleaseOutputBasePath,
|
|
697
698
|
constants_1.dotEnvFile,
|
|
698
699
|
]);
|
|
699
700
|
//#region update docker-compose file with env variables
|
|
700
|
-
const dockerComposeFile =
|
|
701
|
+
const dockerComposeFile = lib_3.UtilsYaml.readYamlAsJson(dockerComposeYmlDestPath);
|
|
701
702
|
//#region prepare backend containers
|
|
702
703
|
const backendTemplapteObj = dockerComposeFile.services['backend-app-node'];
|
|
703
704
|
delete dockerComposeFile.services['backend-app-node'];
|
|
704
|
-
const containerLabel = `${
|
|
705
|
+
const containerLabel = `${lib_9.UtilsDocker.DOCKER_LABEL_KEY}="\${COMPOSE_PROJECT_NAME}"`;
|
|
705
706
|
for (let i = 0; i < contextsNames.length; i++) {
|
|
706
707
|
const contextRealIndex = i + 1; // start from 1
|
|
707
708
|
const contextName = contextsNames[i].contextName;
|
|
708
|
-
const ctxBackend =
|
|
709
|
+
const ctxBackend = lib_3._.cloneDeep(backendTemplapteObj);
|
|
709
710
|
// `backend-app-node--${_.kebabCase(releaseOptions.website.domain)}--` +
|
|
710
|
-
const containerIdentifierBackendNOde = `be--${
|
|
711
|
-
`v${
|
|
711
|
+
const containerIdentifierBackendNOde = `be--${lib_3._.kebabCase(releaseOptions.website.domain)}--` +
|
|
712
|
+
`v${lib_3._.kebabCase(this.project.packageJson.version)}--${contextName}--ctx${contextRealIndex}`.toLowerCase();
|
|
712
713
|
//#region updating cloned backend template
|
|
713
714
|
const traefikKeyBackend = `${containerIdentifierBackendNOde}--env` +
|
|
714
715
|
`${releaseOptions.release.envName}${releaseOptions.release.envNumber || ''}`;
|
|
@@ -719,7 +720,7 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
719
720
|
// `traefik.http.routers.${traefikKeyBackend}.tls.certresolver=myresolver`,
|
|
720
721
|
`traefik.http.services.${traefikKeyBackend}.loadbalancer.server.port=$\{HOST_BACKEND_PORT_${contextRealIndex}\}`,
|
|
721
722
|
containerLabel,
|
|
722
|
-
|
|
723
|
+
lib_9.UtilsDocker.DOCKER_TAON_PROJECT_LABEL,
|
|
723
724
|
// only when sripping prefix
|
|
724
725
|
// 'traefik.http.middlewares.strip-api.stripprefix.prefixes=/api',
|
|
725
726
|
// 'traefik.http.routers.backend.middlewares=strip-api',
|
|
@@ -735,15 +736,15 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
735
736
|
};
|
|
736
737
|
ctxBackend.container_name = containerIdentifierBackendNOde;
|
|
737
738
|
ctxBackend.ports[0] = `$\{HOST_BACKEND_PORT_${contextRealIndex}\}:$\{HOST_BACKEND_PORT_${contextRealIndex}\}`;
|
|
738
|
-
const all =
|
|
739
|
+
const all = lib_3._.cloneDeep(allValuesDotEnv);
|
|
739
740
|
for (const key of Object.keys(all)) {
|
|
740
741
|
all[key] = `\${${key}}`;
|
|
741
742
|
}
|
|
742
743
|
ctxBackend.environment = all;
|
|
743
744
|
ctxBackend.environment[constants_1.ACTIVE_CONTEXT] = contextName;
|
|
744
|
-
const specificForProjectSQliteDbLocation = (0,
|
|
745
|
-
|
|
746
|
-
|
|
745
|
+
const specificForProjectSQliteDbLocation = (0, lib_3.crossPlatformPath)([
|
|
746
|
+
lib_4.UtilsOs.getRealHomeDir(),
|
|
747
|
+
lib_2.dotTaonFolder,
|
|
747
748
|
'cloud/docker-backend-databases',
|
|
748
749
|
releaseOptions.website.domain,
|
|
749
750
|
this.project.packageJson.version,
|
|
@@ -761,12 +762,12 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
761
762
|
//#region prepare frontend container
|
|
762
763
|
const frontendTemplapteObj = dockerComposeFile.services['angular-app-node'];
|
|
763
764
|
delete dockerComposeFile.services['angular-app-node'];
|
|
764
|
-
const ctxFrontend =
|
|
765
|
+
const ctxFrontend = lib_3._.cloneDeep(frontendTemplapteObj);
|
|
765
766
|
// `angular-app-node--${_.kebabCase(releaseOptions.website.domain)}` +
|
|
766
|
-
const newKeyForContainerFrontendAngular = (`fe--${
|
|
767
|
-
`--v${
|
|
767
|
+
const newKeyForContainerFrontendAngular = (`fe--${lib_3._.kebabCase(releaseOptions.website.domain)}` +
|
|
768
|
+
`--v${lib_3._.kebabCase(this.project.packageJson.version)}`).toLowerCase();
|
|
768
769
|
//#region set traefik labels for frontend app
|
|
769
|
-
const all =
|
|
770
|
+
const all = lib_3._.cloneDeep(allValuesDotEnv);
|
|
770
771
|
for (const key of Object.keys(all)) {
|
|
771
772
|
all[key] = `\${${key}}`;
|
|
772
773
|
}
|
|
@@ -792,28 +793,28 @@ class ArtifactAngularNodeApp extends base_artifact_1.BaseArtifact {
|
|
|
792
793
|
dockerComposeFile.services[newKeyForContainerFrontendAngular] =
|
|
793
794
|
ctxFrontend;
|
|
794
795
|
//#endregion
|
|
795
|
-
|
|
796
|
+
lib_3.UtilsYaml.writeJsonToYaml(dockerComposeYmlDestPath, dockerComposeFile);
|
|
796
797
|
//#region add info comment to docker-compose.yml file
|
|
797
|
-
const dockerComposeYmlFileContent =
|
|
798
|
-
|
|
798
|
+
const dockerComposeYmlFileContent = lib_8.Helpers.readFile(dockerComposeYmlDestPath);
|
|
799
|
+
lib_8.Helpers.writeFile(dockerComposeYmlDestPath, `# ${constants_1.THIS_IS_GENERATED_STRING}
|
|
799
800
|
# FRONTEND APP can ONLY READ VARIABLES THAT START WITH "FRONTEND_", "PUIBLIC_" or "HOST_"
|
|
800
801
|
${dockerComposeYmlFileContent}
|
|
801
802
|
# ${constants_1.THIS_IS_GENERATED_STRING}`);
|
|
802
803
|
//#endregion
|
|
803
804
|
//#endregion
|
|
804
805
|
//#region create package.json with start script for whole build
|
|
805
|
-
|
|
806
|
+
lib_8.HelpersTaon.copyFile(this.project.pathFor(constants_1.packageJsonMainProject), [
|
|
806
807
|
localReleaseOutputBasePath,
|
|
807
808
|
constants_1.packageJsonNpmLib,
|
|
808
809
|
]);
|
|
809
|
-
|
|
810
|
-
|
|
810
|
+
lib_8.HelpersTaon.setValueToJSON([localReleaseOutputBasePath, constants_1.packageJsonNpmLib], 'scripts', {});
|
|
811
|
+
lib_8.HelpersTaon.setValueToJSON([localReleaseOutputBasePath, constants_1.packageJsonNpmLib], 'scripts.start', `taon preview ./docker-compose.yml`);
|
|
811
812
|
//#endregion
|
|
812
813
|
//#endregion
|
|
813
814
|
}
|
|
814
815
|
//#region display final build info
|
|
815
816
|
if (releaseOptions.release.releaseType === options_1.ReleaseType.MANUAL_CLOUDFLARE) {
|
|
816
|
-
|
|
817
|
+
lib_8.Helpers.info(`
|
|
817
818
|
|
|
818
819
|
Bundled version of your app is ready for cloudflare worker.
|
|
819
820
|
Check it here ${localReleaseOutputBasePath}
|
|
@@ -821,10 +822,10 @@ ${dockerComposeYmlFileContent}
|
|
|
821
822
|
`);
|
|
822
823
|
}
|
|
823
824
|
else {
|
|
824
|
-
|
|
825
|
+
lib_8.Helpers.info(`
|
|
825
826
|
|
|
826
827
|
Dockerized version of your app is ready.
|
|
827
|
-
you can run: ${
|
|
828
|
+
you can run: ${lib_3.chalk.bold('docker compose up -d')}
|
|
828
829
|
in ${localReleaseOutputBasePath}
|
|
829
830
|
|
|
830
831
|
or quick script:
|
|
@@ -835,11 +836,11 @@ ${dockerComposeYmlFileContent}
|
|
|
835
836
|
//#endregion
|
|
836
837
|
//#region release end deployment function
|
|
837
838
|
if (releaseOptions.release.releaseType === options_1.ReleaseType.LOCAL) {
|
|
838
|
-
|
|
839
|
+
lib_8.Helpers.taskDone(`Local release done!`);
|
|
839
840
|
// TODO
|
|
840
841
|
}
|
|
841
842
|
else if (releaseOptions.release.releaseType === options_1.ReleaseType.MANUAL_TAON) {
|
|
842
|
-
|
|
843
|
+
lib_8.Helpers.taskDone(`Manual release prepared!`);
|
|
843
844
|
deploymentFunction = async () => {
|
|
844
845
|
await this.deployToTaonCloud({
|
|
845
846
|
releaseOptions,
|
|
@@ -848,7 +849,7 @@ ${dockerComposeYmlFileContent}
|
|
|
848
849
|
};
|
|
849
850
|
}
|
|
850
851
|
else if (releaseOptions.release.releaseType === options_1.ReleaseType.MANUAL_CLOUDFLARE) {
|
|
851
|
-
|
|
852
|
+
lib_8.Helpers.taskDone(`Manual cloudflare worker release prepared!`);
|
|
852
853
|
deploymentFunction = async () => {
|
|
853
854
|
await this.deployToCloudflare({
|
|
854
855
|
releaseOptions,
|
|
@@ -876,7 +877,7 @@ ${dockerComposeYmlFileContent}
|
|
|
876
877
|
.getAll()
|
|
877
878
|
.find(c => c.name === releaseOptions.release.workerName);
|
|
878
879
|
if (releaseOptions.release.askUserBeforeFinalAction) {
|
|
879
|
-
await
|
|
880
|
+
await lib_4.UtilsTerminal.pressAnyKeyToContinueAsync({
|
|
880
881
|
message: 'Press any key to start deployment to cloudflare',
|
|
881
882
|
});
|
|
882
883
|
}
|
|
@@ -888,7 +889,7 @@ ${dockerComposeYmlFileContent}
|
|
|
888
889
|
async deployToTaonCloud({ releaseOptions, localReleaseOutputBasePath, }) {
|
|
889
890
|
//#region @backendFunc
|
|
890
891
|
//#region prepare zip newZipFileName file for upload
|
|
891
|
-
const tmpZipLocalReleaseFileAbsPath = await
|
|
892
|
+
const tmpZipLocalReleaseFileAbsPath = await lib_8.UtilsZip.zipDir(localReleaseOutputBasePath, {
|
|
892
893
|
overrideIfZipFileExists: true,
|
|
893
894
|
});
|
|
894
895
|
const tmpProjDataForUpload = {
|
|
@@ -900,36 +901,36 @@ ${dockerComposeYmlFileContent}
|
|
|
900
901
|
projectName: this.project.name,
|
|
901
902
|
targetArtifact: releaseOptions.release.targetArtifact,
|
|
902
903
|
};
|
|
903
|
-
const newBasenameZipFile =
|
|
904
|
+
const newBasenameZipFile = lib_6.FilePathMetaData.embedData(lib_3._.pick(tmpProjDataForUpload, ['destinationDomain', 'version']), lib_3.path.basename(tmpZipLocalReleaseFileAbsPath), {
|
|
904
905
|
skipAddingBasenameAtEnd: true,
|
|
905
906
|
keysMap: constants_1.keysMap,
|
|
906
907
|
});
|
|
907
|
-
const newZipFileName = (0,
|
|
908
|
-
|
|
908
|
+
const newZipFileName = (0, lib_3.crossPlatformPath)([
|
|
909
|
+
lib_3.path.dirname(tmpZipLocalReleaseFileAbsPath),
|
|
909
910
|
newBasenameZipFile,
|
|
910
911
|
]);
|
|
911
|
-
|
|
912
|
-
|
|
912
|
+
lib_8.HelpersTaon.copyFile(tmpZipLocalReleaseFileAbsPath, newZipFileName);
|
|
913
|
+
lib_8.Helpers.taskDone(`
|
|
913
914
|
Release zip file prepared for taon cloud deployment!
|
|
914
915
|
Destination taon instance ip (or domain): "${releaseOptions.release.taonInstanceIp}"
|
|
915
916
|
|
|
916
917
|
Zip file ready for taon cloud deployment:
|
|
917
|
-
${
|
|
918
|
-
/${
|
|
918
|
+
${lib_3.path.dirname(newZipFileName)}
|
|
919
|
+
/${lib_3.path.basename(newZipFileName)}
|
|
919
920
|
|
|
920
921
|
`);
|
|
921
922
|
//#endregion
|
|
922
923
|
//#region prepare cloud connections and controllers
|
|
923
924
|
const connectionOptionsDeployments = {
|
|
924
925
|
ipAddressOfTaonInstance: releaseOptions.release.taonInstanceIp,
|
|
925
|
-
port: releaseOptions.release.taonInstanceIp ===
|
|
926
|
+
port: releaseOptions.release.taonInstanceIp === lib_3.CoreModels.localhostIp127
|
|
926
927
|
? Number(this.project.ins.taonProjectsWorker.deploymentsWorker
|
|
927
928
|
.processLocalInfoObj.port)
|
|
928
929
|
: null,
|
|
929
930
|
};
|
|
930
931
|
const connectionOptionsProcesses = {
|
|
931
932
|
ipAddressOfTaonInstance: releaseOptions.release.taonInstanceIp,
|
|
932
|
-
port: releaseOptions.release.taonInstanceIp ===
|
|
933
|
+
port: releaseOptions.release.taonInstanceIp === lib_3.CoreModels.localhostIp127
|
|
933
934
|
? Number(this.project.ins.taonProjectsWorker.processesWorker
|
|
934
935
|
.processLocalInfoObj.port)
|
|
935
936
|
: null,
|
|
@@ -946,21 +947,24 @@ ${lib_2.path.dirname(newZipFileName)}
|
|
|
946
947
|
connectionOptions: connectionOptionsProcesses,
|
|
947
948
|
calledFrom: 'artifact-angular-node-app.releasePartial',
|
|
948
949
|
},
|
|
949
|
-
controllerClass:
|
|
950
|
+
controllerClass: lib_1.ProcessesController,
|
|
950
951
|
});
|
|
951
952
|
//#endregion
|
|
952
953
|
//#region try to upload release to taon cloud
|
|
953
954
|
let uploadResponse;
|
|
954
955
|
while (true) {
|
|
955
956
|
try {
|
|
956
|
-
|
|
957
|
+
lib_8.Helpers.info(`Uploading zip file to taon server...`);
|
|
957
958
|
constants_1.globalSpinner.instance.start();
|
|
958
959
|
uploadResponse = await deploymentController.uploadLocalFileToServer(newZipFileName, {
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
960
|
+
// TODO @LAST @UNCOMMNET
|
|
961
|
+
// onUploadProgress: (progressEvent: Ng2RestUploadProgressEvent) => {
|
|
962
|
+
// const percentCompleted = Math.round(
|
|
963
|
+
// (progressEvent.loaded * 100) / progressEvent.total,
|
|
964
|
+
// );
|
|
965
|
+
// globalSpinner.instance.text = `Upload progress: ${percentCompleted}%`;
|
|
966
|
+
// // console.log(`Upload progress: ${percentCompleted}%`);
|
|
967
|
+
// },
|
|
964
968
|
}, tmpProjDataForUpload);
|
|
965
969
|
constants_1.globalSpinner.instance.succeed(`Deployment upload done!`);
|
|
966
970
|
break;
|
|
@@ -968,12 +972,12 @@ ${lib_2.path.dirname(newZipFileName)}
|
|
|
968
972
|
catch (error) {
|
|
969
973
|
constants_1.globalSpinner.instance.fail(`Error during upload zip file to taon server!`);
|
|
970
974
|
const errMsg = (error instanceof Error ? error.message : error);
|
|
971
|
-
|
|
975
|
+
lib_2.config.frameworkName === 'tnp' && console.error(errMsg);
|
|
972
976
|
if (releaseOptions.release.autoReleaseUsingConfig) {
|
|
973
977
|
throw `Error during upload zip file to taon server...`;
|
|
974
978
|
}
|
|
975
979
|
else {
|
|
976
|
-
await
|
|
980
|
+
await lib_4.UtilsTerminal.pressAnyKeyToContinueAsync({
|
|
977
981
|
message: `Error during upload zip file to taon server...press any key to continue`,
|
|
978
982
|
});
|
|
979
983
|
}
|
|
@@ -981,24 +985,24 @@ ${lib_2.path.dirname(newZipFileName)}
|
|
|
981
985
|
}
|
|
982
986
|
//#endregion
|
|
983
987
|
//#region trigger deployment start
|
|
984
|
-
|
|
988
|
+
lib_8.Helpers.info(`Starting deployment...`);
|
|
985
989
|
const forceStart = true;
|
|
986
990
|
let deployment = (await deploymentController
|
|
987
991
|
.triggerDeploymentStart(uploadResponse[0].savedAs, forceStart)
|
|
988
992
|
.request()).body.json;
|
|
989
993
|
await deploymentController.waitUntilDeploymentHasComposeUpProcess(deployment.id);
|
|
990
994
|
deployment = (await deploymentController.getByDeploymentId(deployment.id).request()).body.json;
|
|
991
|
-
|
|
995
|
+
lib_8.Helpers.info(`Deployment started! `);
|
|
992
996
|
//#endregion
|
|
993
997
|
//#region display realtime deployment log
|
|
994
|
-
if (!releaseOptions.isCiProcess && !
|
|
995
|
-
|
|
998
|
+
if (!releaseOptions.isCiProcess && !lib_4.UtilsOs.isRunningNodeDebugger()) {
|
|
999
|
+
lib_8.Helpers.info(`
|
|
996
1000
|
|
|
997
1001
|
STARTING DEPLOYMENT PREVIEW (PRESS ANY KEY TO MOVE BACK TO RELEASE FINISH SCREEN)
|
|
998
1002
|
|
|
999
1003
|
`);
|
|
1000
1004
|
await deployments_utils_1.DeploymentsUtils.displayRealtimeProgressMonitor(deployment, processesController, {
|
|
1001
|
-
resolveWhenTextInOutput:
|
|
1005
|
+
resolveWhenTextInOutput: lib_3.CoreModels.SPECIAL_APP_READY_MESSAGE,
|
|
1002
1006
|
});
|
|
1003
1007
|
}
|
|
1004
1008
|
//#endregion
|
|
@@ -1013,7 +1017,7 @@ STARTING DEPLOYMENT PREVIEW (PRESS ANY KEY TO MOVE BACK TO RELEASE FINISH SCREEN
|
|
|
1013
1017
|
* Absolute path to the output directory for the app
|
|
1014
1018
|
*/
|
|
1015
1019
|
getOutDirNodeBackendAppAbsPath(buildOptions) {
|
|
1016
|
-
let outDirApp = `.${
|
|
1020
|
+
let outDirApp = `.${lib_2.config.frameworkName}/${this.currentArtifactName}/` +
|
|
1017
1021
|
`${buildOptions.release.releaseType ? buildOptions.release.releaseType : options_1.Development}/` +
|
|
1018
1022
|
`backend-app${buildOptions.build.websql ? '-websql' : '-node'}`;
|
|
1019
1023
|
return this.project.pathFor(outDirApp);
|
|
@@ -1024,7 +1028,7 @@ STARTING DEPLOYMENT PREVIEW (PRESS ANY KEY TO MOVE BACK TO RELEASE FINISH SCREEN
|
|
|
1024
1028
|
* Absolute path to the output directory for the app
|
|
1025
1029
|
*/
|
|
1026
1030
|
getOutDirAngularBrowserAppAbsPath(buildOptions) {
|
|
1027
|
-
let outDirApp = `.${
|
|
1031
|
+
let outDirApp = `.${lib_2.config.frameworkName}/${buildOptions.release.targetArtifact}/` +
|
|
1028
1032
|
`${buildOptions.release.releaseType ? buildOptions.release.releaseType : options_1.Development}/` +
|
|
1029
1033
|
`angular-app${buildOptions.build.websql ? '-websql' : '-node'}`;
|
|
1030
1034
|
return this.project.pathFor(outDirApp);
|