@pax8-cta/core 0.1.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/LICENSE +198 -0
- package/dist/auth/device-code-login.d.ts +40 -0
- package/dist/auth/device-code-login.d.ts.map +1 -0
- package/dist/auth/device-code-login.js +59 -0
- package/dist/auth/device-code-login.js.map +1 -0
- package/dist/auth/gdap-client.d.ts +81 -0
- package/dist/auth/gdap-client.d.ts.map +1 -0
- package/dist/auth/gdap-client.js +128 -0
- package/dist/auth/gdap-client.js.map +1 -0
- package/dist/auth/index.d.ts +19 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +19 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/token-manager.d.ts +54 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +150 -0
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +27 -0
- package/dist/client.js.map +1 -0
- package/dist/config/client.d.ts +24 -0
- package/dist/config/client.d.ts.map +1 -0
- package/dist/config/client.js +18 -0
- package/dist/config/client.js.map +1 -0
- package/dist/config/index.d.ts +18 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +18 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +81 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +271 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +751 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +556 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/constants.d.ts +116 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +170 -0
- package/dist/constants.js.map +1 -0
- package/dist/dataverse/agent-resolver.d.ts +98 -0
- package/dist/dataverse/agent-resolver.d.ts.map +1 -0
- package/dist/dataverse/agent-resolver.js +185 -0
- package/dist/dataverse/agent-resolver.js.map +1 -0
- package/dist/dataverse/client.d.ts +104 -0
- package/dist/dataverse/client.d.ts.map +1 -0
- package/dist/dataverse/client.js +272 -0
- package/dist/dataverse/client.js.map +1 -0
- package/dist/dataverse/connection-refs.d.ts +115 -0
- package/dist/dataverse/connection-refs.d.ts.map +1 -0
- package/dist/dataverse/connection-refs.js +203 -0
- package/dist/dataverse/connection-refs.js.map +1 -0
- package/dist/dataverse/index.d.ts +20 -0
- package/dist/dataverse/index.d.ts.map +1 -0
- package/dist/dataverse/index.js +20 -0
- package/dist/dataverse/index.js.map +1 -0
- package/dist/dataverse/solution-ops.d.ts +100 -0
- package/dist/dataverse/solution-ops.d.ts.map +1 -0
- package/dist/dataverse/solution-ops.js +288 -0
- package/dist/dataverse/solution-ops.js.map +1 -0
- package/dist/errors.d.ts +171 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +178 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/mock/demo-data.d.ts +213 -0
- package/dist/mock/demo-data.d.ts.map +1 -0
- package/dist/mock/demo-data.js +1096 -0
- package/dist/mock/demo-data.js.map +1 -0
- package/dist/mock/demo-deployment-store.d.ts +77 -0
- package/dist/mock/demo-deployment-store.d.ts.map +1 -0
- package/dist/mock/demo-deployment-store.js +85 -0
- package/dist/mock/demo-deployment-store.js.map +1 -0
- package/dist/powerplatform/admin-client.d.ts +226 -0
- package/dist/powerplatform/admin-client.d.ts.map +1 -0
- package/dist/powerplatform/admin-client.js +315 -0
- package/dist/powerplatform/admin-client.js.map +1 -0
- package/dist/powerplatform/index.d.ts +18 -0
- package/dist/powerplatform/index.d.ts.map +1 -0
- package/dist/powerplatform/index.js +18 -0
- package/dist/powerplatform/index.js.map +1 -0
- package/dist/powerplatform/tenant-discovery.d.ts +100 -0
- package/dist/powerplatform/tenant-discovery.d.ts.map +1 -0
- package/dist/powerplatform/tenant-discovery.js +205 -0
- package/dist/powerplatform/tenant-discovery.js.map +1 -0
- package/dist/preconditions/check.d.ts +41 -0
- package/dist/preconditions/check.d.ts.map +1 -0
- package/dist/preconditions/check.js +173 -0
- package/dist/preconditions/check.js.map +1 -0
- package/dist/preconditions/index.d.ts +20 -0
- package/dist/preconditions/index.d.ts.map +1 -0
- package/dist/preconditions/index.js +20 -0
- package/dist/preconditions/index.js.map +1 -0
- package/dist/preconditions/loader.d.ts +33 -0
- package/dist/preconditions/loader.d.ts.map +1 -0
- package/dist/preconditions/loader.js +65 -0
- package/dist/preconditions/loader.js.map +1 -0
- package/dist/preconditions/schema.d.ts +103 -0
- package/dist/preconditions/schema.d.ts.map +1 -0
- package/dist/preconditions/schema.js +93 -0
- package/dist/preconditions/schema.js.map +1 -0
- package/dist/preconditions/types.d.ts +118 -0
- package/dist/preconditions/types.d.ts.map +1 -0
- package/dist/preconditions/types.js +17 -0
- package/dist/preconditions/types.js.map +1 -0
- package/dist/queue/index.d.ts +17 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +17 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/memory-queue.d.ts +86 -0
- package/dist/queue/memory-queue.d.ts.map +1 -0
- package/dist/queue/memory-queue.js +221 -0
- package/dist/queue/memory-queue.js.map +1 -0
- package/dist/services/audit-log.d.ts +59 -0
- package/dist/services/audit-log.d.ts.map +1 -0
- package/dist/services/audit-log.js +193 -0
- package/dist/services/audit-log.js.map +1 -0
- package/dist/services/auth-error-parser.d.ts +36 -0
- package/dist/services/auth-error-parser.d.ts.map +1 -0
- package/dist/services/auth-error-parser.js +90 -0
- package/dist/services/auth-error-parser.js.map +1 -0
- package/dist/services/deployment-doctor.d.ts +109 -0
- package/dist/services/deployment-doctor.d.ts.map +1 -0
- package/dist/services/deployment-doctor.js +476 -0
- package/dist/services/deployment-doctor.js.map +1 -0
- package/dist/services/deployment-notifications.d.ts +41 -0
- package/dist/services/deployment-notifications.d.ts.map +1 -0
- package/dist/services/deployment-notifications.js +161 -0
- package/dist/services/deployment-notifications.js.map +1 -0
- package/dist/services/deployment-progress.d.ts +89 -0
- package/dist/services/deployment-progress.d.ts.map +1 -0
- package/dist/services/deployment-progress.js +244 -0
- package/dist/services/deployment-progress.js.map +1 -0
- package/dist/services/deployment-service.d.ts +97 -0
- package/dist/services/deployment-service.d.ts.map +1 -0
- package/dist/services/deployment-service.js +375 -0
- package/dist/services/deployment-service.js.map +1 -0
- package/dist/services/drift-analyzer.d.ts +86 -0
- package/dist/services/drift-analyzer.d.ts.map +1 -0
- package/dist/services/drift-analyzer.js +273 -0
- package/dist/services/drift-analyzer.js.map +1 -0
- package/dist/services/environment-setup.d.ts +97 -0
- package/dist/services/environment-setup.d.ts.map +1 -0
- package/dist/services/environment-setup.js +250 -0
- package/dist/services/environment-setup.js.map +1 -0
- package/dist/services/health-check.d.ts +168 -0
- package/dist/services/health-check.d.ts.map +1 -0
- package/dist/services/health-check.js +705 -0
- package/dist/services/health-check.js.map +1 -0
- package/dist/services/index.d.ts +39 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +39 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/logger.d.ts +139 -0
- package/dist/services/logger.d.ts.map +1 -0
- package/dist/services/logger.js +268 -0
- package/dist/services/logger.js.map +1 -0
- package/dist/services/notification-service.d.ts +55 -0
- package/dist/services/notification-service.d.ts.map +1 -0
- package/dist/services/notification-service.js +184 -0
- package/dist/services/notification-service.js.map +1 -0
- package/dist/services/risk-analyzer.d.ts +252 -0
- package/dist/services/risk-analyzer.d.ts.map +1 -0
- package/dist/services/risk-analyzer.js +866 -0
- package/dist/services/risk-analyzer.js.map +1 -0
- package/dist/services/rollback.d.ts +57 -0
- package/dist/services/rollback.d.ts.map +1 -0
- package/dist/services/rollback.js +270 -0
- package/dist/services/rollback.js.map +1 -0
- package/dist/services/scheduler.d.ts +80 -0
- package/dist/services/scheduler.d.ts.map +1 -0
- package/dist/services/scheduler.js +350 -0
- package/dist/services/scheduler.js.map +1 -0
- package/dist/services/secrets.d.ts +31 -0
- package/dist/services/secrets.d.ts.map +1 -0
- package/dist/services/secrets.js +206 -0
- package/dist/services/secrets.js.map +1 -0
- package/dist/services/settings-service.d.ts +132 -0
- package/dist/services/settings-service.d.ts.map +1 -0
- package/dist/services/settings-service.js +378 -0
- package/dist/services/settings-service.js.map +1 -0
- package/dist/services/solution-diff.d.ts +127 -0
- package/dist/services/solution-diff.d.ts.map +1 -0
- package/dist/services/solution-diff.js +260 -0
- package/dist/services/solution-diff.js.map +1 -0
- package/dist/services/solution-mode-detector.d.ts +35 -0
- package/dist/services/solution-mode-detector.d.ts.map +1 -0
- package/dist/services/solution-mode-detector.js +84 -0
- package/dist/services/solution-mode-detector.js.map +1 -0
- package/dist/services/tenant-resolver.d.ts +55 -0
- package/dist/services/tenant-resolver.d.ts.map +1 -0
- package/dist/services/tenant-resolver.js +126 -0
- package/dist/services/tenant-resolver.js.map +1 -0
- package/dist/services/unmanaged-customizations.d.ts +104 -0
- package/dist/services/unmanaged-customizations.d.ts.map +1 -0
- package/dist/services/unmanaged-customizations.js +521 -0
- package/dist/services/unmanaged-customizations.js.map +1 -0
- package/dist/services/url-templater.d.ts +184 -0
- package/dist/services/url-templater.d.ts.map +1 -0
- package/dist/services/url-templater.js +327 -0
- package/dist/services/url-templater.js.map +1 -0
- package/dist/services/version-checker.d.ts +108 -0
- package/dist/services/version-checker.d.ts.map +1 -0
- package/dist/services/version-checker.js +403 -0
- package/dist/services/version-checker.js.map +1 -0
- package/dist/services/waves.d.ts +90 -0
- package/dist/services/waves.d.ts.map +1 -0
- package/dist/services/waves.js +222 -0
- package/dist/services/waves.js.map +1 -0
- package/dist/services/webhook.d.ts +95 -0
- package/dist/services/webhook.d.ts.map +1 -0
- package/dist/services/webhook.js +244 -0
- package/dist/services/webhook.js.map +1 -0
- package/dist/utils/deployment-tools.d.ts +110 -0
- package/dist/utils/deployment-tools.d.ts.map +1 -0
- package/dist/utils/deployment-tools.js +121 -0
- package/dist/utils/deployment-tools.js.map +1 -0
- package/dist/utils/index.d.ts +17 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { getNotificationService } from "./notification-service.js";
|
|
17
|
+
import { getSettingsService } from "./settings-service.js";
|
|
18
|
+
import { coreLogger } from "./logger.js";
|
|
19
|
+
const logger = coreLogger.child({ service: "deployment-notifications" });
|
|
20
|
+
/**
|
|
21
|
+
* Helper service for sending deployment lifecycle notifications
|
|
22
|
+
* Checks settings before sending to ensure only enabled notifications are sent
|
|
23
|
+
*/
|
|
24
|
+
export class DeploymentNotifications {
|
|
25
|
+
baseUrl;
|
|
26
|
+
constructor(baseUrl) {
|
|
27
|
+
this.baseUrl = baseUrl || process.env.PUBLIC_URL || process.env.NEXTAUTH_URL;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Send notification when deployment batch starts
|
|
31
|
+
*/
|
|
32
|
+
async notifyDeploymentStart(deploymentId, solutionName, tenantCount) {
|
|
33
|
+
try {
|
|
34
|
+
const settings = await getSettingsService().getDecryptedAppSettings();
|
|
35
|
+
if (!settings.notifyOnDeploymentStart) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const notificationService = getNotificationService();
|
|
39
|
+
const deploymentUrl = this.baseUrl
|
|
40
|
+
? `${this.baseUrl}/deployments/${deploymentId}`
|
|
41
|
+
: undefined;
|
|
42
|
+
const payload = {
|
|
43
|
+
title: `Deployment Started: ${solutionName}`,
|
|
44
|
+
message: `Deploying agent "${solutionName}" to ${tenantCount} tenant${tenantCount === 1 ? "" : "s"}`,
|
|
45
|
+
color: "info",
|
|
46
|
+
url: deploymentUrl,
|
|
47
|
+
};
|
|
48
|
+
// Fire and forget - don't block deployment
|
|
49
|
+
notificationService.sendNotification(payload).catch((error) => {
|
|
50
|
+
logger.warn("Failed to send deployment start notification", { error, deploymentId });
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
// Never fail deployment due to notification error
|
|
55
|
+
logger.warn("Error in notifyDeploymentStart", { error, deploymentId });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Send notification when deployment batch completes successfully
|
|
60
|
+
*/
|
|
61
|
+
async notifyDeploymentComplete(deploymentId, solutionName, successCount, totalCount, durationMs) {
|
|
62
|
+
try {
|
|
63
|
+
const settings = await getSettingsService().getDecryptedAppSettings();
|
|
64
|
+
if (!settings.notifyOnDeploymentComplete) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const notificationService = getNotificationService();
|
|
68
|
+
const deploymentUrl = this.baseUrl
|
|
69
|
+
? `${this.baseUrl}/deployments/${deploymentId}`
|
|
70
|
+
: undefined;
|
|
71
|
+
const durationMin = Math.round(durationMs / 60000);
|
|
72
|
+
const payload = {
|
|
73
|
+
title: `Deployment Complete: ${solutionName}`,
|
|
74
|
+
message: `Successfully deployed "${solutionName}" to ${successCount}/${totalCount} tenant${totalCount === 1 ? "" : "s"} in ${durationMin} minute${durationMin === 1 ? "" : "s"}`,
|
|
75
|
+
color: "success",
|
|
76
|
+
url: deploymentUrl,
|
|
77
|
+
};
|
|
78
|
+
// Fire and forget
|
|
79
|
+
notificationService.sendNotification(payload).catch((error) => {
|
|
80
|
+
logger.warn("Failed to send deployment complete notification", { error, deploymentId });
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
logger.warn("Error in notifyDeploymentComplete", { error, deploymentId });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Send notification when deployment batch fails
|
|
89
|
+
*/
|
|
90
|
+
async notifyDeploymentFailure(deploymentId, solutionName, failedCount, totalCount, errorSummary) {
|
|
91
|
+
try {
|
|
92
|
+
const settings = await getSettingsService().getDecryptedAppSettings();
|
|
93
|
+
if (!settings.notifyOnDeploymentFailure) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const notificationService = getNotificationService();
|
|
97
|
+
const deploymentUrl = this.baseUrl
|
|
98
|
+
? `${this.baseUrl}/deployments/${deploymentId}`
|
|
99
|
+
: undefined;
|
|
100
|
+
let message = `Deployment failed for "${solutionName}" - ${failedCount}/${totalCount} tenant${totalCount === 1 ? "" : "s"} failed`;
|
|
101
|
+
if (errorSummary) {
|
|
102
|
+
message += `\n\nError: ${errorSummary}`;
|
|
103
|
+
}
|
|
104
|
+
const payload = {
|
|
105
|
+
title: `Deployment Failed: ${solutionName}`,
|
|
106
|
+
message,
|
|
107
|
+
color: "error",
|
|
108
|
+
url: deploymentUrl,
|
|
109
|
+
};
|
|
110
|
+
// Fire and forget
|
|
111
|
+
notificationService.sendNotification(payload).catch((error) => {
|
|
112
|
+
logger.warn("Failed to send deployment failure notification", { error, deploymentId });
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger.warn("Error in notifyDeploymentFailure", { error, deploymentId });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Send notification when deployment requires approval
|
|
121
|
+
*/
|
|
122
|
+
async notifyApprovalNeeded(deploymentId, solutionName, tenantCount, reason) {
|
|
123
|
+
try {
|
|
124
|
+
const settings = await getSettingsService().getDecryptedAppSettings();
|
|
125
|
+
if (!settings.notifyOnApprovalNeeded) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const notificationService = getNotificationService();
|
|
129
|
+
const deploymentUrl = this.baseUrl
|
|
130
|
+
? `${this.baseUrl}/deployments/${deploymentId}`
|
|
131
|
+
: undefined;
|
|
132
|
+
let message = `Deployment of "${solutionName}" to ${tenantCount} tenant${tenantCount === 1 ? "" : "s"} requires approval`;
|
|
133
|
+
if (reason) {
|
|
134
|
+
message += `\n\nReason: ${reason}`;
|
|
135
|
+
}
|
|
136
|
+
const payload = {
|
|
137
|
+
title: `Approval Required: ${solutionName}`,
|
|
138
|
+
message,
|
|
139
|
+
color: "warning",
|
|
140
|
+
url: deploymentUrl,
|
|
141
|
+
};
|
|
142
|
+
// Fire and forget
|
|
143
|
+
notificationService.sendNotification(payload).catch((error) => {
|
|
144
|
+
logger.warn("Failed to send approval needed notification", { error, deploymentId });
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
logger.warn("Error in notifyApprovalNeeded", { error, deploymentId });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Singleton instance
|
|
153
|
+
let deploymentNotificationsInstance = null;
|
|
154
|
+
export function getDeploymentNotifications(baseUrl) {
|
|
155
|
+
if (!deploymentNotificationsInstance ||
|
|
156
|
+
(baseUrl && deploymentNotificationsInstance["baseUrl"] !== baseUrl)) {
|
|
157
|
+
deploymentNotificationsInstance = new DeploymentNotifications(baseUrl);
|
|
158
|
+
}
|
|
159
|
+
return deploymentNotificationsInstance;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=deployment-notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-notifications.js","sourceRoot":"","sources":["../../src/services/deployment-notifications.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Real-time deployment progress tracking types and utilities
|
|
18
|
+
*
|
|
19
|
+
* Provides step-by-step visibility into the deployment process with
|
|
20
|
+
* minimum display times to ensure each step is legible even when fast.
|
|
21
|
+
*/
|
|
22
|
+
import { MIN_STEP_DISPLAY_MS } from "../constants.js";
|
|
23
|
+
export { MIN_STEP_DISPLAY_MS };
|
|
24
|
+
export type DeploymentStepId = "authenticating" | "validating" | "exporting" | "uploading" | "importing" | "configuring" | "verifying" | "completing";
|
|
25
|
+
export type DeploymentStepStatus = "pending" | "in_progress" | "completed" | "failed" | "skipped";
|
|
26
|
+
export interface DeploymentStep {
|
|
27
|
+
id: DeploymentStepId;
|
|
28
|
+
label: string;
|
|
29
|
+
description: string;
|
|
30
|
+
status: DeploymentStepStatus;
|
|
31
|
+
startedAt?: string;
|
|
32
|
+
completedAt?: string;
|
|
33
|
+
error?: string;
|
|
34
|
+
details?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface TenantDeploymentProgress {
|
|
37
|
+
tenantId: string;
|
|
38
|
+
tenantName: string;
|
|
39
|
+
overallStatus: "pending" | "in_progress" | "completed" | "failed";
|
|
40
|
+
currentStep: DeploymentStepId | null;
|
|
41
|
+
steps: DeploymentStep[];
|
|
42
|
+
progress: number;
|
|
43
|
+
startedAt?: string;
|
|
44
|
+
completedAt?: string;
|
|
45
|
+
error?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface DeploymentProgressEvent {
|
|
48
|
+
type: "step_started" | "step_completed" | "step_failed" | "tenant_completed" | "deployment_completed";
|
|
49
|
+
deploymentId: string;
|
|
50
|
+
tenantId?: string;
|
|
51
|
+
tenantName?: string;
|
|
52
|
+
stepId?: DeploymentStepId;
|
|
53
|
+
progress?: number;
|
|
54
|
+
error?: string;
|
|
55
|
+
details?: string;
|
|
56
|
+
timestamp: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Configuration for each deployment step
|
|
60
|
+
*/
|
|
61
|
+
export declare const DEPLOYMENT_STEPS: Record<DeploymentStepId, {
|
|
62
|
+
label: string;
|
|
63
|
+
description: string;
|
|
64
|
+
}>;
|
|
65
|
+
/**
|
|
66
|
+
* Create initial progress state for a tenant deployment
|
|
67
|
+
*/
|
|
68
|
+
export declare function createInitialTenantProgress(tenantId: string, tenantName: string): TenantDeploymentProgress;
|
|
69
|
+
/**
|
|
70
|
+
* Calculate progress percentage based on completed steps
|
|
71
|
+
*/
|
|
72
|
+
export declare function calculateProgress(steps: DeploymentStep[]): number;
|
|
73
|
+
/**
|
|
74
|
+
* Update a tenant's progress state based on an event
|
|
75
|
+
*/
|
|
76
|
+
export declare function applyProgressEvent(progress: TenantDeploymentProgress, event: DeploymentProgressEvent): TenantDeploymentProgress;
|
|
77
|
+
/**
|
|
78
|
+
* Format duration for display
|
|
79
|
+
*/
|
|
80
|
+
export declare function formatDuration(startedAt: string, completedAt?: string): string;
|
|
81
|
+
/**
|
|
82
|
+
* Generate simulated progress events for demo mode
|
|
83
|
+
* Includes minimum display times between steps
|
|
84
|
+
*/
|
|
85
|
+
export declare function simulateDeploymentProgress(deploymentId: string, tenantId: string, tenantName: string, options?: {
|
|
86
|
+
failAtStep?: DeploymentStepId;
|
|
87
|
+
speedMultiplier?: number;
|
|
88
|
+
}): AsyncGenerator<DeploymentProgressEvent>;
|
|
89
|
+
//# sourceMappingURL=deployment-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-progress.d.ts","sourceRoot":"","sources":["../../src/services/deployment-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,aAAa,GACb,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElG,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClE,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EACA,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,kBAAkB,GAClB,sBAAsB,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiC7F,CAAC;AAEF;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,wBAAwB,CAgB1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAOjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,wBAAwB,EAClC,KAAK,EAAE,uBAAuB,GAC7B,wBAAwB,CAsE1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED;;;GAGG;AACH,wBAAuB,0BAA0B,CAC/C,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GACpE,cAAc,CAAC,uBAAuB,CAAC,CA0EzC"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Real-time deployment progress tracking types and utilities
|
|
18
|
+
*
|
|
19
|
+
* Provides step-by-step visibility into the deployment process with
|
|
20
|
+
* minimum display times to ensure each step is legible even when fast.
|
|
21
|
+
*/
|
|
22
|
+
import { MIN_STEP_DISPLAY_MS } from "../constants.js";
|
|
23
|
+
// Re-export for backward compatibility
|
|
24
|
+
export { MIN_STEP_DISPLAY_MS };
|
|
25
|
+
/**
|
|
26
|
+
* Configuration for each deployment step
|
|
27
|
+
*/
|
|
28
|
+
export const DEPLOYMENT_STEPS = {
|
|
29
|
+
authenticating: {
|
|
30
|
+
label: "Authenticating",
|
|
31
|
+
description: "Connecting to tenant with GDAP credentials",
|
|
32
|
+
},
|
|
33
|
+
validating: {
|
|
34
|
+
label: "Validating",
|
|
35
|
+
description: "Checking environment compatibility and permissions",
|
|
36
|
+
},
|
|
37
|
+
exporting: {
|
|
38
|
+
label: "Exporting",
|
|
39
|
+
description: "Exporting solution from source environment",
|
|
40
|
+
},
|
|
41
|
+
uploading: {
|
|
42
|
+
label: "Uploading",
|
|
43
|
+
description: "Transferring solution package to target",
|
|
44
|
+
},
|
|
45
|
+
importing: {
|
|
46
|
+
label: "Importing",
|
|
47
|
+
description: "Installing solution in target environment",
|
|
48
|
+
},
|
|
49
|
+
configuring: {
|
|
50
|
+
label: "Configuring",
|
|
51
|
+
description: "Setting up connection references and variables",
|
|
52
|
+
},
|
|
53
|
+
verifying: {
|
|
54
|
+
label: "Verifying",
|
|
55
|
+
description: "Confirming deployment was successful",
|
|
56
|
+
},
|
|
57
|
+
completing: {
|
|
58
|
+
label: "Completing",
|
|
59
|
+
description: "Finalizing deployment and cleaning up",
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Create initial progress state for a tenant deployment
|
|
64
|
+
*/
|
|
65
|
+
export function createInitialTenantProgress(tenantId, tenantName) {
|
|
66
|
+
const steps = Object.entries(DEPLOYMENT_STEPS).map(([id, config]) => ({
|
|
67
|
+
id: id,
|
|
68
|
+
label: config.label,
|
|
69
|
+
description: config.description,
|
|
70
|
+
status: "pending",
|
|
71
|
+
}));
|
|
72
|
+
return {
|
|
73
|
+
tenantId,
|
|
74
|
+
tenantName,
|
|
75
|
+
overallStatus: "pending",
|
|
76
|
+
currentStep: null,
|
|
77
|
+
steps,
|
|
78
|
+
progress: 0,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Calculate progress percentage based on completed steps
|
|
83
|
+
*/
|
|
84
|
+
export function calculateProgress(steps) {
|
|
85
|
+
const completed = steps.filter((s) => s.status === "completed" || s.status === "skipped").length;
|
|
86
|
+
const inProgress = steps.filter((s) => s.status === "in_progress").length;
|
|
87
|
+
const total = steps.length;
|
|
88
|
+
// Give partial credit for in-progress step
|
|
89
|
+
return Math.round(((completed + inProgress * 0.5) / total) * 100);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Update a tenant's progress state based on an event
|
|
93
|
+
*/
|
|
94
|
+
export function applyProgressEvent(progress, event) {
|
|
95
|
+
const updatedProgress = { ...progress };
|
|
96
|
+
const steps = [...progress.steps];
|
|
97
|
+
switch (event.type) {
|
|
98
|
+
case "step_started": {
|
|
99
|
+
if (event.stepId) {
|
|
100
|
+
const stepIndex = steps.findIndex((s) => s.id === event.stepId);
|
|
101
|
+
if (stepIndex !== -1) {
|
|
102
|
+
steps[stepIndex] = {
|
|
103
|
+
...steps[stepIndex],
|
|
104
|
+
status: "in_progress",
|
|
105
|
+
startedAt: event.timestamp,
|
|
106
|
+
details: event.details,
|
|
107
|
+
};
|
|
108
|
+
updatedProgress.currentStep = event.stepId;
|
|
109
|
+
updatedProgress.overallStatus = "in_progress";
|
|
110
|
+
if (!updatedProgress.startedAt) {
|
|
111
|
+
updatedProgress.startedAt = event.timestamp;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
case "step_completed": {
|
|
118
|
+
if (event.stepId) {
|
|
119
|
+
const stepIndex = steps.findIndex((s) => s.id === event.stepId);
|
|
120
|
+
if (stepIndex !== -1) {
|
|
121
|
+
steps[stepIndex] = {
|
|
122
|
+
...steps[stepIndex],
|
|
123
|
+
status: "completed",
|
|
124
|
+
completedAt: event.timestamp,
|
|
125
|
+
details: event.details,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
case "step_failed": {
|
|
132
|
+
if (event.stepId) {
|
|
133
|
+
const stepIndex = steps.findIndex((s) => s.id === event.stepId);
|
|
134
|
+
if (stepIndex !== -1) {
|
|
135
|
+
steps[stepIndex] = {
|
|
136
|
+
...steps[stepIndex],
|
|
137
|
+
status: "failed",
|
|
138
|
+
completedAt: event.timestamp,
|
|
139
|
+
error: event.error,
|
|
140
|
+
};
|
|
141
|
+
updatedProgress.error = event.error;
|
|
142
|
+
updatedProgress.overallStatus = "failed";
|
|
143
|
+
updatedProgress.completedAt = event.timestamp;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case "tenant_completed": {
|
|
149
|
+
updatedProgress.overallStatus = "completed";
|
|
150
|
+
updatedProgress.completedAt = event.timestamp;
|
|
151
|
+
updatedProgress.currentStep = null;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
updatedProgress.steps = steps;
|
|
156
|
+
updatedProgress.progress = calculateProgress(steps);
|
|
157
|
+
return updatedProgress;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format duration for display
|
|
161
|
+
*/
|
|
162
|
+
export function formatDuration(startedAt, completedAt) {
|
|
163
|
+
const start = new Date(startedAt).getTime();
|
|
164
|
+
const end = completedAt ? new Date(completedAt).getTime() : Date.now();
|
|
165
|
+
const durationMs = end - start;
|
|
166
|
+
if (durationMs < 1000)
|
|
167
|
+
return `${durationMs}ms`;
|
|
168
|
+
if (durationMs < 60000)
|
|
169
|
+
return `${(durationMs / 1000).toFixed(1)}s`;
|
|
170
|
+
return `${Math.floor(durationMs / 60000)}m ${Math.round((durationMs % 60000) / 1000)}s`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Generate simulated progress events for demo mode
|
|
174
|
+
* Includes minimum display times between steps
|
|
175
|
+
*/
|
|
176
|
+
export async function* simulateDeploymentProgress(deploymentId, tenantId, tenantName, options) {
|
|
177
|
+
const speedMultiplier = options?.speedMultiplier ?? 1;
|
|
178
|
+
const minDelay = MIN_STEP_DISPLAY_MS / speedMultiplier;
|
|
179
|
+
const stepDurations = {
|
|
180
|
+
authenticating: 800,
|
|
181
|
+
validating: 600,
|
|
182
|
+
exporting: 1200,
|
|
183
|
+
uploading: 1500,
|
|
184
|
+
importing: 2000,
|
|
185
|
+
configuring: 900,
|
|
186
|
+
verifying: 700,
|
|
187
|
+
completing: 500,
|
|
188
|
+
};
|
|
189
|
+
const stepOrder = [
|
|
190
|
+
"authenticating",
|
|
191
|
+
"validating",
|
|
192
|
+
"exporting",
|
|
193
|
+
"uploading",
|
|
194
|
+
"importing",
|
|
195
|
+
"configuring",
|
|
196
|
+
"verifying",
|
|
197
|
+
"completing",
|
|
198
|
+
];
|
|
199
|
+
for (const stepId of stepOrder) {
|
|
200
|
+
// Start step
|
|
201
|
+
yield {
|
|
202
|
+
type: "step_started",
|
|
203
|
+
deploymentId,
|
|
204
|
+
tenantId,
|
|
205
|
+
tenantName,
|
|
206
|
+
stepId,
|
|
207
|
+
timestamp: new Date().toISOString(),
|
|
208
|
+
};
|
|
209
|
+
// Simulate step processing with minimum display time
|
|
210
|
+
const duration = Math.max(minDelay, stepDurations[stepId] / speedMultiplier);
|
|
211
|
+
await new Promise((resolve) => setTimeout(resolve, duration));
|
|
212
|
+
// Check if this step should fail
|
|
213
|
+
if (options?.failAtStep === stepId) {
|
|
214
|
+
yield {
|
|
215
|
+
type: "step_failed",
|
|
216
|
+
deploymentId,
|
|
217
|
+
tenantId,
|
|
218
|
+
tenantName,
|
|
219
|
+
stepId,
|
|
220
|
+
error: `Failed during ${DEPLOYMENT_STEPS[stepId].label.toLowerCase()}: Connection timeout`,
|
|
221
|
+
timestamp: new Date().toISOString(),
|
|
222
|
+
};
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
// Complete step
|
|
226
|
+
yield {
|
|
227
|
+
type: "step_completed",
|
|
228
|
+
deploymentId,
|
|
229
|
+
tenantId,
|
|
230
|
+
tenantName,
|
|
231
|
+
stepId,
|
|
232
|
+
timestamp: new Date().toISOString(),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
// Deployment completed
|
|
236
|
+
yield {
|
|
237
|
+
type: "tenant_completed",
|
|
238
|
+
deploymentId,
|
|
239
|
+
tenantId,
|
|
240
|
+
tenantName,
|
|
241
|
+
timestamp: new Date().toISOString(),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=deployment-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-progress.js","sourceRoot":"","sources":["../../src/services/deployment-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright 2024 Pax8, Inc.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { TokenManagerConfig } from "../auth/token-manager.js";
|
|
17
|
+
import { ConnectionMapping, EnvironmentVariable } from "../config/schema.js";
|
|
18
|
+
export interface DeploymentServiceConfig extends TokenManagerConfig {
|
|
19
|
+
}
|
|
20
|
+
export interface DeploymentTarget {
|
|
21
|
+
tenantId: string;
|
|
22
|
+
tenantName: string;
|
|
23
|
+
environmentUrl: string;
|
|
24
|
+
environmentId?: string;
|
|
25
|
+
connectionMappings?: ConnectionMapping[];
|
|
26
|
+
environmentVariables?: EnvironmentVariable[];
|
|
27
|
+
autoSetup?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface RealDeploymentProgress {
|
|
30
|
+
tenantId: string;
|
|
31
|
+
tenantName: string;
|
|
32
|
+
status: "pending" | "in_progress" | "completed" | "failed";
|
|
33
|
+
step: RealDeploymentStepId;
|
|
34
|
+
progress: number;
|
|
35
|
+
startedAt?: string;
|
|
36
|
+
completedAt?: string;
|
|
37
|
+
error?: string;
|
|
38
|
+
importJobId?: string;
|
|
39
|
+
}
|
|
40
|
+
export type RealDeploymentStepId = "authenticating" | "validating" | "uploading" | "importing" | "configuring_connections" | "configuring_variables" | "verifying" | "completing";
|
|
41
|
+
export interface DeploymentResult {
|
|
42
|
+
tenantId: string;
|
|
43
|
+
tenantName: string;
|
|
44
|
+
success: boolean;
|
|
45
|
+
importJobId?: string;
|
|
46
|
+
error?: string;
|
|
47
|
+
startedAt: string;
|
|
48
|
+
completedAt: string;
|
|
49
|
+
durationMs: number;
|
|
50
|
+
}
|
|
51
|
+
export type RealDeploymentProgressCallback = (progress: RealDeploymentProgress) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Service for deploying solutions to customer tenants via GDAP
|
|
54
|
+
*/
|
|
55
|
+
export declare class DeploymentService {
|
|
56
|
+
private config;
|
|
57
|
+
private tokenManagers;
|
|
58
|
+
constructor(config: DeploymentServiceConfig);
|
|
59
|
+
/**
|
|
60
|
+
* Get or create a cached TokenManager for a tenant.
|
|
61
|
+
* Avoids creating redundant TokenManager instances for the same tenant.
|
|
62
|
+
*/
|
|
63
|
+
private getTokenManager;
|
|
64
|
+
/**
|
|
65
|
+
* Deploy a solution to a single tenant
|
|
66
|
+
*/
|
|
67
|
+
deployToTenant(solutionBase64: string, target: DeploymentTarget, onProgress?: RealDeploymentProgressCallback): Promise<DeploymentResult>;
|
|
68
|
+
/**
|
|
69
|
+
* Deploy to multiple tenants with concurrency control
|
|
70
|
+
*/
|
|
71
|
+
deployToTenants(solutionBase64: string, targets: DeploymentTarget[], options?: {
|
|
72
|
+
maxConcurrent?: number;
|
|
73
|
+
onProgress?: RealDeploymentProgressCallback;
|
|
74
|
+
}): Promise<DeploymentResult[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Import a solution from base64 encoded content
|
|
77
|
+
*/
|
|
78
|
+
private importSolutionFromBase64;
|
|
79
|
+
/**
|
|
80
|
+
* Validate that a tenant is ready for deployment
|
|
81
|
+
*/
|
|
82
|
+
validateTenant(target: DeploymentTarget): Promise<{
|
|
83
|
+
valid: boolean;
|
|
84
|
+
errors: string[];
|
|
85
|
+
warnings: string[];
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Check if an error indicates the app user is not registered.
|
|
89
|
+
* Prefers checking the structured error code; falls back to regex on the message.
|
|
90
|
+
*/
|
|
91
|
+
private isAppUserNotRegisteredError;
|
|
92
|
+
/**
|
|
93
|
+
* Setup application user in an environment
|
|
94
|
+
*/
|
|
95
|
+
private setupApplicationUser;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=deployment-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-service.d.ts","sourceRoot":"","sources":["../../src/services/deployment-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAgB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI5E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK7E,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;CAElE;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAC5B,gBAAgB,GAChB,YAAY,GACZ,WAAW,GACX,WAAW,GACX,yBAAyB,GACzB,uBAAuB,GACvB,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,8BAA8B,GAAG,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;AAExF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,aAAa,CAAmC;gBAE5C,MAAM,EAAE,uBAAuB;IAI3C;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;IACG,cAAc,CAClB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,8BAA8B,GAC1C,OAAO,CAAC,gBAAgB,CAAC;IA6L5B;;OAEG;IACG,eAAe,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,gBAAgB,EAAE,EAC3B,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,8BAA8B,CAAC;KAC7C,GACA,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAiC9B;;OAEG;YACW,wBAAwB;IAuCtC;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC;QACtD,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IA0DF;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAcnC;;OAEG;YACW,oBAAoB;CAsEnC"}
|