@openremote/core 1.0.2 → 1.2.0-snapshot.20240512154942
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -8
- package/lib/asset-mixin.d.ts +46 -0
- package/lib/asset-mixin.js +1 -0
- package/lib/asset-mixin.js.map +1 -0
- package/{dist → lib}/console.d.ts +21 -12
- package/lib/console.js +1 -0
- package/lib/console.js.map +1 -0
- package/lib/defaults.d.ts +15 -0
- package/lib/defaults.js +1 -0
- package/lib/defaults.js.map +1 -0
- package/{dist → lib}/event.d.ts +30 -16
- package/lib/event.js +1 -0
- package/lib/event.js.map +1 -0
- package/lib/index.d.ts +150 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/util.d.ts +92 -0
- package/lib/util.js +1 -0
- package/lib/util.js.map +1 -0
- package/package.json +31 -14
- package/dist/asset-mixin.d.ts +0 -25
- package/dist/asset-mixin.js +0 -115
- package/dist/asset-mixin.js.map +0 -1
- package/dist/console.js +0 -446
- package/dist/console.js.map +0 -1
- package/dist/event.js +0 -454
- package/dist/event.js.map +0 -1
- package/dist/index.d.ts +0 -137
- package/dist/index.js +0 -683
- package/dist/index.js.map +0 -1
- package/dist/util.d.ts +0 -17
- package/dist/util.js +0 -72
- package/dist/util.js.map +0 -1
- package/src/asset-mixin.ts +0 -132
- package/src/console.d.ts +0 -56
- package/src/console.js +0 -451
- package/src/console.js.map +0 -1
- package/src/console.ts +0 -530
- package/src/event.d.ts +0 -75
- package/src/event.js +0 -410
- package/src/event.js.map +0 -1
- package/src/event.ts +0 -584
- package/src/index.d.ts +0 -110
- package/src/index.js +0 -525
- package/src/index.js.map +0 -1
- package/src/index.ts +0 -803
- package/src/util.d.ts +0 -15
- package/src/util.js +0 -46
- package/src/util.js.map +0 -1
- package/src/util.ts +0 -94
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -9788
package/README.md
CHANGED
|
@@ -1,27 +1,105 @@
|
|
|
1
1
|
# @openremote/core
|
|
2
|
-
|
|
3
|
-
> ${DESCRIPTION}
|
|
4
|
-
|
|
5
2
|
[![NPM Version][npm-image]][npm-url]
|
|
6
3
|
[![Linux Build][travis-image]][travis-url]
|
|
7
4
|
[![Test Coverage][coveralls-image]][coveralls-url]
|
|
8
5
|
|
|
9
|
-
|
|
6
|
+
ES6 modules for connecting to an OpenRemote Manager as well as utilities for performing common tasks.
|
|
10
7
|
|
|
8
|
+
The default export is a singleton of type `Manager` that can be used to connect to an OpenRemote Manager, initiate
|
|
9
|
+
authentication and download common resources (translation files, icons, etc). Everything is initiated by calling
|
|
10
|
+
the `init` method, what tasks are performed during initialisation is determined by the `ManagerConfig` passed to the
|
|
11
|
+
`init`, the tasks include the following:
|
|
12
|
+
|
|
13
|
+
* Check the manager exists and is accessible (calls the `api/master/info` endpoint)
|
|
14
|
+
* Initialise authentication and perform login redirect (if requested in the `ManagerConfig`)
|
|
15
|
+
* Download `mdi` iconset (if requested in the `ManagerConfig` - if not specified iconset will be downloaded)
|
|
16
|
+
* Initialise REST API client (`@openremote/rest`) - Sets a timeout of 10s and will also add a request interceptor to
|
|
17
|
+
add required `Authorization` header for authentication
|
|
18
|
+
* Initialise console (the console is the device used to render the application desktop, Android or iOS device)
|
|
19
|
+
* Download built in OpenRemote translation files
|
|
20
|
+
* Download Asset Model Descriptors
|
|
21
|
+
|
|
22
|
+
## Install
|
|
11
23
|
```bash
|
|
12
|
-
npm i
|
|
24
|
+
npm i @openremote/core
|
|
25
|
+
yarn add @openremote/core
|
|
13
26
|
```
|
|
14
27
|
|
|
15
28
|
## Usage
|
|
29
|
+
For a full list of properties, methods and options refer to the TypeDoc generated [documentation]().
|
|
16
30
|
|
|
17
|
-
|
|
31
|
+
Initialisation is done by calling the `init` method which returns a Promise that is fulfilled with a `boolean` indicating
|
|
32
|
+
whether initialisation was successful or not.
|
|
33
|
+
|
|
34
|
+
Initialisation usage example:
|
|
35
|
+
|
|
36
|
+
```$javascript
|
|
37
|
+
import openremote from "@openremote/core";
|
|
38
|
+
|
|
39
|
+
openremote.init({
|
|
40
|
+
managerUrl: "http://localhost:8080",
|
|
41
|
+
keycloakUrl: "http://localhost:8080/auth",
|
|
42
|
+
auth: Auth.KEYCLOAK,
|
|
43
|
+
autoLogin: false,
|
|
44
|
+
realm: "building",
|
|
45
|
+
configureTranslationsOptions: (options) => {
|
|
46
|
+
options.lng = "nl"; // Change initial language to dutch rather than english
|
|
47
|
+
}
|
|
48
|
+
}).then((success) => {
|
|
49
|
+
if (success) {
|
|
50
|
+
// Load the app
|
|
51
|
+
} else {
|
|
52
|
+
// Something has gone wrong
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
```
|
|
18
56
|
|
|
19
|
-
## License
|
|
20
57
|
|
|
58
|
+
### Asset Mixin (`dist/asset-mixin`)
|
|
59
|
+
Exports a `subscribe` function/mixin that can be used by components to connect to one or more Assets in the OpenRemote
|
|
60
|
+
Manager; it takes care of subscribing to events for the specified Asset(s), usage example:
|
|
61
|
+
|
|
62
|
+
```$javascript
|
|
63
|
+
class AssetComponent extends subscribe(openremote) {
|
|
64
|
+
|
|
65
|
+
constructor() {
|
|
66
|
+
this.assetIds = [this.asset];
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Override this method to be notified when an attribute event is received for a subscribed asset. This is called
|
|
70
|
+
// whenever an attribute's value is modified.
|
|
71
|
+
public onAttributeEvent(event: AttributeEvent) {}
|
|
72
|
+
|
|
73
|
+
// Override this method to be notified when an asset event is received for a subscribed asset. This is called when
|
|
74
|
+
// an asset is first subscribed or when an asset is modified (attribute value changes are handled as attribute events)
|
|
75
|
+
public onAssetEvent(event: AssetEvent) {}
|
|
76
|
+
|
|
77
|
+
// If you need to modify an attribute then call the sendAttributeEvent method; the event must be for a subscribed asset.
|
|
78
|
+
doSendEvent(event: AttributeEvent) {
|
|
79
|
+
this.sendAttributeEvent(event);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Events (`./dist/event`)
|
|
85
|
+
Provides infrastructure for connecting to the OpenRemote Manager client event bus; by default an `EventProvider` instance
|
|
86
|
+
`Manager` is initialised by the `Manager` during the initialisation process and can be accessed from `openremote.events`
|
|
87
|
+
but it is also possible to instantiate an `EventProvider` manually.
|
|
88
|
+
|
|
89
|
+
### Util (`./dist/util`)
|
|
90
|
+
Various utility methods for common tasks.
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Supported Browsers
|
|
94
|
+
The last 2 versions of all modern browsers are supported, including Chrome, Safari, Opera, Firefox, Edge. In addition,
|
|
95
|
+
Internet Explorer 11 is also supported.
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
## License
|
|
21
99
|
[GNU AGPL](https://www.gnu.org/licenses/agpl-3.0.en.html)
|
|
22
100
|
|
|
23
101
|
[npm-image]: https://img.shields.io/npm/v/live-xxx.svg
|
|
24
|
-
[npm-url]: https://npmjs.org/package/
|
|
102
|
+
[npm-url]: https://npmjs.org/package/@openremote/core
|
|
25
103
|
[travis-image]: https://img.shields.io/travis/live-js/live-xxx/master.svg
|
|
26
104
|
[travis-url]: https://travis-ci.org/live-js/live-xxx
|
|
27
105
|
[coveralls-image]: https://img.shields.io/coveralls/live-js/live-xxx/master.svg
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { EventProviderFactory, EventProviderStatus } from "./event";
|
|
2
|
+
import { AttributeRef, SharedEvent, EventRequestResponseWrapper } from "@openremote/model";
|
|
3
|
+
declare type Constructor<T = {}> = new (...args: any[]) => T;
|
|
4
|
+
interface CustomElement {
|
|
5
|
+
requestUpdate(name?: PropertyKey, oldValue?: unknown): void;
|
|
6
|
+
connectedCallback?(): void;
|
|
7
|
+
disconnectedCallback?(): void;
|
|
8
|
+
readonly isConnected: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const subscribe: (eventProviderFactory: EventProviderFactory) => <T extends Constructor<CustomElement>>(base: T) => {
|
|
11
|
+
new (...args: any[]): {
|
|
12
|
+
_connectRequested: boolean;
|
|
13
|
+
_subscriptionIds?: string[] | undefined;
|
|
14
|
+
_assetIds?: string[] | undefined;
|
|
15
|
+
_attributeRefs?: AttributeRef[] | undefined;
|
|
16
|
+
_status: EventProviderStatus;
|
|
17
|
+
_statusCallback: (status: EventProviderStatus) => void;
|
|
18
|
+
connectedCallback(): void;
|
|
19
|
+
disconnectedCallback(): void;
|
|
20
|
+
connectEvents(): void;
|
|
21
|
+
disconnectEvents(): void;
|
|
22
|
+
_doConnect(): Promise<void>;
|
|
23
|
+
readonly eventsConnected: boolean;
|
|
24
|
+
_onEventProviderStatusChanged(status: EventProviderStatus): void;
|
|
25
|
+
_onEventsConnect(): void;
|
|
26
|
+
_onEventsDisconnect(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Defaults to subscribe to attribute events and optionally asset events, override in subclasses to do
|
|
29
|
+
* custom subscriptions.
|
|
30
|
+
* Returns the subscription IDs of any created subscriptions
|
|
31
|
+
*/
|
|
32
|
+
_addEventSubscriptions(): Promise<void>;
|
|
33
|
+
_removeEventSubscriptions(): void;
|
|
34
|
+
_refreshEventSubscriptions(): void;
|
|
35
|
+
assetIds: string[] | undefined;
|
|
36
|
+
attributeRefs: AttributeRef[] | undefined;
|
|
37
|
+
_sendEvent(event: SharedEvent): void;
|
|
38
|
+
_sendEventWithReply<U extends SharedEvent, V extends SharedEvent>(event: EventRequestResponseWrapper<U>): Promise<V>;
|
|
39
|
+
onEventsConnect(): void;
|
|
40
|
+
onEventsDisconnect(): void;
|
|
41
|
+
_onEvent(event: SharedEvent): void;
|
|
42
|
+
requestUpdate(name?: PropertyKey, oldValue?: unknown): void;
|
|
43
|
+
readonly isConnected: boolean;
|
|
44
|
+
};
|
|
45
|
+
} & T;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(t,e,s,n){return new(s||(s=Promise))((function(i,r){function o(t){try{u(n.next(t))}catch(t){r(t)}}function c(t){try{u(n.throw(t))}catch(t){r(t)}}function u(t){var e;t.done?i(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(o,c)}u((n=n.apply(t,e||[])).next())}))};import{EventProviderStatus}from"./event";import{objectsEqual}from"./util";import{Util}from".";export const subscribe=t=>e=>class extends e{constructor(){super(...arguments),this._connectRequested=!1,this._status=EventProviderStatus.DISCONNECTED,this._statusCallback=t=>this._onEventProviderStatusChanged(t)}connectedCallback(){super.connectedCallback&&super.connectedCallback(),this.connectEvents()}disconnectedCallback(){this.disconnectEvents(),super.disconnectedCallback&&super.disconnectedCallback()}connectEvents(){t.getEventProvider()?this._connectRequested||(this._connectRequested=!0,t.getEventProvider().subscribeStatusChange(this._statusCallback),this._doConnect()):console.log("No event provider available so cannot subscribe")}disconnectEvents(){this._connectRequested&&(this._connectRequested=!1,t.getEventProvider().unsubscribeStatusChange(this._statusCallback),this._onEventsDisconnect())}_doConnect(){return __awaiter(this,void 0,void 0,(function*(){this.eventsConnected&&this._onEventsConnect()}))}get eventsConnected(){return this._connectRequested&&t.getEventProvider().status===EventProviderStatus.CONNECTED}_onEventProviderStatusChanged(t){switch(t){case EventProviderStatus.DISCONNECTED:this._onEventsDisconnect();break;case EventProviderStatus.CONNECTED:this._doConnect()}}_onEventsConnect(){this._addEventSubscriptions(),this.onEventsConnect()}_onEventsDisconnect(){this._removeEventSubscriptions(),this.onEventsDisconnect()}_addEventSubscriptions(){return __awaiter(this,void 0,void 0,(function*(){const e=!!this._attributeRefs,s=!!this._assetIds,n=this._attributeRefs?this._attributeRefs:this._assetIds;if(n&&n.length>0){if(this._subscriptionIds=[],s){const e=yield t.getEventProvider().subscribeAssetEvents(n,!0,(t=>this._onEvent(t))),s=this._attributeRefs?this._attributeRefs:this._assetIds;if(!this._subscriptionIds||!Util.objectsEqual(n,s))return void t.getEventProvider().unsubscribe(e);this._subscriptionIds.push(e)}const i=yield t.getEventProvider().subscribeAttributeEvents(n,e,(t=>this._onEvent(t))),r=this._attributeRefs?this._attributeRefs:this._assetIds;if(!this._subscriptionIds||!Util.objectsEqual(n,r))return void t.getEventProvider().unsubscribe(i);this._subscriptionIds.push(i)}}))}_removeEventSubscriptions(){this._subscriptionIds&&(this._subscriptionIds.forEach((e=>{t.getEventProvider().unsubscribe(e)})),this._subscriptionIds=void 0)}_refreshEventSubscriptions(){this._removeEventSubscriptions(),this._addEventSubscriptions()}set assetIds(t){objectsEqual(this._assetIds,t)||(this._assetIds=t,this._refreshEventSubscriptions(),this.requestUpdate("assetIds"))}get assetIds(){return this._assetIds}set attributeRefs(t){objectsEqual(this._attributeRefs,t)||(this._attributeRefs=t,this._refreshEventSubscriptions())}get attributeRefs(){return this._attributeRefs}_sendEvent(e){t.getEventProvider().sendEvent(e)}_sendEventWithReply(e){return t.getEventProvider().sendEventWithReply(e)}onEventsConnect(){}onEventsDisconnect(){}_onEvent(t){}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-mixin.js","sourceRoot":"","sources":["../src/asset-mixin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { ConsoleRegistration } from "@openremote/model";
|
|
2
|
-
|
|
1
|
+
import { ConsoleProvider, ConsoleRegistration } from "@openremote/model";
|
|
2
|
+
import { Deferred } from "./util";
|
|
3
|
+
export interface ProviderAction {
|
|
3
4
|
provider: string;
|
|
4
5
|
action: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ProviderMessage extends ProviderAction {
|
|
5
8
|
data?: any;
|
|
6
9
|
[x: string]: any;
|
|
7
10
|
}
|
|
@@ -19,28 +22,34 @@ export declare class Console {
|
|
|
19
22
|
protected _initialised: boolean;
|
|
20
23
|
protected _initialiseInProgress: boolean;
|
|
21
24
|
protected _pendingProviderPromises: {
|
|
22
|
-
[name: string]:
|
|
25
|
+
[name: string]: [Deferred<any>, number];
|
|
26
|
+
};
|
|
27
|
+
protected _providerMessageListeners: {
|
|
28
|
+
[name: string]: (msg: ProviderMessage) => void;
|
|
23
29
|
};
|
|
24
30
|
protected _pendingProviderEnables: string[];
|
|
25
31
|
protected _enableCompleteCallback: (() => void) | null;
|
|
26
32
|
protected _registrationTimer: number | null;
|
|
27
33
|
constructor(realm: string, autoEnable: boolean, enableComplete: () => void);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
get registration(): ConsoleRegistration;
|
|
35
|
+
get autoEnable(): boolean;
|
|
36
|
+
get pendingProviderEnables(): string[];
|
|
37
|
+
get shellApple(): boolean;
|
|
38
|
+
get shellAndroid(): boolean;
|
|
39
|
+
get isMobile(): boolean;
|
|
34
40
|
initialise(): Promise<void>;
|
|
35
41
|
enableProviders(): Promise<void>;
|
|
36
42
|
enableProvider(providerName: string, data?: any): Promise<ProviderEnableResponse>;
|
|
37
43
|
disableProvider(provider: string): Promise<ProviderMessage>;
|
|
44
|
+
getProvider(name: string): ConsoleProvider | undefined;
|
|
38
45
|
sendProviderMessage(message: ProviderMessage, waitForResponse: boolean): Promise<any | null>;
|
|
39
46
|
sendRegistration(delay?: number): Promise<void>;
|
|
40
|
-
storeData(key: string, value:
|
|
41
|
-
retrieveData(key: string): Promise<
|
|
47
|
+
storeData(key: string, value: any): void;
|
|
48
|
+
retrieveData<T>(key: string): Promise<T | undefined>;
|
|
49
|
+
addProviderMessageListener(providerAction: ProviderAction, listener: (msg: ProviderMessage) => void): void;
|
|
50
|
+
removeProviderMessageListener(providerAction: ProviderAction): void;
|
|
42
51
|
protected _postNativeShellMessage(jsonMessage: any): any;
|
|
43
|
-
|
|
52
|
+
_doSendProviderMessage(msg: any): void;
|
|
44
53
|
protected _handleProviderResponse(msg: any): void;
|
|
45
54
|
protected _callCompletedCallback(): void;
|
|
46
55
|
protected static _createConsoleRegistration(): ConsoleRegistration;
|
package/lib/console.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(e,i,r,s){return new(r||(r=Promise))((function(t,o){function n(e){try{d(s.next(e))}catch(e){o(e)}}function a(e){try{d(s.throw(e))}catch(e){o(e)}}function d(e){var i;e.done?t(e.value):(i=e.value,i instanceof r?i:new r((function(e){e(i)}))).then(n,a)}d((s=s.apply(e,i||[])).next())}))};import manager from"./index";import{Deferred}from"./util";let platform=require("platform");export class Console{constructor(e,i,r){this._autoEnable=!1,this._initialised=!1,this._initialiseInProgress=!1,this._pendingProviderPromises={},this._providerMessageListeners={},this._pendingProviderEnables=[],this._registrationTimer=null,this._realm=e,this._autoEnable=i,this._enableCompleteCallback=r,window.OpenRemoteConsole=this;let s=new URLSearchParams(window.location.search),t=s.get("consoleName"),o=s.get("consoleVersion"),n=s.get("consolePlatform"),a=s.get("consoleProviders"),d=s.get("consoleAutoEnable"),l=a&&a.length>0?a.split(" "):["push","storage"];l.indexOf("storage")<0&&l.push("storage"),this._pendingProviderEnables=l;let p=Console._createConsoleRegistration(),g=window.localStorage.getItem("OpenRemoteConsole:"+e);if(g)try{let e=JSON.parse(g);e.id&&(p.id=e.id),e.name&&(p.name=e.name),e.providers&&(p.providers=e.providers),e.apps&&(p.apps=e.apps)}catch(e){console.error("Failed to deserialise console registration")}let h=p.providers;p.providers={};for(let e of l){let i=h&&h.hasOwnProperty(e)?h[e]:{enabled:!1,disabled:!1};p.providers[e]=i}let v=manager.getAppName();v.length>0&&p.apps.indexOf(v)<0&&p.apps.push(v),this._registration=p,t&&(p.name=t),o&&(p.version=o),n&&(p.platform=n),d&&(this._autoEnable="TRUE"===d||"true"===d)}get registration(){return this._registration}get autoEnable(){return this._autoEnable}get pendingProviderEnables(){return this._pendingProviderEnables.slice(0)}get shellApple(){const e=navigator.userAgentData&&navigator.userAgentData.platform?navigator.userAgentData.platform:navigator.platform;return e&&("iP"===e.substring(0,2)||"Mac"===e.substring(0,3))&&window.webkit&&window.webkit.messageHandlers}get shellAndroid(){return!!window.MobileInterface}get isMobile(){return this.shellApple||this.shellAndroid}initialise(){return __awaiter(this,void 0,void 0,(function*(){if(!this._initialised&&!this._initialiseInProgress){console.debug("Console: initialising"),this._initialiseInProgress=!0;try{if(this._registration.providers)for(let e of Object.keys(this._registration.providers))yield this._initialiseProvider(e);this._registration.id||(yield this.sendRegistration(0)),this._initialised=!0,this._initialiseInProgress=!1,0===this._pendingProviderEnables.length?(yield this.sendRegistration(),this._callCompletedCallback()):this._autoEnable&&(yield this.enableProviders())}catch(e){console.error(e)}finally{this._initialiseInProgress=!1}}}))}enableProviders(){return __awaiter(this,void 0,void 0,(function*(){if(!this._initialised)throw new Error("Console must be initialised before enabling providers");for(let e=this._pendingProviderEnables.length-1;e>-1;e--){let i=this._pendingProviderEnables[e];yield this.enableProvider(i)}}))}enableProvider(e,i){return __awaiter(this,void 0,void 0,(function*(){if(!this._initialised)throw console.debug("Console must be initialised before disabling providers"),new Error("Console must be initialised before enabling providers");if(!this._registration.providers.hasOwnProperty(e))throw console.debug("Invalid console provider '"+e+"'"),new Error("Invalid console provider '"+e+"'");console.debug("Console: enabling provider '"+e+"'");let r={provider:e,action:"PROVIDER_ENABLE",consoleId:this._registration.id,data:i},s=yield this.sendProviderMessage(r,!0);this._registration.providers[e].hasPermission=s.hasPermission,this._registration.providers[e].success=s.success,this._registration.providers[e].enabled=s.success,this._registration.providers[e].data=s.data;let t=this._pendingProviderEnables.indexOf(e);return t>=0&&(this._pendingProviderEnables.splice(t,1),0===this._pendingProviderEnables.length&&(this.sendRegistration(),this._callCompletedCallback())),s}))}disableProvider(e){return __awaiter(this,void 0,void 0,(function*(){if(!this._initialised)throw console.debug("Console must be initialised before disabling providers"),new Error("Console must be initialised before disabling providers");if(!this._registration.providers.hasOwnProperty(e))throw console.debug("Invalid console provider '"+e+"'"),new Error("Invalid console provider '"+e+"'");console.debug("Console: disabling provider '"+e+"'");let i=yield this.sendProviderMessage({provider:e,action:"PROVIDER_DISABLE"},!0);return this._registration.providers[e].disabled=!0,this._registration.providers[e].enabled=!1,i}))}getProvider(e){return this._registration&&this._registration.providers?this._registration.providers[e]:void 0}sendProviderMessage(e,i){return __awaiter(this,void 0,void 0,(function*(){if(!this._registration.providers.hasOwnProperty(e.provider))throw console.debug("Invalid console provider '"+e.provider+"'"),new Error("Invalid console provider '"+e.provider+"'");if(!i)return void this._doSendProviderMessage(e);let r=e.provider+e.action;if(this._pendingProviderPromises[r])throw new Error("Message already pending for provider '"+e.provider+"' with action '"+e.action+"'");const s=new Deferred;return this._pendingProviderPromises[r]=[s,window.setTimeout((()=>{delete this._pendingProviderPromises[r],s.reject("No response from provider")}),5e3)],this._doSendProviderMessage(e),s.promise}))}sendRegistration(e){return this._registrationTimer&&(window.clearTimeout(this._registrationTimer),this._registrationTimer=null),e=void 0!==e?e:2e3,console.debug("Sending registration in: "+e+"ms"),new Promise(((e,i)=>{this._registrationTimer=window.setTimeout((()=>{this._registrationTimer=null,console.debug("Console: updating registration");try{this._registration.name||(this._registration.name="Console"),this._registration.platform||(this._registration.platform="N/A"),this._registration.version||(this._registration.version="N/A"),this._registration.providers||(this._registration.providers={}),manager.rest.api.ConsoleResource.register(this._registration).then((i=>{if(200!==i.status)throw new Error("Failed to register console");this._registration=i.data,console.debug("Console: registration successful"),console.debug("Console: updating locally stored registration"),window.localStorage.setItem("OpenRemoteConsole:"+this._realm,JSON.stringify(this._registration)),e()}))}catch(e){console.error("Failed to register console"),i("Failed to register console")}}))}))}storeData(e,i){this.sendProviderMessage({provider:"storage",action:"STORE",key:e,value:i},!1)}retrieveData(e){return __awaiter(this,void 0,void 0,(function*(){let i=yield this.sendProviderMessage({provider:"storage",action:"RETRIEVE",key:e},!0);if(i&&i.value)return i.value}))}addProviderMessageListener(e,i){this._providerMessageListeners[e.provider+e.action]=i}removeProviderMessageListener(e){delete this._providerMessageListeners[e.provider+e.action]}_postNativeShellMessage(e){return this.shellAndroid?window.MobileInterface.postMessage(JSON.stringify(e)):this.shellApple?window.webkit.messageHandlers.int.postMessage(e):void 0}_doSendProviderMessage(e){if(this.isMobile)this._postNativeShellMessage({type:"provider",data:e});else{if(!e.provider||!e.action)return;switch(e.provider.trim().toUpperCase()){case"PUSH":switch(e.action.trim().toUpperCase()){case"PROVIDER_INIT":let i={action:"PROVIDER_INIT",provider:"push",version:"web",enabled:!0,disabled:!1,hasPermission:!0,requiresPermission:!1,success:!0};this._handleProviderResponse(JSON.stringify(i));break;case"PROVIDER_ENABLE":let r={action:"PROVIDER_ENABLE",provider:"push",hasPermission:!0,success:!0};this._handleProviderResponse(JSON.stringify(r));break;default:throw new Error("Unsupported provider '"+e.provider+"' and action '"+e.action+"'")}break;case"STORAGE":switch(e.action){case"PROVIDER_INIT":let i={action:"PROVIDER_INIT",provider:"storage",version:"1.0.0",disabled:!1,enabled:!0,hasPermission:!0,requiresPermission:!1,success:!0};this._handleProviderResponse(JSON.stringify(i));break;case"PROVIDER_ENABLE":let r={action:"PROVIDER_ENABLE",provider:"storage",hasPermission:!0,success:!0};this._handleProviderResponse(JSON.stringify(r));break;case"STORE":{let i=e.key?e.key.trim():null;if(!i||0===i.length)throw new Error("Storage provider 'store' action requires a `key`");null===e.value?window.localStorage.removeItem(i):window.localStorage.setItem(i,JSON.stringify(e.value))}break;case"RETRIEVE":{let i=e.key?e.key.trim():null;if(!i||0===i.length)throw new Error("Storage provider 'retrieve' action requires a `key`");let r=window.localStorage.getItem(i);if(null!==r)try{r=JSON.parse(r)}catch(e){}this._handleProviderResponse(JSON.stringify({action:"RETRIEVE",provider:"storage",key:i,value:r}))}break;default:throw new Error("Unsupported provider '"+e.provider+"' and action '"+e.action+"'")}break;default:console.error("Unsupported provider: "+e.provider)}}}_handleProviderResponse(e){if(!e)return;let i=JSON.parse(e),r=i.provider,s=i.action,t=this._pendingProviderPromises[r+s];t&&(window.clearTimeout(t[1]),delete this._pendingProviderPromises[r+s],t[0].resolve(i));let o=this._providerMessageListeners[r+s];o&&o(i)}_callCompletedCallback(){let e=this._enableCompleteCallback;this._enableCompleteCallback=null,e&&window.setTimeout((()=>{e()}),0)}static _createConsoleRegistration(){return{name:platform.name,version:platform.version,platform:platform.os.toString(),apps:[],model:((platform.manufacturer?platform.manufacturer+" ":"")+(platform.product?platform.product:"")).trim()}}_initialiseProvider(e){return __awaiter(this,void 0,void 0,(function*(){let i;console.debug("Console: initialising provider '"+e+"'");try{i=yield this.sendProviderMessage({provider:e,action:"PROVIDER_INIT"},!0),this._registration.providers[e].version=i.version,this._registration.providers[e].requiresPermission=i.requiresPermission,this._registration.providers[e].hasPermission=i.hasPermission,this._registration.providers[e].success=i.success,this._registration.providers[e].enabled=i.enabled,this._registration.providers[e].disabled=i.disabled,this._registration.providers[e].data=i.data}catch(e){console.error(e),i={action:"",disabled:!1,enabled:!1,hasPermission:!1,provider:"",requiresPermission:!1,version:"",success:!1}}if(i.success||(console.debug("Provider initialisation failed: '"+e+"'"),i.disabled=!0,this._registration.providers[e].disabled=!0),i.disabled||i.enabled){let i=this._pendingProviderEnables.indexOf(e);i>=0&&this._pendingProviderEnables.splice(i,1)}}))}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console.js","sourceRoot":"","sources":["../src/console.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const DefaultColor4: string;
|
|
2
|
+
export declare const DefaultColor7: string;
|
|
3
|
+
export declare const DefaultColor1: string;
|
|
4
|
+
export declare const DefaultColor2: string;
|
|
5
|
+
export declare const DefaultColor5: string;
|
|
6
|
+
export declare const DefaultColor6: string;
|
|
7
|
+
export declare const DefaultColor8: string;
|
|
8
|
+
export declare const DefaultColor3: string;
|
|
9
|
+
export declare const DefaultColor9: string;
|
|
10
|
+
export declare const DefaultColor10: string;
|
|
11
|
+
export declare const DefaultColor11: string;
|
|
12
|
+
export declare const DefaultBoxShadowBottom: string;
|
|
13
|
+
export declare const DefaultBoxShadow: string;
|
|
14
|
+
export declare const DefaultHeaderHeight: string;
|
|
15
|
+
export declare const DefaultDisabledOpacity: string;
|
package/lib/defaults.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const DefaultColor4="#4d9d2a";export const DefaultColor7="#FFFFFF";export const DefaultColor1="#FFFFFF";export const DefaultColor2="#F9F9F9";export const DefaultColor5="#CCCCCC";export const DefaultColor6="#be0000";export const DefaultColor8="#FFFFFF";export const DefaultColor3="#4c4c4c";export const DefaultColor9="#000000";export const DefaultColor10="#000000";export const DefaultColor11="#FFFFFF";export const DefaultBoxShadowBottom="0 5px 5px -5px rgba(0,0,0,0.3)";export const DefaultBoxShadow="0 1px 3px 0 rgba(0,0,0,0.21)";export const DefaultHeaderHeight="50px";export const DefaultDisabledOpacity="0.3";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,UAAU;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,YAAY;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,UAAU;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,aAAa;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,oBAAoB;AACpE,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,gBAAgB;AAChE,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,aAAa;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,sBAAsB;AACtE,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,CAAC,gBAAgB;AAChE,MAAM,CAAC,MAAM,cAAc,GAAW,SAAS,CAAC,CAAC,aAAa;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAW,SAAS,CAAC,CAAC,WAAW;AAC5D,MAAM,CAAC,MAAM,sBAAsB,GAAW,gCAAgC,CAAC;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAW,8BAA8B,CAAC;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAW,MAAM,CAAC;AAClD,MAAM,CAAC,MAAM,sBAAsB,GAAW,KAAK,CAAC"}
|
package/{dist → lib}/event.d.ts
RENAMED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Deferred } from "./util";
|
|
2
|
-
import { AttributeEvent, EventSubscription, SharedEvent
|
|
2
|
+
import { AssetEvent, AttributeEvent, AttributeRef, EventRequestResponseWrapper, EventSubscription, SharedEvent } from "@openremote/model";
|
|
3
3
|
export declare enum EventProviderStatus {
|
|
4
4
|
DISCONNECTED = "DISCONNECTED",
|
|
5
5
|
CONNECTED = "CONNECTED",
|
|
6
|
-
CONNECTING = "CONNECTING"
|
|
6
|
+
CONNECTING = "CONNECTING",
|
|
7
|
+
RECONNECT_FAILED = "RECONNECT_FAILED"
|
|
7
8
|
}
|
|
8
9
|
export interface EventProvider {
|
|
9
10
|
status: EventProviderStatus;
|
|
@@ -13,9 +14,17 @@ export interface EventProvider {
|
|
|
13
14
|
unsubscribeStatusChange(callback: (status: EventProviderStatus) => void): void;
|
|
14
15
|
subscribe<T extends SharedEvent>(eventSubscription: EventSubscription<T>, callback: (event: T) => void): Promise<string>;
|
|
15
16
|
unsubscribe<T extends SharedEvent>(subscriptionId: string): void;
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Subscribe to {@link AssetEvent}s for the specified {@link Asset}s for all {@link Asset}s
|
|
19
|
+
*/
|
|
20
|
+
subscribeAssetEvents(ids: string[] | AttributeRef[] | undefined, requestCurrentValues: boolean, callback: (event: AssetEvent) => void): Promise<string>;
|
|
21
|
+
/**
|
|
22
|
+
* Subscribe to {@link AttributeEvent}s for the specified {@link Asset}s and if {@link AttributeRef}s are provided
|
|
23
|
+
* then the attribute names from the refs will be used for each asset ID.
|
|
24
|
+
*/
|
|
25
|
+
subscribeAttributeEvents(ids: string[] | AttributeRef[], requestCurrentValues: boolean, callback: (event: AttributeEvent) => void): Promise<string>;
|
|
18
26
|
sendEvent<T extends SharedEvent>(event: T): void;
|
|
27
|
+
sendEventWithReply<T extends SharedEvent, U extends SharedEvent>(event: EventRequestResponseWrapper<T>): Promise<U>;
|
|
19
28
|
}
|
|
20
29
|
export interface EventProviderFactory {
|
|
21
30
|
getEventProvider(): EventProvider | undefined;
|
|
@@ -36,20 +45,25 @@ declare abstract class EventProviderImpl implements EventProvider {
|
|
|
36
45
|
protected _statusCallbacks: Array<(status: EventProviderStatus) => void>;
|
|
37
46
|
protected _pendingSubscription: EventSubscriptionInfo<SharedEvent> | null;
|
|
38
47
|
protected _queuedSubscriptions: EventSubscriptionInfo<SharedEvent>[];
|
|
39
|
-
protected _subscriptionMap:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
protected _subscriptionMap: Map<string, EventSubscriptionInfo<SharedEvent>>;
|
|
49
|
+
protected _assetEventPromise?: Promise<string>;
|
|
50
|
+
protected _assetEventCallbackMap: Map<string, (e: AssetEvent) => void>;
|
|
51
|
+
protected _attributeEventPromise?: Promise<string>;
|
|
52
|
+
protected _attributeEventCallbackMap: Map<string, (e: AttributeEvent) => void>;
|
|
53
|
+
protected _unloading: boolean;
|
|
54
|
+
protected static _subscriptionCounter: number;
|
|
55
|
+
abstract get endpointUrl(): string;
|
|
56
|
+
get status(): EventProviderStatus;
|
|
44
57
|
subscribeStatusChange(callback: (status: EventProviderStatus) => void): void;
|
|
45
58
|
unsubscribeStatusChange(callback: (status: EventProviderStatus) => void): void;
|
|
46
59
|
connect(): Promise<boolean>;
|
|
47
60
|
disconnect(): void;
|
|
48
61
|
subscribe<T extends SharedEvent>(eventSubscription: EventSubscription<T>, callback: (event: T) => void): Promise<string>;
|
|
49
|
-
unsubscribe<T extends SharedEvent>(subscriptionId: string): void
|
|
62
|
+
unsubscribe<T extends SharedEvent>(subscriptionId: string): Promise<void>;
|
|
50
63
|
sendEvent<T extends SharedEvent>(event: T): void;
|
|
51
|
-
|
|
52
|
-
|
|
64
|
+
sendEventWithReply<T extends SharedEvent, U extends SharedEvent>(event: EventRequestResponseWrapper<T>): Promise<U>;
|
|
65
|
+
subscribeAssetEvents(ids: string[] | AttributeRef[] | undefined, requestCurrentValues: boolean, callback: (event: AssetEvent) => void): Promise<string>;
|
|
66
|
+
subscribeAttributeEvents(ids: string[] | AttributeRef[] | undefined, requestCurrentValues: boolean, callback: (event: AttributeEvent) => void): Promise<string>;
|
|
53
67
|
protected _processNextSubscription(): void;
|
|
54
68
|
private _onStatusChanged;
|
|
55
69
|
protected _onMessageReceived(subscriptionId: string, event: SharedEvent): void;
|
|
@@ -57,6 +71,7 @@ declare abstract class EventProviderImpl implements EventProvider {
|
|
|
57
71
|
protected _onDisconnect(): void;
|
|
58
72
|
protected _scheduleReconnect(): void;
|
|
59
73
|
protected abstract _doSend<T extends SharedEvent>(event: T): void;
|
|
74
|
+
protected abstract _doSendWithReply<T extends SharedEvent, U extends SharedEvent>(event: EventRequestResponseWrapper<T>): Promise<U>;
|
|
60
75
|
protected abstract _doConnect(): Promise<boolean>;
|
|
61
76
|
protected abstract _doDisconnect(): void;
|
|
62
77
|
protected abstract _doSubscribe<T extends SharedEvent>(subscription: EventSubscription<T>): Promise<string>;
|
|
@@ -64,20 +79,19 @@ declare abstract class EventProviderImpl implements EventProvider {
|
|
|
64
79
|
}
|
|
65
80
|
export declare class WebSocketEventProvider extends EventProviderImpl {
|
|
66
81
|
protected static _subscriptionCounter: number;
|
|
67
|
-
protected static _subscriptionRenewalMillis: number;
|
|
68
82
|
private readonly _endpointUrl;
|
|
69
83
|
protected _webSocket: WebSocket | undefined;
|
|
70
84
|
protected _connectDeferred: Deferred<boolean> | null;
|
|
71
85
|
protected _subscribeDeferred: Deferred<string> | null;
|
|
72
|
-
protected
|
|
73
|
-
|
|
86
|
+
protected _repliesDeferred: Map<string, Deferred<SharedEvent>>;
|
|
87
|
+
get endpointUrl(): string;
|
|
74
88
|
constructor(managerUrl: string);
|
|
75
89
|
protected _doConnect(): Promise<boolean>;
|
|
76
90
|
protected _beforeDisconnect(): void;
|
|
77
91
|
protected _doDisconnect(): void;
|
|
78
92
|
protected _doSubscribe<T extends SharedEvent>(subscription: EventSubscription<T>): Promise<string>;
|
|
79
93
|
protected _doUnsubscribe(subscriptionId: string): void;
|
|
80
|
-
protected _doRenewal(): void;
|
|
81
94
|
protected _doSend<T extends SharedEvent>(event: T): void;
|
|
95
|
+
protected _doSendWithReply<T extends SharedEvent, U extends SharedEvent>(event: EventRequestResponseWrapper<T>): Promise<U>;
|
|
82
96
|
}
|
|
83
97
|
export {};
|
package/lib/event.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{a(i.next(e))}catch(e){r(e)}}function c(e){try{a(i.throw(e))}catch(e){r(e)}}function a(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,c)}a((i=i.apply(e,t||[])).next())}))};import manager from"./index";import{arrayRemove,Deferred}from"./util";export var EventProviderStatus;!function(e){e.DISCONNECTED="DISCONNECTED",e.CONNECTED="CONNECTED",e.CONNECTING="CONNECTING",e.RECONNECT_FAILED="RECONNECT_FAILED"}(EventProviderStatus||(EventProviderStatus={}));const SUBSCRIBE_MESSAGE_PREFIX="SUBSCRIBE:",SUBSCRIBED_MESSAGE_PREFIX="SUBSCRIBED:",UNSUBSCRIBE_MESSAGE_PREFIX="UNSUBSCRIBE:",UNAUTHORIZED_MESSAGE_PREFIX="UNAUTHORIZED:",TRIGGERED_MESSAGE_PREFIX="TRIGGERED:",EVENT_MESSAGE_PREFIX="EVENT:",EVENT_REQUEST_RESPONSE_MESSAGE_PREFIX="REQUESTRESPONSE:";class EventProviderImpl{constructor(){this._disconnectRequested=!1,this._reconnectDelayMillis=WebSocketEventProvider.MIN_RECONNECT_DELAY,this._reconnectTimer=null,this._status=EventProviderStatus.DISCONNECTED,this._connectingDeferred=null,this._statusCallbacks=[],this._pendingSubscription=null,this._queuedSubscriptions=[],this._subscriptionMap=new Map,this._assetEventCallbackMap=new Map,this._attributeEventCallbackMap=new Map,this._unloading=!1}get status(){return this._status}subscribeStatusChange(e){this._statusCallbacks.push(e)}unsubscribeStatusChange(e){arrayRemove(this._statusCallbacks,e)}connect(){return this._status===EventProviderStatus.CONNECTED?Promise.resolve(!0):(this._disconnectRequested=!1,this._connectingDeferred||(this._onStatusChanged(EventProviderStatus.CONNECTING),this._connectingDeferred=new Deferred,this._doConnect().then((e=>{if(this._connectingDeferred){const t=this._connectingDeferred;this._connectingDeferred=null,this._reconnectTimer&&(window.clearTimeout(this._reconnectTimer),this._reconnectTimer=null),e?(console.debug("Connected to event service: "+this.endpointUrl),this._reconnectDelayMillis=WebSocketEventProvider.MIN_RECONNECT_DELAY,this._onStatusChanged(EventProviderStatus.CONNECTED),window.setTimeout((()=>{this._onConnect()}),0)):(console.debug("Failed to connect to event service: "+this.endpointUrl),this._onStatusChanged(EventProviderStatus.DISCONNECTED)),t.resolve(e)}}))),this._connectingDeferred.promise)}disconnect(){console.debug("Disconnecting from event service: "+this.endpointUrl),this._disconnectRequested||(this._disconnectRequested=!0,this._reconnectTimer&&(window.clearTimeout(this._reconnectTimer),this._reconnectTimer=null),this.status!==EventProviderStatus.DISCONNECTED&&this._doDisconnect())}subscribe(e,t){const s={eventSubscription:e,callback:t,deferred:new Deferred};return null!=this._pendingSubscription||this._status!==EventProviderStatus.CONNECTED?(this._queuedSubscriptions.push(s),s.deferred.promise):(this._pendingSubscription=s,this._doSubscribe(e).then((e=>{if(this._pendingSubscription){const t=this._pendingSubscription;this._pendingSubscription=null,this._subscriptionMap.set(e,t),this._processNextSubscription();const s=t.deferred;t.deferred=null,s&&s.resolve(e)}}),(e=>{if(this._pendingSubscription){const t=this._pendingSubscription;this._pendingSubscription=null,this._processNextSubscription();const s=t.deferred;t.deferred=null,s&&s.reject(e)}})),this._pendingSubscription.deferred.promise)}unsubscribe(e){return __awaiter(this,void 0,void 0,(function*(){if(this._subscriptionMap.delete(e))this._doUnsubscribe(e);else if(this._assetEventCallbackMap.delete(e)){if(this._assetEventPromise&&0===this._assetEventCallbackMap.size){const e=yield this._assetEventPromise;this._assetEventPromise=void 0,this.unsubscribe(e)}}else if(this._attributeEventCallbackMap.delete(e)&&this._attributeEventPromise&&0===this._attributeEventCallbackMap.size){const e=yield this._attributeEventPromise;this._attributeEventPromise=void 0,this.unsubscribe(e)}}))}sendEvent(e){this._status===EventProviderStatus.CONNECTED&&this._doSend(e)}sendEventWithReply(e){return this._status!==EventProviderStatus.CONNECTED?Promise.reject("Not connected"):this._doSendWithReply(e)}subscribeAssetEvents(e,t,s){return __awaiter(this,void 0,void 0,(function*(){const i=e&&"string"!=typeof e[0]?e.map((e=>e.id)):e,n="AssetEvent"+EventProviderImpl._subscriptionCounter++;if(!this._assetEventPromise){let e;manager.authenticated||(e={filterType:"asset",realm:manager.displayRealm});const t={eventType:"asset",filter:e};this._assetEventPromise=this.subscribe(t,(e=>{this._assetEventCallbackMap.forEach((t=>t(e)))}))}return this._assetEventCallbackMap.set(n,(e=>{const t=e.asset.id;i?i.find((e=>t===e))&&s(e):e.asset.realm===manager.displayRealm&&s(e)})),this._assetEventPromise.then((()=>{try{if(i&&t){const e={messageId:"read-assets:"+i.join(",")+":"+n,event:{eventType:"read-assets",assetQuery:{ids:i}}};this.sendEventWithReply(e).then((e=>{const t=e;t.assets&&this._assetEventCallbackMap.has(n)&&t.assets.forEach((e=>{s({eventType:"asset",asset:e,cause:"READ"})}))}))}}catch(t){throw console.error("Failed to subscribe to asset events for assets: "+e),n&&this.unsubscribe(n),t}return n}))}))}subscribeAttributeEvents(e,t,s){return __awaiter(this,void 0,void 0,(function*(){const i=e&&"string"!=typeof e[0],n=i?e.map((e=>e.id)):e,r=i?e:void 0,o="AttributeEvent"+EventProviderImpl._subscriptionCounter++;if(!this._attributeEventPromise){let e;manager.authenticated||(e={filterType:"asset",realm:manager.displayRealm});const t={eventType:"attribute",filter:e};this._attributeEventPromise=this.subscribe(t,(e=>{this._attributeEventCallbackMap.forEach((t=>t(e)))}))}const c=t=>{const r=t.ref;i?e.forEach((e=>{r.id===e.id&&r.name===e.name&&s(t)})):n?n.find((e=>r.id===e))&&s(t):t.realm===manager.displayRealm&&s(t)};return this._attributeEventCallbackMap.set(o,c),this._attributeEventPromise.then((()=>{try{if(t&&n){const e={messageId:"read-assets:"+n.join(",")+":"+o,event:{eventType:"read-assets",assetQuery:{ids:n}}};this.sendEventWithReply(e).then((e=>{const t=e;t.assets&&this._attributeEventCallbackMap.has(o)&&t.assets.forEach((e=>{e.attributes&&Object.entries(e.attributes).forEach((([t,s])=>{r&&!r.find((s=>s.id===e.id&&s.name===t))||c({eventType:"attribute",timestamp:s.timestamp,value:s.value,ref:{id:e.id,name:t}})}))}))}))}}catch(t){throw console.error("Failed to subscribe to asset events for assets: "+e),o&&this.unsubscribe(o),t}return o}))}))}_processNextSubscription(){this._status===EventProviderStatus.CONNECTED&&0!==this._queuedSubscriptions.length&&setTimeout((()=>{const e=this._queuedSubscriptions.shift();e&&this.subscribe(e.eventSubscription,e.callback).then((t=>{const s=e.deferred;e.deferred=null,s&&s.resolve(t)}),(t=>{const s=e.deferred;e.deferred=null,s&&s.reject(t)}))}),0)}_onStatusChanged(e){e!==this._status&&(console.debug("Event provider status changed: "+e),this._status=e,this._unloading||window.setTimeout((()=>{this._statusCallbacks.forEach((t=>t(e)))}),0))}_onMessageReceived(e,t){const s=this._subscriptionMap.get(e);s&&s.callback(t)}_onConnect(){if(Object.keys(this._subscriptionMap).length>0){for(const e in this._subscriptionMap)this._subscriptionMap.has(e)&&this._queuedSubscriptions.unshift(this._subscriptionMap.get(e));this._subscriptionMap.clear()}this._processNextSubscription()}_onDisconnect(){this._onStatusChanged(EventProviderStatus.DISCONNECTED),this._pendingSubscription&&(this._queuedSubscriptions.unshift(this._pendingSubscription),this._pendingSubscription=null),this._scheduleReconnect()}_scheduleReconnect(){this._reconnectTimer||this._disconnectRequested||(console.debug("Event provider scheduling reconnect in "+this._reconnectDelayMillis+"ms"),this._reconnectTimer=window.setTimeout((()=>{this._disconnectRequested||this.connect().then((e=>{e||(this._onStatusChanged(EventProviderStatus.RECONNECT_FAILED),this._scheduleReconnect())})).catch((e=>{this._onStatusChanged(EventProviderStatus.RECONNECT_FAILED),this._scheduleReconnect()}))}),this._reconnectDelayMillis),this._reconnectDelayMillis<WebSocketEventProvider.MAX_RECONNECT_DELAY&&(this._reconnectDelayMillis=Math.min(WebSocketEventProvider.MAX_RECONNECT_DELAY,this._reconnectDelayMillis+3e3)))}}EventProviderImpl.MIN_RECONNECT_DELAY=0,EventProviderImpl.MAX_RECONNECT_DELAY=3e4,EventProviderImpl._subscriptionCounter=0;export class WebSocketEventProvider extends EventProviderImpl{get endpointUrl(){return this._endpointUrl}constructor(e){super(),this._webSocket=void 0,this._connectDeferred=null,this._subscribeDeferred=null,this._repliesDeferred=new Map,this._endpointUrl=(e.startsWith("https:")?"wss":"ws")+"://"+e.substr(e.indexOf("://")+3)+"/websocket/events",window.addEventListener("beforeunload",(()=>{this._unloading=!0,this.disconnect()}))}_doConnect(){let e=this._endpointUrl+"?Realm="+manager.config.realm;return manager.authenticated&&(e+="&Authorization="+manager.getAuthorizationHeader()),this._webSocket=new WebSocket(e),this._connectDeferred=new Deferred,manager.isTokenExpired()&&this._connectDeferred.resolve(!1),this._webSocket.onopen=()=>{if(this._connectDeferred){const e=this._connectDeferred;this._connectDeferred=null,e.resolve(!0)}},this._webSocket.onerror=e=>{if(this._connectDeferred){const e=this._connectDeferred;this._connectDeferred=null,e.resolve(!1)}else console.debug("Event provider error"),this._beforeDisconnect()},this._webSocket.onclose=()=>{if(this._webSocket=void 0,this._connectDeferred){const e=this._connectDeferred;this._connectDeferred=null,e.resolve(!1)}else this._beforeDisconnect()},this._webSocket.onmessage=e=>{const t=e.data;if(t&&t.startsWith("SUBSCRIBED:")){const e=t.substring(11),s=JSON.parse(e),i=this._subscribeDeferred;this._subscribeDeferred=null,i&&i.resolve(s.subscriptionId)}else if(t.startsWith("UNAUTHORIZED:")){const e=t.substring(13),s=JSON.parse(e),i=this._subscribeDeferred;this._subscribeDeferred=null,i&&(console.warn("Unauthorized event subscription: "+JSON.stringify(s,null,2)),i.reject("Unauthorized"))}else if(t.startsWith("TRIGGERED:")){const e=t.substring(10),s=JSON.parse(e);s.events&&s.events.forEach((e=>{this._onMessageReceived(s.subscriptionId,e)}))}else if(t.startsWith("REQUESTRESPONSE:")){const e=t.substring(16),s=JSON.parse(e);if(s.messageId&&s.event){const e=this._repliesDeferred.get(s.messageId);this._repliesDeferred.delete(s.messageId),e&&e.resolve(s.event)}}},this._connectDeferred.promise}_beforeDisconnect(){this._onDisconnect()}_doDisconnect(){var e;null===(e=this._webSocket)||void 0===e||e.close(),this._subscribeDeferred=null,this._repliesDeferred.clear()}_doSubscribe(e){return this._webSocket?this._subscribeDeferred?Promise.reject("There's already a pending subscription"):(this._subscribeDeferred=new Deferred,e.subscriptionId||(e.subscriptionId=WebSocketEventProvider._subscriptionCounter+++""),this._webSocket.send("SUBSCRIBE:"+JSON.stringify(e)),this._subscribeDeferred.promise):Promise.reject("Not connected")}_doUnsubscribe(e){if(!this._webSocket)return;const t={subscriptionId:e};this._webSocket.send("UNSUBSCRIBE:"+JSON.stringify(t))}_doSend(e){const t="EVENT:"+JSON.stringify(e);this._webSocket.send(t)}_doSendWithReply(e){if(e.messageId||(e.messageId=((new Date).getTime()+10*Math.random()).toString(10)),this._repliesDeferred.has(e.messageId))return Promise.reject("There's already a pending send and reply with this ID");const t=new Deferred;return this._repliesDeferred.set(e.messageId,t),this._webSocket.send("REQUESTRESPONSE:"+JSON.stringify(e)),t.promise}}WebSocketEventProvider._subscriptionCounter=1;
|
package/lib/event.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.js","sourceRoot":"","sources":["../src/event.ts"],"names":[],"mappings":"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"}
|