@codiac.io/codiac-cli 1.2.144 → 1.2.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3784 -3779
- package/lib/apis/codiac-relay/common/utils.js.map +1 -1
- package/lib/apis/codiac-relay/gen/client.d.ts +6 -2
- package/lib/apis/codiac-relay/gen/client.js +29 -1
- package/lib/apis/codiac-relay/gen/client.js.map +1 -1
- package/lib/apis/codiac-relay/gen/contracts.d.ts +76 -2
- package/lib/apis/codiac-relay/gen/contracts.js +6 -1
- package/lib/apis/codiac-relay/gen/contracts.js.map +1 -1
- package/lib/cli-common/command-base.js +6 -0
- package/lib/cli-common/command-base.js.map +1 -1
- package/lib/command-base-enterprise.js +3 -0
- package/lib/command-base-enterprise.js.map +1 -1
- package/lib/commands/deploy.js +1 -0
- package/lib/commands/deploy.js.map +1 -1
- package/lib/ops/entities/index.d.ts +1 -0
- package/lib/ops/entities/index.js +1 -0
- package/lib/ops/entities/index.js.map +1 -1
- package/lib/ops/entities/operation-meta.d.ts +8 -0
- package/lib/ops/entities/operation-meta.js +19 -0
- package/lib/ops/entities/operation-meta.js.map +1 -0
- package/lib/relay/wsclient/relay-socket-listener.d.ts +68 -0
- package/lib/relay/wsclient/relay-socket-listener.js +165 -0
- package/lib/relay/wsclient/relay-socket-listener.js.map +1 -0
- package/lib/relay/wsclient/relay-websocket-client.d.ts +33 -0
- package/lib/relay/wsclient/relay-websocket-client.js +179 -0
- package/lib/relay/wsclient/relay-websocket-client.js.map +1 -0
- package/lib/relay/wsclient/rx-websocket-subject.d.ts +25 -0
- package/lib/relay/wsclient/rx-websocket-subject.js +134 -0
- package/lib/relay/wsclient/rx-websocket-subject.js.map +1 -0
- package/lib/relay/wsclient/socket-contracts.d.ts +22 -0
- package/lib/relay/wsclient/socket-contracts.js +3 -0
- package/lib/relay/wsclient/socket-contracts.js.map +1 -0
- package/lib/uilogic/cloud-provider-contextualizer.js +8 -6
- package/lib/uilogic/cloud-provider-contextualizer.js.map +1 -1
- package/lib/uilogic/cloud-resource-configurator-factory.js +3 -1
- package/lib/uilogic/cloud-resource-configurator-factory.js.map +1 -1
- package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.d.ts +31 -0
- package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.js +131 -0
- package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.js.map +1 -0
- package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.js +9 -2
- package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.js.map +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var RelayWebsocketClient_1;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RelayWebsocketClient = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const codiac_common_1 = require("@codiac.io/codiac-common");
|
|
7
|
+
const inversify_1 = require("inversify");
|
|
8
|
+
const _ = require("lodash");
|
|
9
|
+
const WebSocket = require("ws");
|
|
10
|
+
const guid_typescript_1 = require("guid-typescript");
|
|
11
|
+
const stringify = require("json-stringify-safe");
|
|
12
|
+
const relay_socket_listener_1 = require("./relay-socket-listener");
|
|
13
|
+
const api_user_creds_1 = require("../../apis/codiac-api/common/api-user-creds");
|
|
14
|
+
/** Meta added to a message handler for facility in managing message subscribers. */
|
|
15
|
+
class HandlerSubx {
|
|
16
|
+
constructor(id, handler) {
|
|
17
|
+
this.id = id;
|
|
18
|
+
this.handler = handler;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
let RelayWebsocketClient = RelayWebsocketClient_1 = class RelayWebsocketClient {
|
|
22
|
+
static bootstrap(ioc, settings) {
|
|
23
|
+
ioc.bind(relay_socket_listener_1.RelaySocketListenerSettings).toConstantValue(settings !== null && settings !== void 0 ? settings : {});
|
|
24
|
+
ioc.bind(RelayWebsocketClient_1).toSelf().inSingletonScope(); // <-- There can be only one socket connection from the CLI.
|
|
25
|
+
}
|
|
26
|
+
constructor(credentials, settings, logger) {
|
|
27
|
+
this.credentials = credentials;
|
|
28
|
+
this.logger = logger;
|
|
29
|
+
this.settings = _.assignIn({}, RelayWebsocketClient_1.DEFAULT_SETTINGS, settings);
|
|
30
|
+
this.subscribers = {};
|
|
31
|
+
}
|
|
32
|
+
open() {
|
|
33
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
try {
|
|
36
|
+
this.socket = new WebSocket(this.settings.url, undefined, {
|
|
37
|
+
headers: {
|
|
38
|
+
"Authorization": this.credentials.apiToken
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
this.socket.onopen = (eventMsg) => {
|
|
42
|
+
this.logger.debug(`Connection opened successfully at [${eventMsg.target.url}]. Waiting on socket details message. `);
|
|
43
|
+
};
|
|
44
|
+
this.socket.onerror = (eventMsg) => {
|
|
45
|
+
var _a;
|
|
46
|
+
this.logger.error(`WebSocket ${eventMsg.type}: ${(_a = eventMsg.message) !== null && _a !== void 0 ? _a : "(no details available)"}`);
|
|
47
|
+
if (eventMsg.error) {
|
|
48
|
+
reject(eventMsg.error);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
reject(new Error(`WebSocket ${eventMsg.type} error: ${eventMsg.message}`));
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
this.listenFor("connection", (msg) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a, _b;
|
|
56
|
+
this.logger.trace(`COnnection msg received: `, msg);
|
|
57
|
+
resolve((_b = (_a = msg.payload) === null || _a === void 0 ? void 0 : _a.socketId) !== null && _b !== void 0 ? _b : "undefined-socket-id");
|
|
58
|
+
}));
|
|
59
|
+
this.socket.onmessage = (msg) => {
|
|
60
|
+
var _a, _b;
|
|
61
|
+
try {
|
|
62
|
+
if (msg.type === "message" && msg.target && msg.data) {
|
|
63
|
+
// MessageEvent entity
|
|
64
|
+
let contentsObj = JSON.parse(msg.data);
|
|
65
|
+
this.routeInboundMessage(contentsObj);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.routeInboundMessage(msg);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
this.logger.error(`Error routing message: ${(_a = err.name) !== null && _a !== void 0 ? _a : ""} ${(_b = err.message) !== null && _b !== void 0 ? _b : "(no dettails available)"}`);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
reject(err);
|
|
78
|
+
}
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
close() {
|
|
83
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
var _a;
|
|
86
|
+
try {
|
|
87
|
+
if (this.socket) {
|
|
88
|
+
if (![this.socket.CLOSED, this.socket.CLOSING].includes(this.socket.readyState)) {
|
|
89
|
+
this.socket.close();
|
|
90
|
+
this.logger.debug(`Closed web socket.`);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.logger.debug(`Attempted close when socket was already closed or closing.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
this.logger.debug(`Attempted close when socket was undefined.`);
|
|
98
|
+
}
|
|
99
|
+
resolve();
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
this.logger.error(`Error closing socket connection: ${(_a = err.message) !== null && _a !== void 0 ? _a : "(no details available)"}`);
|
|
103
|
+
reject(err);
|
|
104
|
+
}
|
|
105
|
+
}));
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/** Returns the subscription id for the handler (reqd for unsubcribing).
|
|
109
|
+
*/
|
|
110
|
+
listenFor(action, handler) {
|
|
111
|
+
if (this.subscribers[action] == undefined) {
|
|
112
|
+
this.subscribers[action] = [];
|
|
113
|
+
}
|
|
114
|
+
let subx = {
|
|
115
|
+
id: guid_typescript_1.Guid.create().toString(),
|
|
116
|
+
handler: handler
|
|
117
|
+
};
|
|
118
|
+
this.subscribers[action].push(subx);
|
|
119
|
+
return subx.id;
|
|
120
|
+
}
|
|
121
|
+
/** Removes the given listener. (IDEMPOTENT) Returns whether a handler was indeed removed (false if it didn't exist).
|
|
122
|
+
*
|
|
123
|
+
* Throws any exceptions. */
|
|
124
|
+
unlisten(action, subscriptionId) {
|
|
125
|
+
let existings = this.subscribers[action];
|
|
126
|
+
if (existings && existings.length > 0) {
|
|
127
|
+
let removed = _.remove(existings, x => x.id === subscriptionId);
|
|
128
|
+
return Boolean(removed.length > 0);
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/** Fires any registered handlers.
|
|
135
|
+
* (and doesnt wait for them).
|
|
136
|
+
*/
|
|
137
|
+
routeInboundMessage(msg) {
|
|
138
|
+
var _a, _b;
|
|
139
|
+
if (msg.action) {
|
|
140
|
+
let actionMsg = msg;
|
|
141
|
+
let subxs = this.subscribers[actionMsg.action];
|
|
142
|
+
if (subxs && subxs.length > 0) {
|
|
143
|
+
for (let subx of subxs) {
|
|
144
|
+
try {
|
|
145
|
+
this.logger.debug(`Handling inbound [${actionMsg.action}] SocketAction [handler id: ${subx.id}]...`);
|
|
146
|
+
/* TODO: await? */ subx.handler(actionMsg);
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
this.logger.error(`Unhandled error in [${actionMsg.action}] SocketAction handler [id: ${subx.id}]: ${(_a = err.name) !== null && _a !== void 0 ? _a : ""} ${(_b = err.message) !== null && _b !== void 0 ? _b : "(No details available)"}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
this.logger.warn(`Received unhandled [${actionMsg.action}] message from [${this.settings.url}];`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
this.logger.warn(`Received unrecognized WebSocket message.`, stringify(msg));
|
|
159
|
+
}
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
RelayWebsocketClient.DEFAULT_SETTINGS = {
|
|
164
|
+
url: "ws://localhost:5798",
|
|
165
|
+
reconnectIntervalMs: 2000,
|
|
166
|
+
/** Deliberately kept short because the retry is limited to a single cli command execution,
|
|
167
|
+
* not an ongoing user session (thus it needs to fail fast). */
|
|
168
|
+
reconnectAttempts: 5
|
|
169
|
+
};
|
|
170
|
+
RelayWebsocketClient = RelayWebsocketClient_1 = tslib_1.__decorate([
|
|
171
|
+
(0, inversify_1.injectable)(),
|
|
172
|
+
tslib_1.__param(0, (0, inversify_1.inject)(api_user_creds_1.ApiUserCreds)),
|
|
173
|
+
tslib_1.__param(1, (0, inversify_1.inject)(relay_socket_listener_1.RelaySocketListenerSettings)),
|
|
174
|
+
tslib_1.__param(2, (0, inversify_1.inject)(codiac_common_1.INTERFACES.IBetterLogger)),
|
|
175
|
+
tslib_1.__metadata("design:paramtypes", [api_user_creds_1.ApiUserCreds,
|
|
176
|
+
relay_socket_listener_1.RelaySocketListenerSettings, Object])
|
|
177
|
+
], RelayWebsocketClient);
|
|
178
|
+
exports.RelayWebsocketClient = RelayWebsocketClient;
|
|
179
|
+
//# sourceMappingURL=relay-websocket-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relay-websocket-client.js","sourceRoot":"","sources":["../../../src/relay/wsclient/relay-websocket-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Subject, Observable } from 'rxjs';
|
|
2
|
+
import { IBetterLogger } from "@codiac.io/codiac-common";
|
|
3
|
+
import { SocketAction } from './socket-contracts';
|
|
4
|
+
export declare class RxWebsocketSubject<T> extends Subject<T> {
|
|
5
|
+
private url;
|
|
6
|
+
private reconnectInterval;
|
|
7
|
+
private reconnectAttempts;
|
|
8
|
+
private resultSelector;
|
|
9
|
+
private logger;
|
|
10
|
+
private serializer?;
|
|
11
|
+
private data;
|
|
12
|
+
private reconnectionObservable;
|
|
13
|
+
private wsSubjectConfig;
|
|
14
|
+
private socket;
|
|
15
|
+
private connectionObserver;
|
|
16
|
+
connectionStatus: Observable<boolean>;
|
|
17
|
+
defaultResultSelector: (e: MessageEvent | SocketAction) => any;
|
|
18
|
+
defaultSerializer: (data: any) => string;
|
|
19
|
+
constructor(url: string, reconnectInterval: number, reconnectAttempts: number, resultSelector: (e: MessageEvent | SocketAction) => any, logger: IBetterLogger, serializer?: ((data: any) => string) | undefined);
|
|
20
|
+
connect(): void;
|
|
21
|
+
private cnxnHandler;
|
|
22
|
+
onSocketConnection(handler: (err: Error | undefined, data?: any) => void): void;
|
|
23
|
+
reconnect(): void;
|
|
24
|
+
send(data: any): void;
|
|
25
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RxWebsocketSubject = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const inversify_1 = require("inversify");
|
|
6
|
+
const rxjs_1 = require("rxjs");
|
|
7
|
+
const operators_1 = require("rxjs/operators");
|
|
8
|
+
const webSocket_1 = require("rxjs/webSocket");
|
|
9
|
+
global.WebSocket = require('ws');
|
|
10
|
+
let RxWebsocketSubject = class RxWebsocketSubject extends rxjs_1.Subject {
|
|
11
|
+
constructor(url, reconnectInterval = 5000, reconnectAttempts = 10, resultSelector, logger, serializer) {
|
|
12
|
+
super();
|
|
13
|
+
this.url = url;
|
|
14
|
+
this.reconnectInterval = reconnectInterval;
|
|
15
|
+
this.reconnectAttempts = reconnectAttempts;
|
|
16
|
+
this.resultSelector = resultSelector;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
this.serializer = serializer;
|
|
19
|
+
this.defaultResultSelector = (e) => {
|
|
20
|
+
if (e.data)
|
|
21
|
+
return JSON.parse(e.data);
|
|
22
|
+
};
|
|
23
|
+
this.defaultSerializer = (data) => {
|
|
24
|
+
this.logger.debug("deserializing...");
|
|
25
|
+
return JSON.stringify(data);
|
|
26
|
+
};
|
|
27
|
+
this.connectionStatus = new rxjs_1.Observable((observer) => {
|
|
28
|
+
this.connectionObserver = observer;
|
|
29
|
+
}).pipe((0, operators_1.share)(), (0, operators_1.distinctUntilChanged)());
|
|
30
|
+
if (!resultSelector) {
|
|
31
|
+
this.resultSelector = this.defaultResultSelector;
|
|
32
|
+
}
|
|
33
|
+
if (!this.serializer) {
|
|
34
|
+
this.serializer = this.defaultSerializer;
|
|
35
|
+
}
|
|
36
|
+
this.wsSubjectConfig = {
|
|
37
|
+
url: url,
|
|
38
|
+
closeObserver: {
|
|
39
|
+
next: (e) => {
|
|
40
|
+
this.logger.detail(`connection CLOSE [code: ${e.code}]`);
|
|
41
|
+
this.socket = undefined;
|
|
42
|
+
if (this.connectionObserver) {
|
|
43
|
+
this.connectionObserver.next(false);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return undefined; // false?
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
openObserver: {
|
|
51
|
+
next: (e) => {
|
|
52
|
+
this.logger.detail(`connection OPEN`);
|
|
53
|
+
if (this.connectionObserver) {
|
|
54
|
+
this.connectionObserver.next(true);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return undefined; // false?
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
this.connect();
|
|
63
|
+
this.connectionStatus.subscribe((isConnected) => {
|
|
64
|
+
this.logger.debug(`Connection status: ${isConnected ? "connected" : "not connected"}`);
|
|
65
|
+
if (!this.reconnectionObservable && typeof (isConnected) == "boolean" && !isConnected) {
|
|
66
|
+
this.reconnect();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
connect() {
|
|
71
|
+
this.socket = new webSocket_1.WebSocketSubject(this.wsSubjectConfig);
|
|
72
|
+
this.socket
|
|
73
|
+
.pipe((0, operators_1.tap)(msg => {
|
|
74
|
+
var _a;
|
|
75
|
+
if (msg) {
|
|
76
|
+
if (msg.action === "connection" && this.cnxnHandler) {
|
|
77
|
+
try {
|
|
78
|
+
this.cnxnHandler(msg.error, msg.payload);
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
this.logger.warn(`Unhandled exception in connection handler: ${(_a = err.message) !== null && _a !== void 0 ? _a : "(no details available)"}`);
|
|
82
|
+
}
|
|
83
|
+
// } else {
|
|
84
|
+
// this.logger.debug(msg);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}))
|
|
88
|
+
.subscribe((m) => {
|
|
89
|
+
this.next(m);
|
|
90
|
+
this.resultSelector(m);
|
|
91
|
+
}, (error) => {
|
|
92
|
+
var _a;
|
|
93
|
+
this.logger.error(`Connection error: ${(_a = error.message) !== null && _a !== void 0 ? _a : ""}`);
|
|
94
|
+
if (!this.socket) {
|
|
95
|
+
this.reconnect();
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
onSocketConnection(handler) {
|
|
100
|
+
this.cnxnHandler = handler;
|
|
101
|
+
}
|
|
102
|
+
reconnect() {
|
|
103
|
+
this.reconnectionObservable = (0, rxjs_1.interval)(this.reconnectInterval)
|
|
104
|
+
.pipe((0, operators_1.takeWhile)((v, index) => {
|
|
105
|
+
return index < this.reconnectAttempts && !this.socket;
|
|
106
|
+
}));
|
|
107
|
+
this.reconnectionObservable.subscribe(() => {
|
|
108
|
+
this.connect();
|
|
109
|
+
// this.send(this.data);
|
|
110
|
+
}, null, () => {
|
|
111
|
+
this.reconnectionObservable = undefined;
|
|
112
|
+
if (!this.socket) {
|
|
113
|
+
this.complete();
|
|
114
|
+
if (this.connectionObserver) {
|
|
115
|
+
this.connectionObserver.complete();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
send(data) {
|
|
124
|
+
this.data = data;
|
|
125
|
+
if (this.data && this.socket)
|
|
126
|
+
this.socket.next(this.data);
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
RxWebsocketSubject = tslib_1.__decorate([
|
|
130
|
+
(0, inversify_1.injectable)(),
|
|
131
|
+
tslib_1.__metadata("design:paramtypes", [String, Number, Number, Function, Object, Function])
|
|
132
|
+
], RxWebsocketSubject);
|
|
133
|
+
exports.RxWebsocketSubject = RxWebsocketSubject;
|
|
134
|
+
//# sourceMappingURL=rx-websocket-subject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rx-websocket-subject.js","sourceRoot":"","sources":["../../../src/relay/wsclient/rx-websocket-subject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type SocketPayload = {
|
|
2
|
+
[name: string]: string | string[] | any;
|
|
3
|
+
};
|
|
4
|
+
export type SocketAction = {
|
|
5
|
+
action: string;
|
|
6
|
+
correlationId: string;
|
|
7
|
+
payload?: SocketPayload;
|
|
8
|
+
};
|
|
9
|
+
export type SocketActionHandler = (response: SocketAction) => void;
|
|
10
|
+
export type SocketActionHandlerAsync = (response: SocketAction) => Promise<void>;
|
|
11
|
+
export interface IMessage {
|
|
12
|
+
messageId: string;
|
|
13
|
+
entity: any;
|
|
14
|
+
entityId: string;
|
|
15
|
+
entityType: string;
|
|
16
|
+
operation: string;
|
|
17
|
+
messageType: string;
|
|
18
|
+
sentBy: string;
|
|
19
|
+
sentOn: Date;
|
|
20
|
+
description: string;
|
|
21
|
+
correlationId?: string | undefined;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"socket-contracts.js","sourceRoot":"","sources":["../../../src/relay/wsclient/socket-contracts.ts"],"names":[],"mappings":""}
|
|
@@ -112,12 +112,14 @@ let CloudProviderContextualizer = CloudProviderContextualizer_1 = class CloudPro
|
|
|
112
112
|
if (!isAuthed) {
|
|
113
113
|
let loginUi = this.loginUiFactory.create(providerCode, ioc);
|
|
114
114
|
let userName;
|
|
115
|
-
if (suppressConfirmations)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
// if (suppressConfirmations)
|
|
116
|
+
[isAuthed, userName] = yield loginUi.promptToLogin(undefined, suppressConfirmations, providedUserName, providedSecret);
|
|
117
|
+
if (!isAuthed)
|
|
118
|
+
throw new Error(`Login to ${providerCode} failed${providedUserName ? " for " + providedUserName : ""}.`);
|
|
119
|
+
// while (!isAuthed && !suppressConfirmations) {
|
|
120
|
+
// loginUi = this.loginUiFactory.create(providerCode, ioc);
|
|
121
|
+
// [isAuthed, userName] = await loginUi.promptToLogin(undefined, suppressConfirmations, providedUserName, providedSecret);
|
|
122
|
+
// }
|
|
121
123
|
output = { username: userName }; // assertion operator ok; logic forces it.
|
|
122
124
|
}
|
|
123
125
|
resolve(output.username); // operator ok bc logic forces output to be defined.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-provider-contextualizer.js","sourceRoot":"","sources":["../../src/uilogic/cloud-provider-contextualizer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cloud-provider-contextualizer.js","sourceRoot":"","sources":["../../src/uilogic/cloud-provider-contextualizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ const aws_resource_configurator_1 = require("./cloud-resource-configurators/aws-
|
|
|
9
9
|
const azure_resource_configurator_1 = require("./cloud-resource-configurators/azure-resource-configurator");
|
|
10
10
|
const docker_hub_resource_configurator_1 = require("./cloud-resource-configurators/docker-hub-resource-configurator");
|
|
11
11
|
const helm_resource_configurator_1 = require("./cloud-resource-configurators/helm-resource-configurator");
|
|
12
|
+
const az_interactive_login_configurator_1 = require("./cloud-resource-configurators/az-interactive-login-configurator");
|
|
12
13
|
class INTERFACES_CLI_ENTERPRISE {
|
|
13
14
|
}
|
|
14
15
|
exports.INTERFACES_CLI_ENTERPRISE = INTERFACES_CLI_ENTERPRISE;
|
|
@@ -128,7 +129,8 @@ let LoginConfiguratorFactory = LoginConfiguratorFactory_1 = class LoginConfigura
|
|
|
128
129
|
}
|
|
129
130
|
if (!ioc.isBoundNamed(INTERFACES_CLI_ENTERPRISE.ILoginConfigurator, codiac_domain_1.CloudProviderEnum.azure)) {
|
|
130
131
|
ioc.bind(INTERFACES_CLI_ENTERPRISE.ILoginConfigurator)
|
|
131
|
-
.to(
|
|
132
|
+
// .to(AzureResourceConfigurator)
|
|
133
|
+
.to(az_interactive_login_configurator_1.AzureInteractiveLoginConfigurator)
|
|
132
134
|
.whenTargetNamed(codiac_domain_1.CloudProviderEnum.azure);
|
|
133
135
|
}
|
|
134
136
|
if (!ioc.isBoundNamed(INTERFACES_CLI_ENTERPRISE.ILoginConfigurator, codiac_domain_1.CloudProviderEnum.dockerHub)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-resource-configurator-factory.js","sourceRoot":"","sources":["../../src/uilogic/cloud-resource-configurator-factory.ts"],"names":[],"mappings":";;;;;AAAA,4DAA6D;AAC7D,yCAAmD;AAEnD,wGAAmG;AACnG,4GAAuG;AACvG,sHAAgH;AAChH,0GAAqG;
|
|
1
|
+
{"version":3,"file":"cloud-resource-configurator-factory.js","sourceRoot":"","sources":["../../src/uilogic/cloud-resource-configurator-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IBetterLogger } from "@codiac.io/codiac-common";
|
|
2
|
+
import { CloudProviderEnum } from "@codiac.io/codiac-domain";
|
|
3
|
+
import { IOutputStyler, IUserInputProvider, UserNameTenantCode } from "@codiac.io/codiac-ops-common";
|
|
4
|
+
import { RelayClient as GenRelayClient } from "../../apis/codiac-relay";
|
|
5
|
+
import { ILoginConfigurator } from "../i-login-configurator";
|
|
6
|
+
import { OperationMeta } from '../../ops';
|
|
7
|
+
import { RelayWebsocketClient } from '../../relay/wsclient/relay-websocket-client';
|
|
8
|
+
/** Implements AuthorizationCode Flow with a popup-browser interactive login
|
|
9
|
+
* for user to authenticate and provide consent.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AzureInteractiveLoginConfigurator implements ILoginConfigurator {
|
|
12
|
+
private opMeta;
|
|
13
|
+
private genRelayClient;
|
|
14
|
+
private relayWebSocket;
|
|
15
|
+
private codiacUser;
|
|
16
|
+
private _ui;
|
|
17
|
+
private _styler;
|
|
18
|
+
private logger;
|
|
19
|
+
constructor(opMeta: OperationMeta, genRelayClient: GenRelayClient, relayWebSocket: RelayWebsocketClient, codiacUser: UserNameTenantCode, _ui: IUserInputProvider, _styler: IOutputStyler, logger: IBetterLogger);
|
|
20
|
+
get cloudProvider(): CloudProviderEnum;
|
|
21
|
+
/** Performs an EXPLICIT login sequence in ALL CASES.
|
|
22
|
+
* It does NOT attempt or defer to a silent authentication.
|
|
23
|
+
*
|
|
24
|
+
* iow: Invoke this when the silent methods have failed. */
|
|
25
|
+
promptToLogin(azSubscriptionId?: string | undefined, suppressConfirmations?: boolean | undefined, userName?: string | undefined, password?: string | undefined, webSocketId?: string): Promise<[boolean, string]>;
|
|
26
|
+
/** Opens the the external login url in a browser window.
|
|
27
|
+
* Returns at the end of the sequence.
|
|
28
|
+
* Throws on any errors.
|
|
29
|
+
*/
|
|
30
|
+
private invokeBrowserSequence;
|
|
31
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AzureInteractiveLoginConfigurator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const open = require("open");
|
|
6
|
+
const inversify_1 = require("inversify");
|
|
7
|
+
const codiac_common_1 = require("@codiac.io/codiac-common");
|
|
8
|
+
const codiac_domain_1 = require("@codiac.io/codiac-domain");
|
|
9
|
+
const codiac_ops_common_1 = require("@codiac.io/codiac-ops-common");
|
|
10
|
+
const codiac_relay_1 = require("../../apis/codiac-relay");
|
|
11
|
+
const ops_1 = require("../../ops");
|
|
12
|
+
const relay_websocket_client_1 = require("../../relay/wsclient/relay-websocket-client");
|
|
13
|
+
/** Implements AuthorizationCode Flow with a popup-browser interactive login
|
|
14
|
+
* for user to authenticate and provide consent.
|
|
15
|
+
*/
|
|
16
|
+
let AzureInteractiveLoginConfigurator = class AzureInteractiveLoginConfigurator {
|
|
17
|
+
constructor(opMeta, genRelayClient,
|
|
18
|
+
// @inject(RelaySocketListener) private relayWebSocket: RelaySocketListener,
|
|
19
|
+
relayWebSocket, codiacUser, _ui, _styler, logger) {
|
|
20
|
+
this.opMeta = opMeta;
|
|
21
|
+
this.genRelayClient = genRelayClient;
|
|
22
|
+
this.relayWebSocket = relayWebSocket;
|
|
23
|
+
this.codiacUser = codiacUser;
|
|
24
|
+
this._ui = _ui;
|
|
25
|
+
this._styler = _styler;
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
}
|
|
28
|
+
get cloudProvider() {
|
|
29
|
+
return codiac_domain_1.CloudProviderEnum.azure;
|
|
30
|
+
}
|
|
31
|
+
/** Performs an EXPLICIT login sequence in ALL CASES.
|
|
32
|
+
* It does NOT attempt or defer to a silent authentication.
|
|
33
|
+
*
|
|
34
|
+
* iow: Invoke this when the silent methods have failed. */
|
|
35
|
+
promptToLogin(azSubscriptionId, suppressConfirmations, userName, password, webSocketId) {
|
|
36
|
+
var _a, _b, _c;
|
|
37
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
try {
|
|
39
|
+
// 1. Establish 2-way messaging channel w the relay
|
|
40
|
+
let commChannel;
|
|
41
|
+
// if (webSocketId) {
|
|
42
|
+
// commChannel = { socketId: webSocketId };
|
|
43
|
+
// } else {
|
|
44
|
+
// commChannel = {
|
|
45
|
+
// socketId: await this.openWebSocket()
|
|
46
|
+
// };
|
|
47
|
+
// }
|
|
48
|
+
commChannel = {
|
|
49
|
+
socketId: yield this.relayWebSocket.open() // .start()
|
|
50
|
+
};
|
|
51
|
+
// 2. Get the login url
|
|
52
|
+
let authResult = yield this.genRelayClient.Call.csp_login_interactive({ providerCode: this.cloudProvider, commChannel: commChannel, correlationId: this.opMeta.correlationId }, {});
|
|
53
|
+
if (authResult.error)
|
|
54
|
+
throw authResult.error;
|
|
55
|
+
let loginUrl = (_a = authResult.output) === null || _a === void 0 ? void 0 : _a.loginUrl;
|
|
56
|
+
if (loginUrl == undefined)
|
|
57
|
+
throw new Error(`No interactive login url found.`);
|
|
58
|
+
// 3. Trigger the external auth sequence in a browser window.
|
|
59
|
+
let result = yield this.invokeBrowserSequence(loginUrl);
|
|
60
|
+
yield this.relayWebSocket.close();
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
throw new Error(`Error logging into ${this.cloudProvider}: ${(_b = err.name) !== null && _b !== void 0 ? _b : ""} ${(_c = err.message) !== null && _c !== void 0 ? _c : "(not details available)"}`);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Opens the the external login url in a browser window.
|
|
69
|
+
* Returns at the end of the sequence.
|
|
70
|
+
* Throws on any errors.
|
|
71
|
+
*/
|
|
72
|
+
invokeBrowserSequence(loginUrl) {
|
|
73
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
try {
|
|
76
|
+
let isCompleted = false;
|
|
77
|
+
let isAuthed = false; // Read this from the websocket message / fail / timeout.
|
|
78
|
+
let cspUserName; // Read this from the websocket message
|
|
79
|
+
let handlerId = this.relayWebSocket.listenFor("loginComplete", msg => {
|
|
80
|
+
isCompleted = true;
|
|
81
|
+
// TODO: get these from the completion message
|
|
82
|
+
isAuthed = true;
|
|
83
|
+
cspUserName = "anonymous@domain.com";
|
|
84
|
+
this.logger.debug(`Interactive login sequence completed`, msg);
|
|
85
|
+
this.relayWebSocket.unlisten("loginComplete", handlerId);
|
|
86
|
+
resolve([isAuthed, cspUserName]);
|
|
87
|
+
// return;
|
|
88
|
+
});
|
|
89
|
+
// 3. Sprout the login interaction in a browser popup
|
|
90
|
+
let childProcess = yield open(loginUrl, {});
|
|
91
|
+
// 4. Wait for the completion message via websocket
|
|
92
|
+
let timeout = Date.now() + 300000; // 5 mins
|
|
93
|
+
this._ui.startSpinner(`Waiting on interactive login...`);
|
|
94
|
+
let intervalId = setInterval(() => {
|
|
95
|
+
if (isCompleted) {
|
|
96
|
+
// Kill the popup browser process (ie: close the window) cuz we know the sequence has completed.
|
|
97
|
+
// childProcess.kill(); // Commneted out bc it doesnt actually close the browser window.
|
|
98
|
+
this._ui.stopSpinner("Completed");
|
|
99
|
+
clearInterval(intervalId);
|
|
100
|
+
}
|
|
101
|
+
else if (Date.now() > timeout) {
|
|
102
|
+
// console.log(".");
|
|
103
|
+
this._ui.stopSpinner("Timed out");
|
|
104
|
+
clearInterval(intervalId);
|
|
105
|
+
resolve([false, "none"]); // <--- This is our safety net
|
|
106
|
+
}
|
|
107
|
+
}, 250);
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
reject(err);
|
|
111
|
+
}
|
|
112
|
+
}));
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
AzureInteractiveLoginConfigurator = tslib_1.__decorate([
|
|
117
|
+
(0, inversify_1.injectable)(),
|
|
118
|
+
tslib_1.__param(0, (0, inversify_1.inject)(ops_1.OperationMeta)),
|
|
119
|
+
tslib_1.__param(1, (0, inversify_1.inject)(codiac_relay_1.RelayClient)),
|
|
120
|
+
tslib_1.__param(2, (0, inversify_1.inject)(relay_websocket_client_1.RelayWebsocketClient)),
|
|
121
|
+
tslib_1.__param(3, (0, inversify_1.inject)(codiac_ops_common_1.UserNameTenantCode)),
|
|
122
|
+
tslib_1.__param(4, (0, inversify_1.inject)(codiac_ops_common_1.INTERFACES_OPS.IUserInputProvider)),
|
|
123
|
+
tslib_1.__param(5, (0, inversify_1.inject)(codiac_ops_common_1.INTERFACES_OPS.IOutputStyler)),
|
|
124
|
+
tslib_1.__param(6, (0, inversify_1.inject)(codiac_common_1.INTERFACES.IBetterLogger)),
|
|
125
|
+
tslib_1.__metadata("design:paramtypes", [ops_1.OperationMeta,
|
|
126
|
+
codiac_relay_1.RelayClient,
|
|
127
|
+
relay_websocket_client_1.RelayWebsocketClient,
|
|
128
|
+
codiac_ops_common_1.UserNameTenantCode, Object, Object, Object])
|
|
129
|
+
], AzureInteractiveLoginConfigurator);
|
|
130
|
+
exports.AzureInteractiveLoginConfigurator = AzureInteractiveLoginConfigurator;
|
|
131
|
+
//# sourceMappingURL=az-interactive-login-configurator.js.map
|