@speedkit/cli 2.42.0 → 2.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.sample +48 -0
- package/CHANGELOG.md +16 -0
- package/README.md +1 -1
- package/dist/helpers/race.d.ts +3 -0
- package/dist/helpers/race.js +2 -0
- package/dist/services/config-api/client.d.ts +3 -3
- package/dist/services/config-api/client.js +15 -3
- package/dist/services/config-api/{factory/config-api-service-factory.d.ts → config-api-factory.d.ts} +3 -3
- package/dist/services/config-api/{factory/config-api-service-factory.js → config-api-factory.js} +10 -9
- package/dist/services/config-api/config-api-model.d.ts +12 -0
- package/dist/services/config-api/{context/config-api-context.js → config-api-model.js} +2 -1
- package/dist/services/config-api/config-api-service.d.ts +2 -2
- package/dist/services/config-api/config-api-service.js +2 -1
- package/dist/services/config-api/{factory/entity-manager-factory.d.ts → entity-manager-factory.d.ts} +1 -1
- package/dist/services/config-api/entity-manager-factory.js +15 -0
- package/dist/services/config-api/error/json-response-error.d.ts +1 -1
- package/dist/services/config-api/error/json-response-error.js +2 -1
- package/dist/services/config-api/error/login-error.d.ts +1 -1
- package/dist/services/config-api/error/login-error.js +3 -2
- package/dist/services/config-api/index.d.ts +3 -0
- package/dist/services/config-api/index.js +6 -0
- package/dist/services/deploy/builder/install-resource-builder.d.ts +3 -3
- package/dist/services/deploy/checks/post-deploy/revalidated-module-check.d.ts +1 -2
- package/dist/services/deploy/checks/post-deploy/revalidated-module-check.js +13 -12
- package/dist/services/deploy/checks/post-deploy/save-files-check.d.ts +2 -1
- package/dist/services/deploy/checks/post-deploy/save-files-check.js +18 -5
- package/dist/services/deploy/checks/pre-deploy/split-change-check.d.ts +1 -1
- package/dist/services/deploy/deploy-service-factory.js +3 -4
- package/dist/services/deploy/error/check-module-file-error.d.ts +4 -0
- package/dist/services/deploy/error/check-module-file-error.js +9 -0
- package/dist/services/deploy/error/deploy-install-resource-error.d.ts +4 -0
- package/dist/services/deploy/error/deploy-install-resource-error.js +9 -0
- package/dist/services/deploy/error/deploy-module-file-error.d.ts +4 -0
- package/dist/services/deploy/error/deploy-module-file-error.js +9 -0
- package/dist/services/deploy/error/deploy-server-config-error.d.ts +4 -0
- package/dist/services/deploy/error/deploy-server-config-error.js +9 -0
- package/dist/services/deploy/error/safe-file-error.d.ts +4 -0
- package/dist/services/deploy/error/safe-file-error.js +9 -0
- package/dist/services/deploy/handler/customer-config-handler.d.ts +2 -2
- package/dist/services/deploy/handler/install-resource-handler.d.ts +3 -3
- package/dist/services/deploy/handler/install-resource-handler.js +28 -4
- package/dist/services/deploy/handler/module-handler.d.ts +2 -2
- package/dist/services/deploy/handler/module-handler.js +10 -1
- package/dist/services/deploy/handler/server-config-handler.d.ts +2 -2
- package/dist/services/deploy/handler/server-config-handler.js +14 -4
- package/dist/services/integration-api/handler/install-resource-handler.d.ts +0 -7
- package/dist/services/integration-api/handler/install-resource-handler.js +1 -16
- package/dist/services/onboarding/config-renderer/speed-kit-install-context.d.ts +1 -0
- package/dist/services/onboarding/config-renderer/speed-kit-install-context.js +11 -3
- package/dist/services/onboarding/fetch-event-handler.d.ts +1 -1
- package/dist/services/onboarding/fetch-event-handler.js +2 -3
- package/dist/services/onboarding/onboarding-model.js +2 -1
- package/dist/services/onboarding/onboarding-service-factory.js +3 -4
- package/dist/services/onboarding/server-config/index.d.ts +1 -1
- package/dist/services/prewarm/pre-warm-factory.js +2 -4
- package/dist/services/pull/pull-service-factory.js +3 -5
- package/dist/services/pull/pull-service.d.ts +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +3 -2
- package/dist/services/config-api/context/config-api-context.d.ts +0 -4
- package/dist/services/config-api/factory/entity-manager-factory.js +0 -21
- package/dist/services/config-api/interface/config-api-context-interface.d.ts +0 -3
- package/dist/services/config-api/interface/config-api-context-interface.js +0 -2
- package/dist/services/config-api/interface/request-extension-interface.d.ts +0 -5
- package/dist/services/config-api/interface/request-extension-interface.js +0 -2
package/.env.sample
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# This file serves as a template for the environment variables used by this project.
|
|
2
|
+
#
|
|
3
|
+
# INSTRUCTIONS:
|
|
4
|
+
# 1. Copy this file and rename to '.env'.
|
|
5
|
+
# 2. Replace all placeholder values with your actual values.
|
|
6
|
+
# 3. DO NOT commit the '.env' file to version control.
|
|
7
|
+
#
|
|
8
|
+
# IMPORTANT:
|
|
9
|
+
# Protect your sensitive data. This sample file is meant for
|
|
10
|
+
# reference and should not contain real or sensitive values.
|
|
11
|
+
|
|
12
|
+
# CHROME_PATH='C:\Program Files\Google\Chrome\Application\chrome.exe' # Windows
|
|
13
|
+
# CHROME_PATH='/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' # Mac
|
|
14
|
+
# CHROME_PATH='/opt/homebrew/bin/chromium' # Mac M1 -> run `brew install chromium --no-quarantine` to install an arm64-only chromium
|
|
15
|
+
# CHROME_PATH='/usr/bin/google-chrome' # Linux
|
|
16
|
+
|
|
17
|
+
# CHROME_USER_PROFILE_PATH='/Users/<USER>/Library/Application Support/Google/Chrome/Default/' # Mac
|
|
18
|
+
# CHROME_USER_PROFILE_PATH='<CHROME_USER_PROFILE_PATH>' # other
|
|
19
|
+
|
|
20
|
+
# Chrome Test Browser will use an existing sub-profile named 'Default'
|
|
21
|
+
# within CHROME_USER_PROFILE_PATH or creates one automatically on start up.
|
|
22
|
+
|
|
23
|
+
# Slack Deploy Token
|
|
24
|
+
# SLACK_TOKEN='<SLACK_TOKEN_FROM_1PASSWORD>'
|
|
25
|
+
|
|
26
|
+
# Chrome Extension Local Paths
|
|
27
|
+
# CHROME_EXTENSION_PATHS='<SPEED_KIT_EXTENSION_DIST_PATH>,<CHROME_EXTENSION_DIST_PATH_1>,<CHROME_EXTENSION_DIST_PATH_2>'
|
|
28
|
+
|
|
29
|
+
# Default SK Test App Name
|
|
30
|
+
# TEST_APP='<APP_NAME>'
|
|
31
|
+
|
|
32
|
+
# Diff Tool Configuration Priority:
|
|
33
|
+
# 1. DIFF_EXEC + DIFF_EXEC_TEMPLATE: Primary method using a custom diff command.
|
|
34
|
+
# 2. Global `idea` alias: Secondary fallback using IntelliJ's shell binary.
|
|
35
|
+
# 3. IDEA_INITIAL_DIRECTORY: Tertiary fallback if prior methods are undefined.
|
|
36
|
+
|
|
37
|
+
# Specify the executable command of your preferred diff tool. This is the primary method of defining a diff tool.
|
|
38
|
+
# Examples: "vscode --diff", "codium --diff", "diff", "idea diff"
|
|
39
|
+
# DIFF_EXEC='<DIFF_TOOL_EXEC>'
|
|
40
|
+
|
|
41
|
+
# Template for the diff operation using DIFF_EXEC. Defaults to "$exec $file1 $file2".
|
|
42
|
+
# Modify this to change the file comparison order of the executed diff command.
|
|
43
|
+
# DIFF_EXEC_TEMPLATE='$exec $file1 $file2'
|
|
44
|
+
|
|
45
|
+
# Path to IntelliJ's shell binary directory, used if DIFF_EXEC and the global `idea` alias fail or are not defined.
|
|
46
|
+
# Configure this to fallback to diff operations via IntelliJ IDEA.
|
|
47
|
+
# Will be used as: "<IDEA_INITIAL_DIRECTORY>/idea diff pathToFile1 pathToFile2"
|
|
48
|
+
# IDEA_INITIAL_DIRECTORY='<IDEA_INITIAL_DIRECTORY>'
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# [2.43.0](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v2.42.1...v2.43.0) (2024-07-19)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **config-api:** handle different login errorCases ([6c57e3a](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/6c57e3a6e61e91bda5ed425bafbe6c1db3646867))
|
|
7
|
+
* **deploy:** add loading spinner for different actions ([5eb379d](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/5eb379d234162615d2f1f0353c8afc161aad7476))
|
|
8
|
+
* **deploy:** add message for unchanged installResource ([650d121](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/650d1214f04df7a2c7552de69a5d1c3d646c0bc6))
|
|
9
|
+
|
|
10
|
+
## [2.42.1](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v2.42.0...v2.42.1) (2024-07-19)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **predictivePreloading:** set correct paths to predictivePreloading-module ([552f83a](https://gitlab.orestes.info/baqend/speed-kit-cli/commit/552f83a16dfd8b546553623081f662188a0081d9))
|
|
16
|
+
|
|
1
17
|
# [2.42.0](https://gitlab.orestes.info/baqend/speed-kit-cli/compare/v2.41.4...v2.42.0) (2024-07-17)
|
|
2
18
|
|
|
3
19
|
|
package/README.md
CHANGED
package/dist/helpers/race.d.ts
CHANGED
package/dist/helpers/race.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RaceTimeOutError = void 0;
|
|
3
4
|
exports.race = race;
|
|
4
5
|
const tslib_1 = require("tslib");
|
|
5
6
|
const application_error_1 = tslib_1.__importDefault(require("../services/error-handling/error/application-error"));
|
|
6
7
|
const DEFAULT_TIMEOUT = 5000;
|
|
7
8
|
class RaceTimeOutError extends application_error_1.default {
|
|
8
9
|
}
|
|
10
|
+
exports.RaceTimeOutError = RaceTimeOutError;
|
|
9
11
|
async function race(promise, timeout = DEFAULT_TIMEOUT) {
|
|
10
12
|
const timeOut = new Promise((resolve, reject) => {
|
|
11
13
|
setTimeout(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EntityManager } from "baqend";
|
|
2
|
-
import EntityManagerFactory from "./
|
|
3
|
-
import RequestExtensionInterface from "./
|
|
4
|
-
export
|
|
2
|
+
import { EntityManagerFactory } from "./entity-manager-factory";
|
|
3
|
+
import { RequestExtensionInterface } from "./";
|
|
4
|
+
export declare class Client {
|
|
5
5
|
private readonly agent;
|
|
6
6
|
private readonly app;
|
|
7
7
|
private readonly entityManagerFactory;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Client = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
|
|
5
6
|
const node_https_1 = require("node:https");
|
|
6
7
|
const race_1 = require("../../helpers/race");
|
|
7
8
|
const safe_1 = require("../../helpers/safe");
|
|
8
|
-
const json_response_error_1 =
|
|
9
|
+
const json_response_error_1 = require("./error/json-response-error");
|
|
9
10
|
const connection_error_1 = require("../error-handling/error/connection-error");
|
|
11
|
+
const application_error_1 = tslib_1.__importDefault(require("../error-handling/error/application-error"));
|
|
12
|
+
const login_error_1 = require("./error/login-error");
|
|
10
13
|
const REQUEST_TIMEOUT = 10_000;
|
|
11
14
|
const CONTENT_TYPE = "application/json;charset=UTF-8";
|
|
12
15
|
class Client {
|
|
@@ -37,6 +40,15 @@ class Client {
|
|
|
37
40
|
if (result.success === true) {
|
|
38
41
|
return result.data;
|
|
39
42
|
}
|
|
43
|
+
if (result.errorObj instanceof application_error_1.default) {
|
|
44
|
+
throw result.errorObj;
|
|
45
|
+
}
|
|
46
|
+
if (result.errorObj instanceof race_1.RaceTimeOutError) {
|
|
47
|
+
throw new connection_error_1.ConnectionError(`Got timeout of ${REQUEST_TIMEOUT}ms while trying to connect to app ${this.app}`, ["Check you internet-connection"]);
|
|
48
|
+
}
|
|
49
|
+
if (result.error.includes("Root login is disabled")) {
|
|
50
|
+
throw new login_error_1.LoginError(this.app);
|
|
51
|
+
}
|
|
40
52
|
throw new connection_error_1.ConnectionError(`Could not connect to app: ${this.app} - ${result.error}`);
|
|
41
53
|
}
|
|
42
54
|
async getModule(moduleName) {
|
|
@@ -59,7 +71,7 @@ class Client {
|
|
|
59
71
|
}
|
|
60
72
|
const jsonResponse = await (0, safe_1.safe)(response.json());
|
|
61
73
|
if (jsonResponse.success !== true) {
|
|
62
|
-
throw new json_response_error_1.
|
|
74
|
+
throw new json_response_error_1.JsonResponseError(jsonResponse.error);
|
|
63
75
|
}
|
|
64
76
|
return jsonResponse.data;
|
|
65
77
|
}
|
|
@@ -72,4 +84,4 @@ class Client {
|
|
|
72
84
|
return moduleResponse.data;
|
|
73
85
|
}
|
|
74
86
|
}
|
|
75
|
-
exports.
|
|
87
|
+
exports.Client = Client;
|
package/dist/services/config-api/{factory/config-api-service-factory.d.ts → config-api-factory.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import ConfigApiService from "
|
|
2
|
-
import ConfigApiContextInterface from "
|
|
3
|
-
export
|
|
1
|
+
import { ConfigApiService } from "./config-api-service";
|
|
2
|
+
import { ConfigApiContextInterface } from "./";
|
|
3
|
+
export declare class ConfigApiServiceFactory {
|
|
4
4
|
context: ConfigApiContextInterface;
|
|
5
5
|
service: ConfigApiService;
|
|
6
6
|
constructor(context: ConfigApiContextInterface);
|
package/dist/services/config-api/{factory/config-api-service-factory.js → config-api-factory.js}
RENAMED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigApiServiceFactory = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
|
-
const config_api_service_1 =
|
|
5
|
-
const client_1 =
|
|
6
|
-
const entity_manager_factory_1 =
|
|
5
|
+
const config_api_service_1 = require("./config-api-service");
|
|
6
|
+
const client_1 = require("./client");
|
|
7
|
+
const entity_manager_factory_1 = require("./entity-manager-factory");
|
|
7
8
|
const node_fs_1 = require("node:fs");
|
|
8
9
|
const node_os_1 = tslib_1.__importDefault(require("node:os"));
|
|
9
10
|
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
10
|
-
const application_error_1 = tslib_1.__importDefault(require("
|
|
11
|
+
const application_error_1 = tslib_1.__importDefault(require("../error-handling/error/application-error"));
|
|
11
12
|
class ConfigApiServiceFactory {
|
|
12
13
|
context;
|
|
13
14
|
service = undefined;
|
|
@@ -15,7 +16,7 @@ class ConfigApiServiceFactory {
|
|
|
15
16
|
this.context = context;
|
|
16
17
|
}
|
|
17
18
|
getService() {
|
|
18
|
-
if (!(this.service instanceof config_api_service_1.
|
|
19
|
+
if (!(this.service instanceof config_api_service_1.ConfigApiService)) {
|
|
19
20
|
this.buildService();
|
|
20
21
|
}
|
|
21
22
|
return this.service;
|
|
@@ -25,9 +26,9 @@ class ConfigApiServiceFactory {
|
|
|
25
26
|
throw new application_error_1.default("app is undefined");
|
|
26
27
|
}
|
|
27
28
|
this.createLoginTokenFileIfNotExists();
|
|
28
|
-
const entityManagerFactory = new entity_manager_factory_1.
|
|
29
|
-
const client = new client_1.
|
|
30
|
-
this.service = new config_api_service_1.
|
|
29
|
+
const entityManagerFactory = new entity_manager_factory_1.EntityManagerFactory();
|
|
30
|
+
const client = new client_1.Client(this.context.app, entityManagerFactory);
|
|
31
|
+
this.service = new config_api_service_1.ConfigApiService(this.context.app, client);
|
|
31
32
|
}
|
|
32
33
|
createLoginTokenFileIfNotExists() {
|
|
33
34
|
if (!(0, node_fs_1.existsSync)(node_path_1.default.resolve(node_os_1.default.homedir(), ".baqend"))) {
|
|
@@ -35,4 +36,4 @@ class ConfigApiServiceFactory {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
exports.
|
|
39
|
+
exports.ConfigApiServiceFactory = ConfigApiServiceFactory;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ConfigApiContextInterface {
|
|
2
|
+
app: string;
|
|
3
|
+
}
|
|
4
|
+
export interface RequestExtensionInterface {
|
|
5
|
+
method?: string;
|
|
6
|
+
headers?: NonNullable<unknown>;
|
|
7
|
+
body?: string | NonNullable<unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare class ConfigApiContext {
|
|
10
|
+
readonly app: string;
|
|
11
|
+
constructor(app: string);
|
|
12
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigApiContext = void 0;
|
|
3
4
|
class ConfigApiContext {
|
|
4
5
|
app = undefined;
|
|
5
6
|
constructor(app) {
|
|
6
7
|
this.app = app;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
9
|
-
exports.
|
|
10
|
+
exports.ConfigApiContext = ConfigApiContext;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import Client from "./client";
|
|
1
|
+
import { Client } from "./client";
|
|
2
2
|
import Install from "../deploy/interface/install";
|
|
3
|
-
export
|
|
3
|
+
export declare class ConfigApiService {
|
|
4
4
|
client: Client;
|
|
5
5
|
private readonly app;
|
|
6
6
|
constructor(app: string, client: Client);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigApiService = void 0;
|
|
3
4
|
class ConfigApiService {
|
|
4
5
|
client;
|
|
5
6
|
app;
|
|
@@ -65,4 +66,4 @@ class ConfigApiService {
|
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
|
-
exports.
|
|
69
|
+
exports.ConfigApiService = ConfigApiService;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityManagerFactory = void 0;
|
|
4
|
+
const cli_1 = require("baqend/cli");
|
|
5
|
+
class EntityManagerFactory {
|
|
6
|
+
EntityManager;
|
|
7
|
+
async getEntityManager(app) {
|
|
8
|
+
if (this.EntityManager) {
|
|
9
|
+
return this.EntityManager;
|
|
10
|
+
}
|
|
11
|
+
this.EntityManager = await cli_1.account.login({ app });
|
|
12
|
+
return this.EntityManager;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.EntityManagerFactory = EntityManagerFactory;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonResponseError = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
5
6
|
class JsonResponseError extends application_error_1.default {
|
|
6
7
|
code = "JSON_RESPONSE_ERROR";
|
|
7
8
|
}
|
|
8
|
-
exports.
|
|
9
|
+
exports.JsonResponseError = JsonResponseError;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoginError = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
5
6
|
class LoginError extends application_error_1.default {
|
|
6
7
|
code = "LOGIN_ERROR";
|
|
7
8
|
constructor(app) {
|
|
8
|
-
super(`Could not login to app ${app}
|
|
9
|
+
super(`Could not login to app ${app}`, ["run sk login"]);
|
|
9
10
|
}
|
|
10
11
|
}
|
|
11
|
-
exports.
|
|
12
|
+
exports.LoginError = LoginError;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./config-api-factory"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./config-api-service"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./config-api-model"), exports);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import Install from "../interface/install";
|
|
2
|
-
import
|
|
2
|
+
import { ConfigApiService } from "../../config-api";
|
|
3
3
|
export default class InstallResourceBuilder {
|
|
4
4
|
changed: boolean;
|
|
5
5
|
resource: Install;
|
|
6
|
-
configApi:
|
|
7
|
-
constructor(configApi:
|
|
6
|
+
configApi: ConfigApiService;
|
|
7
|
+
constructor(configApi: ConfigApiService);
|
|
8
8
|
init(configName: string): Promise<Install>;
|
|
9
9
|
merge(installParameters: Install): void;
|
|
10
10
|
updateFromRemote(remoteParameters: Install): Install;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { CliService } from "../../../cli";
|
|
2
|
-
import ConfigApiService from "../../../config-api/config-api-service";
|
|
3
2
|
import { PostDeployCheckInterface } from "../../deploy-service-model";
|
|
3
|
+
import { ConfigApiService } from "../../../config-api";
|
|
4
4
|
export default class RevalidatedModuleCheck implements PostDeployCheckInterface {
|
|
5
5
|
private readonly configApi;
|
|
6
6
|
private cli;
|
|
7
7
|
private readonly app;
|
|
8
8
|
constructor(configApi: ConfigApiService, cli: CliService, app: string);
|
|
9
9
|
check(): Promise<void>;
|
|
10
|
-
private showMessage;
|
|
11
10
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cli_1 = require("../../../cli");
|
|
4
|
+
const safe_1 = require("../../../../helpers/safe");
|
|
5
|
+
const deploy_module_file_error_1 = require("../../error/deploy-module-file-error");
|
|
6
|
+
const check_module_file_error_1 = require("../../error/check-module-file-error");
|
|
3
7
|
const REVALIDATED_MODULE_NAME = "speedKit.Revalidated";
|
|
4
8
|
class RevalidatedModuleCheck {
|
|
5
9
|
configApi;
|
|
@@ -11,20 +15,17 @@ class RevalidatedModuleCheck {
|
|
|
11
15
|
this.app = app;
|
|
12
16
|
}
|
|
13
17
|
async check() {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
this.cli.startAction("[postDeployCheck] check for revalidated module");
|
|
19
|
+
const result = await (0, safe_1.safe)(this.configApi.getModule(REVALIDATED_MODULE_NAME));
|
|
20
|
+
if (result.success === true && result.data) {
|
|
21
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
22
|
+
return;
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
|
|
24
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
25
|
+
if (result.success === false) {
|
|
26
|
+
throw new deploy_module_file_error_1.DeployModuleFileError(result.error);
|
|
22
27
|
}
|
|
23
|
-
|
|
24
|
-
showMessage() {
|
|
25
|
-
this.cli.writeError(`it seems ${REVALIDATED_MODULE_NAME} does not exists in the app ${this.app}`);
|
|
26
|
-
this.cli.write("please execute:");
|
|
27
|
-
this.cli.code(`sk generate-pop-config ${this.app}`);
|
|
28
|
+
throw new check_module_file_error_1.CheckModuleFileError(`it seems ${REVALIDATED_MODULE_NAME} does not exists in the app ${this.app}`, ["please execute:", `sk generate-pop-config ${this.app}`]);
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
exports.default = RevalidatedModuleCheck;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CliService } from "../../../cli";
|
|
2
|
-
import { FileListInterface } from "../../../integration-api";
|
|
2
|
+
import { FileListInterface, InstallResourceFile } from "../../../integration-api";
|
|
3
3
|
import { PostDeployCheckInterface } from "../../deploy-service-model";
|
|
4
4
|
export default class SaveFilesCheck implements PostDeployCheckInterface {
|
|
5
5
|
private fileList;
|
|
6
6
|
private readonly cli;
|
|
7
7
|
constructor(fileList: FileListInterface, cli: CliService);
|
|
8
8
|
check(): Promise<void>;
|
|
9
|
+
safeFiles(fileList: InstallResourceFile[]): Promise<void>;
|
|
9
10
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cli_1 = require("../../../cli");
|
|
4
|
+
const safe_1 = require("../../../../helpers/safe");
|
|
5
|
+
const safe_file_error_1 = require("../../error/safe-file-error");
|
|
3
6
|
class SaveFilesCheck {
|
|
4
7
|
fileList;
|
|
5
8
|
cli;
|
|
@@ -14,11 +17,21 @@ class SaveFilesCheck {
|
|
|
14
17
|
if (fileList.length === 0) {
|
|
15
18
|
return;
|
|
16
19
|
}
|
|
17
|
-
if (await this.cli.confirm(`Changes to localFiles will be saved now. Proceed?`)) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (!(await this.cli.confirm(`Changes to localFiles will be saved now. Proceed?`))) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this.cli.startAction("safe changed files");
|
|
24
|
+
const result = await (0, safe_1.safe)(this.safeFiles(fileList));
|
|
25
|
+
if (result.success === false) {
|
|
26
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
27
|
+
throw new safe_file_error_1.SafeFileError(result.error);
|
|
28
|
+
}
|
|
29
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
30
|
+
}
|
|
31
|
+
async safeFiles(fileList) {
|
|
32
|
+
for (const file of fileList) {
|
|
33
|
+
await file.updateIfChanged();
|
|
34
|
+
this.cli.writeSuccess(`${file.name} saved`);
|
|
22
35
|
}
|
|
23
36
|
}
|
|
24
37
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FileListInterface, CustomerConfig } from "../../../integration-api";
|
|
2
2
|
import { CliServiceInterface } from "../../../cli";
|
|
3
|
-
import ConfigApiService from "../../../config-api
|
|
3
|
+
import { ConfigApiService } from "../../../config-api";
|
|
4
4
|
export declare class SplitChangeCheck {
|
|
5
5
|
private cli;
|
|
6
6
|
private fileList;
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
const cli_1 = require("../cli");
|
|
5
|
-
const config_api_context_1 = tslib_1.__importDefault(require("../config-api/context/config-api-context"));
|
|
6
|
-
const config_api_service_factory_1 = tslib_1.__importDefault(require("../config-api/factory/config-api-service-factory"));
|
|
7
5
|
const diff_1 = require("../diff");
|
|
8
6
|
const install_resource_builder_1 = tslib_1.__importDefault(require("./builder/install-resource-builder"));
|
|
9
7
|
const revalidated_module_check_1 = tslib_1.__importDefault(require("./checks/post-deploy/revalidated-module-check"));
|
|
@@ -17,6 +15,7 @@ const deployment_detection_modifier_1 = tslib_1.__importDefault(require("./handl
|
|
|
17
15
|
const server_config_handler_1 = tslib_1.__importDefault(require("./handler/server-config-handler"));
|
|
18
16
|
const integration_api_1 = require("../integration-api");
|
|
19
17
|
const split_change_check_1 = require("./checks/pre-deploy/split-change-check");
|
|
18
|
+
const config_api_1 = require("../config-api");
|
|
20
19
|
class DeployServiceFactory {
|
|
21
20
|
context;
|
|
22
21
|
cliConfig;
|
|
@@ -53,8 +52,8 @@ class DeployServiceFactory {
|
|
|
53
52
|
], this.getPostDeployChecks(files, cliService, configApi, customer.app), this.context.dryRun);
|
|
54
53
|
}
|
|
55
54
|
getConfigApi(app) {
|
|
56
|
-
const configApiContext = new
|
|
57
|
-
return new
|
|
55
|
+
const configApiContext = new config_api_1.ConfigApiContext(app);
|
|
56
|
+
return new config_api_1.ConfigApiServiceFactory(configApiContext).getService();
|
|
58
57
|
}
|
|
59
58
|
async getIntegrationFiles() {
|
|
60
59
|
const integrationApiContext = new integration_api_1.IntegrationApiContext(this.context.customerPath, this.context.configName, this.context.artifacts);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CheckModuleFileError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
6
|
+
class CheckModuleFileError extends application_error_1.default {
|
|
7
|
+
code = "CHECK_MODULE_ERROR";
|
|
8
|
+
}
|
|
9
|
+
exports.CheckModuleFileError = CheckModuleFileError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeployInstallResourceError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
6
|
+
class DeployInstallResourceError extends application_error_1.default {
|
|
7
|
+
code = "INSTALL_RESOURCE_API_ERROR";
|
|
8
|
+
}
|
|
9
|
+
exports.DeployInstallResourceError = DeployInstallResourceError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeployModuleFileError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
6
|
+
class DeployModuleFileError extends application_error_1.default {
|
|
7
|
+
code = "MODULE_API_ERROR";
|
|
8
|
+
}
|
|
9
|
+
exports.DeployModuleFileError = DeployModuleFileError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeployServerConfigError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
6
|
+
class DeployServerConfigError extends application_error_1.default {
|
|
7
|
+
code = "SERVER_MODULE_API_ERROR";
|
|
8
|
+
}
|
|
9
|
+
exports.DeployServerConfigError = DeployServerConfigError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SafeFileError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
6
|
+
class SafeFileError extends application_error_1.default {
|
|
7
|
+
code = "SAFE_FILES_ERROR";
|
|
8
|
+
}
|
|
9
|
+
exports.SafeFileError = SafeFileError;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import DeployHandlerInterface from "../interface/deploy-handler-interface";
|
|
2
2
|
import { CustomerConfig, CustomerConfigFile, FILE_TYPE } from "../../integration-api/";
|
|
3
|
-
import ConfigApi from "../../config-api/config-api-service";
|
|
4
3
|
import { DiffService } from "../../diff";
|
|
5
4
|
import { CliService } from "../../cli";
|
|
6
5
|
import InstallResourceBuilder from "../builder/install-resource-builder";
|
|
6
|
+
import { ConfigApiService } from "../../config-api";
|
|
7
7
|
export default class CustomerConfigHandler implements DeployHandlerInterface {
|
|
8
8
|
private readonly customer;
|
|
9
9
|
private readonly configApi;
|
|
@@ -11,7 +11,7 @@ export default class CustomerConfigHandler implements DeployHandlerInterface {
|
|
|
11
11
|
private diffService;
|
|
12
12
|
private cli;
|
|
13
13
|
private builder;
|
|
14
|
-
constructor(customer: CustomerConfig, configApi:
|
|
14
|
+
constructor(customer: CustomerConfig, configApi: ConfigApiService, configName: string, diffService: DiffService, cli: CliService, builder: InstallResourceBuilder);
|
|
15
15
|
canHandle(type: FILE_TYPE): boolean;
|
|
16
16
|
handle(files: CustomerConfigFile[]): Promise<void>;
|
|
17
17
|
upload(files: CustomerConfigFile[]): Promise<void>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import DeployHandlerInterface from "../interface/deploy-handler-interface";
|
|
2
|
-
import ConfigApi from "../../config-api/config-api-service";
|
|
3
2
|
import { DiffService } from "../../diff";
|
|
4
3
|
import { CliService } from "../../cli";
|
|
5
4
|
import InstallResourceBuilder from "../builder/install-resource-builder";
|
|
6
5
|
import DeletedFileCheck from "./install-resource-modifier/deleted-file-check";
|
|
7
|
-
import {
|
|
6
|
+
import { CustomerConfig, FILE_TYPE, InstallResourceInterface } from "../../integration-api";
|
|
7
|
+
import { ConfigApiService } from "../../config-api";
|
|
8
8
|
export default class InstallResourceHandler implements DeployHandlerInterface {
|
|
9
9
|
private readonly customer;
|
|
10
10
|
private readonly configApi;
|
|
@@ -13,7 +13,7 @@ export default class InstallResourceHandler implements DeployHandlerInterface {
|
|
|
13
13
|
private cli;
|
|
14
14
|
private builder;
|
|
15
15
|
private deletedFilesChecker;
|
|
16
|
-
constructor(customer: CustomerConfig, configApi:
|
|
16
|
+
constructor(customer: CustomerConfig, configApi: ConfigApiService, configName: string, diffService: DiffService, cli: CliService, builder: InstallResourceBuilder, deletedFilesChecker: DeletedFileCheck);
|
|
17
17
|
canHandle(type: FILE_TYPE): boolean;
|
|
18
18
|
handle(files: InstallResourceInterface[]): Promise<void>;
|
|
19
19
|
upload(files: InstallResourceInterface[]): Promise<void>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cli_1 = require("../../cli");
|
|
3
4
|
const integration_api_1 = require("../../integration-api");
|
|
5
|
+
const safe_1 = require("../../../helpers/safe");
|
|
6
|
+
const deploy_install_resource_error_1 = require("../error/deploy-install-resource-error");
|
|
4
7
|
class InstallResourceHandler {
|
|
5
8
|
customer;
|
|
6
9
|
configApi;
|
|
@@ -39,6 +42,7 @@ class InstallResourceHandler {
|
|
|
39
42
|
}
|
|
40
43
|
await this.deletedFilesChecker.hasDeletedFiles(this.builder, files);
|
|
41
44
|
if (!this.builder.hasChanges()) {
|
|
45
|
+
this.cli.writeSuccess(`No changes found. InstallResource was ${this.cli.style.bold("not")} updated`);
|
|
42
46
|
return;
|
|
43
47
|
}
|
|
44
48
|
this.cli.write("");
|
|
@@ -49,10 +53,23 @@ class InstallResourceHandler {
|
|
|
49
53
|
}
|
|
50
54
|
const install = await this.getInstallResource();
|
|
51
55
|
await this.deletedFilesChecker.checkForDeletedLocalFiles(install);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
this.cli.startAction("update installResource");
|
|
57
|
+
const updateResult = await (0, safe_1.safe)(this.configApi.setInstall(install));
|
|
58
|
+
if (updateResult.success === false) {
|
|
59
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
60
|
+
throw new deploy_install_resource_error_1.DeployInstallResourceError(updateResult.error);
|
|
55
61
|
}
|
|
62
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
63
|
+
if (!(await this.cli.confirm("Activate new installation?"))) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
this.cli.startAction("activate installResource");
|
|
67
|
+
const activateResult = await (0, safe_1.safe)(this.configApi.activateInstall(install));
|
|
68
|
+
if (activateResult.success === false) {
|
|
69
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
70
|
+
throw new deploy_install_resource_error_1.DeployInstallResourceError(activateResult.error);
|
|
71
|
+
}
|
|
72
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
56
73
|
}
|
|
57
74
|
async processFile(file, installResource) {
|
|
58
75
|
if (!installResource) {
|
|
@@ -84,7 +101,14 @@ class InstallResourceHandler {
|
|
|
84
101
|
}
|
|
85
102
|
async getInstallResource() {
|
|
86
103
|
let install = await this.builder.init(this.configName);
|
|
87
|
-
|
|
104
|
+
this.cli.startAction("create installResource");
|
|
105
|
+
const result = await (0, safe_1.safe)(this.prepareRemoteInstallResource(install));
|
|
106
|
+
if (result.success === false) {
|
|
107
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
108
|
+
throw new deploy_install_resource_error_1.DeployInstallResourceError(result.error);
|
|
109
|
+
}
|
|
110
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
111
|
+
const remoteClone = result.data;
|
|
88
112
|
install = this.builder.updateFromRemote(remoteClone);
|
|
89
113
|
install.description = await this.cli.prompt("Describe new configuration:", {
|
|
90
114
|
defaultAnswer: install.description ?? this.configName,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import DeployHandlerInterface from "../interface/deploy-handler-interface";
|
|
2
2
|
import { FILE_TYPE, ModuleFile } from "../../integration-api";
|
|
3
|
-
import ConfigApi from "../../config-api/config-api-service";
|
|
4
3
|
import { DiffService } from "../../diff";
|
|
5
4
|
import { CliService } from "../../cli";
|
|
6
5
|
import RuntimeModifier from "../interface/runtime-modifier";
|
|
6
|
+
import { ConfigApiService } from "../../config-api";
|
|
7
7
|
export default class ModuleHandler implements DeployHandlerInterface {
|
|
8
8
|
private readonly configApi;
|
|
9
9
|
private diffService;
|
|
10
10
|
private cli;
|
|
11
11
|
private modifiers;
|
|
12
|
-
constructor(configApi:
|
|
12
|
+
constructor(configApi: ConfigApiService, diffService: DiffService, cli: CliService, modifiers: RuntimeModifier[]);
|
|
13
13
|
canHandle(type: FILE_TYPE): boolean;
|
|
14
14
|
handle(files: ModuleFile[]): Promise<void>;
|
|
15
15
|
upload(files: ModuleFile[]): Promise<void>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const integration_api_1 = require("../../integration-api");
|
|
4
|
+
const cli_1 = require("../../cli");
|
|
5
|
+
const safe_1 = require("../../../helpers/safe");
|
|
6
|
+
const deploy_module_file_error_1 = require("../error/deploy-module-file-error");
|
|
4
7
|
class ModuleHandler {
|
|
5
8
|
configApi;
|
|
6
9
|
diffService;
|
|
@@ -52,7 +55,13 @@ class ModuleHandler {
|
|
|
52
55
|
if (await this.cli.confirm(`${filesToUpload.length} Module(s) will be uploaded now. Proceed?`)) {
|
|
53
56
|
for (const file_ of files) {
|
|
54
57
|
const file = file_;
|
|
55
|
-
|
|
58
|
+
this.cli.startAction(`update module ${file.name}`);
|
|
59
|
+
const result = await (0, safe_1.safe)(this.configApi.setModule(file.getContent(), file.name));
|
|
60
|
+
if (result.success === false) {
|
|
61
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
62
|
+
throw new deploy_module_file_error_1.DeployModuleFileError(result.error);
|
|
63
|
+
}
|
|
64
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
56
65
|
for (let iterator = 0; iterator < this.modifiers.length; iterator++) {
|
|
57
66
|
const modifier = this.modifiers[iterator];
|
|
58
67
|
if (modifier.canModify(file)) {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import DeployHandlerInterface from "../interface/deploy-handler-interface";
|
|
2
|
-
import ConfigApi from "../../config-api/config-api-service";
|
|
3
2
|
import { DiffService } from "../../diff";
|
|
4
3
|
import { CliService } from "../../cli";
|
|
5
4
|
import { FILE_TYPE, ServerConfigFile } from "../../integration-api";
|
|
5
|
+
import { ConfigApiService } from "../../config-api";
|
|
6
6
|
export default class ServerConfigHandler implements DeployHandlerInterface {
|
|
7
7
|
private configApi;
|
|
8
8
|
private diffService;
|
|
9
9
|
private cli;
|
|
10
|
-
constructor(configApi:
|
|
10
|
+
constructor(configApi: ConfigApiService, diffService: DiffService, cli: CliService);
|
|
11
11
|
canHandle(type: FILE_TYPE): boolean;
|
|
12
12
|
handle(files: ServerConfigFile[]): Promise<void>;
|
|
13
13
|
upload(files: ServerConfigFile[]): Promise<void>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const cli_1 = require("../../cli");
|
|
3
4
|
const integration_api_1 = require("../../integration-api");
|
|
5
|
+
const safe_1 = require("../../../helpers/safe");
|
|
6
|
+
const deploy_server_config_error_1 = require("../error/deploy-server-config-error");
|
|
4
7
|
class ServerConfigHandler {
|
|
5
8
|
configApi;
|
|
6
9
|
diffService;
|
|
@@ -41,11 +44,18 @@ class ServerConfigHandler {
|
|
|
41
44
|
this.cli.write("");
|
|
42
45
|
this.cli.write("Summary");
|
|
43
46
|
this.cli.writeBuffer();
|
|
44
|
-
if (await this.cli.confirm(`ServerConfig will be uploaded now. Proceed?`)) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
if (!(await this.cli.confirm(`ServerConfig will be uploaded now. Proceed?`))) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.cli.startAction("upload serverconfig");
|
|
51
|
+
const result = await (0, safe_1.safe)(this.configApi.setServerConfig(file.getContent(),
|
|
52
|
+
// @ts-expect-error revision is unknown
|
|
53
|
+
file.config.revision.version));
|
|
54
|
+
if (result.success === false) {
|
|
55
|
+
this.cli.endAction(cli_1.CliActionStatus.FAILED);
|
|
56
|
+
throw new deploy_server_config_error_1.DeployServerConfigError(result.error);
|
|
48
57
|
}
|
|
58
|
+
this.cli.endAction(cli_1.CliActionStatus.COMPLETED);
|
|
49
59
|
}
|
|
50
60
|
async confirm(file, isNew = false) {
|
|
51
61
|
const confirm = await this.cli.confirm(`Deploy ${file.name}?`, true);
|
|
@@ -4,7 +4,6 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const file_handler_1 = tslib_1.__importDefault(require("./file-handler"));
|
|
5
5
|
const integration_api_model_1 = require("../integration-api-model");
|
|
6
6
|
const application_error_1 = tslib_1.__importDefault(require("../../error-handling/error/application-error"));
|
|
7
|
-
const PREDICTIVE_PRELOADING = "predictive-preloading";
|
|
8
7
|
class InstallResourceHandler extends file_handler_1.default {
|
|
9
8
|
allowedFiles = [
|
|
10
9
|
"config_SpeedKit",
|
|
@@ -48,21 +47,7 @@ class InstallResourceHandler extends file_handler_1.default {
|
|
|
48
47
|
* @private
|
|
49
48
|
*/
|
|
50
49
|
async getFileContent(fileName, filePath) {
|
|
51
|
-
|
|
52
|
-
if (fileName === "config_loadHandler" &&
|
|
53
|
-
content.includes(PREDICTIVE_PRELOADING)) {
|
|
54
|
-
return this.replaceWithDebugPackage(content);
|
|
55
|
-
}
|
|
56
|
-
return content;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* @param content
|
|
62
|
-
* @private
|
|
63
|
-
*/
|
|
64
|
-
replaceWithDebugPackage(content) {
|
|
65
|
-
return content.replace(PREDICTIVE_PRELOADING, `${PREDICTIVE_PRELOADING}.debug.min.js`);
|
|
50
|
+
return await this.fileReader.getContent(filePath);
|
|
66
51
|
}
|
|
67
52
|
}
|
|
68
53
|
exports.default = InstallResourceHandler;
|
|
@@ -10,6 +10,7 @@ export declare class SpeedKitInstallContext {
|
|
|
10
10
|
private isLocalRuntime;
|
|
11
11
|
constructor(customerConfig: CustomerConfig, configName: string, files: FileListInterface, bundler: BundleService, skTemplate: InstallSpeedKitJsTemplate, isLocalRuntime?: boolean);
|
|
12
12
|
getSpeedKitInstallJs(): Promise<string>;
|
|
13
|
+
private prepareConfigLoadHandler;
|
|
13
14
|
private getConfigSpeedKit;
|
|
14
15
|
/**
|
|
15
16
|
* Fetches and returns the latest dynamic fetcher from the code repository. If a new version is available online it is
|
|
@@ -36,9 +36,7 @@ class SpeedKitInstallContext {
|
|
|
36
36
|
return this.bundler.bundle({
|
|
37
37
|
basePaths: IMPORT_PATHS,
|
|
38
38
|
entryPoints: {
|
|
39
|
-
"rum.js": this.
|
|
40
|
-
.getByName(files_1.INTEGRATION_FILES.CONFIG.LOAD_HANDLER)
|
|
41
|
-
.getContent(),
|
|
39
|
+
"rum.js": this.prepareConfigLoadHandler(),
|
|
42
40
|
"config.js": configJs,
|
|
43
41
|
"loader.js": this.files
|
|
44
42
|
.getByName(files_1.INTEGRATION_FILES.CUSTOM.LOADER)
|
|
@@ -51,6 +49,16 @@ class SpeedKitInstallContext {
|
|
|
51
49
|
},
|
|
52
50
|
});
|
|
53
51
|
}
|
|
52
|
+
prepareConfigLoadHandler() {
|
|
53
|
+
const configFileContent = this.files
|
|
54
|
+
.getByName(files_1.INTEGRATION_FILES.CONFIG.LOAD_HANDLER)
|
|
55
|
+
.getContent();
|
|
56
|
+
if (!configFileContent.includes("predictive-preloading/predictivePreloading.min.js")) {
|
|
57
|
+
return configFileContent;
|
|
58
|
+
}
|
|
59
|
+
// automatically use debug package for sk onboarding
|
|
60
|
+
return configFileContent.replace("predictive-preloading/predictivePreloading.min.js", "predictive-preloading/predictivePreloading.debug.min.js");
|
|
61
|
+
}
|
|
54
62
|
getConfigSpeedKit() {
|
|
55
63
|
const configString = this.files
|
|
56
64
|
.getByName(files_1.INTEGRATION_FILES.CONFIG.SPEED_KIT)
|
|
@@ -3,7 +3,7 @@ import { Protocol } from "puppeteer-core";
|
|
|
3
3
|
import { CDPSession, Target } from "puppeteer";
|
|
4
4
|
import { CliService } from "../cli";
|
|
5
5
|
import { CustomerConfig } from "../integration-api";
|
|
6
|
-
import ConfigApiService from "../config-api
|
|
6
|
+
import { ConfigApiService } from "../config-api";
|
|
7
7
|
export declare class FetchEventHandler {
|
|
8
8
|
private browserFetchEvents;
|
|
9
9
|
private customerConfig;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.FetchEventHandler = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
const onboarding_model_1 = require("./onboarding-model");
|
|
6
5
|
const puppeteer_core_1 = require("puppeteer-core");
|
|
7
6
|
const abort_response_1 = require("./browser/abort-response");
|
|
8
7
|
const cli_1 = require("../cli");
|
|
9
|
-
const login_error_1 = tslib_1.__importDefault(require("../config-api/error/login-error"));
|
|
10
8
|
const safe_1 = require("../../helpers/safe");
|
|
9
|
+
const login_error_1 = require("../config-api/error/login-error");
|
|
11
10
|
class FetchEventHandler {
|
|
12
11
|
browserFetchEvents;
|
|
13
12
|
customerConfig;
|
|
@@ -144,7 +143,7 @@ class FetchEventHandler {
|
|
|
144
143
|
// unknown raceCondition where the authResponse is sent to fast
|
|
145
144
|
return;
|
|
146
145
|
}
|
|
147
|
-
if (serverConfigResponse.errorObj instanceof login_error_1.
|
|
146
|
+
if (serverConfigResponse.errorObj instanceof login_error_1.LoginError) {
|
|
148
147
|
this.cli.writeError(`could not login to app ${this.customerConfig.app} to gather credentials. Try run sk login`);
|
|
149
148
|
await this.sendDefaultAuthBehaviour(browserClient, event.requestId);
|
|
150
149
|
return;
|
|
@@ -4,8 +4,9 @@ exports.SpeedKitInstallRegex = exports.USER_AGENT = exports.OnboardingContext =
|
|
|
4
4
|
const core_1 = require("@oclif/core");
|
|
5
5
|
const cli_parameters_1 = require("../../models/cli-parameters");
|
|
6
6
|
const DEFAULT_BROWSER_ARGS = [
|
|
7
|
-
"--enable-features=NetworkService",
|
|
7
|
+
"--enable-features=Translate,NetworkService",
|
|
8
8
|
"--no-first-run",
|
|
9
|
+
"--no-default-browser-check",
|
|
9
10
|
"--disable-infobars",
|
|
10
11
|
];
|
|
11
12
|
exports.BROWSER_EVENTS = {
|
|
@@ -7,8 +7,6 @@ const files_1 = require("../../models/files");
|
|
|
7
7
|
const athena_1 = require("../athena");
|
|
8
8
|
const bundler_1 = require("../bundler");
|
|
9
9
|
const cli_1 = require("../cli");
|
|
10
|
-
const config_api_context_1 = tslib_1.__importDefault(require("../config-api/context/config-api-context"));
|
|
11
|
-
const config_api_service_factory_1 = tslib_1.__importDefault(require("../config-api/factory/config-api-service-factory"));
|
|
12
10
|
const diff_1 = require("../diff");
|
|
13
11
|
const document_handler_runtime_service_factory_1 = tslib_1.__importDefault(require("../document-handler-runtime/factory/document-handler-runtime-service-factory"));
|
|
14
12
|
const integration_api_1 = require("../integration-api");
|
|
@@ -38,6 +36,7 @@ const devtools_extension_api_1 = require("./browser/extension/devtools-extension
|
|
|
38
36
|
const todo_collector_1 = require("./todo-collector");
|
|
39
37
|
const crawler_1 = require("./virtual-orestes-app/crawler");
|
|
40
38
|
const virtual_orestes_app_1 = require("./virtual-orestes-app");
|
|
39
|
+
const config_api_1 = require("../config-api");
|
|
41
40
|
class OnboardingServiceFactory {
|
|
42
41
|
context;
|
|
43
42
|
cliConfig;
|
|
@@ -105,8 +104,8 @@ class OnboardingServiceFactory {
|
|
|
105
104
|
}
|
|
106
105
|
}
|
|
107
106
|
getConfigApi(app) {
|
|
108
|
-
const configApiContext = new
|
|
109
|
-
return new
|
|
107
|
+
const configApiContext = new config_api_1.ConfigApiContext(app);
|
|
108
|
+
return new config_api_1.ConfigApiServiceFactory(configApiContext).getService();
|
|
110
109
|
}
|
|
111
110
|
async getFetchEventHandler(files, customerConfig, documentHandler, cache, cli, browserContext, athenaClient) {
|
|
112
111
|
const configApi = this.getConfigApi(customerConfig.app);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliService } from "../../cli";
|
|
2
|
-
import ConfigApiService from "../../config-api/config-api-service";
|
|
3
2
|
import { SpeedKitServerConfig } from "../onboarding-model";
|
|
3
|
+
import { ConfigApiService } from "../../config-api";
|
|
4
4
|
export declare class ServerConfig {
|
|
5
5
|
private cli;
|
|
6
6
|
private client?;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PreWarmFactory = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
const cli_1 = require("../cli");
|
|
6
|
-
const config_api_context_1 = tslib_1.__importDefault(require("../config-api/context/config-api-context"));
|
|
7
|
-
const config_api_service_factory_1 = tslib_1.__importDefault(require("../config-api/factory/config-api-service-factory"));
|
|
8
5
|
const _1 = require("./");
|
|
9
6
|
const asset_api_client_1 = require("./assets/asset-api-client");
|
|
10
7
|
const csv_reader_1 = require("./csv-reader");
|
|
8
|
+
const config_api_1 = require("../config-api");
|
|
11
9
|
class PreWarmFactory {
|
|
12
10
|
context;
|
|
13
11
|
constructor(context) {
|
|
@@ -15,7 +13,7 @@ class PreWarmFactory {
|
|
|
15
13
|
}
|
|
16
14
|
async getService() {
|
|
17
15
|
const cli = new cli_1.CliServiceFactory(new cli_1.CliContext(this.context.quiet)).getService();
|
|
18
|
-
const configApi = new
|
|
16
|
+
const configApi = new config_api_1.ConfigApiServiceFactory(new config_api_1.ConfigApiContext(this.context.app)).getService();
|
|
19
17
|
const entityManager = await configApi.client.getEntityManager();
|
|
20
18
|
const csvReader = new csv_reader_1.CsvReader();
|
|
21
19
|
const assetApiClient = new asset_api_client_1.AssetApiClient(entityManager.token, this.context.app, this.context.keepParameterSorting);
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PullServiceFactory = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
4
|
const integration_api_1 = require("../integration-api");
|
|
6
|
-
const config_api_service_factory_1 = tslib_1.__importDefault(require("../config-api/factory/config-api-service-factory"));
|
|
7
|
-
const config_api_context_1 = tslib_1.__importDefault(require("../config-api/context/config-api-context"));
|
|
8
5
|
const cli_1 = require("../cli");
|
|
9
6
|
const _1 = require("./");
|
|
7
|
+
const config_api_1 = require("../config-api");
|
|
10
8
|
class PullServiceFactory {
|
|
11
9
|
context;
|
|
12
10
|
userConfig;
|
|
@@ -36,8 +34,8 @@ class PullServiceFactory {
|
|
|
36
34
|
return await integrationApi.run();
|
|
37
35
|
}
|
|
38
36
|
getConfigApi(app) {
|
|
39
|
-
const configApiContext = new
|
|
40
|
-
return new
|
|
37
|
+
const configApiContext = new config_api_1.ConfigApiContext(app);
|
|
38
|
+
return new config_api_1.ConfigApiServiceFactory(configApiContext).getService();
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
41
|
exports.PullServiceFactory = PullServiceFactory;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CliServiceInterface } from "../cli";
|
|
2
2
|
import { FileListInterface } from "../integration-api";
|
|
3
|
-
import ConfigApiService from "../config-api
|
|
3
|
+
import { ConfigApiService } from "../config-api";
|
|
4
4
|
export declare class PullService {
|
|
5
5
|
private fileList;
|
|
6
6
|
private cli;
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speedkit/cli",
|
|
3
3
|
"description": "Speed Kit CLI",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.43.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Baqend.com",
|
|
7
7
|
"email": "info@baqend.com"
|
|
@@ -42,7 +42,8 @@
|
|
|
42
42
|
"files": [
|
|
43
43
|
"dist",
|
|
44
44
|
"oclif.manifest.json",
|
|
45
|
-
"CHANGELOG.md"
|
|
45
|
+
"CHANGELOG.md",
|
|
46
|
+
".env.sample"
|
|
46
47
|
],
|
|
47
48
|
"oclif": {
|
|
48
49
|
"commands": "./dist/commands",
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const cli_1 = require("baqend/cli");
|
|
5
|
-
const login_error_1 = tslib_1.__importDefault(require("../error/login-error"));
|
|
6
|
-
class EntityManagerFactory {
|
|
7
|
-
EntityManager;
|
|
8
|
-
async getEntityManager(app) {
|
|
9
|
-
if (this.EntityManager) {
|
|
10
|
-
return this.EntityManager;
|
|
11
|
-
}
|
|
12
|
-
try {
|
|
13
|
-
this.EntityManager = await cli_1.account.login({ app });
|
|
14
|
-
return this.EntityManager;
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
throw new login_error_1.default(app);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.default = EntityManagerFactory;
|