@vuu-ui/vuu-data-remote 2.1.18 → 2.1.19-beta.1

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 (57) hide show
  1. package/package.json +10 -12
  2. package/types/ConnectionManager.d.ts +2 -2
  3. package/types/VuuDataSource.d.ts +2 -2
  4. package/types/inlined-worker.d.ts +1 -1
  5. package/types/server-proxy/viewport.d.ts +1 -1
  6. package/cjs/ConnectionManager.js +0 -181
  7. package/cjs/ConnectionManager.js.map +0 -1
  8. package/cjs/DedicatedWorker.js +0 -61
  9. package/cjs/DedicatedWorker.js.map +0 -1
  10. package/cjs/LostConnectionHandler.js +0 -83
  11. package/cjs/LostConnectionHandler.js.map +0 -1
  12. package/cjs/VuuAuthProvider.js +0 -87
  13. package/cjs/VuuAuthProvider.js.map +0 -1
  14. package/cjs/VuuAuthenticator.js +0 -57
  15. package/cjs/VuuAuthenticator.js.map +0 -1
  16. package/cjs/VuuDataSource.js +0 -638
  17. package/cjs/VuuDataSource.js.map +0 -1
  18. package/cjs/WebSocketConnection.js +0 -20
  19. package/cjs/WebSocketConnection.js.map +0 -1
  20. package/cjs/authenticate.js +0 -64
  21. package/cjs/authenticate.js.map +0 -1
  22. package/cjs/constants.js +0 -50
  23. package/cjs/constants.js.map +0 -1
  24. package/cjs/data-source.js +0 -49
  25. package/cjs/data-source.js.map +0 -1
  26. package/cjs/index.js +0 -38
  27. package/cjs/index.js.map +0 -1
  28. package/cjs/inlined-worker.js +0 -2742
  29. package/cjs/inlined-worker.js.map +0 -1
  30. package/cjs/message-utils.js +0 -70
  31. package/cjs/message-utils.js.map +0 -1
  32. package/esm/ConnectionManager.js +0 -179
  33. package/esm/ConnectionManager.js.map +0 -1
  34. package/esm/DedicatedWorker.js +0 -59
  35. package/esm/DedicatedWorker.js.map +0 -1
  36. package/esm/LostConnectionHandler.js +0 -79
  37. package/esm/LostConnectionHandler.js.map +0 -1
  38. package/esm/VuuAuthProvider.js +0 -85
  39. package/esm/VuuAuthProvider.js.map +0 -1
  40. package/esm/VuuAuthenticator.js +0 -54
  41. package/esm/VuuAuthenticator.js.map +0 -1
  42. package/esm/VuuDataSource.js +0 -636
  43. package/esm/VuuDataSource.js.map +0 -1
  44. package/esm/WebSocketConnection.js +0 -17
  45. package/esm/WebSocketConnection.js.map +0 -1
  46. package/esm/authenticate.js +0 -60
  47. package/esm/authenticate.js.map +0 -1
  48. package/esm/constants.js +0 -47
  49. package/esm/constants.js.map +0 -1
  50. package/esm/data-source.js +0 -44
  51. package/esm/data-source.js.map +0 -1
  52. package/esm/index.js +0 -11
  53. package/esm/index.js.map +0 -1
  54. package/esm/inlined-worker.js +0 -2740
  55. package/esm/inlined-worker.js.map +0 -1
  56. package/esm/message-utils.js +0 -64
  57. package/esm/message-utils.js.map +0 -1
