@memberjunction/open-app-engine 0.0.1 → 5.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/dist/dependency/dependency-resolver.d.ts +23 -0
- package/dist/dependency/dependency-resolver.d.ts.map +1 -0
- package/dist/dependency/dependency-resolver.js +63 -0
- package/dist/dependency/dependency-resolver.js.map +1 -0
- package/dist/dependency/version-checker.d.ts +8 -0
- package/dist/dependency/version-checker.d.ts.map +1 -0
- package/dist/dependency/version-checker.js +65 -0
- package/dist/dependency/version-checker.js.map +1 -0
- package/dist/github/github-client.d.ts +29 -0
- package/dist/github/github-client.d.ts.map +1 -0
- package/dist/github/github-client.js +127 -0
- package/dist/github/github-client.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/install/client-bootstrap-gen.d.ts +8 -0
- package/dist/install/client-bootstrap-gen.d.ts.map +1 -0
- package/dist/install/client-bootstrap-gen.js +35 -0
- package/dist/install/client-bootstrap-gen.js.map +1 -0
- package/dist/install/config-manager.d.ts +15 -0
- package/dist/install/config-manager.d.ts.map +1 -0
- package/dist/install/config-manager.js +114 -0
- package/dist/install/config-manager.js.map +1 -0
- package/dist/install/history-recorder.d.ts +25 -0
- package/dist/install/history-recorder.d.ts.map +1 -0
- package/dist/install/history-recorder.js +184 -0
- package/dist/install/history-recorder.js.map +1 -0
- package/dist/install/install-orchestrator.d.ts +20 -0
- package/dist/install/install-orchestrator.d.ts.map +1 -0
- package/dist/install/install-orchestrator.js +634 -0
- package/dist/install/install-orchestrator.js.map +1 -0
- package/dist/install/migration-runner.d.ts +23 -0
- package/dist/install/migration-runner.d.ts.map +1 -0
- package/dist/install/migration-runner.js +66 -0
- package/dist/install/migration-runner.js.map +1 -0
- package/dist/install/package-manager.d.ts +19 -0
- package/dist/install/package-manager.d.ts.map +1 -0
- package/dist/install/package-manager.js +89 -0
- package/dist/install/package-manager.js.map +1 -0
- package/dist/install/schema-manager.d.ts +11 -0
- package/dist/install/schema-manager.d.ts.map +1 -0
- package/dist/install/schema-manager.js +125 -0
- package/dist/install/schema-manager.js.map +1 -0
- package/dist/manifest/manifest-loader.d.ts +10 -0
- package/dist/manifest/manifest-loader.d.ts.map +1 -0
- package/dist/manifest/manifest-loader.js +30 -0
- package/dist/manifest/manifest-loader.js.map +1 -0
- package/dist/manifest/manifest-schema.d.ts +351 -0
- package/dist/manifest/manifest-schema.d.ts.map +1 -0
- package/dist/manifest/manifest-schema.js +80 -0
- package/dist/manifest/manifest-schema.js.map +1 -0
- package/dist/types/open-app-types.d.ts +66 -0
- package/dist/types/open-app-types.d.ts.map +1 -0
- package/dist/types/open-app-types.js +2 -0
- package/dist/types/open-app-types.js.map +1 -0
- package/package.json +34 -7
- package/README.md +0 -45
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { UserInfo, TransactionGroupBase } from '@memberjunction/core';
|
|
2
|
+
import type { AppStatus, InstallAction, ErrorPhase, InstalledAppInfo, AppInstallCallbacks } from '../types/open-app-types.js';
|
|
3
|
+
import type { MJAppManifest } from '../manifest/manifest-schema.js';
|
|
4
|
+
export declare function RecordAppInstallation(contextUser: UserInfo, manifest: MJAppManifest, callbacks?: AppInstallCallbacks, transactionGroup?: TransactionGroupBase, initialStatus?: AppStatus): Promise<string>;
|
|
5
|
+
export declare function UpdateAppRecord(contextUser: UserInfo, appId: string, updates: Record<string, unknown>): Promise<void>;
|
|
6
|
+
export declare function SetAppStatus(contextUser: UserInfo, appId: string, status: AppStatus): Promise<void>;
|
|
7
|
+
export declare function RecordInstallHistoryEntry(contextUser: UserInfo, appId: string, action: InstallAction, manifest: MJAppManifest, details: {
|
|
8
|
+
PreviousVersion?: string;
|
|
9
|
+
DurationSeconds?: number;
|
|
10
|
+
StartedAt?: Date;
|
|
11
|
+
EndedAt?: Date;
|
|
12
|
+
Success: boolean;
|
|
13
|
+
ErrorMessage?: string;
|
|
14
|
+
ErrorPhase?: ErrorPhase;
|
|
15
|
+
Summary?: string;
|
|
16
|
+
}, transactionGroup?: TransactionGroupBase): Promise<string>;
|
|
17
|
+
export declare function RecordAppDependencies(contextUser: UserInfo, appId: string, dependencies: Record<string, string | {
|
|
18
|
+
version?: string;
|
|
19
|
+
repository?: string;
|
|
20
|
+
}>, transactionGroup?: TransactionGroupBase): Promise<void>;
|
|
21
|
+
export declare function DeleteAppDependencies(contextUser: UserInfo, appId: string): Promise<void>;
|
|
22
|
+
export declare function FindInstalledApp(contextUser: UserInfo, appName: string): Promise<InstalledAppInfo | null>;
|
|
23
|
+
export declare function ListInstalledApps(contextUser: UserInfo): Promise<InstalledAppInfo[]>;
|
|
24
|
+
export declare function FindDependentApps(contextUser: UserInfo, appName: string): Promise<string[]>;
|
|
25
|
+
//# sourceMappingURL=history-recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-recorder.d.ts","sourceRoot":"","sources":["../../src/install/history-recorder.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAc,MAAM,sBAAsB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC9H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAuBpE,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,QAAQ,EACrB,QAAQ,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,mBAAmB,EAC/B,gBAAgB,CAAC,EAAE,oBAAoB,EACvC,aAAa,GAAE,SAAoB,GAClC,OAAO,CAAC,MAAM,CAAC,CA4BjB;AAsCD,wBAAsB,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAc3H;AAKD,wBAAsB,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzG;AAWD,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE;IACP,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,EACD,gBAAgB,CAAC,EAAE,oBAAoB,GACtC,OAAO,CAAC,MAAM,CAAC,CA2BjB;AASD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,QAAQ,EACrB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EAChF,gBAAgB,CAAC,EAAE,oBAAoB,GACtC,OAAO,CAAC,IAAI,CAAC,CAqCf;AAMD,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe/F;AASD,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgB/G;AAQD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgB1F;AASD,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCjG"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { Metadata, RunView, CompositeKey } from '@memberjunction/core';
|
|
2
|
+
function EscapeSqlFilter(value) {
|
|
3
|
+
return value.replace(/'/g, "''");
|
|
4
|
+
}
|
|
5
|
+
export async function RecordAppInstallation(contextUser, manifest, callbacks, transactionGroup, initialStatus = 'Active') {
|
|
6
|
+
callbacks?.OnProgress?.('Record', 'Recording app installation...');
|
|
7
|
+
const md = new Metadata();
|
|
8
|
+
const entity = await md.GetEntityObject('MJ: Open Apps', contextUser);
|
|
9
|
+
const existing = await FindInstalledApp(contextUser, manifest.name);
|
|
10
|
+
if (existing) {
|
|
11
|
+
const key = new CompositeKey([{ FieldName: 'ID', Value: existing.ID }]);
|
|
12
|
+
await entity.InnerLoad(key);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
entity.NewRecord();
|
|
16
|
+
}
|
|
17
|
+
SetAppFields(entity, manifest, contextUser, initialStatus);
|
|
18
|
+
if (transactionGroup) {
|
|
19
|
+
entity.TransactionGroup = transactionGroup;
|
|
20
|
+
}
|
|
21
|
+
const saved = await entity.Save();
|
|
22
|
+
if (!transactionGroup && !saved) {
|
|
23
|
+
throw new Error(`Failed to record app installation: ${entity.LatestResult?.Message ?? 'unknown error'}`);
|
|
24
|
+
}
|
|
25
|
+
callbacks?.OnSuccess?.('Record', `App '${manifest.name}' recorded as installed`);
|
|
26
|
+
return String(entity.Get('ID'));
|
|
27
|
+
}
|
|
28
|
+
function SetAppFields(entity, manifest, contextUser, status = 'Active') {
|
|
29
|
+
entity.Set('Name', manifest.name);
|
|
30
|
+
entity.Set('DisplayName', manifest.displayName);
|
|
31
|
+
entity.Set('Description', manifest.description ?? null);
|
|
32
|
+
entity.Set('Version', manifest.version);
|
|
33
|
+
entity.Set('Publisher', manifest.publisher.name);
|
|
34
|
+
entity.Set('PublisherEmail', manifest.publisher.email ?? null);
|
|
35
|
+
entity.Set('PublisherURL', manifest.publisher.url ?? null);
|
|
36
|
+
entity.Set('RepositoryURL', manifest.repository);
|
|
37
|
+
entity.Set('SchemaName', manifest.schema?.name ?? null);
|
|
38
|
+
entity.Set('MJVersionRange', manifest.mjVersionRange);
|
|
39
|
+
entity.Set('License', manifest.license ?? null);
|
|
40
|
+
entity.Set('Icon', manifest.icon ?? null);
|
|
41
|
+
entity.Set('Color', manifest.color ?? null);
|
|
42
|
+
entity.Set('ManifestJSON', JSON.stringify(manifest));
|
|
43
|
+
entity.Set('ConfigurationSchemaJSON', manifest.configuration ? JSON.stringify(manifest.configuration) : null);
|
|
44
|
+
entity.Set('InstalledByUserID', contextUser.ID);
|
|
45
|
+
entity.Set('Status', status);
|
|
46
|
+
}
|
|
47
|
+
export async function UpdateAppRecord(contextUser, appId, updates) {
|
|
48
|
+
const md = new Metadata();
|
|
49
|
+
const entity = await md.GetEntityObject('MJ: Open Apps', contextUser);
|
|
50
|
+
const loaded = await entity.InnerLoad(CompositeKey.FromID(appId));
|
|
51
|
+
if (!loaded) {
|
|
52
|
+
throw new Error(`Open App record not found: ${appId}`);
|
|
53
|
+
}
|
|
54
|
+
for (const [field, value] of Object.entries(updates)) {
|
|
55
|
+
entity.Set(field, value);
|
|
56
|
+
}
|
|
57
|
+
const saved = await entity.Save();
|
|
58
|
+
if (!saved) {
|
|
59
|
+
throw new Error(`Failed to update Open App record ${appId}: ${entity.LatestResult?.Message ?? 'unknown error'}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export async function SetAppStatus(contextUser, appId, status) {
|
|
63
|
+
await UpdateAppRecord(contextUser, appId, { Status: status });
|
|
64
|
+
}
|
|
65
|
+
export async function RecordInstallHistoryEntry(contextUser, appId, action, manifest, details, transactionGroup) {
|
|
66
|
+
const md = new Metadata();
|
|
67
|
+
const entity = await md.GetEntityObject('MJ: Open App Install Histories', contextUser);
|
|
68
|
+
entity.NewRecord();
|
|
69
|
+
entity.Set('OpenAppID', appId);
|
|
70
|
+
entity.Set('Version', manifest.version);
|
|
71
|
+
entity.Set('PreviousVersion', details.PreviousVersion ?? null);
|
|
72
|
+
entity.Set('Action', action);
|
|
73
|
+
entity.Set('ManifestJSON', JSON.stringify(manifest));
|
|
74
|
+
entity.Set('Summary', details.Summary ?? null);
|
|
75
|
+
entity.Set('ExecutedByUserID', contextUser.ID);
|
|
76
|
+
entity.Set('DurationSeconds', details.DurationSeconds ?? null);
|
|
77
|
+
entity.Set('StartedAt', details.StartedAt ?? null);
|
|
78
|
+
entity.Set('EndedAt', details.EndedAt ?? null);
|
|
79
|
+
entity.Set('Success', details.Success);
|
|
80
|
+
entity.Set('ErrorMessage', details.ErrorMessage ?? null);
|
|
81
|
+
entity.Set('ErrorPhase', details.ErrorPhase ?? null);
|
|
82
|
+
if (transactionGroup) {
|
|
83
|
+
entity.TransactionGroup = transactionGroup;
|
|
84
|
+
}
|
|
85
|
+
const saved = await entity.Save();
|
|
86
|
+
if (!transactionGroup && !saved) {
|
|
87
|
+
throw new Error(`Failed to record install history: ${entity.LatestResult?.Message ?? 'unknown error'}`);
|
|
88
|
+
}
|
|
89
|
+
return String(entity.Get('ID'));
|
|
90
|
+
}
|
|
91
|
+
export async function RecordAppDependencies(contextUser, appId, dependencies, transactionGroup) {
|
|
92
|
+
const md = new Metadata();
|
|
93
|
+
const rv = new RunView();
|
|
94
|
+
for (const [depName, depValue] of Object.entries(dependencies)) {
|
|
95
|
+
const versionRange = typeof depValue === 'string' ? depValue : depValue.version;
|
|
96
|
+
const depResult = await rv.RunView({
|
|
97
|
+
EntityName: 'MJ: Open Apps',
|
|
98
|
+
ExtraFilter: `Name = '${EscapeSqlFilter(depName)}'`,
|
|
99
|
+
ResultType: 'simple',
|
|
100
|
+
MaxRows: 1,
|
|
101
|
+
}, contextUser);
|
|
102
|
+
const depApp = depResult.Success && depResult.Results.length > 0 ? depResult.Results[0] : null;
|
|
103
|
+
const entity = await md.GetEntityObject('MJ: Open App Dependencies', contextUser);
|
|
104
|
+
entity.NewRecord();
|
|
105
|
+
entity.Set('OpenAppID', appId);
|
|
106
|
+
entity.Set('DependsOnAppName', depName);
|
|
107
|
+
entity.Set('DependsOnAppID', depApp?.ID ?? null);
|
|
108
|
+
entity.Set('VersionRange', versionRange);
|
|
109
|
+
entity.Set('InstalledVersion', depApp?.Version ?? null);
|
|
110
|
+
entity.Set('Status', depApp ? 'Satisfied' : 'Missing');
|
|
111
|
+
if (transactionGroup) {
|
|
112
|
+
entity.TransactionGroup = transactionGroup;
|
|
113
|
+
}
|
|
114
|
+
const saved = await entity.Save();
|
|
115
|
+
if (!transactionGroup && !saved) {
|
|
116
|
+
throw new Error(`Failed to record dependency '${depName}': ${entity.LatestResult?.Message ?? 'unknown error'}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export async function DeleteAppDependencies(contextUser, appId) {
|
|
121
|
+
const rv = new RunView();
|
|
122
|
+
const result = await rv.RunView({
|
|
123
|
+
EntityName: 'MJ: Open App Dependencies',
|
|
124
|
+
ExtraFilter: `OpenAppID = '${EscapeSqlFilter(appId)}'`,
|
|
125
|
+
ResultType: 'entity_object',
|
|
126
|
+
}, contextUser);
|
|
127
|
+
if (result.Success) {
|
|
128
|
+
for (const record of result.Results) {
|
|
129
|
+
await record.Delete();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export async function FindInstalledApp(contextUser, appName) {
|
|
134
|
+
const rv = new RunView();
|
|
135
|
+
const result = await rv.RunView({
|
|
136
|
+
EntityName: 'MJ: Open Apps',
|
|
137
|
+
ExtraFilter: `Name = '${EscapeSqlFilter(appName)}'`,
|
|
138
|
+
ResultType: 'simple',
|
|
139
|
+
}, contextUser);
|
|
140
|
+
if (!result.Success) {
|
|
141
|
+
throw new Error(`Failed to look up app '${appName}': ${result.ErrorMessage}`);
|
|
142
|
+
}
|
|
143
|
+
return result.Results.length > 0 ? result.Results[0] : null;
|
|
144
|
+
}
|
|
145
|
+
export async function ListInstalledApps(contextUser) {
|
|
146
|
+
const rv = new RunView();
|
|
147
|
+
const result = await rv.RunView({
|
|
148
|
+
EntityName: 'MJ: Open Apps',
|
|
149
|
+
ExtraFilter: "Status NOT IN ('Removing','Removed')",
|
|
150
|
+
ResultType: 'simple',
|
|
151
|
+
}, contextUser);
|
|
152
|
+
if (!result.Success) {
|
|
153
|
+
throw new Error(`Failed to list installed apps: ${result.ErrorMessage}`);
|
|
154
|
+
}
|
|
155
|
+
return result.Results;
|
|
156
|
+
}
|
|
157
|
+
export async function FindDependentApps(contextUser, appName) {
|
|
158
|
+
const rv = new RunView();
|
|
159
|
+
const depResult = await rv.RunView({
|
|
160
|
+
EntityName: 'MJ: Open App Dependencies',
|
|
161
|
+
ExtraFilter: `DependsOnAppName = '${EscapeSqlFilter(appName)}'`,
|
|
162
|
+
Fields: ['OpenAppID'],
|
|
163
|
+
ResultType: 'simple',
|
|
164
|
+
}, contextUser);
|
|
165
|
+
if (!depResult.Success) {
|
|
166
|
+
throw new Error(`Failed to find dependent apps: ${depResult.ErrorMessage}`);
|
|
167
|
+
}
|
|
168
|
+
const appIds = depResult.Results.map((r) => r.OpenAppID);
|
|
169
|
+
if (appIds.length === 0) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
const idList = appIds.map((id) => `'${EscapeSqlFilter(id)}'`).join(',');
|
|
173
|
+
const appResult = await rv.RunView({
|
|
174
|
+
EntityName: 'MJ: Open Apps',
|
|
175
|
+
ExtraFilter: `ID IN (${idList}) AND Status NOT IN ('Removed')`,
|
|
176
|
+
Fields: ['Name'],
|
|
177
|
+
ResultType: 'simple',
|
|
178
|
+
}, contextUser);
|
|
179
|
+
if (!appResult.Success) {
|
|
180
|
+
throw new Error(`Failed to resolve dependent app names: ${appResult.ErrorMessage}`);
|
|
181
|
+
}
|
|
182
|
+
return appResult.Results.map((r) => r.Name);
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=history-recorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-recorder.js","sourceRoot":"","sources":["../../src/install/history-recorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AppInstallCallbacks, InstallOptions, UpgradeOptions, RemoveOptions, AppOperationResult } from '../types/open-app-types.js';
|
|
2
|
+
import { type GitHubClientOptions } from '../github/github-client.js';
|
|
3
|
+
import { type SkywayDatabaseConfig } from './migration-runner.js';
|
|
4
|
+
import { DatabaseProviderBase } from '@memberjunction/core';
|
|
5
|
+
import type { UserInfo } from '@memberjunction/core';
|
|
6
|
+
export interface OrchestratorContext {
|
|
7
|
+
ContextUser: UserInfo;
|
|
8
|
+
DatabaseProvider: DatabaseProviderBase;
|
|
9
|
+
DatabaseConfig: SkywayDatabaseConfig;
|
|
10
|
+
GitHubOptions: GitHubClientOptions;
|
|
11
|
+
RepoRoot: string;
|
|
12
|
+
MJVersion: string;
|
|
13
|
+
Callbacks?: AppInstallCallbacks;
|
|
14
|
+
}
|
|
15
|
+
export declare function InstallApp(options: InstallOptions, context: OrchestratorContext): Promise<AppOperationResult>;
|
|
16
|
+
export declare function UpgradeApp(options: UpgradeOptions, context: OrchestratorContext): Promise<AppOperationResult>;
|
|
17
|
+
export declare function RemoveApp(options: RemoveOptions, context: OrchestratorContext): Promise<AppOperationResult>;
|
|
18
|
+
export declare function DisableApp(appName: string, context: OrchestratorContext): Promise<AppOperationResult>;
|
|
19
|
+
export declare function EnableApp(appName: string, context: OrchestratorContext): Promise<AppOperationResult>;
|
|
20
|
+
//# sourceMappingURL=install-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-orchestrator.d.ts","sourceRoot":"","sources":["../../src/install/install-orchestrator.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,kBAAkB,EAAc,MAAM,4BAA4B,CAAC;AAMrJ,OAAO,EAAiE,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAErI,OAAO,EAAoB,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAIpF,OAAO,EAAc,oBAAoB,EAAqB,MAAM,sBAAsB,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAiBrD,MAAM,WAAW,mBAAmB;IAElC,WAAW,EAAE,QAAQ,CAAC;IAEtB,gBAAgB,EAAE,oBAAoB,CAAC;IAEvC,cAAc,EAAE,oBAAoB,CAAC;IAErC,aAAa,EAAE,mBAAmB,CAAC;IAEnC,QAAQ,EAAE,MAAM,CAAC;IAEjB,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AA0BD,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsJnH;AAmED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiKnH;AASD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkHjH;AASD,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB3G;AAKD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmB1G"}
|