@pacem/pacem-networking 1.0.0-abel

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.
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../esm/index-components.js", "../esm/index-components-networking.js", "../esm/hub-proxy.js", "../esm/sse-proxy.js"],
4
+ "sourcesContent": ["export * as Networking from './index-components-networking';\n", "export * from './hub-proxy';\nexport * from './sse-proxy';\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, CustomElementUtils, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nconst API_JS = 'https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js'; // 'https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/10.0.0/signalr.min.js'\nconst consts = { API_JS };\nlet PacemHubListenerElement = class PacemHubListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (...args) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: Array.from(args) }));\n };\n this._completeHandler = () => {\n this.dispatchEvent(new Event('complete'));\n };\n this._errorHandler = (error) => {\n this.dispatchEvent(new CustomEvent('error', { detail: error }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n #streamSubscription;\n get _isConnected() {\n return this.container instanceof PacemHubProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemHubProxyElement && this.container.connection || null;\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n _stop(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.off(method, this._receiveHandler);\n }\n else {\n this.#streamSubscription?.dispose();\n }\n }\n }\n _start(method = this.method, isStreaming = this.stream) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n if (!isStreaming) {\n conn.on(method, this._receiveHandler);\n }\n else {\n const args = this.arguments || [];\n const streamResult = signalR.HubConnection.prototype.stream.apply(conn, [method].concat(args));\n this.#streamSubscription = streamResult.subscribe({\n next: this._receiveHandler,\n complete: this._completeHandler,\n error: this._errorHandler\n });\n }\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'arguments':\n this._stop();\n this._start();\n break;\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old, this.stream);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val, this.stream);\n }\n break;\n case 'stream':\n const m = this.method;\n if (!Utils.isNullOrEmpty(m)) {\n this._stop(m, old);\n this._start(m, val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubListenerElement.prototype, \"method\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Boolean })\n], PacemHubListenerElement.prototype, \"stream\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.Json })\n], PacemHubListenerElement.prototype, \"arguments\", void 0);\nPacemHubListenerElement = __decorate([\n CustomElement({ tagName: P + '-hub-listener' })\n], PacemHubListenerElement);\nexport { PacemHubListenerElement };\nlet PacemHubProxyElement = class PacemHubProxyElement extends Components.PacemItemsContainerElement {\n validate(item) {\n return item instanceof PacemHubListenerElement;\n }\n get connection() {\n return this._hub;\n }\n invoke(method, ...args) {\n if (this.connected) {\n return this._hub.invoke.apply(this._hub, arguments);\n }\n throw 'Hub is not connected. Cannot call `invoke` method.';\n }\n send(method, ...args) {\n if (this.connected) {\n return this._hub.send(method, ...args);\n }\n throw 'Hub is not connected. Cannot call `send` method.';\n }\n start() {\n return this._resetProxy();\n }\n async stop() {\n if (this.connected) {\n await this._hub.stop();\n }\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled' || name === 'accesstoken') {\n this._resetProxy();\n }\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this.start();\n }\n disconnectedCallback() {\n // this will (likely) never complete, being an asynchrounous call...\n // TODO: think about it.\n this.stop();\n super.disconnectedCallback();\n }\n async _resetProxy() {\n if (!Utils.isNull(this._hub)) {\n await this._hub.stop();\n //this.connected = false;\n }\n this._setupProxy();\n }\n async _initialize() {\n if ('signalR' in window) {\n // already available, skip import\n return;\n }\n await CustomElementUtils.importjs(consts.API_JS);\n }\n async _setupProxy() {\n const listeners = this.items || [];\n if (!this.disabled && !Utils.isNullOrEmpty(this.url)) {\n await this._initialize();\n const connBuilder = new signalR.HubConnectionBuilder();\n connBuilder.withUrl(this.url, {\n accessTokenFactory: () => this.accesstoken\n });\n const h = this._hub = connBuilder.build();\n h.onclose(() => {\n for (var item of listeners) {\n item.stop();\n }\n this.connected = false;\n this._hub = null;\n });\n await h.start();\n this.connected = true;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemHubProxyElement.prototype, \"accesstoken\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemHubProxyElement.prototype, \"connected\", void 0);\nPacemHubProxyElement = __decorate([\n CustomElement({ tagName: P + '-hub-proxy' })\n], PacemHubProxyElement);\nexport { PacemHubProxyElement };\n", "var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, Debounce, Components } from '@pacem/pacem-core';\n//namespace Pacem.Components.Networking {\nlet PacemServerSentEventsListenerElement = class PacemServerSentEventsListenerElement extends Components.PacemItemElement {\n constructor() {\n super(...arguments);\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n this._connectedHandler = (e) => {\n if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {\n this._start();\n }\n };\n }\n get _isConnected() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.connected || false;\n }\n get _connection() {\n return this.container instanceof PacemServerSentEventsProxyElement && this.container.eventSource || null;\n }\n _stop(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.removeEventListener(method, this._receiveHandler);\n }\n }\n _start(method = this.method) {\n if (!this._isConnected) {\n return;\n }\n const conn = this._connection;\n if (!Utils.isNullOrEmpty(method)) {\n conn.addEventListener(method, this._receiveHandler);\n }\n }\n /** Start listening, if not disabled. */\n start() {\n if (!this.disabled) {\n this._start();\n }\n }\n /** Stop listening. */\n stop() {\n this._stop();\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n this.start();\n }\n disconnectedCallback() {\n const container = this.container;\n if (!Utils.isNull(container)) {\n container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);\n }\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n switch (name) {\n case 'method':\n if (!Utils.isNullOrEmpty(old)) {\n this._stop(old);\n }\n if (!Utils.isNullOrEmpty(val)) {\n this._start(val);\n }\n break;\n case 'disabled':\n if (!Utils.isNullOrEmpty(this.method)) {\n let toggle = val ? this._stop : this._start;\n toggle();\n }\n break;\n }\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsListenerElement.prototype, \"method\", void 0);\nPacemServerSentEventsListenerElement = __decorate([\n CustomElement({ tagName: P + '-sse-listener' })\n], PacemServerSentEventsListenerElement);\nexport { PacemServerSentEventsListenerElement };\nlet PacemServerSentEventsProxyElement = class PacemServerSentEventsProxyElement extends Components.PacemItemsContainerElement {\n constructor() {\n super(...arguments);\n this._connectHandler = (_) => {\n this.connected = true;\n this.#evtSource.onmessage = this._receiveHandler;\n };\n this._errorHandler = (_) => {\n this.connected = false;\n };\n this._receiveHandler = (e) => {\n this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));\n };\n }\n validate(item) {\n return item instanceof PacemServerSentEventsListenerElement;\n }\n viewActivatedCallback() {\n super.viewActivatedCallback();\n this._start();\n }\n disconnectedCallback() {\n this._stop();\n super.disconnectedCallback();\n }\n propertyChangedCallback(name, old, val, first) {\n super.propertyChangedCallback(name, old, val, first);\n //\n if (first) {\n return;\n }\n if (name === 'url' || name === 'disabled') {\n this._restart();\n }\n }\n #evtSource;\n _restart() {\n this._stop();\n this._start();\n }\n _start(url = this.url) {\n if (!Utils.isNullOrEmpty(url) && !this.disabled) {\n const evtSource = this.#evtSource = new EventSource(url);\n evtSource.onopen = this._connectHandler;\n evtSource.onerror = this._errorHandler;\n }\n }\n get eventSource() {\n return this.#evtSource;\n }\n _stop() {\n const listeners = this.items || [];\n for (var item of listeners) {\n item.stop();\n }\n const evtSource = this.#evtSource;\n if (!Utils.isNull(evtSource)) {\n evtSource.onopen = null;\n evtSource.onerror = null;\n evtSource.onmessage = null;\n evtSource.close();\n }\n this.connected = false;\n this.#evtSource = null;\n }\n};\n__decorate([\n Watch({ emit: false, converter: PropertyConverters.String })\n], PacemServerSentEventsProxyElement.prototype, \"url\", void 0);\n__decorate([\n Watch({ converter: PropertyConverters.Boolean })\n], PacemServerSentEventsProxyElement.prototype, \"connected\", void 0);\n__decorate([\n Debounce(true)\n], PacemServerSentEventsProxyElement.prototype, \"_restart\", null);\nPacemServerSentEventsProxyElement = __decorate([\n CustomElement({ tagName: P + '-sse-proxy' })\n], PacemServerSentEventsProxyElement);\nexport { PacemServerSentEventsProxyElement };\n"],
5
+ "mappings": "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",
6
+ "names": ["PacemHubListenerElement", "PacemHubProxyElement", "P", "CustomElement", "Watch", "PropertyConverters", "Utils", "PropertyChangeEventName", "Components", "__decorate", "PacemServerSentEventsListenerElement", "PacemServerSentEventsProxyElement", "Components", "Utils", "__decorate", "Watch", "PropertyConverters", "CustomElement", "P"]
7
+ }
@@ -0,0 +1,233 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, CustomElementUtils, Components } from '@pacem/pacem-core';
8
+ //namespace Pacem.Components.Networking {
9
+ const API_JS = 'https://cdn.jsdelivr.net/npm/@microsoft/signalr@10.0.0/dist/browser/signalr.min.js'; // 'https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/10.0.0/signalr.min.js'
10
+ const consts = { API_JS };
11
+ let PacemHubListenerElement = class PacemHubListenerElement extends Components.PacemItemElement {
12
+ constructor() {
13
+ super(...arguments);
14
+ this._receiveHandler = (...args) => {
15
+ this.dispatchEvent(new CustomEvent('receive', { detail: Array.from(args) }));
16
+ };
17
+ this._completeHandler = () => {
18
+ this.dispatchEvent(new Event('complete'));
19
+ };
20
+ this._errorHandler = (error) => {
21
+ this.dispatchEvent(new CustomEvent('error', { detail: error }));
22
+ };
23
+ this._connectedHandler = (e) => {
24
+ if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {
25
+ this._start();
26
+ }
27
+ };
28
+ }
29
+ #streamSubscription;
30
+ get _isConnected() {
31
+ return this.container instanceof PacemHubProxyElement && this.container.connected || false;
32
+ }
33
+ get _connection() {
34
+ return this.container instanceof PacemHubProxyElement && this.container.connection || null;
35
+ }
36
+ /** Start listening, if not disabled. */
37
+ start() {
38
+ if (!this.disabled) {
39
+ this._start();
40
+ }
41
+ }
42
+ /** Stop listening. */
43
+ stop() {
44
+ this._stop();
45
+ }
46
+ _stop(method = this.method, isStreaming = this.stream) {
47
+ if (!this._isConnected) {
48
+ return;
49
+ }
50
+ const conn = this._connection;
51
+ if (!Utils.isNullOrEmpty(method)) {
52
+ if (!isStreaming) {
53
+ conn.off(method, this._receiveHandler);
54
+ }
55
+ else {
56
+ this.#streamSubscription?.dispose();
57
+ }
58
+ }
59
+ }
60
+ _start(method = this.method, isStreaming = this.stream) {
61
+ if (!this._isConnected) {
62
+ return;
63
+ }
64
+ const conn = this._connection;
65
+ if (!Utils.isNullOrEmpty(method)) {
66
+ if (!isStreaming) {
67
+ conn.on(method, this._receiveHandler);
68
+ }
69
+ else {
70
+ const args = this.arguments || [];
71
+ const streamResult = signalR.HubConnection.prototype.stream.apply(conn, [method].concat(args));
72
+ this.#streamSubscription = streamResult.subscribe({
73
+ next: this._receiveHandler,
74
+ complete: this._completeHandler,
75
+ error: this._errorHandler
76
+ });
77
+ }
78
+ }
79
+ }
80
+ viewActivatedCallback() {
81
+ super.viewActivatedCallback();
82
+ const container = this.container;
83
+ if (!Utils.isNull(container)) {
84
+ container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);
85
+ }
86
+ this.start();
87
+ }
88
+ disconnectedCallback() {
89
+ const container = this.container;
90
+ if (!Utils.isNull(container)) {
91
+ container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);
92
+ }
93
+ super.disconnectedCallback();
94
+ }
95
+ propertyChangedCallback(name, old, val, first) {
96
+ super.propertyChangedCallback(name, old, val, first);
97
+ switch (name) {
98
+ case 'arguments':
99
+ this._stop();
100
+ this._start();
101
+ break;
102
+ case 'method':
103
+ if (!Utils.isNullOrEmpty(old)) {
104
+ this._stop(old, this.stream);
105
+ }
106
+ if (!Utils.isNullOrEmpty(val)) {
107
+ this._start(val, this.stream);
108
+ }
109
+ break;
110
+ case 'stream':
111
+ const m = this.method;
112
+ if (!Utils.isNullOrEmpty(m)) {
113
+ this._stop(m, old);
114
+ this._start(m, val);
115
+ }
116
+ break;
117
+ case 'disabled':
118
+ if (!Utils.isNullOrEmpty(this.method)) {
119
+ let toggle = val ? this._stop : this._start;
120
+ toggle();
121
+ }
122
+ break;
123
+ }
124
+ }
125
+ };
126
+ __decorate([
127
+ Watch({ emit: false, converter: PropertyConverters.String })
128
+ ], PacemHubListenerElement.prototype, "method", void 0);
129
+ __decorate([
130
+ Watch({ emit: false, converter: PropertyConverters.Boolean })
131
+ ], PacemHubListenerElement.prototype, "stream", void 0);
132
+ __decorate([
133
+ Watch({ emit: false, converter: PropertyConverters.Json })
134
+ ], PacemHubListenerElement.prototype, "arguments", void 0);
135
+ PacemHubListenerElement = __decorate([
136
+ CustomElement({ tagName: P + '-hub-listener' })
137
+ ], PacemHubListenerElement);
138
+ export { PacemHubListenerElement };
139
+ let PacemHubProxyElement = class PacemHubProxyElement extends Components.PacemItemsContainerElement {
140
+ validate(item) {
141
+ return item instanceof PacemHubListenerElement;
142
+ }
143
+ get connection() {
144
+ return this._hub;
145
+ }
146
+ invoke(method, ...args) {
147
+ if (this.connected) {
148
+ return this._hub.invoke.apply(this._hub, arguments);
149
+ }
150
+ throw 'Hub is not connected. Cannot call `invoke` method.';
151
+ }
152
+ send(method, ...args) {
153
+ if (this.connected) {
154
+ return this._hub.send(method, ...args);
155
+ }
156
+ throw 'Hub is not connected. Cannot call `send` method.';
157
+ }
158
+ start() {
159
+ return this._resetProxy();
160
+ }
161
+ async stop() {
162
+ if (this.connected) {
163
+ await this._hub.stop();
164
+ }
165
+ }
166
+ propertyChangedCallback(name, old, val, first) {
167
+ super.propertyChangedCallback(name, old, val, first);
168
+ //
169
+ if (first) {
170
+ return;
171
+ }
172
+ if (name === 'url' || name === 'disabled' || name === 'accesstoken') {
173
+ this._resetProxy();
174
+ }
175
+ }
176
+ viewActivatedCallback() {
177
+ super.viewActivatedCallback();
178
+ this.start();
179
+ }
180
+ disconnectedCallback() {
181
+ // this will (likely) never complete, being an asynchrounous call...
182
+ // TODO: think about it.
183
+ this.stop();
184
+ super.disconnectedCallback();
185
+ }
186
+ async _resetProxy() {
187
+ if (!Utils.isNull(this._hub)) {
188
+ await this._hub.stop();
189
+ //this.connected = false;
190
+ }
191
+ this._setupProxy();
192
+ }
193
+ async _initialize() {
194
+ if ('signalR' in window) {
195
+ // already available, skip import
196
+ return;
197
+ }
198
+ await CustomElementUtils.importjs(consts.API_JS);
199
+ }
200
+ async _setupProxy() {
201
+ const listeners = this.items || [];
202
+ if (!this.disabled && !Utils.isNullOrEmpty(this.url)) {
203
+ await this._initialize();
204
+ const connBuilder = new signalR.HubConnectionBuilder();
205
+ connBuilder.withUrl(this.url, {
206
+ accessTokenFactory: () => this.accesstoken
207
+ });
208
+ const h = this._hub = connBuilder.build();
209
+ h.onclose(() => {
210
+ for (var item of listeners) {
211
+ item.stop();
212
+ }
213
+ this.connected = false;
214
+ this._hub = null;
215
+ });
216
+ await h.start();
217
+ this.connected = true;
218
+ }
219
+ }
220
+ };
221
+ __decorate([
222
+ Watch({ emit: false, converter: PropertyConverters.String })
223
+ ], PacemHubProxyElement.prototype, "url", void 0);
224
+ __decorate([
225
+ Watch({ emit: false, converter: PropertyConverters.String })
226
+ ], PacemHubProxyElement.prototype, "accesstoken", void 0);
227
+ __decorate([
228
+ Watch({ converter: PropertyConverters.Boolean })
229
+ ], PacemHubProxyElement.prototype, "connected", void 0);
230
+ PacemHubProxyElement = __decorate([
231
+ CustomElement({ tagName: P + '-hub-proxy' })
232
+ ], PacemHubProxyElement);
233
+ export { PacemHubProxyElement };
@@ -0,0 +1,2 @@
1
+ export * from './hub-proxy';
2
+ export * from './sse-proxy';
@@ -0,0 +1 @@
1
+ export * as Networking from './index-components-networking';
@@ -0,0 +1,3 @@
1
+ import { DeepMerger } from '@pacem/pacem-foundation';
2
+ import * as Output from './index';
3
+ DeepMerger.merge(Output);
@@ -0,0 +1 @@
1
+ export * as Components from './index-components';
@@ -0,0 +1,175 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { P, CustomElement, Watch, PropertyConverters, Utils, PropertyChangeEventName, Debounce, Components } from '@pacem/pacem-core';
8
+ //namespace Pacem.Components.Networking {
9
+ let PacemServerSentEventsListenerElement = class PacemServerSentEventsListenerElement extends Components.PacemItemElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this._receiveHandler = (e) => {
13
+ this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));
14
+ };
15
+ this._connectedHandler = (e) => {
16
+ if (e.detail.propertyName === 'connected' && e.detail.currentValue === true) {
17
+ this._start();
18
+ }
19
+ };
20
+ }
21
+ get _isConnected() {
22
+ return this.container instanceof PacemServerSentEventsProxyElement && this.container.connected || false;
23
+ }
24
+ get _connection() {
25
+ return this.container instanceof PacemServerSentEventsProxyElement && this.container.eventSource || null;
26
+ }
27
+ _stop(method = this.method) {
28
+ if (!this._isConnected) {
29
+ return;
30
+ }
31
+ const conn = this._connection;
32
+ if (!Utils.isNullOrEmpty(method)) {
33
+ conn.removeEventListener(method, this._receiveHandler);
34
+ }
35
+ }
36
+ _start(method = this.method) {
37
+ if (!this._isConnected) {
38
+ return;
39
+ }
40
+ const conn = this._connection;
41
+ if (!Utils.isNullOrEmpty(method)) {
42
+ conn.addEventListener(method, this._receiveHandler);
43
+ }
44
+ }
45
+ /** Start listening, if not disabled. */
46
+ start() {
47
+ if (!this.disabled) {
48
+ this._start();
49
+ }
50
+ }
51
+ /** Stop listening. */
52
+ stop() {
53
+ this._stop();
54
+ }
55
+ viewActivatedCallback() {
56
+ super.viewActivatedCallback();
57
+ const container = this.container;
58
+ if (!Utils.isNull(container)) {
59
+ container.addEventListener(PropertyChangeEventName, this._connectedHandler, false);
60
+ }
61
+ this.start();
62
+ }
63
+ disconnectedCallback() {
64
+ const container = this.container;
65
+ if (!Utils.isNull(container)) {
66
+ container.removeEventListener(PropertyChangeEventName, this._connectedHandler, false);
67
+ }
68
+ super.disconnectedCallback();
69
+ }
70
+ propertyChangedCallback(name, old, val, first) {
71
+ super.propertyChangedCallback(name, old, val, first);
72
+ switch (name) {
73
+ case 'method':
74
+ if (!Utils.isNullOrEmpty(old)) {
75
+ this._stop(old);
76
+ }
77
+ if (!Utils.isNullOrEmpty(val)) {
78
+ this._start(val);
79
+ }
80
+ break;
81
+ case 'disabled':
82
+ if (!Utils.isNullOrEmpty(this.method)) {
83
+ let toggle = val ? this._stop : this._start;
84
+ toggle();
85
+ }
86
+ break;
87
+ }
88
+ }
89
+ };
90
+ __decorate([
91
+ Watch({ emit: false, converter: PropertyConverters.String })
92
+ ], PacemServerSentEventsListenerElement.prototype, "method", void 0);
93
+ PacemServerSentEventsListenerElement = __decorate([
94
+ CustomElement({ tagName: P + '-sse-listener' })
95
+ ], PacemServerSentEventsListenerElement);
96
+ export { PacemServerSentEventsListenerElement };
97
+ let PacemServerSentEventsProxyElement = class PacemServerSentEventsProxyElement extends Components.PacemItemsContainerElement {
98
+ constructor() {
99
+ super(...arguments);
100
+ this._connectHandler = (_) => {
101
+ this.connected = true;
102
+ this.#evtSource.onmessage = this._receiveHandler;
103
+ };
104
+ this._errorHandler = (_) => {
105
+ this.connected = false;
106
+ };
107
+ this._receiveHandler = (e) => {
108
+ this.dispatchEvent(new CustomEvent('receive', { detail: e.data }));
109
+ };
110
+ }
111
+ validate(item) {
112
+ return item instanceof PacemServerSentEventsListenerElement;
113
+ }
114
+ viewActivatedCallback() {
115
+ super.viewActivatedCallback();
116
+ this._start();
117
+ }
118
+ disconnectedCallback() {
119
+ this._stop();
120
+ super.disconnectedCallback();
121
+ }
122
+ propertyChangedCallback(name, old, val, first) {
123
+ super.propertyChangedCallback(name, old, val, first);
124
+ //
125
+ if (first) {
126
+ return;
127
+ }
128
+ if (name === 'url' || name === 'disabled') {
129
+ this._restart();
130
+ }
131
+ }
132
+ #evtSource;
133
+ _restart() {
134
+ this._stop();
135
+ this._start();
136
+ }
137
+ _start(url = this.url) {
138
+ if (!Utils.isNullOrEmpty(url) && !this.disabled) {
139
+ const evtSource = this.#evtSource = new EventSource(url);
140
+ evtSource.onopen = this._connectHandler;
141
+ evtSource.onerror = this._errorHandler;
142
+ }
143
+ }
144
+ get eventSource() {
145
+ return this.#evtSource;
146
+ }
147
+ _stop() {
148
+ const listeners = this.items || [];
149
+ for (var item of listeners) {
150
+ item.stop();
151
+ }
152
+ const evtSource = this.#evtSource;
153
+ if (!Utils.isNull(evtSource)) {
154
+ evtSource.onopen = null;
155
+ evtSource.onerror = null;
156
+ evtSource.onmessage = null;
157
+ evtSource.close();
158
+ }
159
+ this.connected = false;
160
+ this.#evtSource = null;
161
+ }
162
+ };
163
+ __decorate([
164
+ Watch({ emit: false, converter: PropertyConverters.String })
165
+ ], PacemServerSentEventsProxyElement.prototype, "url", void 0);
166
+ __decorate([
167
+ Watch({ converter: PropertyConverters.Boolean })
168
+ ], PacemServerSentEventsProxyElement.prototype, "connected", void 0);
169
+ __decorate([
170
+ Debounce(true)
171
+ ], PacemServerSentEventsProxyElement.prototype, "_restart", null);
172
+ PacemServerSentEventsProxyElement = __decorate([
173
+ CustomElement({ tagName: P + '-sse-proxy' })
174
+ ], PacemServerSentEventsProxyElement);
175
+ export { PacemServerSentEventsProxyElement };
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@pacem/pacem-networking",
3
+ "files": [
4
+ "dist/browser/*.*",
5
+ "dist/bundle/*.*",
6
+ "dist/esm/*.*",
7
+ "typings/*.*",
8
+ "README.md",
9
+ "LICENSE",
10
+ "NOTICE",
11
+ "package.json"
12
+ ],
13
+ "type": "module",
14
+ "dependencies": {
15
+ "@pacem/pacem-foundation": "*",
16
+ "@pacem/pacem-core": "*"
17
+ },
18
+ "main": "./dist/esm/index.js",
19
+ "module": "./dist/esm/index.js",
20
+ "typings": "./typings/index.d.ts",
21
+ "exports": {
22
+ ".": {
23
+ "import": "./dist/esm/index.js",
24
+ "types": "./typings/index.d.ts"
25
+ }
26
+ },
27
+ "version": "1.0.0-abel",
28
+ "author": {
29
+ "name": "Pacem",
30
+ "url": "https://pacem.it"
31
+ },
32
+ "license": "Apache-2.0",
33
+ "homepage": "https://js.pacem.it",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/pacem-it/pacem.git"
37
+ }
38
+ }
@@ -0,0 +1,110 @@
1
+ import { Components as Components_2 } from '@pacem/pacem-core';
2
+ import { HubConnection } from '@microsoft/signalr';
3
+
4
+ export declare namespace Components {
5
+ export {
6
+ Networking
7
+ }
8
+ }
9
+
10
+ declare type HubMethodCallback = (...args: any[]) => void;
11
+
12
+ export declare namespace Networking {
13
+ export {
14
+ PacemHubListenerElement,
15
+ HubMethodCallback,
16
+ PacemHubProxyElement,
17
+ PacemServerSentEventsListenerElement,
18
+ PacemServerSentEventsProxyElement
19
+ }
20
+ }
21
+
22
+ declare class PacemHubListenerElement extends Components_2.PacemItemElement {
23
+ #private;
24
+ /** The method that the listener should subscribe to. */
25
+ method: string;
26
+ /** Whether it is listening to a streaming hub (`true`), or not (`false`, default). */
27
+ stream: boolean;
28
+ /** Method arguments. */
29
+ arguments: any[];
30
+ private get _isConnected();
31
+ private get _connection();
32
+ private _receiveHandler;
33
+ private _completeHandler;
34
+ private _errorHandler;
35
+ private _connectedHandler;
36
+ /** Start listening, if not disabled. */
37
+ start(): void;
38
+ /** Stop listening. */
39
+ stop(): void;
40
+ private _stop;
41
+ private _start;
42
+ viewActivatedCallback(): void;
43
+ disconnectedCallback(): void;
44
+ propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
45
+ }
46
+
47
+ declare class PacemHubProxyElement extends Components_2.PacemItemsContainerElement<PacemHubListenerElement> {
48
+ validate(item: PacemHubListenerElement): boolean;
49
+ url: string;
50
+ accesstoken: string;
51
+ connected: boolean;
52
+ private _hub;
53
+ get connection(): HubConnection;
54
+ invoke(method: string, ...args: any[]): PromiseLike<any>;
55
+ send(method: string, ...args: any[]): PromiseLike<void>;
56
+ start(): Promise<void>;
57
+ stop(): Promise<void>;
58
+ propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
59
+ viewActivatedCallback(): void;
60
+ disconnectedCallback(): void;
61
+ private _resetProxy;
62
+ private _initialize;
63
+ private _setupProxy;
64
+ }
65
+
66
+ declare class PacemServerSentEventsListenerElement extends Components_2.PacemItemElement {
67
+ /** The method that the listener should subscribe to. */
68
+ method: string;
69
+ private get _isConnected();
70
+ private get _connection();
71
+ private _receiveHandler;
72
+ private _connectedHandler;
73
+ private _stop;
74
+ private _start;
75
+ /** Start listening, if not disabled. */
76
+ start(): void;
77
+ /** Stop listening. */
78
+ stop(): void;
79
+ viewActivatedCallback(): void;
80
+ disconnectedCallback(): void;
81
+ propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
82
+ }
83
+
84
+ declare class PacemServerSentEventsProxyElement extends Components_2.PacemItemsContainerElement<PacemServerSentEventsListenerElement> {
85
+ #private;
86
+ validate(item: PacemServerSentEventsListenerElement): boolean;
87
+ url: string;
88
+ connected: boolean;
89
+ viewActivatedCallback(): void;
90
+ disconnectedCallback(): void;
91
+ propertyChangedCallback(name: string, old: any, val: any, first?: boolean): void;
92
+ private _restart;
93
+ private _start;
94
+ get eventSource(): EventSource;
95
+ private _connectHandler;
96
+ private _errorHandler;
97
+ private _receiveHandler;
98
+ private _stop;
99
+ }
100
+
101
+
102
+
103
+ declare global {
104
+ namespace Pacem {
105
+ export {
106
+ Components,
107
+ Networking
108
+ };
109
+ }
110
+ }