@@ -1,181 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
- var WebSocketConnection = require('./WebSocketConnection.js');
5
- var DedicatedWorker = require('./DedicatedWorker.js');
6
- var dataSource = require('./data-source.js');
7
-
8
- var __defProp = Object.defineProperty;
9
- var __typeError = (msg) => {
10
- throw TypeError(msg);
11
- };
12
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
14
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
15
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
16
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
17
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
18
- var _instance, _connectionStatus, _deferredServerAPI, _pendingRequests, _viewports, _worker;
19
- const _ConnectionManager = class _ConnectionManager extends vuuUtils.EventEmitter {
20
- constructor() {
21
- super();
22
- __privateAdd(this, _connectionStatus, "closed");
23
- __privateAdd(this, _deferredServerAPI, new vuuUtils.DeferredPromise());
24
- __privateAdd(this, _pendingRequests, /* @__PURE__ */ new Map());
25
- __privateAdd(this, _viewports, /* @__PURE__ */ new Map());
26
- // #worker?: Worker;
27
- __privateAdd(this, _worker);
28
- __publicField(this, "handleMessageFromWorker", (message) => {
29
- if (dataSource.shouldMessageBeRoutedToDataSource(message)) {
30
- const viewport = __privateGet(this, _viewports).get(message.clientViewportId);
31
- if (viewport) {
32
- viewport.postMessageToClientDataSource(message);
33
- } else {
34
- console.error(
35
- `[ConnectionManager] ${message.type} message received, viewport not found`
36
- );
37
- }
38
- } else if (WebSocketConnection.isWebSocketConnectionStatus(message)) {
39
- __privateSet(this, _connectionStatus, message);
40
- this.emit("connection-status", message);
41
- } else if (vuuUtils.isConnectionQualityMetrics(message)) {
42
- this.emit("connection-metrics", message);
43
- } else if (vuuUtils.isRequestResponse(message)) {
44
- const { requestId } = message;
45
- if (__privateGet(this, _pendingRequests).has(requestId)) {
46
- const { resolve } = __privateGet(this, _pendingRequests).get(requestId);
47
- __privateGet(this, _pendingRequests).delete(requestId);
48
- const { requestId: _, ...messageWithoutRequestId } = message;
49
- if (vuuUtils.messageHasResult(message)) {
50
- resolve(message.result);
51
- } else if (vuuUtils.isTableSchemaMessage(message)) {
52
- resolve(message.tableSchema);
53
- } else {
54
- resolve(messageWithoutRequestId);
55
- }
56
- } else {
57
- console.warn(
58
- "%cConnectionManager Unexpected message from the worker",
59
- "color:red;font-weight:bold;"
60
- );
61
- }
62
- }
63
- });
64
- __publicField(this, "connectedServerAPI", {
65
- subscribe: (message, callback) => {
66
- if (__privateGet(this, _viewports).get(message.viewport)) {
67
- throw Error(
68
- `ConnectionManager attempting to subscribe with an existing viewport id`
69
- );
70
- }
71
- __privateGet(this, _viewports).set(message.viewport, {
72
- status: "subscribing",
73
- request: message,
74
- postMessageToClientDataSource: callback
75
- });
76
- __privateGet(this, _worker).send({ type: "subscribe", ...message });
77
- },
78
- unsubscribe: (viewport) => {
79
- __privateGet(this, _worker).send({ type: "unsubscribe", viewport });
80
- },
81
- send: (message) => {
82
- __privateGet(this, _worker).send(message);
83
- },
84
- destroy: (viewportId) => {
85
- if (viewportId && __privateGet(this, _viewports).has(viewportId)) {
86
- __privateGet(this, _viewports).delete(viewportId);
87
- }
88
- },
89
- rpcCall: async (message) => this.asyncRequest(message),
90
- select: async (selectRequest) => this.asyncRequest(selectRequest),
91
- getTableList: async () => this.asyncRequest({ type: "GET_TABLE_LIST" }),
92
- getTableSchema: async (table) => this.asyncRequest({
93
- type: "GET_TABLE_META",
94
- table
95
- })
96
- });
97
- __publicField(this, "asyncRequest", (msg) => {
98
- const requestId = vuuUtils.uuid();
99
- __privateGet(this, _worker).send({
100
- requestId,
101
- ...msg
102
- });
103
- return new Promise((resolve, reject) => {
104
- __privateGet(this, _pendingRequests).set(requestId, { resolve, reject });
105
- });
106
- });
107
- __privateSet(this, _worker, new DedicatedWorker.DedicatedWorker(this.handleMessageFromWorker));
108
- }
109
- static get instance() {
110
- if (!__privateGet(_ConnectionManager, _instance)) {
111
- __privateSet(_ConnectionManager, _instance, new _ConnectionManager());
112
- }
113
- return __privateGet(_ConnectionManager, _instance);
114
- }
115
- get connectionStatus() {
116
- return __privateGet(this, _connectionStatus);
117
- }
118
- get connected() {
119
- return __privateGet(this, _connectionStatus) === "connected" || __privateGet(this, _connectionStatus) === "reconnected";
120
- }
121
- /**
122
- * Open a connection to the VuuServer. This method opens the websocket connection
123
- * and logs in. It can be called from whichever client code has access to the auth
124
- * token (eg. the login page, or just a hardcoded login script in a sample).
125
- * This will unblock any DataSources which may have already tried to subscribe to data,
126
- * but lacked access to the auth token.
127
- *
128
- * @param serverUrl
129
- * @param token
130
- */
131
- async connect(options, throwOnRejected = false) {
132
- try {
133
- const result = await __privateGet(this, _worker).connect(options);
134
- if (result === "connected") {
135
- __privateGet(this, _deferredServerAPI).resolve(this.connectedServerAPI);
136
- }
137
- return result;
138
- } catch (err) {
139
- if (throwOnRejected) {
140
- throw err;
141
- } else {
142
- return "connection-failed";
143
- }
144
- }
145
- }
146
- disableActiveSubscriptions() {
147
- console.log(`[ConnectionManager] disableActiveSubscriptions`);
148
- __privateGet(this, _worker).send({ type: "disable-all-active" });
149
- }
150
- enableActiveSubscriptions() {
151
- console.log(`[ConnectionManager] enableActiveSubscriptions`);
152
- __privateGet(this, _worker).send({ type: "enable-all-active" });
153
- }
154
- get serverAPI() {
155
- return __privateGet(this, _deferredServerAPI).promise;
156
- }
157
- async disconnect() {
158
- try {
159
- __privateGet(this, _worker).send({ type: "disconnect" });
160
- __privateSet(this, _deferredServerAPI, new vuuUtils.DeferredPromise());
161
- return "disconnected";
162
- } catch (err) {
163
- return "rejected";
164
- }
165
- }
166
- destroy() {
167
- __privateGet(this, _worker).terminate();
168
- }
169
- };
170
- _instance = new WeakMap();
171
- _connectionStatus = new WeakMap();
172
- _deferredServerAPI = new WeakMap();
173
- _pendingRequests = new WeakMap();
174
- _viewports = new WeakMap();
175
- _worker = new WeakMap();
176
- __privateAdd(_ConnectionManager, _instance);
177
- let ConnectionManager = _ConnectionManager;
178
- var ConnectionManager$1 = ConnectionManager.instance;
179
-
180
- module.exports = ConnectionManager$1;
181
- //# sourceMappingURL=ConnectionManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConnectionManager.js","sources":["../../../packages/vuu-data-remote/src/ConnectionManager.ts"],"sourcesContent":["import {\n ConnectOptions,\n DataSourceCallbackMessage,\n ServerAPI,\n ServerProxySubscribeMessage,\n TableSchema,\n VuuUIMessageIn,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n SelectRequest,\n SelectResponse,\n VuuCreateVisualLink,\n VuuRemoveVisualLink,\n VuuRpcMenuRequest,\n VuuRpcServiceRequest,\n VuuTableList,\n VuuTableListRequest,\n VuuTableMetaRequest,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DeferredPromise,\n EventEmitter,\n isConnectionQualityMetrics,\n isRequestResponse,\n isTableSchemaMessage,\n messageHasResult,\n uuid,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n ConnectionStatus,\n WebSocketConnectionEvents,\n isWebSocketConnectionStatus,\n} from \"./WebSocketConnection\";\nimport { DedicatedWorker } from \"./DedicatedWorker\";\nimport { shouldMessageBeRoutedToDataSource } from \"./data-source\";\n\nimport { ConnectionQualityMetrics } from \"@vuu-ui/vuu-data-types\";\n\nexport type PostMessageToClientCallback = (\n msg: DataSourceCallbackMessage,\n) => void;\n\nexport type ConnectionEvents = WebSocketConnectionEvents & {\n \"connection-metrics\": (message: ConnectionQualityMetrics) => void;\n};\n\ntype RegisteredViewport = {\n postMessageToClientDataSource: PostMessageToClientCallback;\n request: ServerProxySubscribeMessage;\n status: \"subscribing\";\n};\n\nclass ConnectionManager extends EventEmitter<ConnectionEvents> {\n static #instance: ConnectionManager;\n #connectionStatus: ConnectionStatus = \"closed\";\n #deferredServerAPI = new DeferredPromise<ServerAPI>();\n #pendingRequests = new Map();\n #viewports = new Map<string, RegisteredViewport>();\n // #worker?: Worker;\n #worker: DedicatedWorker;\n\n private constructor() {\n super();\n this.#worker = new DedicatedWorker(this.handleMessageFromWorker);\n }\n\n public static get instance(): ConnectionManager {\n if (!ConnectionManager.#instance) {\n ConnectionManager.#instance = new ConnectionManager();\n }\n return ConnectionManager.#instance;\n }\n\n get connectionStatus() {\n return this.#connectionStatus;\n }\n\n get connected() {\n return (\n this.#connectionStatus === \"connected\" ||\n this.#connectionStatus === \"reconnected\"\n );\n }\n\n /**\n * Open a connection to the VuuServer. This method opens the websocket connection\n * and logs in. It can be called from whichever client code has access to the auth\n * token (eg. the login page, or just a hardcoded login script in a sample).\n * This will unblock any DataSources which may have already tried to subscribe to data,\n * but lacked access to the auth token.\n *\n * @param serverUrl\n * @param token\n */\n async connect(options: ConnectOptions, throwOnRejected = false) {\n try {\n const result = await this.#worker.connect(options);\n if (result === \"connected\") {\n this.#deferredServerAPI.resolve(this.connectedServerAPI);\n }\n return result;\n } catch (err: unknown) {\n if (throwOnRejected) {\n throw err;\n } else {\n return \"connection-failed\";\n }\n }\n }\n\n disableActiveSubscriptions() {\n console.log(`[ConnectionManager] disableActiveSubscriptions`);\n this.#worker.send({ type: \"disable-all-active\" });\n }\n\n enableActiveSubscriptions() {\n console.log(`[ConnectionManager] enableActiveSubscriptions`);\n this.#worker.send({ type: \"enable-all-active\" });\n }\n\n private handleMessageFromWorker = (\n message: VuuUIMessageIn | DataSourceCallbackMessage | ConnectionStatus,\n ) => {\n if (shouldMessageBeRoutedToDataSource(message)) {\n const viewport = this.#viewports.get(message.clientViewportId);\n if (viewport) {\n viewport.postMessageToClientDataSource(message);\n } else {\n console.error(\n `[ConnectionManager] ${message.type} message received, viewport not found`,\n );\n }\n } else if (isWebSocketConnectionStatus(message)) {\n this.#connectionStatus = message;\n this.emit(\"connection-status\", message);\n } else if (isConnectionQualityMetrics(message)) {\n this.emit(\"connection-metrics\", message);\n } else if (isRequestResponse(message)) {\n const { requestId } = message;\n if (this.#pendingRequests.has(requestId)) {\n const { resolve } = this.#pendingRequests.get(requestId);\n this.#pendingRequests.delete(requestId);\n const { requestId: _, ...messageWithoutRequestId } = message;\n\n if (messageHasResult(message)) {\n resolve(message.result);\n } else if (isTableSchemaMessage(message)) {\n resolve(message.tableSchema);\n } else {\n resolve(messageWithoutRequestId);\n }\n } else {\n console.warn(\n \"%cConnectionManager Unexpected message from the worker\",\n \"color:red;font-weight:bold;\",\n );\n }\n }\n };\n\n get serverAPI() {\n return this.#deferredServerAPI.promise;\n }\n\n private connectedServerAPI: ServerAPI = {\n subscribe: (message, callback) => {\n if (this.#viewports.get(message.viewport)) {\n throw Error(\n `ConnectionManager attempting to subscribe with an existing viewport id`,\n );\n }\n // TODO we never use this status\n this.#viewports.set(message.viewport, {\n status: \"subscribing\",\n request: message,\n postMessageToClientDataSource: callback,\n });\n this.#worker.send({ type: \"subscribe\", ...message });\n },\n\n unsubscribe: (viewport) => {\n this.#worker.send({ type: \"unsubscribe\", viewport });\n },\n\n send: (message) => {\n this.#worker.send(message);\n },\n\n destroy: (viewportId?: string) => {\n if (viewportId && this.#viewports.has(viewportId)) {\n this.#viewports.delete(viewportId);\n }\n },\n\n rpcCall: async <T = unknown>(\n message:\n | VuuRpcServiceRequest\n | VuuRpcMenuRequest\n | VuuCreateVisualLink\n | VuuRemoveVisualLink,\n ) => this.asyncRequest<T>(message),\n\n select: async (selectRequest: SelectRequest) =>\n this.asyncRequest<SelectResponse>(selectRequest),\n\n getTableList: async () =>\n this.asyncRequest<VuuTableList>({ type: \"GET_TABLE_LIST\" }),\n\n getTableSchema: async (table) =>\n this.asyncRequest<TableSchema>({\n type: \"GET_TABLE_META\",\n table,\n }),\n };\n\n private asyncRequest = <T = unknown>(\n msg:\n | VuuRpcServiceRequest\n | VuuRpcMenuRequest\n | VuuTableListRequest\n | VuuTableMetaRequest\n | VuuCreateVisualLink\n | VuuRemoveVisualLink\n | SelectRequest,\n ): Promise<T> => {\n const requestId = uuid();\n this.#worker.send({\n requestId,\n ...msg,\n });\n return new Promise((resolve, reject) => {\n this.#pendingRequests.set(requestId, { resolve, reject });\n });\n };\n\n async disconnect() {\n try {\n this.#worker.send({ type: \"disconnect\" });\n this.#deferredServerAPI = new DeferredPromise<ServerAPI>();\n return \"disconnected\";\n } catch (err: unknown) {\n return \"rejected\";\n }\n }\n\n destroy() {\n this.#worker.terminate();\n }\n}\n\nexport default ConnectionManager.instance;\n"],"names":["EventEmitter","DeferredPromise","shouldMessageBeRoutedToDataSource","isWebSocketConnectionStatus","isConnectionQualityMetrics","isRequestResponse","messageHasResult","isTableSchemaMessage","uuid","DedicatedWorker"],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
- var inlinedWorker = require('./inlined-worker.js');
5
-
6
- var __typeError = (msg) => {
7
- throw TypeError(msg);
8
- };
9
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
10
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
13
- var _deferredConnection, _worker;
14
- const workerBlob = new Blob([vuuUtils.getLoggingConfigForWorker() + inlinedWorker.workerSourceCode], {
15
- type: "text/javascript"
16
- });
17
- const workerBlobUrl = URL.createObjectURL(workerBlob);
18
- class DedicatedWorker {
19
- constructor(onMessage) {
20
- __privateAdd(this, _deferredConnection);
21
- __privateAdd(this, _worker);
22
- const deferredWorker = new vuuUtils.DeferredPromise();
23
- __privateSet(this, _worker, deferredWorker.promise);
24
- const worker = new Worker(workerBlobUrl);
25
- const timer = window.setTimeout(() => {
26
- console.warn("timed out waiting for worker to load");
27
- }, 1e3);
28
- worker.onmessage = (msg) => {
29
- const { data: message } = msg;
30
- if (message.type === "ready") {
31
- window.clearTimeout(timer);
32
- deferredWorker.resolve(worker);
33
- } else if (message.type === "connected") {
34
- __privateGet(this, _deferredConnection)?.resolve("connected");
35
- } else if (message.type === "connection-failed") {
36
- __privateGet(this, _deferredConnection)?.reject(message.reason);
37
- } else {
38
- onMessage(message);
39
- }
40
- };
41
- }
42
- async connect(options) {
43
- __privateSet(this, _deferredConnection, new vuuUtils.DeferredPromise());
44
- this.send({
45
- ...options,
46
- type: "connect"
47
- });
48
- return __privateGet(this, _deferredConnection).promise;
49
- }
50
- async send(message) {
51
- (await __privateGet(this, _worker)).postMessage(message);
52
- }
53
- async terminate() {
54
- (await __privateGet(this, _worker)).terminate();
55
- }
56
- }
57
- _deferredConnection = new WeakMap();
58
- _worker = new WeakMap();
59
-
60
- exports.DedicatedWorker = DedicatedWorker;
61
- //# sourceMappingURL=DedicatedWorker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DedicatedWorker.js","sources":["../../../packages/vuu-data-remote/src/DedicatedWorker.ts"],"sourcesContent":["import {\n ConnectOptions,\n VuuUIMessageIn,\n VuuUIMessageOut,\n WithRequestId,\n} from \"@vuu-ui/vuu-data-types\";\nimport { DeferredPromise, getLoggingConfigForWorker } from \"@vuu-ui/vuu-utils\";\n\n// Note: inlined-worker is a generated file, it must be built\nimport { workerSourceCode } from \"./inlined-worker\";\nimport {\n SelectRequest,\n VuuCreateVisualLink,\n VuuRemoveVisualLink,\n VuuRpcMenuRequest,\n VuuRpcServiceRequest,\n} from \"@vuu-ui/vuu-protocol-types\";\n\nconst workerBlob = new Blob([getLoggingConfigForWorker() + workerSourceCode], {\n type: \"text/javascript\",\n});\nconst workerBlobUrl = URL.createObjectURL(workerBlob);\n\nexport class DedicatedWorker {\n #deferredConnection?: DeferredPromise<\n \"connected\" | \"reconnected\" | \"rejected\"\n >;\n #worker: Promise<Worker>;\n\n constructor(onMessage: (msg: VuuUIMessageIn) => void) {\n const deferredWorker = new DeferredPromise<Worker>();\n this.#worker = deferredWorker.promise;\n const worker = new Worker(workerBlobUrl);\n const timer: number | null = window.setTimeout(() => {\n console.warn(\"timed out waiting for worker to load\");\n }, 1000);\n worker.onmessage = (msg: MessageEvent<VuuUIMessageIn>) => {\n const { data: message } = msg;\n if (message.type === \"ready\") {\n window.clearTimeout(timer);\n deferredWorker.resolve(worker);\n } else if (message.type === \"connected\") {\n // how do we detect reconnected\n this.#deferredConnection?.resolve(\"connected\");\n } else if (message.type === \"connection-failed\") {\n this.#deferredConnection?.reject(message.reason);\n } else {\n onMessage(message);\n }\n };\n }\n\n async connect(options: ConnectOptions) {\n this.#deferredConnection = new DeferredPromise<\n \"connected\" | \"reconnected\" | \"rejected\"\n >();\n this.send({\n ...options,\n type: \"connect\",\n });\n return this.#deferredConnection.promise;\n }\n\n async send(\n message:\n | VuuUIMessageOut\n | WithRequestId<\n | VuuCreateVisualLink\n | VuuRemoveVisualLink\n | VuuRpcServiceRequest\n | VuuRpcMenuRequest\n | SelectRequest\n >,\n ) {\n (await this.#worker).postMessage(message);\n }\n\n async terminate() {\n (await this.#worker).terminate();\n }\n}\n"],"names":["getLoggingConfigForWorker","workerSourceCode","DeferredPromise"],"mappings":";;;;;;;;;;;;AAAA,IAAA,mBAAA,EAAA,OAAA;AAkBA,MAAM,aAAa,IAAI,IAAA,CAAK,CAACA,kCAA0B,EAAA,GAAIC,8BAAgB,CAAG,EAAA;AAAA,EAC5E,IAAM,EAAA;AACR,CAAC,CAAA;AACD,MAAM,aAAA,GAAgB,GAAI,CAAA,eAAA,CAAgB,UAAU,CAAA;AAE7C,MAAM,eAAgB,CAAA;AAAA,EAM3B,YAAY,SAA0C,EAAA;AALtD,IAAA,YAAA,CAAA,IAAA,EAAA,mBAAA,CAAA;AAGA,IAAA,YAAA,CAAA,IAAA,EAAA,OAAA,CAAA;AAGE,IAAM,MAAA,cAAA,GAAiB,IAAIC,wBAAwB,EAAA;AACnD,IAAA,YAAA,CAAA,IAAA,EAAK,SAAU,cAAe,CAAA,OAAA,CAAA;AAC9B,IAAM,MAAA,MAAA,GAAS,IAAI,MAAA,CAAO,aAAa,CAAA;AACvC,IAAM,MAAA,KAAA,GAAuB,MAAO,CAAA,UAAA,CAAW,MAAM;AACnD,MAAA,OAAA,CAAQ,KAAK,sCAAsC,CAAA;AAAA,OAClD,GAAI,CAAA;AACP,IAAO,MAAA,CAAA,SAAA,GAAY,CAAC,GAAsC,KAAA;AACxD,MAAM,MAAA,EAAE,IAAM,EAAA,OAAA,EAAY,GAAA,GAAA;AAC1B,MAAI,IAAA,OAAA,CAAQ,SAAS,OAAS,EAAA;AAC5B,QAAA,MAAA,CAAO,aAAa,KAAK,CAAA;AACzB,QAAA,cAAA,CAAe,QAAQ,MAAM,CAAA;AAAA,OAC/B,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,WAAa,EAAA;AAEvC,QAAK,YAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,EAAqB,QAAQ,WAAW,CAAA;AAAA,OAC/C,MAAA,IAAW,OAAQ,CAAA,IAAA,KAAS,mBAAqB,EAAA;AAC/C,QAAK,YAAA,CAAA,IAAA,EAAA,mBAAA,CAAA,EAAqB,MAAO,CAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,OAC1C,MAAA;AACL,QAAA,SAAA,CAAU,OAAO,CAAA;AAAA;AACnB,KACF;AAAA;AACF,EAEA,MAAM,QAAQ,OAAyB,EAAA;AACrC,IAAK,YAAA,CAAA,IAAA,EAAA,mBAAA,EAAsB,IAAIA,wBAE7B,EAAA,CAAA;AACF,IAAA,IAAA,CAAK,IAAK,CAAA;AAAA,MACR,GAAG,OAAA;AAAA,MACH,IAAM,EAAA;AAAA,KACP,CAAA;AACD,IAAA,OAAO,mBAAK,mBAAoB,CAAA,CAAA,OAAA;AAAA;AAClC,EAEA,MAAM,KACJ,OASA,EAAA;AACA,IAAA,CAAC,MAAM,YAAA,CAAA,IAAA,EAAK,OAAS,CAAA,EAAA,WAAA,CAAY,OAAO,CAAA;AAAA;AAC1C,EAEA,MAAM,SAAY,GAAA;AAChB,IAAC,CAAA,MAAM,YAAK,CAAA,IAAA,EAAA,OAAA,CAAA,EAAS,SAAU,EAAA;AAAA;AAEnC;AAxDE,mBAAA,GAAA,IAAA,OAAA,EAAA;AAGA,OAAA,GAAA,IAAA,OAAA,EAAA;;;;"}
@@ -1,83 +0,0 @@
1
- 'use strict';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
- class RetryOptionsImpl {
7
- constructor(retryIntervals) {
8
- this.retryIntervals = retryIntervals;
9
- __publicField(this, "ind", 0);
10
- console.log(`[RetryOptionsImpl] constructor`);
11
- }
12
- next() {
13
- this.ind = Math.min(this.retryIntervals.length, this.ind + 1);
14
- }
15
- get remaining() {
16
- return this.retryIntervals.length - this.ind;
17
- }
18
- get interval() {
19
- if (this.ind === this.retryIntervals.length) {
20
- return -1;
21
- } else {
22
- return this.retryIntervals[this.ind] * 1e3;
23
- }
24
- }
25
- }
26
- function RetryOptions(retryIntervals) {
27
- if (Array.isArray(retryIntervals)) {
28
- return new RetryOptionsImpl(retryIntervals);
29
- } else {
30
- throw Error("[lostConnectionHandler] RetryOptions, invalid retryIntervals");
31
- }
32
- }
33
- const defaultRetryIntervals = [1, 2, 3, 5, 10, 30, 60, 120];
34
- class RetryGenerator {
35
- constructor(vuuAuth, options) {
36
- this.vuuAuth = vuuAuth;
37
- __publicField(this, "options");
38
- this.options = options;
39
- console.log("[RetryGenerator] constructor");
40
- }
41
- async *[Symbol.asyncIterator]() {
42
- let connected = false;
43
- do {
44
- await new Promise(
45
- (resolve) => setTimeout(resolve, this.options.interval)
46
- );
47
- try {
48
- await this.vuuAuth.login();
49
- connected = true;
50
- yield "connected";
51
- } catch (err) {
52
- }
53
- this.options.next();
54
- } while (!connected && this.options.interval !== -1);
55
- if (!connected) {
56
- yield "connection-failed";
57
- }
58
- return;
59
- }
60
- }
61
- class LostConnectionHandler {
62
- constructor(vuuAuth, retryIntervals = defaultRetryIntervals) {
63
- this.vuuAuth = vuuAuth;
64
- this.retryIntervals = retryIntervals;
65
- }
66
- async reconnect() {
67
- for await (const result of new RetryGenerator(
68
- this.vuuAuth,
69
- RetryOptions(this.retryIntervals)
70
- )) {
71
- console.log(` ... async iterator result = ${result}`);
72
- if (result === "connected") {
73
- return result;
74
- }
75
- }
76
- return "connection-failed";
77
- }
78
- }
79
-
80
- exports.LostConnectionHandler = LostConnectionHandler;
81
- exports.RetryGenerator = RetryGenerator;
82
- exports.RetryOptions = RetryOptions;
83
- //# sourceMappingURL=LostConnectionHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LostConnectionHandler.js","sources":["../../../packages/vuu-data-remote/src/LostConnectionHandler.ts"],"sourcesContent":["import { VuuAuthenticator } from \"./VuuAuthenticator\";\n\ninterface RetryOptions {\n interval: number;\n next: () => void;\n remaining: number;\n}\n\nclass RetryOptionsImpl implements RetryOptions {\n private ind = 0;\n constructor(private retryIntervals: number[]) {\n console.log(`[RetryOptionsImpl] constructor`);\n }\n next() {\n this.ind = Math.min(this.retryIntervals.length, this.ind + 1);\n }\n get remaining() {\n return this.retryIntervals.length - this.ind;\n }\n get interval() {\n if (this.ind === this.retryIntervals.length) {\n return -1;\n } else {\n return this.retryIntervals[this.ind] * 1000;\n }\n }\n}\n\nexport function RetryOptions(retryIntervals: number[]) {\n if (Array.isArray(retryIntervals)) {\n return new RetryOptionsImpl(retryIntervals);\n } else {\n throw Error(\"[lostConnectionHandler] RetryOptions, invalid retryIntervals\");\n }\n}\n\nconst defaultRetryIntervals = [1, 2, 3, 5, 10, 30, 60, 120];\n\nexport class RetryGenerator {\n private options: RetryOptions;\n\n constructor(\n private vuuAuth: VuuAuthenticator,\n options: RetryOptions,\n ) {\n this.options = options;\n console.log(\"[RetryGenerator] constructor\");\n }\n\n async *[Symbol.asyncIterator](): AsyncGenerator<\n \"connected\" | \"connection-failed\"\n > {\n let connected = false;\n do {\n await new Promise((resolve) =>\n setTimeout(resolve, this.options.interval),\n );\n try {\n await this.vuuAuth.login();\n connected = true;\n yield \"connected\";\n } catch (err) {\n // try again\n }\n this.options.next();\n } while (!connected && this.options.interval !== -1);\n\n if (!connected) {\n yield \"connection-failed\";\n }\n\n return;\n }\n}\n\nexport class LostConnectionHandler {\n constructor(\n private vuuAuth: VuuAuthenticator,\n private retryIntervals = defaultRetryIntervals,\n ) {}\n async reconnect(): Promise<\"connected\" | \"connection-failed\"> {\n for await (const result of new RetryGenerator(\n this.vuuAuth,\n RetryOptions(this.retryIntervals),\n )) {\n console.log(` ... async iterator result = ${result}`);\n if (result === \"connected\") {\n return result;\n }\n }\n\n return \"connection-failed\";\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,87 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuUtils = require('@vuu-ui/vuu-utils');
4
- var authenticate = require('./authenticate.js');
5
-
6
- var __defProp = Object.defineProperty;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
9
- class VuuAuthProvider {
10
- constructor(authEndpoint) {
11
- this.authEndpoint = authEndpoint;
12
- __publicField(this, "login", async (username, password) => {
13
- const date = /* @__PURE__ */ new Date();
14
- const days = 1;
15
- date.setTime(date.getTime() + days * 24 * 60 * 60 * 1e3);
16
- if (username && password) {
17
- const { token } = await this.getVuuTokenWithUsernameAndPassword(
18
- username,
19
- password
20
- );
21
- document.cookie = `vuu-auth-user=${username};expires=${date.toUTCString()};path=/`;
22
- document.cookie = `vuu-auth-password=${password};expires=${date.toUTCString()};path=/`;
23
- document.cookie = `vuu-auth-token=${token};expires=${date.toUTCString()};path=/`;
24
- return this.redirectToApplication();
25
- } else {
26
- const userName = vuuUtils.getCookieValue("vuu-auth-user");
27
- const password2 = vuuUtils.getCookieValue("vuu-auth-password");
28
- if (userName && password2) {
29
- const { authorizations, token } = await this.getVuuTokenWithUsernameAndPassword(userName, password2);
30
- document.cookie = `vuu-auth-token=${token};expires=${date.toUTCString()};path=/`;
31
- return {
32
- authorizations,
33
- user: {
34
- userName
35
- },
36
- token
37
- };
38
- } else {
39
- return this.redirectToLoginPage();
40
- }
41
- }
42
- });
43
- }
44
- async getVuuTokenWithUsernameAndPassword(username, password) {
45
- const response = await fetch(this.authEndpoint, {
46
- method: "POST",
47
- credentials: "include",
48
- headers: {
49
- "Content-Type": "application/json",
50
- "access-control-allow-origin": location.host
51
- },
52
- body: JSON.stringify({
53
- username,
54
- password
55
- })
56
- });
57
- if (response.ok) {
58
- const vuuAuthToken = response.headers.get("vuu-auth-token");
59
- if (typeof vuuAuthToken === "string" && vuuAuthToken.length > 0) {
60
- const { authorizations } = authenticate.parseVuuUserFromToken(vuuAuthToken);
61
- return { authorizations, token: vuuAuthToken };
62
- } else {
63
- throw Error(`Authentication failed auth token not returned by server`);
64
- }
65
- } else {
66
- throw Error(`Authentication failed, ${response.status}`);
67
- }
68
- }
69
- clear() {
70
- document.cookie = "vuu-auth-user= ; expires = Thu, 01 Jan 1970 00:00:00 GMT";
71
- document.cookie = "vuu-auth-password= ; expires = Thu, 01 Jan 1970 00:00:00 GMT";
72
- document.cookie = "vuu-auth-token= ; expires = Thu, 01 Jan 1970 00:00:00 GMT";
73
- }
74
- redirectToLoginPage() {
75
- window.location.href = "login.html";
76
- }
77
- redirectToApplication() {
78
- window.location.href = "index.html";
79
- }
80
- logout() {
81
- this.clear();
82
- this.redirectToLoginPage();
83
- }
84
- }
85
-
86
- exports.VuuAuthProvider = VuuAuthProvider;
87
- //# sourceMappingURL=VuuAuthProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VuuAuthProvider.js","sources":["../../../packages/vuu-data-remote/src/VuuAuthProvider.ts"],"sourcesContent":["import { getCookieValue } from \"@vuu-ui/vuu-utils\";\nimport { parseVuuUserFromToken } from \"./authenticate\";\n\nexport type User = {\n userName: string;\n};\n\nexport interface AuthProvider {\n login: (\n username?: string,\n password?: string,\n ) => Promise<{\n authorizations: string[];\n token: string;\n user: User;\n websocket?: boolean;\n }>;\n logout: () => void;\n}\n\n/**\n * The Vuu AuthProvider is a simple Demoware auth provider that\n * grabs username and pasdsword from. a simple login form and\n * exchanges these for a Vuu Token. Password is manipulated in\n * plain text, hence not suitable for real world usage.\n *\n * This AuthProvider is used by the login panel, which sets\n * user credentials in cookies.\n * It is then used by the application itself to retrieve the\n * credentials and login to vuu.\n */\nexport class VuuAuthProvider implements AuthProvider {\n constructor(private authEndpoint: string) {}\n\n login = async (username?: string, password?: string) => {\n const date = new Date();\n const days = 1;\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n\n if (username && password) {\n // coming from login panel\n\n // TODO what if the authorizations have changed\n const { token } = await this.getVuuTokenWithUsernameAndPassword(\n username,\n password,\n );\n document.cookie = `vuu-auth-user=${username};expires=${date.toUTCString()};path=/`;\n document.cookie = `vuu-auth-password=${password};expires=${date.toUTCString()};path=/`;\n document.cookie = `vuu-auth-token=${token};expires=${date.toUTCString()};path=/`;\n return this.redirectToApplication() as never;\n } else {\n const userName = getCookieValue(\"vuu-auth-user\");\n const password = getCookieValue(\"vuu-auth-password\");\n if (userName && password) {\n const { authorizations, token } =\n await this.getVuuTokenWithUsernameAndPassword(userName, password);\n document.cookie = `vuu-auth-token=${token};expires=${date.toUTCString()};path=/`;\n\n return {\n authorizations,\n user: {\n userName,\n },\n token,\n };\n } else {\n return this.redirectToLoginPage() as never;\n }\n }\n };\n\n private async getVuuTokenWithUsernameAndPassword(\n username: string,\n password: string,\n ) {\n const response = await fetch(this.authEndpoint, {\n method: \"POST\",\n credentials: \"include\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"access-control-allow-origin\": location.host,\n },\n body: JSON.stringify({\n username,\n password,\n }),\n });\n\n if (response.ok) {\n const vuuAuthToken = response.headers.get(\"vuu-auth-token\");\n if (typeof vuuAuthToken === \"string\" && vuuAuthToken.length > 0) {\n const { authorizations } = parseVuuUserFromToken(vuuAuthToken);\n return { authorizations, token: vuuAuthToken };\n } else {\n throw Error(`Authentication failed auth token not returned by server`);\n }\n } else {\n throw Error(`Authentication failed, ${response.status}`);\n }\n }\n\n private clear() {\n document.cookie =\n \"vuu-auth-user= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n document.cookie =\n \"vuu-auth-password= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n document.cookie =\n \"vuu-auth-token= ; expires = Thu, 01 Jan 1970 00:00:00 GMT\";\n }\n\n private redirectToLoginPage() {\n window.location.href = \"login.html\";\n }\n\n private redirectToApplication() {\n window.location.href = \"index.html\";\n }\n\n logout() {\n this.clear();\n this.redirectToLoginPage();\n }\n}\n"],"names":["getCookieValue","password","parseVuuUserFromToken"],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- 'use strict';
2
-
3
- var ConnectionManager = require('./ConnectionManager.js');
4
-
5
- var __defProp = Object.defineProperty;
6
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- const VuuAuthTokenIssuePolicy = {
9
- BearerToken: "bearer-token",
10
- UsernamePassword: "username-password"
11
- };
12
- class VuuAuthenticator {
13
- constructor({
14
- authProvider,
15
- authTokenIssuePolicy = VuuAuthTokenIssuePolicy.BearerToken,
16
- websocketUrl
17
- }) {
18
- __publicField(this, "authProvider");
19
- __publicField(this, "authTokenIssuePolicy");
20
- __publicField(this, "websocketUrl");
21
- __publicField(this, "openWebsocketConnection", async (vuuToken) => {
22
- await ConnectionManager.connect(
23
- {
24
- url: this.websocketUrl,
25
- token: vuuToken
26
- },
27
- true
28
- );
29
- });
30
- __publicField(this, "login", async () => {
31
- const {
32
- authorizations,
33
- user,
34
- token,
35
- websocket = true
36
- } = await this.authProvider.login();
37
- if (token && user) {
38
- if (websocket) {
39
- await this.openWebsocketConnection(token);
40
- }
41
- return [user, authorizations];
42
- } else {
43
- throw Error("[VuuAuthenticator] login failed");
44
- }
45
- });
46
- __publicField(this, "logout", () => {
47
- this.authProvider.logout();
48
- });
49
- this.authProvider = authProvider;
50
- this.authTokenIssuePolicy = authTokenIssuePolicy;
51
- this.websocketUrl = websocketUrl;
52
- }
53
- }
54
-
55
- exports.VuuAuthTokenIssuePolicy = VuuAuthTokenIssuePolicy;
56
- exports.VuuAuthenticator = VuuAuthenticator;
57
- //# sourceMappingURL=VuuAuthenticator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VuuAuthenticator.js","sources":["../../../packages/vuu-data-remote/src/VuuAuthenticator.ts"],"sourcesContent":["import ConnectionManager from \"./ConnectionManager\";\nimport { ValueOf } from \"@vuu-ui/vuu-utils\";\nimport { User, type AuthProvider } from \"./VuuAuthProvider\";\n\nexport const VuuAuthTokenIssuePolicy = {\n BearerToken: \"bearer-token\",\n UsernamePassword: \"username-password\",\n} as const;\n\nexport type VuuAuthTokenIssuePolicy = ValueOf<typeof VuuAuthTokenIssuePolicy>;\n\nexport interface VuuAuthenticatorConstructorOptions {\n authProvider: AuthProvider;\n authTokenIssuePolicy?: VuuAuthTokenIssuePolicy;\n websocketUrl: string;\n}\n\nexport class VuuAuthenticator {\n private authProvider: AuthProvider;\n private authTokenIssuePolicy: VuuAuthTokenIssuePolicy;\n private websocketUrl: string;\n\n constructor({\n authProvider,\n authTokenIssuePolicy = VuuAuthTokenIssuePolicy.BearerToken,\n websocketUrl,\n }: VuuAuthenticatorConstructorOptions) {\n this.authProvider = authProvider;\n this.authTokenIssuePolicy = authTokenIssuePolicy;\n this.websocketUrl = websocketUrl;\n }\n\n private openWebsocketConnection = async (vuuToken: string) => {\n await ConnectionManager.connect(\n {\n url: this.websocketUrl,\n token: vuuToken,\n },\n true,\n );\n };\n\n login = async (): Promise<[User, string[]] | never> => {\n const {\n authorizations,\n user,\n token,\n websocket = true,\n } = await this.authProvider.login();\n if (token && user) {\n if (websocket) {\n await this.openWebsocketConnection(token);\n }\n return [user, authorizations];\n } else {\n throw Error(\"[VuuAuthenticator] login failed\");\n }\n };\n\n logout = () => {\n this.authProvider.logout();\n };\n}\n"],"names":[],"mappings":";;;;;;;AAIO,MAAM,uBAA0B,GAAA;AAAA,EACrC,WAAa,EAAA,cAAA;AAAA,EACb,gBAAkB,EAAA;AACpB;AAUO,MAAM,gBAAiB,CAAA;AAAA,EAK5B,WAAY,CAAA;AAAA,IACV,YAAA;AAAA,IACA,uBAAuB,uBAAwB,CAAA,WAAA;AAAA,IAC/C;AAAA,GACqC,EAAA;AARvC,IAAQ,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,sBAAA,CAAA;AACR,IAAQ,aAAA,CAAA,IAAA,EAAA,cAAA,CAAA;AAYR,IAAQ,aAAA,CAAA,IAAA,EAAA,yBAAA,EAA0B,OAAO,QAAqB,KAAA;AAC5D,MAAA,MAAM,iBAAkB,CAAA,OAAA;AAAA,QACtB;AAAA,UACE,KAAK,IAAK,CAAA,YAAA;AAAA,UACV,KAAO,EAAA;AAAA,SACT;AAAA,QACA;AAAA,OACF;AAAA,KACF,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,OAAA,EAAQ,YAA+C;AACrD,MAAM,MAAA;AAAA,QACJ,cAAA;AAAA,QACA,IAAA;AAAA,QACA,KAAA;AAAA,QACA,SAAY,GAAA;AAAA,OACV,GAAA,MAAM,IAAK,CAAA,YAAA,CAAa,KAAM,EAAA;AAClC,MAAA,IAAI,SAAS,IAAM,EAAA;AACjB,QAAA,IAAI,SAAW,EAAA;AACb,UAAM,MAAA,IAAA,CAAK,wBAAwB,KAAK,CAAA;AAAA;AAE1C,QAAO,OAAA,CAAC,MAAM,cAAc,CAAA;AAAA,OACvB,MAAA;AACL,QAAA,MAAM,MAAM,iCAAiC,CAAA;AAAA;AAC/C,KACF,CAAA;AAEA,IAAA,aAAA,CAAA,IAAA,EAAA,QAAA,EAAS,MAAM;AACb,MAAA,IAAA,CAAK,aAAa,MAAO,EAAA;AAAA,KAC3B,CAAA;AAlCE,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA;AACpB,IAAA,IAAA,CAAK,oBAAuB,GAAA,oBAAA;AAC5B,IAAA,IAAA,CAAK,YAAe,GAAA,YAAA;AAAA;AAiCxB;;;;;"}