@codiac.io/codiac-cli 1.2.144 → 1.2.146

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.
Files changed (50) hide show
  1. package/README.md +3779 -3779
  2. package/lib/apis/codiac-relay/common/utils.js.map +1 -1
  3. package/lib/apis/codiac-relay/gen/client.d.ts +6 -2
  4. package/lib/apis/codiac-relay/gen/client.js +29 -1
  5. package/lib/apis/codiac-relay/gen/client.js.map +1 -1
  6. package/lib/apis/codiac-relay/gen/contracts.d.ts +76 -2
  7. package/lib/apis/codiac-relay/gen/contracts.js +6 -1
  8. package/lib/apis/codiac-relay/gen/contracts.js.map +1 -1
  9. package/lib/cli-common/command-base.js +6 -0
  10. package/lib/cli-common/command-base.js.map +1 -1
  11. package/lib/command-base-enterprise.js +3 -0
  12. package/lib/command-base-enterprise.js.map +1 -1
  13. package/lib/commands/asset/list.js +2 -1
  14. package/lib/commands/asset/list.js.map +1 -1
  15. package/lib/commands/asset/view.js +2 -1
  16. package/lib/commands/asset/view.js.map +1 -1
  17. package/lib/commands/deploy.js +1 -0
  18. package/lib/commands/deploy.js.map +1 -1
  19. package/lib/ops/entities/index.d.ts +1 -0
  20. package/lib/ops/entities/index.js +1 -0
  21. package/lib/ops/entities/index.js.map +1 -1
  22. package/lib/ops/entities/operation-meta.d.ts +8 -0
  23. package/lib/ops/entities/operation-meta.js +19 -0
  24. package/lib/ops/entities/operation-meta.js.map +1 -0
  25. package/lib/relay/relay-container.js +1 -1
  26. package/lib/relay/wsclient/relay-socket-listener.d.ts +68 -0
  27. package/lib/relay/wsclient/relay-socket-listener.js +165 -0
  28. package/lib/relay/wsclient/relay-socket-listener.js.map +1 -0
  29. package/lib/relay/wsclient/relay-websocket-client.d.ts +33 -0
  30. package/lib/relay/wsclient/relay-websocket-client.js +179 -0
  31. package/lib/relay/wsclient/relay-websocket-client.js.map +1 -0
  32. package/lib/relay/wsclient/rx-websocket-subject.d.ts +25 -0
  33. package/lib/relay/wsclient/rx-websocket-subject.js +134 -0
  34. package/lib/relay/wsclient/rx-websocket-subject.js.map +1 -0
  35. package/lib/relay/wsclient/socket-contracts.d.ts +22 -0
  36. package/lib/relay/wsclient/socket-contracts.js +3 -0
  37. package/lib/relay/wsclient/socket-contracts.js.map +1 -0
  38. package/lib/uilogic/cloud-provider-contextualizer.js +8 -6
  39. package/lib/uilogic/cloud-provider-contextualizer.js.map +1 -1
  40. package/lib/uilogic/cloud-resource-configurator-factory.js +3 -1
  41. package/lib/uilogic/cloud-resource-configurator-factory.js.map +1 -1
  42. package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.d.ts +31 -0
  43. package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.js +131 -0
  44. package/lib/uilogic/cloud-resource-configurators/az-interactive-login-configurator.js.map +1 -0
  45. package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.js +9 -2
  46. package/lib/uilogic/cloud-resource-configurators/azure-resource-configurator.js.map +1 -1
  47. package/lib/uilogic/render-methods.js +6 -0
  48. package/lib/uilogic/render-methods.js.map +1 -1
  49. package/oclif.manifest.json +1 -1
  50. package/package.json +2 -1
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var RelaySocketListener_1;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RelaySocketListener = exports.RelaySocketListenerSettings = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const inversify_1 = require("inversify");
7
+ const _ = require("lodash");
8
+ const guid_typescript_1 = require("guid-typescript");
9
+ const stringify = require("json-stringify-safe");
10
+ const codiac_common_1 = require("@codiac.io/codiac-common");
11
+ const rx_websocket_subject_1 = require("./rx-websocket-subject");
12
+ /** Configuration for the relay web socket client
13
+ * (ie: duplex comms with the relay via Websocket) */
14
+ let RelaySocketListenerSettings = class RelaySocketListenerSettings {
15
+ constructor() { }
16
+ };
17
+ RelaySocketListenerSettings = tslib_1.__decorate([
18
+ (0, inversify_1.injectable)(),
19
+ tslib_1.__metadata("design:paramtypes", [])
20
+ ], RelaySocketListenerSettings);
21
+ exports.RelaySocketListenerSettings = RelaySocketListenerSettings;
22
+ /** Meta added to a message handler for facility in managing message subscribers. */
23
+ class HandlerSubx {
24
+ constructor(id, handler) {
25
+ this.id = id;
26
+ this.handler = handler;
27
+ }
28
+ }
29
+ /**
30
+ * **USAGE:**
31
+ *
32
+ * At bootstrap time...
33
+ * ```
34
+ * RelaySocketListenerService.bootstrap(ioc, { reconnectIntervalMs: 2000 });
35
+ * ```
36
+ * At ctor injection...
37
+ * ```
38
+ * export class MyClass {
39
+ * constructor(@inject(RelaySocketListener) private socket: RelaySocketListener) { ... }
40
+ *
41
+ * public doSomething() {
42
+ * // wire up a msg handler...
43
+ * this.socket.listenFor("MyAction", msg => {
44
+ * console.log(`I just got a ${msg.action}, with cid: ${msg.correlationId}`);
45
+ * });
46
+ *
47
+ * // Start listening (if its not already)
48
+ * this.socket.start();
49
+ * }
50
+ * }
51
+ * ```
52
+ */
53
+ let RelaySocketListener = RelaySocketListener_1 = class RelaySocketListener {
54
+ static bootstrap(ioc, settings) {
55
+ ioc.bind(RelaySocketListenerSettings).toConstantValue(settings !== null && settings !== void 0 ? settings : {});
56
+ ioc.bind(RelaySocketListener_1).toSelf().inSingletonScope(); // <-- There can be only one socket connection from the CLI.
57
+ }
58
+ constructor(settings, logger) {
59
+ this.logger = logger;
60
+ /** Fires any registered handlers. */
61
+ this.routeInboundMessage = (msg) => {
62
+ var _a, _b;
63
+ if (msg.action) {
64
+ let actionMsg = msg;
65
+ let subxs = this.subscribers[actionMsg.action];
66
+ if (subxs && subxs.length > 0) {
67
+ for (let subx of subxs) {
68
+ try {
69
+ this.logger.debug(`Handling inbound [${actionMsg.action}] SocketAction [handler id: ${subx.id}]...`);
70
+ /* TODO: await */ subx.handler(actionMsg);
71
+ }
72
+ catch (err) {
73
+ 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)"}`);
74
+ }
75
+ }
76
+ }
77
+ else {
78
+ this.logger.warn(`Received unhandled [${actionMsg.action}] message from [${this.settings.url}];`);
79
+ }
80
+ }
81
+ else {
82
+ this.logger.warn(`Received unrecognized WebSocket message.`, stringify(msg));
83
+ }
84
+ return msg; // <--- Do we need to return this?
85
+ };
86
+ this.settings = _.assignIn({}, RelaySocketListener_1.DEFAULT_SETTINGS, settings);
87
+ this.subscribers = {};
88
+ }
89
+ /** Connects and initiates the listeners.
90
+ * Returns the SocketId.
91
+ * (IDEMPOTENT) Lazy-start: this method wont duplicate connections if it's already connected to the remote websocket server.
92
+ */
93
+ start() {
94
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
95
+ return new Promise((resolve, reject) => tslib_1.__awaiter(this, void 0, void 0, function* () {
96
+ // if (this.rxWebsocketSubject?.connectionStatus !== connected) {
97
+ if (this.rxWebsocketSubject == undefined) {
98
+ this.rxWebsocketSubject = new rx_websocket_subject_1.RxWebsocketSubject(this.settings.url, this.settings.reconnectIntervalMs, this.settings.reconnectAttempts, this.routeInboundMessage, this.logger);
99
+ }
100
+ this.rxWebsocketSubject.onSocketConnection((err, socketId) => {
101
+ if (err) {
102
+ reject(err);
103
+ }
104
+ else {
105
+ resolve(socketId);
106
+ }
107
+ });
108
+ this.rxWebsocketSubject.connect();
109
+ this.rxWebsocketSubject.subscribe();
110
+ // }
111
+ // How do we observe the connection status and return the socketId once connected?
112
+ // resolve("fakeSocketId-123-345");
113
+ }));
114
+ });
115
+ }
116
+ /** (IDEMPOTENT) Lazy-stop: this method can be called even if the (one-and-only) socket is already closed. */
117
+ stop() {
118
+ if (this.rxWebsocketSubject) {
119
+ if (this.rxWebsocketSubject.closed !== true /* .isStopped ? */) {
120
+ this.rxWebsocketSubject.complete(); // Is this right?
121
+ }
122
+ }
123
+ }
124
+ /** Returns the subscription id for the handler (reqd for unsubcribing).
125
+ */
126
+ listenFor(action, handler) {
127
+ if (this.subscribers[action] == undefined) {
128
+ this.subscribers[action] = [];
129
+ }
130
+ let subx = {
131
+ id: guid_typescript_1.Guid.create().toString(),
132
+ handler: handler
133
+ };
134
+ this.subscribers[action].push(subx);
135
+ return subx.id;
136
+ }
137
+ /** Removes the given listener. (IDEMPOTENT) Returns whether a handler was indeed removed (false if it didn't exist).
138
+ *
139
+ * Throws any exceptions. */
140
+ unlisten(action, subscriptionId) {
141
+ let existings = this.subscribers[action];
142
+ if (existings && existings.length > 0) {
143
+ let removed = _.remove(existings, x => x.id === subscriptionId);
144
+ return Boolean(removed.length > 0);
145
+ }
146
+ else {
147
+ return false;
148
+ }
149
+ }
150
+ };
151
+ RelaySocketListener.DEFAULT_SETTINGS = {
152
+ url: "ws://localhost:5798",
153
+ reconnectIntervalMs: 2000,
154
+ /** Deliberately kept short because the retry is limited to a single cli command execution,
155
+ * not an ongoing user session (thus it needs to fail fast). */
156
+ reconnectAttempts: 5
157
+ };
158
+ RelaySocketListener = RelaySocketListener_1 = tslib_1.__decorate([
159
+ (0, inversify_1.injectable)(),
160
+ tslib_1.__param(0, (0, inversify_1.inject)(RelaySocketListenerSettings)),
161
+ tslib_1.__param(1, (0, inversify_1.inject)(codiac_common_1.INTERFACES.IBetterLogger)),
162
+ tslib_1.__metadata("design:paramtypes", [RelaySocketListenerSettings, Object])
163
+ ], RelaySocketListener);
164
+ exports.RelaySocketListener = RelaySocketListener;
165
+ //# sourceMappingURL=relay-socket-listener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relay-socket-listener.js","sourceRoot":"","sources":["../../../src/relay/wsclient/relay-socket-listener.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { IBetterLogger } from "@codiac.io/codiac-common";
2
+ import { interfaces } from "inversify";
3
+ import { RelaySocketListenerSettings } from "./relay-socket-listener";
4
+ import { SocketActionHandler } from './socket-contracts';
5
+ import { ApiUserCreds } from "../../apis/codiac-api/common/api-user-creds";
6
+ export declare class RelayWebsocketClient {
7
+ private credentials;
8
+ private logger;
9
+ static bootstrap(ioc: interfaces.Container, settings?: RelaySocketListenerSettings | undefined): void;
10
+ static readonly DEFAULT_SETTINGS: Required<RelaySocketListenerSettings>;
11
+ constructor(credentials: ApiUserCreds, settings: RelaySocketListenerSettings, logger: IBetterLogger);
12
+ private readonly settings;
13
+ private socket;
14
+ open(): Promise<string>;
15
+ close(): Promise<void>;
16
+ /** Late-bound subscribers to incoming messages, mapped by `SocketAction.action`.
17
+ *
18
+ * If multiple handlers are registered for a given action,
19
+ * they get fired in order they subscribed (first-come first served).
20
+ */
21
+ private subscribers;
22
+ /** Returns the subscription id for the handler (reqd for unsubcribing).
23
+ */
24
+ listenFor(action: string, handler: SocketActionHandler): string;
25
+ /** Removes the given listener. (IDEMPOTENT) Returns whether a handler was indeed removed (false if it didn't exist).
26
+ *
27
+ * Throws any exceptions. */
28
+ unlisten(action: string, subscriptionId: string): boolean;
29
+ /** Fires any registered handlers.
30
+ * (and doesnt wait for them).
31
+ */
32
+ private routeInboundMessage;
33
+ }
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=socket-contracts.js.map
@@ -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
- [isAuthed, userName] = yield loginUi.promptToLogin(undefined, suppressConfirmations, providedUserName, providedSecret);
117
- while (!isAuthed && !suppressConfirmations) {
118
- loginUi = this.loginUiFactory.create(providerCode, ioc);
119
- [isAuthed, userName] = yield loginUi.promptToLogin(undefined, suppressConfirmations, providedUserName, providedSecret);
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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"}