@ngxs/websocket-plugin 3.8.2-dev.master-322dc2c → 3.8.2-dev.master-296071a
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 +1 -1
- package/esm2022/index.mjs +5 -1
- package/esm2022/src/private_api.mjs +2 -0
- package/esm2022/src/providers.mjs +1 -1
- package/esm2022/src/public_api.mjs +3 -3
- package/esm2022/src/symbols.mjs +2 -2
- package/esm2022/src/websocket-handler.mjs +5 -5
- package/esm2022/src/websocket.module.mjs +7 -7
- package/fesm2022/ngxs-websocket-plugin.mjs +11 -11
- package/fesm2022/ngxs-websocket-plugin.mjs.map +1 -1
- package/index.d.ts +4 -0
- package/package.json +2 -2
- package/src/private_api.d.ts +1 -0
- package/src/providers.d.ts +5 -5
- package/src/public_api.d.ts +2 -2
- package/src/symbols.d.ts +5 -5
- package/src/websocket-handler.d.ts +2 -2
- package/src/websocket.module.d.ts +7 -7
package/README.md
CHANGED
package/esm2022/index.mjs
CHANGED
|
@@ -2,4 +2,8 @@
|
|
|
2
2
|
* The public api for consumers of @ngxs/websocket-plugin
|
|
3
3
|
*/
|
|
4
4
|
export * from './src/public_api';
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The private api for consumers of @ngxs/websocket-plugin
|
|
7
|
+
*/
|
|
8
|
+
export * from './src/private_api';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy93ZWJzb2NrZXQtcGx1Z2luL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyxrQkFBa0IsQ0FBQztBQUVqQzs7R0FFRztBQUNILGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBwdWJsaWMgYXBpIGZvciBjb25zdW1lcnMgb2YgQG5neHMvd2Vic29ja2V0LXBsdWdpblxuICovXG5leHBvcnQgKiBmcm9tICcuL3NyYy9wdWJsaWNfYXBpJztcblxuLyoqXG4gKiBUaGUgcHJpdmF0ZSBhcGkgZm9yIGNvbnN1bWVycyBvZiBAbmd4cy93ZWJzb2NrZXQtcGx1Z2luXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vc3JjL3ByaXZhdGVfYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { NGXS_WEBSOCKET_OPTIONS as ɵNGXS_WEBSOCKET_OPTIONS } from './symbols';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy93ZWJzb2NrZXQtcGx1Z2luL3NyYy9wcml2YXRlX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLElBQUksdUJBQXVCLEVBQUUsTUFBTSxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBOR1hTX1dFQlNPQ0tFVF9PUFRJT05TIGFzIMm1TkdYU19XRUJTT0NLRVRfT1BUSU9OUyB9IGZyb20gJy4vc3ltYm9scyc7XG4iXX0=
|
|
@@ -31,4 +31,4 @@ export function ɵgetProviders(options) {
|
|
|
31
31
|
}
|
|
32
32
|
];
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvd2Vic29ja2V0LXBsdWdpbi9zcmMvcHJvdmlkZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBOEIsTUFBTSxXQUFXLENBQUM7QUFFN0YsTUFBTSxVQUFVLHdCQUF3QixDQUFDLE9BQW1DO0lBQzFFLE9BQU87UUFDTCxpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsT0FBTyxFQUFFLE1BQU07UUFDZixZQUFZLENBQUMsQ0FBZTtZQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFDRCxVQUFVLENBQUMsS0FBVTtZQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFvQztJQUNoRSxPQUFPO1FBQ0wsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7UUFDNUM7WUFDRSxPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLFVBQVUsRUFBRSx3QkFBd0I7WUFDcEMsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDO1NBQ3JCO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQztZQUMxQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN4QixLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgV2ViU29ja2V0SGFuZGxlciB9IGZyb20gJy4vd2Vic29ja2V0LWhhbmRsZXInO1xuaW1wb3J0IHsgVVNFUl9PUFRJT05TLCBOR1hTX1dFQlNPQ0tFVF9PUFRJT05TLCBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vc3ltYm9scyc7XG5cbmV4cG9ydCBmdW5jdGlvbiDJtXdlYnNvY2tldE9wdGlvbnNGYWN0b3J5KG9wdGlvbnM6IE5neHNXZWJTb2NrZXRQbHVnaW5PcHRpb25zKSB7XG4gIHJldHVybiB7XG4gICAgcmVjb25uZWN0SW50ZXJ2YWw6IDUwMDAsXG4gICAgcmVjb25uZWN0QXR0ZW1wdHM6IDEwLFxuICAgIHR5cGVLZXk6ICd0eXBlJyxcbiAgICBkZXNlcmlhbGl6ZXIoZTogTWVzc2FnZUV2ZW50KSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShlLmRhdGEpO1xuICAgIH0sXG4gICAgc2VyaWFsaXplcih2YWx1ZTogYW55KSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH0sXG4gICAgLi4ub3B0aW9uc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gybVnZXRQcm92aWRlcnMob3B0aW9ucz86IE5neHNXZWJTb2NrZXRQbHVnaW5PcHRpb25zKSB7XG4gIHJldHVybiBbXG4gICAgeyBwcm92aWRlOiBVU0VSX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdYU19XRUJTT0NLRVRfT1BUSU9OUyxcbiAgICAgIHVzZUZhY3Rvcnk6IMm1d2Vic29ja2V0T3B0aW9uc0ZhY3RvcnksXG4gICAgICBkZXBzOiBbVVNFUl9PUFRJT05TXVxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gKCkgPT4ge30sXG4gICAgICBkZXBzOiBbV2ViU29ja2V0SGFuZGxlcl0sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXTtcbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export { NgxsWebSocketPluginModule, withNgxsWebSocketPlugin } from './websocket.module';
|
|
2
|
+
export { ConnectWebSocket, WebSocketMessageError, DisconnectWebSocket, WebSocketDisconnected, SendWebSocketMessage, WebSocketConnectionUpdated, WebSocketConnected } from './symbols';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3dlYnNvY2tldC1wbHVnaW4vc3JjL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDeEYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsMEJBQTBCLEVBQzFCLGtCQUFrQixFQUNuQixNQUFNLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5neHNXZWJTb2NrZXRQbHVnaW5Nb2R1bGUsIHdpdGhOZ3hzV2ViU29ja2V0UGx1Z2luIH0gZnJvbSAnLi93ZWJzb2NrZXQubW9kdWxlJztcbmV4cG9ydCB7XG4gIENvbm5lY3RXZWJTb2NrZXQsXG4gIFdlYlNvY2tldE1lc3NhZ2VFcnJvcixcbiAgRGlzY29ubmVjdFdlYlNvY2tldCxcbiAgV2ViU29ja2V0RGlzY29ubmVjdGVkLFxuICBTZW5kV2ViU29ja2V0TWVzc2FnZSxcbiAgV2ViU29ja2V0Q29ubmVjdGlvblVwZGF0ZWQsXG4gIFdlYlNvY2tldENvbm5lY3RlZFxufSBmcm9tICcuL3N5bWJvbHMnO1xuIl19
|
package/esm2022/src/symbols.mjs
CHANGED
|
@@ -14,7 +14,7 @@ export class ConnectWebSocket {
|
|
|
14
14
|
/**
|
|
15
15
|
* Action triggered when a error ocurrs
|
|
16
16
|
*/
|
|
17
|
-
export class
|
|
17
|
+
export class WebSocketMessageError {
|
|
18
18
|
static { this.type = '[WebSocket] Message Error'; }
|
|
19
19
|
constructor(payload) {
|
|
20
20
|
this.payload = payload;
|
|
@@ -62,4 +62,4 @@ export class TypeKeyPropertyMissingError extends Error {
|
|
|
62
62
|
super(`Property ${typeKey} is missing on the socket message`);
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3dlYnNvY2tldC1wbHVnaW4vc3JjL3N5bWJvbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvQyxNQUFNLFdBQVcsR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCxXQUFXLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzVDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBb0RsRjs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7YUFDWCxTQUFJLEdBQUcscUJBQXFCLENBQUM7SUFFN0MsWUFBbUIsT0FBb0M7UUFBcEMsWUFBTyxHQUFQLE9BQU8sQ0FBNkI7SUFBRyxDQUFDOztBQUc3RDs7R0FFRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7YUFDaEIsU0FBSSxHQUFHLDJCQUEyQixDQUFDO0lBRW5ELFlBQW1CLE9BQVk7UUFBWixZQUFPLEdBQVAsT0FBTyxDQUFLO0lBQUcsQ0FBQzs7QUFHckM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO2FBQ2QsU0FBSSxHQUFHLHdCQUF3QixDQUFDOztBQUdsRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7YUFDYixTQUFJLEdBQUcsdUJBQXVCLENBQUM7O0FBR2pEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjthQUNoQixTQUFJLEdBQUcsMEJBQTBCLENBQUM7O0FBR3BEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjthQUNmLFNBQUksR0FBRywwQkFBMEIsQ0FBQztJQUVsRCxZQUFtQixPQUFZO1FBQVosWUFBTyxHQUFQLE9BQU8sQ0FBSztJQUFHLENBQUM7O0FBR3JDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLDBCQUEwQjthQUNyQixTQUFJLEdBQUcsZ0NBQWdDLENBQUM7O0FBRzFEOzs7R0FHRztBQUNILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxLQUFLO0lBQ3BELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsWUFBWSxPQUFPLG1DQUFtQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZGVjbGFyZSBjb25zdCBuZ0Rldk1vZGU6IGJvb2xlYW47XG5cbmNvbnN0IE5HX0RFVl9NT0RFID0gdHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlO1xuXG5leHBvcnQgY29uc3QgTkdYU19XRUJTT0NLRVRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucz4oXG4gIE5HX0RFVl9NT0RFID8gJ05HWFNfV0VCU09DS0VUX09QVElPTlMnIDogJydcbik7XG5cbmV4cG9ydCBjb25zdCBVU0VSX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW4oTkdfREVWX01PREUgPyAnVVNFUl9PUFRJT05TJyA6ICcnKTtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBVUkwgb2YgdGhlIHdlYnNvY2tldC5cbiAgICovXG4gIHVybD86IHN0cmluZztcblxuICAvKipcbiAgICogRWl0aGVyIGEgc2luZ2xlIHByb3RvY29sIHN0cmluZyBvciBhbiBhcnJheSBvZiBwcm90b2NvbCBzdHJpbmdzLlxuICAgKiBUaGVzZSBzdHJpbmdzIGFyZSB1c2VkIHRvIGluZGljYXRlIHN1Yi1wcm90b2NvbHMsIHNvIHRoYXQgYSBzaW5nbGUgc2VydmVyXG4gICAqIGNhbiBpbXBsZW1lbnQgbXVsdGlwbGUgV2ViU29ja2V0IHN1Yi1wcm90b2NvbHMgKGZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCBvbmUgc2VydmVyIHRvIGJlIGFibGVcbiAgICogdG8gaGFuZGxlIGRpZmZlcmVudCB0eXBlcyBvZiBpbnRlcmFjdGlvbnMgZGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpZWQgcHJvdG9jb2wpLlxuICAgKiBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSBhIHByb3RvY29sIHN0cmluZywgYW4gZW1wdHkgc3RyaW5nIGlzIGFzc3VtZWQuXG4gICAqL1xuICBwcm90b2NvbD86IHN0cmluZyB8IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgYmluYXJ5VHlwZWAgcHJvcGVydHkgb2YgdGhlIHVuZGVybHlpbmcgV2ViU29ja2V0LlxuICAgKi9cbiAgYmluYXJ5VHlwZT86ICdibG9iJyB8ICdhcnJheWJ1ZmZlcic7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0eSBuYW1lIHRvIGRpc3RpZ3VuaXNoIHRoaXMgdHlwZSBmb3IgdGhlIHN0b3JlLlxuICAgKiBEZWZhdWx0OiAndHlwZSdcbiAgICovXG4gIHR5cGVLZXk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEludGVydmFsIHRvIHRyeSBhbmQgcmVjb25uZWN0LlxuICAgKiBEZWZhdWx0OiA1MDAwXG4gICAqL1xuICByZWNvbm5lY3RJbnRlcnZhbD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHJlY29ubmVjdCBhdHRlbXBzLlxuICAgKiBEZWZhdWx0OiAxMFxuICAgKi9cbiAgcmVjb25uZWN0QXR0ZW1wdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXIgdG8gY2FsbCBiZWZvcmUgc2VuZGluZyBtZXNzYWdlc1xuICAgKiBEZWZhdWx0OiBganNvbi5zdHJpbmdpZnlgXG4gICAqL1xuICBzZXJpYWxpemVyPzogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNlcmFsaXplciBiZWZvcmUgcHVibGlzaGluZyB0aGUgbWVzc2FnZS5cbiAgICovXG4gIGRlc2VyaWFsaXplcj86IChlOiBNZXNzYWdlRXZlbnQpID0+IGFueTtcbn1cblxuLyoqXG4gKiBBY3Rpb24gdG8gY29ubmVjdCB0byB0aGUgd2Vic29ja2V0LiBPcHRpb25hbGx5IHBhc3MgYSBVUkwuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb25uZWN0V2ViU29ja2V0IHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1dlYlNvY2tldF0gQ29ubmVjdCc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHBheWxvYWQ/OiBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucykge31cbn1cblxuLyoqXG4gKiBBY3Rpb24gdHJpZ2dlcmVkIHdoZW4gYSBlcnJvciBvY3VycnNcbiAqL1xuZXhwb3J0IGNsYXNzIFdlYlNvY2tldE1lc3NhZ2VFcnJvciB7XG4gIHN0YXRpYyByZWFkb25seSB0eXBlID0gJ1tXZWJTb2NrZXRdIE1lc3NhZ2UgRXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBhbnkpIHt9XG59XG5cbi8qKlxuICogQWN0aW9uIHRvIGRpc2Nvbm5lY3QgdGhlIHdlYnNvY2tldC5cbiAqL1xuZXhwb3J0IGNsYXNzIERpc2Nvbm5lY3RXZWJTb2NrZXQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbV2ViU29ja2V0XSBEaXNjb25uZWN0Jztcbn1cblxuLyoqXG4gKiBBY3Rpb24gdHJpZ2dlcmVkIHdoZW4gd2Vic29ja2V0IGlzIGNvbm5lY3RlZFxuICovXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0Q29ubmVjdGVkIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1dlYlNvY2tldF0gQ29ubmVjdGVkJztcbn1cblxuLyoqXG4gKiBBY3Rpb24gdHJpZ2dlcmVkIHdoZW4gd2Vic29ja2V0IGlzIGRpc2Nvbm5lY3RlZFxuICovXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0RGlzY29ubmVjdGVkIHtcbiAgc3RhdGljIHJlYWRvbmx5IHR5cGUgPSAnW1dlYlNvY2tldF0gRGlzY29ubmVjdGVkJztcbn1cblxuLyoqXG4gKiBBY3Rpb24gdG8gc2VuZCB0byB0aGUgc2VydmVyLlxuICovXG5leHBvcnQgY2xhc3MgU2VuZFdlYlNvY2tldE1lc3NhZ2Uge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbV2ViU29ja2V0XSBTZW5kIE1lc3NhZ2UnO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBwYXlsb2FkOiBhbnkpIHt9XG59XG5cbi8qKlxuICogQWN0aW9uIGRpc3BhdGNoZWQgd2hlbiB0aGUgdXNlciB0cmllcyB0byBjb25uZWN0IGlmIHRoZSBjb25uZWN0aW9uIGFscmVhZHkgZXhpc3RzLlxuICovXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0Q29ubmVjdGlvblVwZGF0ZWQge1xuICBzdGF0aWMgcmVhZG9ubHkgdHlwZSA9ICdbV2ViU29ja2V0XSBDb25uZWN0aW9uIFVwZGF0ZWQnO1xufVxuXG4vKipcbiAqIFRoaXMgZXJyb3IgaXMgdGhyb3duIHdoZXJlIHRoZXJlIGlzIG5vIGB0eXBlYCAob3IgY3VzdG9tIGB0eXBlS2V5YCkgcHJvcGVydHlcbiAqIG9uIHRoZSBtZXNzYWdlIHRoYXQgY2FtZSBmcm9tIHRoZSBzZXJ2ZXIgc2lkZSBzb2NrZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFR5cGVLZXlQcm9wZXJ0eU1pc3NpbmdFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IodHlwZUtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFByb3BlcnR5ICR7dHlwZUtleX0gaXMgbWlzc2luZyBvbiB0aGUgc29ja2V0IG1lc3NhZ2VgKTtcbiAgfVxufVxuIl19
|
|
@@ -3,7 +3,7 @@ import { Actions, Store, ofActionDispatched } from '@ngxs/store';
|
|
|
3
3
|
import { getValue } from '@ngxs/store/plugins';
|
|
4
4
|
import { ReplaySubject, Subject, fromEvent } from 'rxjs';
|
|
5
5
|
import { takeUntil } from 'rxjs/operators';
|
|
6
|
-
import { ConnectWebSocket, DisconnectWebSocket, SendWebSocketMessage, NGXS_WEBSOCKET_OPTIONS,
|
|
6
|
+
import { ConnectWebSocket, DisconnectWebSocket, SendWebSocketMessage, NGXS_WEBSOCKET_OPTIONS, WebSocketMessageError, WebSocketDisconnected, TypeKeyPropertyMissingError, WebSocketConnectionUpdated, WebSocketConnected } from './symbols';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "@ngxs/store";
|
|
9
9
|
export class WebSocketHandler {
|
|
@@ -88,7 +88,7 @@ export class WebSocketHandler {
|
|
|
88
88
|
// This ensures that the WebSocket connection is properly closed to prevent
|
|
89
89
|
// potential resource leaks.
|
|
90
90
|
this._disconnect(/* forcelyCloseSocket */ true);
|
|
91
|
-
this._store.dispatch(new
|
|
91
|
+
this._store.dispatch(new WebSocketMessageError(error));
|
|
92
92
|
});
|
|
93
93
|
fromEvent(socket, 'close')
|
|
94
94
|
.pipe(takeUntil(this._socketClosed$))
|
|
@@ -107,7 +107,7 @@ export class WebSocketHandler {
|
|
|
107
107
|
// We should call `socket.close()` in this scenario, we can ensure that
|
|
108
108
|
// the WebSocket connection is properly closed.
|
|
109
109
|
this._disconnect(/* forcelyCloseSocket */ true);
|
|
110
|
-
this._store.dispatch(new
|
|
110
|
+
this._store.dispatch(new WebSocketMessageError(event));
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
});
|
|
@@ -126,7 +126,7 @@ export class WebSocketHandler {
|
|
|
126
126
|
this._socket.send(this._options.serializer(data));
|
|
127
127
|
}
|
|
128
128
|
catch (error) {
|
|
129
|
-
this._store.dispatch(new
|
|
129
|
+
this._store.dispatch(new WebSocketMessageError(error));
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
132
|
_closeConnection(forcelyCloseSocket) {
|
|
@@ -146,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImpor
|
|
|
146
146
|
type: Inject,
|
|
147
147
|
args: [NGXS_WEBSOCKET_OPTIONS]
|
|
148
148
|
}] }] });
|
|
149
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy93ZWJzb2NrZXQtcGx1Z2luL3NyYy93ZWJzb2NrZXQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUV0QixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ25CLE1BQU0sV0FBVyxDQUFDOzs7QUFHbkIsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUNVLE1BQWEsRUFDYixPQUFlLEVBQ2YsU0FBa0IsRUFDYyxRQUFvQztRQUhwRSxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDYyxhQUFRLEdBQVIsUUFBUSxDQUE0QjtRQVp0RSxZQUFPLEdBQXFCLElBQUksQ0FBQztRQUV4QixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBUSxDQUFDO1FBRWxDLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENBQUMsQ0FBQztRQVF0RCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNyRSxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN4RSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxTQUFTO2FBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUN6RSxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxPQUFPLENBQUMsT0FBb0M7UUFDbEQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLDBCQUEwQixFQUFFLENBQUMsQ0FBQztTQUN4RDtRQUVELG1JQUFtSTtRQUNuSSxJQUFJLE9BQU8sRUFBRTtZQUNYLElBQUksT0FBTyxDQUFDLFVBQVUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQzthQUMvQztZQUVELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQzthQUNuRDtTQUNGO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsa0VBQWtFO1lBQ2xFLHdDQUF3QztZQUN4QyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBSSxDQUFDO1lBQy9DLE1BQU0sUUFBUSxHQUFHLE9BQU8sRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDN0QsTUFBTSxVQUFVLEdBQUcsT0FBTyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztZQUVuRSxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUTtnQkFDckMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXhCLElBQUksVUFBVSxFQUFFO2dCQUNkLE1BQU0sQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2FBQ2hDO1lBRUQsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7aUJBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUNwQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVuRSxTQUFTLENBQWUsTUFBTSxFQUFFLFNBQVMsQ0FBQztpQkFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNULE1BQU0sSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ3REO2dCQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLENBQUMsQ0FBQztZQUVMLFNBQVMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2lCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztpQkFDcEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixrRUFBa0U7Z0JBQ2xFLG9FQUFvRTtnQkFDcEUsa0RBQWtEO2dCQUNsRCx3RUFBd0U7Z0JBQ3hFLDJFQUEyRTtnQkFDM0UsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDekQsQ0FBQyxDQUFDLENBQUM7WUFFTCxTQUFTLENBQWEsTUFBTSxFQUFFLE9BQU8sQ0FBQztpQkFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7aUJBQ3BDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDakIsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNsQix1RUFBdUU7b0JBQ3ZFLHVFQUF1RTtvQkFDdkUsdUVBQXVFO29CQUN2RSwwQkFBMEI7b0JBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO3FCQUFNO29CQUNMLG1FQUFtRTtvQkFDbkUsb0VBQW9FO29CQUNwRSw4Q0FBOEM7b0JBQzlDLHVFQUF1RTtvQkFDdkUsK0NBQStDO29CQUMvQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO29CQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7aUJBQ3hEO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxXQUFXLENBQUMsa0JBQTJCO1FBQzdDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLHFCQUFxQixFQUFFLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxJQUFJLENBQUMsSUFBUztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUM7U0FDM0U7UUFFRCxJQUFJO1lBQ0YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUNwRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGtCQUEyQjtRQUNsRCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7aUlBdEpVLGdCQUFnQixvRkFhakIsc0JBQXNCO3FJQWJyQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYzdCLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3ksIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgU3RvcmUsIG9mQWN0aW9uRGlzcGF0Y2hlZCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGdldFZhbHVlIH0gZnJvbSAnQG5neHMvc3RvcmUvcGx1Z2lucyc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQ29ubmVjdFdlYlNvY2tldCxcbiAgRGlzY29ubmVjdFdlYlNvY2tldCxcbiAgU2VuZFdlYlNvY2tldE1lc3NhZ2UsXG4gIE5HWFNfV0VCU09DS0VUX09QVElPTlMsXG4gIE5neHNXZWJzb2NrZXRQbHVnaW5PcHRpb25zLFxuICBXZWJzb2NrZXRNZXNzYWdlRXJyb3IsXG4gIFdlYlNvY2tldERpc2Nvbm5lY3RlZCxcbiAgVHlwZUtleVByb3BlcnR5TWlzc2luZ0Vycm9yLFxuICBXZWJTb2NrZXRDb25uZWN0aW9uVXBkYXRlZCxcbiAgV2ViU29ja2V0Q29ubmVjdGVkXG59IGZyb20gJy4vc3ltYm9scyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0SGFuZGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3NvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc29ja2V0Q2xvc2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZUtleSA9IHRoaXMuX29wdGlvbnMudHlwZUtleSE7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgQEluamVjdChOR1hTX1dFQlNPQ0tFVF9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzV2Vic29ja2V0UGx1Z2luT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl9zZXR1cEFjdGlvbnNMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQWN0aW9uc0xpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKENvbm5lY3RXZWJTb2NrZXQpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoeyBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0KHBheWxvYWQpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKERpc2Nvbm5lY3RXZWJTb2NrZXQpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKFNlbmRXZWJTb2NrZXRNZXNzYWdlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgIHRoaXMuc2VuZChwYXlsb2FkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25uZWN0KG9wdGlvbnM/OiBOZ3hzV2Vic29ja2V0UGx1Z2luT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQ29ubmVjdGlvbigvKiBmb3JjZWx5Q2xvc2VTb2NrZXQgKi8gdHJ1ZSk7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChuZXcgV2ViU29ja2V0Q29ubmVjdGlvblVwZGF0ZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyhhcnR1cm92dCk6IHdlIHNob3VsZCBub3Qgb3ZlcnJpZGUgZGVmYXVsdCBjb25maWcgdmFsdWVzIGJlY2F1c2UgdGhpcyBicmVha3Mgc3VwcG9ydCBmb3IgaGF2aW5nIG11bHRpcGxlIHNvY2tldCBjb25uZWN0aW9ucy5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMuc2VyaWFsaXplcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNlcmlhbGl6ZXIgPSBvcHRpb25zLnNlcmlhbGl6ZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmRlc2VyaWFsaXplcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zLmRlc2VyaWFsaXplciA9IG9wdGlvbnMuZGVzZXJpYWxpemVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBXZSBlaXRoZXIgdXNlIG9wdGlvbnMgcHJvdmlkZWQgaW4gdGhlIGBDb25uZWN0V2ViU29ja2V0YCBhY3Rpb25cbiAgICAgIC8vIG9yIGZhbGxiYWNrIHRvIGRlZmF1bHQgY29uZmlnIHZhbHVlcy5cbiAgICAgIGNvbnN0IHVybCA9IG9wdGlvbnM/LnVybCB8fCB0aGlzLl9vcHRpb25zLnVybCE7XG4gICAgICBjb25zdCBwcm90b2NvbCA9IG9wdGlvbnM/LnByb3RvY29sIHx8IHRoaXMuX29wdGlvbnMucHJvdG9jb2w7XG4gICAgICBjb25zdCBiaW5hcnlUeXBlID0gb3B0aW9ucz8uYmluYXJ5VHlwZSB8fCB0aGlzLl9vcHRpb25zLmJpbmFyeVR5cGU7XG5cbiAgICAgIGNvbnN0IHNvY2tldCA9ICh0aGlzLl9zb2NrZXQgPSBwcm90b2NvbFxuICAgICAgICA/IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbClcbiAgICAgICAgOiBuZXcgV2ViU29ja2V0KHVybCkpO1xuXG4gICAgICBpZiAoYmluYXJ5VHlwZSkge1xuICAgICAgICBzb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7XG4gICAgICB9XG5cbiAgICAgIGZyb21FdmVudChzb2NrZXQsICdvcGVuJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0b3JlLmRpc3BhdGNoKG5ldyBXZWJTb2NrZXRDb25uZWN0ZWQoKSkpO1xuXG4gICAgICBmcm9tRXZlbnQ8TWVzc2FnZUV2ZW50Pihzb2NrZXQsICdtZXNzYWdlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5fb3B0aW9ucy5kZXNlcmlhbGl6ZXIhKGV2ZW50KTtcbiAgICAgICAgICBjb25zdCB0eXBlID0gZ2V0VmFsdWUobWVzc2FnZSwgdGhpcy5fdHlwZUtleSk7XG4gICAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUtleVByb3BlcnR5TWlzc2luZ0Vycm9yKHRoaXMuX3R5cGVLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaCh7IC4uLm1lc3NhZ2UsIHR5cGUgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBmcm9tRXZlbnQoc29ja2V0LCAnZXJyb3InKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fc29ja2V0Q2xvc2VkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIFRoZSBlcnJvciBldmVudCBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBoYXMgb2NjdXJyZWQgZHVyaW5nIHRoZVxuICAgICAgICAgIC8vIFdlYlNvY2tldCBjb21tdW5pY2F0aW9uLCBhbmQgaXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgdG8gY2xvc2UgdGhlXG4gICAgICAgICAgLy8gV2ViU29ja2V0IGNvbm5lY3Rpb24gd2hlbiBzdWNoIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNhbGwgYF9kaXNjb25uZWN0KClgIGFmdGVyIHRoZSBlcnJvciBldmVudCBoYXMgYmVlbiBmaXJlZC5cbiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgcHJvcGVybHkgY2xvc2VkIHRvIHByZXZlbnRcbiAgICAgICAgICAvLyBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MuXG4gICAgICAgICAgdGhpcy5fZGlzY29ubmVjdCgvKiBmb3JjZWx5Q2xvc2VTb2NrZXQgKi8gdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYnNvY2tldE1lc3NhZ2VFcnJvcihlcnJvcikpO1xuICAgICAgICB9KTtcblxuICAgICAgZnJvbUV2ZW50PENsb3NlRXZlbnQ+KHNvY2tldCwgJ2Nsb3NlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQud2FzQ2xlYW4pIHtcbiAgICAgICAgICAgIC8vIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBgc29ja2V0LmNsb3NlKClgIGFmdGVyIHRoZSBgY2xvc2VgIGV2ZW50XG4gICAgICAgICAgICAvLyBoYXMgYmVlbiBmaXJlZC4gSW4gZmFjdCwgY2FsbGluZyBgc29ja2V0LmNsb3NlKClgIHdpdGhpbiB0aGUgYGNsb3NlYFxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxlciBvciBpbW1lZGlhdGVseSBhZnRlciB0aGUgZXZlbnQgaGFzIGJlZW4gZmlyZWQgY2FuIGxlYWRcbiAgICAgICAgICAgIC8vIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAgICAgICAgICB0aGlzLl9kaXNjb25uZWN0KC8qIGZvcmNlbHlDbG9zZVNvY2tldCAqLyBmYWxzZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgYGNsb3NlYCBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgaXRzIGB3YXNDbGVhbmBcbiAgICAgICAgICAgIC8vIHByb3BlcnR5IGlzIGZhbHN5LCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gd2FzXG4gICAgICAgICAgICAvLyBjbG9zZWQgaW4gYW4gdW5leHBlY3RlZCBvciBhYm5vcm1hbCBtYW5uZXIuXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY2FsbCBgc29ja2V0LmNsb3NlKClgIGluIHRoaXMgc2NlbmFyaW8sIHdlIGNhbiBlbnN1cmUgdGhhdFxuICAgICAgICAgICAgLy8gdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIHByb3Blcmx5IGNsb3NlZC5cbiAgICAgICAgICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYnNvY2tldE1lc3NhZ2VFcnJvcihldmVudCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNjb25uZWN0KGZvcmNlbHlDbG9zZVNvY2tldDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQ29ubmVjdGlvbihmb3JjZWx5Q2xvc2VTb2NrZXQpO1xuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYlNvY2tldERpc2Nvbm5lY3RlZCgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmQoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgY29ubmVjdCB0byB0aGUgc29ja2V0IGJlZm9yZSBzZW5kaW5nIGFueSBkYXRhJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3NvY2tldC5zZW5kKHRoaXMuX29wdGlvbnMuc2VyaWFsaXplciEoZGF0YSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChuZXcgV2Vic29ja2V0TWVzc2FnZUVycm9yKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VDb25uZWN0aW9uKGZvcmNlbHlDbG9zZVNvY2tldDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChmb3JjZWx5Q2xvc2VTb2NrZXQpIHtcbiAgICAgIHRoaXMuX3NvY2tldD8uY2xvc2UoKTtcbiAgICB9XG4gICAgdGhpcy5fc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLl9zb2NrZXRDbG9zZWQkLm5leHQoKTtcbiAgfVxufVxuIl19
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy93ZWJzb2NrZXQtcGx1Z2luL3NyYy93ZWJzb2NrZXQtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHNCQUFzQixFQUV0QixxQkFBcUIsRUFDckIscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIsa0JBQWtCLEVBQ25CLE1BQU0sV0FBVyxDQUFDOzs7QUFHbkIsTUFBTSxPQUFPLGdCQUFnQjtJQVMzQixZQUNVLE1BQWEsRUFDYixPQUFlLEVBQ2YsU0FBa0IsRUFDYyxRQUFvQztRQUhwRSxXQUFNLEdBQU4sTUFBTSxDQUFPO1FBQ2IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVM7UUFDYyxhQUFRLEdBQVIsUUFBUSxDQUE0QjtRQVp0RSxZQUFPLEdBQXFCLElBQUksQ0FBQztRQUV4QixtQkFBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFckMsYUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBUSxDQUFDO1FBRWxDLGNBQVMsR0FBRyxJQUFJLGFBQWEsQ0FBTyxDQUFDLENB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SyxFQUFFO1lBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0gsQ0FBQztJQUVPLGdCQUFnQixDQUFDLGtCQUEyQjtRQUNsRCxJQUFJLGtCQUFrQixFQUFFO1lBQ3RCLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7aUlBdEpVLGdCQUFnQixvRkFhakIsc0JBQXNCO3FJQWJyQixnQkFBZ0IsY0FESCxNQUFNOzsyRkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBYzdCLE1BQU07MkJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0LCBPbkRlc3Ryb3ksIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgU3RvcmUsIG9mQWN0aW9uRGlzcGF0Y2hlZCB9IGZyb20gJ0BuZ3hzL3N0b3JlJztcbmltcG9ydCB7IGdldFZhbHVlIH0gZnJvbSAnQG5neHMvc3RvcmUvcGx1Z2lucyc7XG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0LCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQ29ubmVjdFdlYlNvY2tldCxcbiAgRGlzY29ubmVjdFdlYlNvY2tldCxcbiAgU2VuZFdlYlNvY2tldE1lc3NhZ2UsXG4gIE5HWFNfV0VCU09DS0VUX09QVElPTlMsXG4gIE5neHNXZWJTb2NrZXRQbHVnaW5PcHRpb25zLFxuICBXZWJTb2NrZXRNZXNzYWdlRXJyb3IsXG4gIFdlYlNvY2tldERpc2Nvbm5lY3RlZCxcbiAgVHlwZUtleVByb3BlcnR5TWlzc2luZ0Vycm9yLFxuICBXZWJTb2NrZXRDb25uZWN0aW9uVXBkYXRlZCxcbiAgV2ViU29ja2V0Q29ubmVjdGVkXG59IGZyb20gJy4vc3ltYm9scyc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0SGFuZGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3NvY2tldDogV2ViU29ja2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc29ja2V0Q2xvc2VkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZUtleSA9IHRoaXMuX29wdGlvbnMudHlwZUtleSE7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBuZXcgUmVwbGF5U3ViamVjdDx2b2lkPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9zdG9yZTogU3RvcmUsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfYWN0aW9ucyQ6IEFjdGlvbnMsXG4gICAgQEluamVjdChOR1hTX1dFQlNPQ0tFVF9PUFRJT05TKSBwcml2YXRlIF9vcHRpb25zOiBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9uc1xuICApIHtcbiAgICB0aGlzLl9zZXR1cEFjdGlvbnNMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldHVwQWN0aW9uc0xpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKENvbm5lY3RXZWJTb2NrZXQpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoeyBwYXlsb2FkIH0pID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0KHBheWxvYWQpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKERpc2Nvbm5lY3RXZWJTb2NrZXQpLCB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9hY3Rpb25zJFxuICAgICAgLnBpcGUob2ZBY3Rpb25EaXNwYXRjaGVkKFNlbmRXZWJTb2NrZXRNZXNzYWdlKSwgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHsgcGF5bG9hZCB9KSA9PiB7XG4gICAgICAgIHRoaXMuc2VuZChwYXlsb2FkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25uZWN0KG9wdGlvbnM/OiBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQ29ubmVjdGlvbigvKiBmb3JjZWx5Q2xvc2VTb2NrZXQgKi8gdHJ1ZSk7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChuZXcgV2ViU29ja2V0Q29ubmVjdGlvblVwZGF0ZWQoKSk7XG4gICAgfVxuXG4gICAgLy8gVE9ETyhhcnR1cm92dCk6IHdlIHNob3VsZCBub3Qgb3ZlcnJpZGUgZGVmYXVsdCBjb25maWcgdmFsdWVzIGJlY2F1c2UgdGhpcyBicmVha3Mgc3VwcG9ydCBmb3IgaGF2aW5nIG11bHRpcGxlIHNvY2tldCBjb25uZWN0aW9ucy5cbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMuc2VyaWFsaXplcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zLnNlcmlhbGl6ZXIgPSBvcHRpb25zLnNlcmlhbGl6ZXI7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmRlc2VyaWFsaXplcikge1xuICAgICAgICB0aGlzLl9vcHRpb25zLmRlc2VyaWFsaXplciA9IG9wdGlvbnMuZGVzZXJpYWxpemVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAvLyBXZSBlaXRoZXIgdXNlIG9wdGlvbnMgcHJvdmlkZWQgaW4gdGhlIGBDb25uZWN0V2ViU29ja2V0YCBhY3Rpb25cbiAgICAgIC8vIG9yIGZhbGxiYWNrIHRvIGRlZmF1bHQgY29uZmlnIHZhbHVlcy5cbiAgICAgIGNvbnN0IHVybCA9IG9wdGlvbnM/LnVybCB8fCB0aGlzLl9vcHRpb25zLnVybCE7XG4gICAgICBjb25zdCBwcm90b2NvbCA9IG9wdGlvbnM/LnByb3RvY29sIHx8IHRoaXMuX29wdGlvbnMucHJvdG9jb2w7XG4gICAgICBjb25zdCBiaW5hcnlUeXBlID0gb3B0aW9ucz8uYmluYXJ5VHlwZSB8fCB0aGlzLl9vcHRpb25zLmJpbmFyeVR5cGU7XG5cbiAgICAgIGNvbnN0IHNvY2tldCA9ICh0aGlzLl9zb2NrZXQgPSBwcm90b2NvbFxuICAgICAgICA/IG5ldyBXZWJTb2NrZXQodXJsLCBwcm90b2NvbClcbiAgICAgICAgOiBuZXcgV2ViU29ja2V0KHVybCkpO1xuXG4gICAgICBpZiAoYmluYXJ5VHlwZSkge1xuICAgICAgICBzb2NrZXQuYmluYXJ5VHlwZSA9IGJpbmFyeVR5cGU7XG4gICAgICB9XG5cbiAgICAgIGZyb21FdmVudChzb2NrZXQsICdvcGVuJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0b3JlLmRpc3BhdGNoKG5ldyBXZWJTb2NrZXRDb25uZWN0ZWQoKSkpO1xuXG4gICAgICBmcm9tRXZlbnQ8TWVzc2FnZUV2ZW50Pihzb2NrZXQsICdtZXNzYWdlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5fb3B0aW9ucy5kZXNlcmlhbGl6ZXIhKGV2ZW50KTtcbiAgICAgICAgICBjb25zdCB0eXBlID0gZ2V0VmFsdWUobWVzc2FnZSwgdGhpcy5fdHlwZUtleSk7XG4gICAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUtleVByb3BlcnR5TWlzc2luZ0Vycm9yKHRoaXMuX3R5cGVLZXkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaCh7IC4uLm1lc3NhZ2UsIHR5cGUgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICBmcm9tRXZlbnQoc29ja2V0LCAnZXJyb3InKVxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fc29ja2V0Q2xvc2VkJCkpXG4gICAgICAgIC5zdWJzY3JpYmUoZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIFRoZSBlcnJvciBldmVudCBpbmRpY2F0ZXMgdGhhdCBhbiBlcnJvciBoYXMgb2NjdXJyZWQgZHVyaW5nIHRoZVxuICAgICAgICAgIC8vIFdlYlNvY2tldCBjb21tdW5pY2F0aW9uLCBhbmQgaXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgdG8gY2xvc2UgdGhlXG4gICAgICAgICAgLy8gV2ViU29ja2V0IGNvbm5lY3Rpb24gd2hlbiBzdWNoIGFuIGVycm9yIG9jY3Vycy5cbiAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNhbGwgYF9kaXNjb25uZWN0KClgIGFmdGVyIHRoZSBlcnJvciBldmVudCBoYXMgYmVlbiBmaXJlZC5cbiAgICAgICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gaXMgcHJvcGVybHkgY2xvc2VkIHRvIHByZXZlbnRcbiAgICAgICAgICAvLyBwb3RlbnRpYWwgcmVzb3VyY2UgbGVha3MuXG4gICAgICAgICAgdGhpcy5fZGlzY29ubmVjdCgvKiBmb3JjZWx5Q2xvc2VTb2NrZXQgKi8gdHJ1ZSk7XG4gICAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYlNvY2tldE1lc3NhZ2VFcnJvcihlcnJvcikpO1xuICAgICAgICB9KTtcblxuICAgICAgZnJvbUV2ZW50PENsb3NlRXZlbnQ+KHNvY2tldCwgJ2Nsb3NlJylcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX3NvY2tldENsb3NlZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKGV2ZW50ID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQud2FzQ2xlYW4pIHtcbiAgICAgICAgICAgIC8vIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY2FsbCBgc29ja2V0LmNsb3NlKClgIGFmdGVyIHRoZSBgY2xvc2VgIGV2ZW50XG4gICAgICAgICAgICAvLyBoYXMgYmVlbiBmaXJlZC4gSW4gZmFjdCwgY2FsbGluZyBgc29ja2V0LmNsb3NlKClgIHdpdGhpbiB0aGUgYGNsb3NlYFxuICAgICAgICAgICAgLy8gZXZlbnQgaGFuZGxlciBvciBpbW1lZGlhdGVseSBhZnRlciB0aGUgZXZlbnQgaGFzIGJlZW4gZmlyZWQgY2FuIGxlYWRcbiAgICAgICAgICAgIC8vIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IuXG4gICAgICAgICAgICB0aGlzLl9kaXNjb25uZWN0KC8qIGZvcmNlbHlDbG9zZVNvY2tldCAqLyBmYWxzZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIElmIHRoZSBXZWJTb2NrZXQgYGNsb3NlYCBldmVudCBoYXMgYmVlbiBmaXJlZCBhbmQgaXRzIGB3YXNDbGVhbmBcbiAgICAgICAgICAgIC8vIHByb3BlcnR5IGlzIGZhbHN5LCBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gd2FzXG4gICAgICAgICAgICAvLyBjbG9zZWQgaW4gYW4gdW5leHBlY3RlZCBvciBhYm5vcm1hbCBtYW5uZXIuXG4gICAgICAgICAgICAvLyBXZSBzaG91bGQgY2FsbCBgc29ja2V0LmNsb3NlKClgIGluIHRoaXMgc2NlbmFyaW8sIHdlIGNhbiBlbnN1cmUgdGhhdFxuICAgICAgICAgICAgLy8gdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIHByb3Blcmx5IGNsb3NlZC5cbiAgICAgICAgICAgIHRoaXMuX2Rpc2Nvbm5lY3QoLyogZm9yY2VseUNsb3NlU29ja2V0ICovIHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYlNvY2tldE1lc3NhZ2VFcnJvcihldmVudCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kaXNjb25uZWN0KGZvcmNlbHlDbG9zZVNvY2tldDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRoaXMuX2Nsb3NlQ29ubmVjdGlvbihmb3JjZWx5Q2xvc2VTb2NrZXQpO1xuICAgICAgdGhpcy5fc3RvcmUuZGlzcGF0Y2gobmV3IFdlYlNvY2tldERpc2Nvbm5lY3RlZCgpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbmQoZGF0YTogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zb2NrZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgY29ubmVjdCB0byB0aGUgc29ja2V0IGJlZm9yZSBzZW5kaW5nIGFueSBkYXRhJyk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3NvY2tldC5zZW5kKHRoaXMuX29wdGlvbnMuc2VyaWFsaXplciEoZGF0YSkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLl9zdG9yZS5kaXNwYXRjaChuZXcgV2ViU29ja2V0TWVzc2FnZUVycm9yKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2xvc2VDb25uZWN0aW9uKGZvcmNlbHlDbG9zZVNvY2tldDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChmb3JjZWx5Q2xvc2VTb2NrZXQpIHtcbiAgICAgIHRoaXMuX3NvY2tldD8uY2xvc2UoKTtcbiAgICB9XG4gICAgdGhpcy5fc29ja2V0ID0gbnVsbDtcbiAgICB0aGlzLl9zb2NrZXRDbG9zZWQkLm5leHQoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
2
2
|
import { ɵgetProviders } from './providers';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export class
|
|
4
|
+
export class NgxsWebSocketPluginModule {
|
|
5
5
|
static forRoot(options) {
|
|
6
6
|
return {
|
|
7
|
-
ngModule:
|
|
7
|
+
ngModule: NgxsWebSocketPluginModule,
|
|
8
8
|
providers: ɵgetProviders(options)
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
12
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type:
|
|
13
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
11
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule }); }
|
|
13
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule }); }
|
|
14
14
|
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule, decorators: [{
|
|
16
16
|
type: NgModule
|
|
17
17
|
}] });
|
|
18
18
|
export function withNgxsWebSocketPlugin(options) {
|
|
19
19
|
return makeEnvironmentProviders(ɵgetProviders(options));
|
|
20
20
|
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL3dlYnNvY2tldC1wbHVnaW4vc3JjL3dlYnNvY2tldC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFFBQVEsRUFHUix3QkFBd0IsRUFDekIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFJNUMsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxNQUFNLENBQUMsT0FBTyxDQUNaLE9BQW9DO1FBRXBDLE9BQU87WUFDTCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLFNBQVMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDO1NBQ2xDLENBQUM7SUFDSixDQUFDO2lJQVJVLHlCQUF5QjtrSUFBekIseUJBQXlCO2tJQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRHJDLFFBQVE7O0FBWVQsTUFBTSxVQUFVLHVCQUF1QixDQUNyQyxPQUFvQztJQUVwQyxPQUFPLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBOZ01vZHVsZSxcbiAgTW9kdWxlV2l0aFByb3ZpZGVycyxcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVyc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgybVnZXRQcm92aWRlcnMgfSBmcm9tICcuL3Byb3ZpZGVycyc7XG5pbXBvcnQgeyBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9ucyB9IGZyb20gJy4vc3ltYm9scyc7XG5cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgTmd4c1dlYlNvY2tldFBsdWdpbk1vZHVsZSB7XG4gIHN0YXRpYyBmb3JSb290KFxuICAgIG9wdGlvbnM/OiBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9uc1xuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPE5neHNXZWJTb2NrZXRQbHVnaW5Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neHNXZWJTb2NrZXRQbHVnaW5Nb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IMm1Z2V0UHJvdmlkZXJzKG9wdGlvbnMpXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aE5neHNXZWJTb2NrZXRQbHVnaW4oXG4gIG9wdGlvbnM/OiBOZ3hzV2ViU29ja2V0UGx1Z2luT3B0aW9uc1xuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICByZXR1cm4gbWFrZUVudmlyb25tZW50UHJvdmlkZXJzKMm1Z2V0UHJvdmlkZXJzKG9wdGlvbnMpKTtcbn1cbiJdfQ==
|
|
@@ -21,7 +21,7 @@ class ConnectWebSocket {
|
|
|
21
21
|
/**
|
|
22
22
|
* Action triggered when a error ocurrs
|
|
23
23
|
*/
|
|
24
|
-
class
|
|
24
|
+
class WebSocketMessageError {
|
|
25
25
|
static { this.type = '[WebSocket] Message Error'; }
|
|
26
26
|
constructor(payload) {
|
|
27
27
|
this.payload = payload;
|
|
@@ -152,7 +152,7 @@ class WebSocketHandler {
|
|
|
152
152
|
// This ensures that the WebSocket connection is properly closed to prevent
|
|
153
153
|
// potential resource leaks.
|
|
154
154
|
this._disconnect(/* forcelyCloseSocket */ true);
|
|
155
|
-
this._store.dispatch(new
|
|
155
|
+
this._store.dispatch(new WebSocketMessageError(error));
|
|
156
156
|
});
|
|
157
157
|
fromEvent(socket, 'close')
|
|
158
158
|
.pipe(takeUntil(this._socketClosed$))
|
|
@@ -171,7 +171,7 @@ class WebSocketHandler {
|
|
|
171
171
|
// We should call `socket.close()` in this scenario, we can ensure that
|
|
172
172
|
// the WebSocket connection is properly closed.
|
|
173
173
|
this._disconnect(/* forcelyCloseSocket */ true);
|
|
174
|
-
this._store.dispatch(new
|
|
174
|
+
this._store.dispatch(new WebSocketMessageError(event));
|
|
175
175
|
}
|
|
176
176
|
});
|
|
177
177
|
});
|
|
@@ -190,7 +190,7 @@ class WebSocketHandler {
|
|
|
190
190
|
this._socket.send(this._options.serializer(data));
|
|
191
191
|
}
|
|
192
192
|
catch (error) {
|
|
193
|
-
this._store.dispatch(new
|
|
193
|
+
this._store.dispatch(new WebSocketMessageError(error));
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
_closeConnection(forcelyCloseSocket) {
|
|
@@ -242,18 +242,18 @@ function ɵgetProviders(options) {
|
|
|
242
242
|
];
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
-
class
|
|
245
|
+
class NgxsWebSocketPluginModule {
|
|
246
246
|
static forRoot(options) {
|
|
247
247
|
return {
|
|
248
|
-
ngModule:
|
|
248
|
+
ngModule: NgxsWebSocketPluginModule,
|
|
249
249
|
providers: ɵgetProviders(options)
|
|
250
250
|
};
|
|
251
251
|
}
|
|
252
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
253
|
-
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type:
|
|
254
|
-
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
252
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
253
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule }); }
|
|
254
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule }); }
|
|
255
255
|
}
|
|
256
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type:
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.5", ngImport: i0, type: NgxsWebSocketPluginModule, decorators: [{
|
|
257
257
|
type: NgModule
|
|
258
258
|
}] });
|
|
259
259
|
function withNgxsWebSocketPlugin(options) {
|
|
@@ -268,5 +268,5 @@ function withNgxsWebSocketPlugin(options) {
|
|
|
268
268
|
* Generated bundle index. Do not edit.
|
|
269
269
|
*/
|
|
270
270
|
|
|
271
|
-
export { ConnectWebSocket, DisconnectWebSocket,
|
|
271
|
+
export { ConnectWebSocket, DisconnectWebSocket, NgxsWebSocketPluginModule, SendWebSocketMessage, WebSocketConnected, WebSocketConnectionUpdated, WebSocketDisconnected, WebSocketMessageError, withNgxsWebSocketPlugin, NGXS_WEBSOCKET_OPTIONS as ɵNGXS_WEBSOCKET_OPTIONS };
|
|
272
272
|
//# sourceMappingURL=ngxs-websocket-plugin.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxs-websocket-plugin.mjs","sources":["../../../packages/websocket-plugin/src/symbols.ts","../../../packages/websocket-plugin/src/websocket-handler.ts","../../../packages/websocket-plugin/src/providers.ts","../../../packages/websocket-plugin/src/websocket.module.ts","../../../packages/websocket-plugin/index.ts","../../../packages/websocket-plugin/ngxs-websocket-plugin.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\ndeclare const ngDevMode: boolean;\n\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;\n\nexport const NGXS_WEBSOCKET_OPTIONS = new InjectionToken<NgxsWebsocketPluginOptions>(\n NG_DEV_MODE ? 'NGXS_WEBSOCKET_OPTIONS' : ''\n);\n\nexport const USER_OPTIONS = new InjectionToken(NG_DEV_MODE ? 'USER_OPTIONS' : '');\n\nexport interface NgxsWebsocketPluginOptions {\n /**\n * URL of the websocket.\n */\n url?: string;\n\n /**\n * Either a single protocol string or an array of protocol strings.\n * These strings are used to indicate sub-protocols, so that a single server\n * can implement multiple WebSocket sub-protocols (for example, you might want one server to be able\n * to handle different types of interactions depending on the specified protocol).\n * If you don't specify a protocol string, an empty string is assumed.\n */\n protocol?: string | string[];\n\n /**\n * Sets the `binaryType` property of the underlying WebSocket.\n */\n binaryType?: 'blob' | 'arraybuffer';\n\n /**\n * The property name to distigunish this type for the store.\n * Default: 'type'\n */\n typeKey?: string;\n\n /**\n * Interval to try and reconnect.\n * Default: 5000\n */\n reconnectInterval?: number;\n\n /**\n * Number of reconnect attemps.\n * Default: 10\n */\n reconnectAttempts?: number;\n\n /**\n * Serializer to call before sending messages\n * Default: `json.stringify`\n */\n serializer?: (data: any) => string;\n\n /**\n * Deseralizer before publishing the message.\n */\n deserializer?: (e: MessageEvent) => any;\n}\n\n/**\n * Action to connect to the websocket. Optionally pass a URL.\n */\nexport class ConnectWebSocket {\n static readonly type = '[WebSocket] Connect';\n\n constructor(public payload?: NgxsWebsocketPluginOptions) {}\n}\n\n/**\n * Action triggered when a error ocurrs\n */\nexport class WebsocketMessageError {\n static readonly type = '[WebSocket] Message Error';\n\n constructor(public payload: any) {}\n}\n\n/**\n * Action to disconnect the websocket.\n */\nexport class DisconnectWebSocket {\n static readonly type = '[WebSocket] Disconnect';\n}\n\n/**\n * Action triggered when websocket is connected\n */\nexport class WebSocketConnected {\n static readonly type = '[WebSocket] Connected';\n}\n\n/**\n * Action triggered when websocket is disconnected\n */\nexport class WebSocketDisconnected {\n static readonly type = '[WebSocket] Disconnected';\n}\n\n/**\n * Action to send to the server.\n */\nexport class SendWebSocketMessage {\n static readonly type = '[WebSocket] Send Message';\n\n constructor(public payload: any) {}\n}\n\n/**\n * Action dispatched when the user tries to connect if the connection already exists.\n */\nexport class WebSocketConnectionUpdated {\n static readonly type = '[WebSocket] Connection Updated';\n}\n\n/**\n * This error is thrown where there is no `type` (or custom `typeKey`) property\n * on the message that came from the server side socket\n */\nexport class TypeKeyPropertyMissingError extends Error {\n constructor(typeKey: string) {\n super(`Property ${typeKey} is missing on the socket message`);\n }\n}\n","import { Injectable, Inject, OnDestroy, NgZone } from '@angular/core';\nimport { Actions, Store, ofActionDispatched } from '@ngxs/store';\nimport { getValue } from '@ngxs/store/plugins';\nimport { ReplaySubject, Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ConnectWebSocket,\n DisconnectWebSocket,\n SendWebSocketMessage,\n NGXS_WEBSOCKET_OPTIONS,\n NgxsWebsocketPluginOptions,\n WebsocketMessageError,\n WebSocketDisconnected,\n TypeKeyPropertyMissingError,\n WebSocketConnectionUpdated,\n WebSocketConnected\n} from './symbols';\n\n@Injectable({ providedIn: 'root' })\nexport class WebSocketHandler implements OnDestroy {\n private _socket: WebSocket | null = null;\n\n private readonly _socketClosed$ = new Subject<void>();\n\n private readonly _typeKey = this._options.typeKey!;\n\n private readonly _destroy$ = new ReplaySubject<void>(1);\n\n constructor(\n private _store: Store,\n private _ngZone: NgZone,\n private _actions$: Actions,\n @Inject(NGXS_WEBSOCKET_OPTIONS) private _options: NgxsWebsocketPluginOptions\n ) {\n this._setupActionsListeners();\n }\n\n ngOnDestroy(): void {\n this._disconnect(/* forcelyCloseSocket */ true);\n this._destroy$.next();\n }\n\n private _setupActionsListeners(): void {\n this._actions$\n .pipe(ofActionDispatched(ConnectWebSocket), takeUntil(this._destroy$))\n .subscribe(({ payload }) => {\n this.connect(payload);\n });\n\n this._actions$\n .pipe(ofActionDispatched(DisconnectWebSocket), takeUntil(this._destroy$))\n .subscribe(() => {\n this._disconnect(/* forcelyCloseSocket */ true);\n });\n\n this._actions$\n .pipe(ofActionDispatched(SendWebSocketMessage), takeUntil(this._destroy$))\n .subscribe(({ payload }) => {\n this.send(payload);\n });\n }\n\n private connect(options?: NgxsWebsocketPluginOptions): void {\n if (this._socket) {\n this._closeConnection(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebSocketConnectionUpdated());\n }\n\n // TODO(arturovt): we should not override default config values because this breaks support for having multiple socket connections.\n if (options) {\n if (options.serializer) {\n this._options.serializer = options.serializer;\n }\n\n if (options.deserializer) {\n this._options.deserializer = options.deserializer;\n }\n }\n\n this._ngZone.runOutsideAngular(() => {\n // We either use options provided in the `ConnectWebSocket` action\n // or fallback to default config values.\n const url = options?.url || this._options.url!;\n const protocol = options?.protocol || this._options.protocol;\n const binaryType = options?.binaryType || this._options.binaryType;\n\n const socket = (this._socket = protocol\n ? new WebSocket(url, protocol)\n : new WebSocket(url));\n\n if (binaryType) {\n socket.binaryType = binaryType;\n }\n\n fromEvent(socket, 'open')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(() => this._store.dispatch(new WebSocketConnected()));\n\n fromEvent<MessageEvent>(socket, 'message')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(event => {\n const message = this._options.deserializer!(event);\n const type = getValue(message, this._typeKey);\n if (!type) {\n throw new TypeKeyPropertyMissingError(this._typeKey);\n }\n this._store.dispatch({ ...message, type });\n });\n\n fromEvent(socket, 'error')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(error => {\n // The error event indicates that an error has occurred during the\n // WebSocket communication, and it is often appropriate to close the\n // WebSocket connection when such an error occurs.\n // We need to call `_disconnect()` after the error event has been fired.\n // This ensures that the WebSocket connection is properly closed to prevent\n // potential resource leaks.\n this._disconnect(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebsocketMessageError(error));\n });\n\n fromEvent<CloseEvent>(socket, 'close')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(event => {\n if (event.wasClean) {\n // It is not necessary to call `socket.close()` after the `close` event\n // has been fired. In fact, calling `socket.close()` within the `close`\n // event handler or immediately after the event has been fired can lead\n // to unexpected behavior.\n this._disconnect(/* forcelyCloseSocket */ false);\n } else {\n // If the WebSocket `close` event has been fired and its `wasClean`\n // property is falsy, it indicates that the WebSocket connection was\n // closed in an unexpected or abnormal manner.\n // We should call `socket.close()` in this scenario, we can ensure that\n // the WebSocket connection is properly closed.\n this._disconnect(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebsocketMessageError(event));\n }\n });\n });\n }\n\n private _disconnect(forcelyCloseSocket: boolean): void {\n if (this._socket) {\n this._closeConnection(forcelyCloseSocket);\n this._store.dispatch(new WebSocketDisconnected());\n }\n }\n\n private send(data: any): void {\n if (!this._socket) {\n throw new Error('You must connect to the socket before sending any data');\n }\n\n try {\n this._socket.send(this._options.serializer!(data));\n } catch (error) {\n this._store.dispatch(new WebsocketMessageError(error));\n }\n }\n\n private _closeConnection(forcelyCloseSocket: boolean): void {\n if (forcelyCloseSocket) {\n this._socket?.close();\n }\n this._socket = null;\n this._socketClosed$.next();\n }\n}\n","import { APP_INITIALIZER } from '@angular/core';\n\nimport { WebSocketHandler } from './websocket-handler';\nimport { USER_OPTIONS, NGXS_WEBSOCKET_OPTIONS, NgxsWebsocketPluginOptions } from './symbols';\n\nexport function ɵwebsocketOptionsFactory(options: NgxsWebsocketPluginOptions) {\n return {\n reconnectInterval: 5000,\n reconnectAttempts: 10,\n typeKey: 'type',\n deserializer(e: MessageEvent) {\n return JSON.parse(e.data);\n },\n serializer(value: any) {\n return JSON.stringify(value);\n },\n ...options\n };\n}\n\nexport function ɵgetProviders(options?: NgxsWebsocketPluginOptions) {\n return [\n { provide: USER_OPTIONS, useValue: options },\n {\n provide: NGXS_WEBSOCKET_OPTIONS,\n useFactory: ɵwebsocketOptionsFactory,\n deps: [USER_OPTIONS]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: () => () => {},\n deps: [WebSocketHandler],\n multi: true\n }\n ];\n}\n","import {\n NgModule,\n ModuleWithProviders,\n EnvironmentProviders,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { ɵgetProviders } from './providers';\nimport { NgxsWebsocketPluginOptions } from './symbols';\n\n@NgModule()\nexport class NgxsWebsocketPluginModule {\n static forRoot(\n options?: NgxsWebsocketPluginOptions\n ): ModuleWithProviders<NgxsWebsocketPluginModule> {\n return {\n ngModule: NgxsWebsocketPluginModule,\n providers: ɵgetProviders(options)\n };\n }\n}\n\nexport function withNgxsWebSocketPlugin(\n options?: NgxsWebsocketPluginOptions\n): EnvironmentProviders {\n return makeEnvironmentProviders(ɵgetProviders(options));\n}\n","/**\n * The public api for consumers of @ngxs/websocket-plugin\n */\nexport * from './src/public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngxs-websocket-plugin.mjs","sources":["../../../packages/websocket-plugin/src/symbols.ts","../../../packages/websocket-plugin/src/websocket-handler.ts","../../../packages/websocket-plugin/src/providers.ts","../../../packages/websocket-plugin/src/websocket.module.ts","../../../packages/websocket-plugin/index.ts","../../../packages/websocket-plugin/ngxs-websocket-plugin.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\ndeclare const ngDevMode: boolean;\n\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || ngDevMode;\n\nexport const NGXS_WEBSOCKET_OPTIONS = new InjectionToken<NgxsWebSocketPluginOptions>(\n NG_DEV_MODE ? 'NGXS_WEBSOCKET_OPTIONS' : ''\n);\n\nexport const USER_OPTIONS = new InjectionToken(NG_DEV_MODE ? 'USER_OPTIONS' : '');\n\nexport interface NgxsWebSocketPluginOptions {\n /**\n * URL of the websocket.\n */\n url?: string;\n\n /**\n * Either a single protocol string or an array of protocol strings.\n * These strings are used to indicate sub-protocols, so that a single server\n * can implement multiple WebSocket sub-protocols (for example, you might want one server to be able\n * to handle different types of interactions depending on the specified protocol).\n * If you don't specify a protocol string, an empty string is assumed.\n */\n protocol?: string | string[];\n\n /**\n * Sets the `binaryType` property of the underlying WebSocket.\n */\n binaryType?: 'blob' | 'arraybuffer';\n\n /**\n * The property name to distigunish this type for the store.\n * Default: 'type'\n */\n typeKey?: string;\n\n /**\n * Interval to try and reconnect.\n * Default: 5000\n */\n reconnectInterval?: number;\n\n /**\n * Number of reconnect attemps.\n * Default: 10\n */\n reconnectAttempts?: number;\n\n /**\n * Serializer to call before sending messages\n * Default: `json.stringify`\n */\n serializer?: (data: any) => string;\n\n /**\n * Deseralizer before publishing the message.\n */\n deserializer?: (e: MessageEvent) => any;\n}\n\n/**\n * Action to connect to the websocket. Optionally pass a URL.\n */\nexport class ConnectWebSocket {\n static readonly type = '[WebSocket] Connect';\n\n constructor(public payload?: NgxsWebSocketPluginOptions) {}\n}\n\n/**\n * Action triggered when a error ocurrs\n */\nexport class WebSocketMessageError {\n static readonly type = '[WebSocket] Message Error';\n\n constructor(public payload: any) {}\n}\n\n/**\n * Action to disconnect the websocket.\n */\nexport class DisconnectWebSocket {\n static readonly type = '[WebSocket] Disconnect';\n}\n\n/**\n * Action triggered when websocket is connected\n */\nexport class WebSocketConnected {\n static readonly type = '[WebSocket] Connected';\n}\n\n/**\n * Action triggered when websocket is disconnected\n */\nexport class WebSocketDisconnected {\n static readonly type = '[WebSocket] Disconnected';\n}\n\n/**\n * Action to send to the server.\n */\nexport class SendWebSocketMessage {\n static readonly type = '[WebSocket] Send Message';\n\n constructor(public payload: any) {}\n}\n\n/**\n * Action dispatched when the user tries to connect if the connection already exists.\n */\nexport class WebSocketConnectionUpdated {\n static readonly type = '[WebSocket] Connection Updated';\n}\n\n/**\n * This error is thrown where there is no `type` (or custom `typeKey`) property\n * on the message that came from the server side socket\n */\nexport class TypeKeyPropertyMissingError extends Error {\n constructor(typeKey: string) {\n super(`Property ${typeKey} is missing on the socket message`);\n }\n}\n","import { Injectable, Inject, OnDestroy, NgZone } from '@angular/core';\nimport { Actions, Store, ofActionDispatched } from '@ngxs/store';\nimport { getValue } from '@ngxs/store/plugins';\nimport { ReplaySubject, Subject, fromEvent } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n ConnectWebSocket,\n DisconnectWebSocket,\n SendWebSocketMessage,\n NGXS_WEBSOCKET_OPTIONS,\n NgxsWebSocketPluginOptions,\n WebSocketMessageError,\n WebSocketDisconnected,\n TypeKeyPropertyMissingError,\n WebSocketConnectionUpdated,\n WebSocketConnected\n} from './symbols';\n\n@Injectable({ providedIn: 'root' })\nexport class WebSocketHandler implements OnDestroy {\n private _socket: WebSocket | null = null;\n\n private readonly _socketClosed$ = new Subject<void>();\n\n private readonly _typeKey = this._options.typeKey!;\n\n private readonly _destroy$ = new ReplaySubject<void>(1);\n\n constructor(\n private _store: Store,\n private _ngZone: NgZone,\n private _actions$: Actions,\n @Inject(NGXS_WEBSOCKET_OPTIONS) private _options: NgxsWebSocketPluginOptions\n ) {\n this._setupActionsListeners();\n }\n\n ngOnDestroy(): void {\n this._disconnect(/* forcelyCloseSocket */ true);\n this._destroy$.next();\n }\n\n private _setupActionsListeners(): void {\n this._actions$\n .pipe(ofActionDispatched(ConnectWebSocket), takeUntil(this._destroy$))\n .subscribe(({ payload }) => {\n this.connect(payload);\n });\n\n this._actions$\n .pipe(ofActionDispatched(DisconnectWebSocket), takeUntil(this._destroy$))\n .subscribe(() => {\n this._disconnect(/* forcelyCloseSocket */ true);\n });\n\n this._actions$\n .pipe(ofActionDispatched(SendWebSocketMessage), takeUntil(this._destroy$))\n .subscribe(({ payload }) => {\n this.send(payload);\n });\n }\n\n private connect(options?: NgxsWebSocketPluginOptions): void {\n if (this._socket) {\n this._closeConnection(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebSocketConnectionUpdated());\n }\n\n // TODO(arturovt): we should not override default config values because this breaks support for having multiple socket connections.\n if (options) {\n if (options.serializer) {\n this._options.serializer = options.serializer;\n }\n\n if (options.deserializer) {\n this._options.deserializer = options.deserializer;\n }\n }\n\n this._ngZone.runOutsideAngular(() => {\n // We either use options provided in the `ConnectWebSocket` action\n // or fallback to default config values.\n const url = options?.url || this._options.url!;\n const protocol = options?.protocol || this._options.protocol;\n const binaryType = options?.binaryType || this._options.binaryType;\n\n const socket = (this._socket = protocol\n ? new WebSocket(url, protocol)\n : new WebSocket(url));\n\n if (binaryType) {\n socket.binaryType = binaryType;\n }\n\n fromEvent(socket, 'open')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(() => this._store.dispatch(new WebSocketConnected()));\n\n fromEvent<MessageEvent>(socket, 'message')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(event => {\n const message = this._options.deserializer!(event);\n const type = getValue(message, this._typeKey);\n if (!type) {\n throw new TypeKeyPropertyMissingError(this._typeKey);\n }\n this._store.dispatch({ ...message, type });\n });\n\n fromEvent(socket, 'error')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(error => {\n // The error event indicates that an error has occurred during the\n // WebSocket communication, and it is often appropriate to close the\n // WebSocket connection when such an error occurs.\n // We need to call `_disconnect()` after the error event has been fired.\n // This ensures that the WebSocket connection is properly closed to prevent\n // potential resource leaks.\n this._disconnect(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebSocketMessageError(error));\n });\n\n fromEvent<CloseEvent>(socket, 'close')\n .pipe(takeUntil(this._socketClosed$))\n .subscribe(event => {\n if (event.wasClean) {\n // It is not necessary to call `socket.close()` after the `close` event\n // has been fired. In fact, calling `socket.close()` within the `close`\n // event handler or immediately after the event has been fired can lead\n // to unexpected behavior.\n this._disconnect(/* forcelyCloseSocket */ false);\n } else {\n // If the WebSocket `close` event has been fired and its `wasClean`\n // property is falsy, it indicates that the WebSocket connection was\n // closed in an unexpected or abnormal manner.\n // We should call `socket.close()` in this scenario, we can ensure that\n // the WebSocket connection is properly closed.\n this._disconnect(/* forcelyCloseSocket */ true);\n this._store.dispatch(new WebSocketMessageError(event));\n }\n });\n });\n }\n\n private _disconnect(forcelyCloseSocket: boolean): void {\n if (this._socket) {\n this._closeConnection(forcelyCloseSocket);\n this._store.dispatch(new WebSocketDisconnected());\n }\n }\n\n private send(data: any): void {\n if (!this._socket) {\n throw new Error('You must connect to the socket before sending any data');\n }\n\n try {\n this._socket.send(this._options.serializer!(data));\n } catch (error) {\n this._store.dispatch(new WebSocketMessageError(error));\n }\n }\n\n private _closeConnection(forcelyCloseSocket: boolean): void {\n if (forcelyCloseSocket) {\n this._socket?.close();\n }\n this._socket = null;\n this._socketClosed$.next();\n }\n}\n","import { APP_INITIALIZER } from '@angular/core';\n\nimport { WebSocketHandler } from './websocket-handler';\nimport { USER_OPTIONS, NGXS_WEBSOCKET_OPTIONS, NgxsWebSocketPluginOptions } from './symbols';\n\nexport function ɵwebsocketOptionsFactory(options: NgxsWebSocketPluginOptions) {\n return {\n reconnectInterval: 5000,\n reconnectAttempts: 10,\n typeKey: 'type',\n deserializer(e: MessageEvent) {\n return JSON.parse(e.data);\n },\n serializer(value: any) {\n return JSON.stringify(value);\n },\n ...options\n };\n}\n\nexport function ɵgetProviders(options?: NgxsWebSocketPluginOptions) {\n return [\n { provide: USER_OPTIONS, useValue: options },\n {\n provide: NGXS_WEBSOCKET_OPTIONS,\n useFactory: ɵwebsocketOptionsFactory,\n deps: [USER_OPTIONS]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: () => () => {},\n deps: [WebSocketHandler],\n multi: true\n }\n ];\n}\n","import {\n NgModule,\n ModuleWithProviders,\n EnvironmentProviders,\n makeEnvironmentProviders\n} from '@angular/core';\n\nimport { ɵgetProviders } from './providers';\nimport { NgxsWebSocketPluginOptions } from './symbols';\n\n@NgModule()\nexport class NgxsWebSocketPluginModule {\n static forRoot(\n options?: NgxsWebSocketPluginOptions\n ): ModuleWithProviders<NgxsWebSocketPluginModule> {\n return {\n ngModule: NgxsWebSocketPluginModule,\n providers: ɵgetProviders(options)\n };\n }\n}\n\nexport function withNgxsWebSocketPlugin(\n options?: NgxsWebSocketPluginOptions\n): EnvironmentProviders {\n return makeEnvironmentProviders(ɵgetProviders(options));\n}\n","/**\n * The public api for consumers of @ngxs/websocket-plugin\n */\nexport * from './src/public_api';\n\n/**\n * The private api for consumers of @ngxs/websocket-plugin\n */\nexport * from './src/private_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngxs/websocket-plugin",
|
|
3
|
-
"description": "
|
|
4
|
-
"version": "3.8.2-dev.master-
|
|
3
|
+
"description": "WebSocket plugin for @ngxs/store",
|
|
4
|
+
"version": "3.8.2-dev.master-296071a",
|
|
5
5
|
"sideEffects": true,
|
|
6
6
|
"peerDependencies": {
|
|
7
7
|
"@angular/core": ">=12.0.0 <18.0.0",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { NGXS_WEBSOCKET_OPTIONS as ɵNGXS_WEBSOCKET_OPTIONS } from './symbols';
|
package/src/providers.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WebSocketHandler } from './websocket-handler';
|
|
2
|
-
import {
|
|
3
|
-
export declare function ɵwebsocketOptionsFactory(options:
|
|
2
|
+
import { NgxsWebSocketPluginOptions } from './symbols';
|
|
3
|
+
export declare function ɵwebsocketOptionsFactory(options: NgxsWebSocketPluginOptions): {
|
|
4
4
|
url?: string | undefined;
|
|
5
5
|
protocol?: string | string[] | undefined;
|
|
6
6
|
binaryType?: "blob" | "arraybuffer" | undefined;
|
|
@@ -10,14 +10,14 @@ export declare function ɵwebsocketOptionsFactory(options: NgxsWebsocketPluginOp
|
|
|
10
10
|
serializer: (data: any) => string;
|
|
11
11
|
deserializer: (e: MessageEvent<any>) => any;
|
|
12
12
|
};
|
|
13
|
-
export declare function ɵgetProviders(options?:
|
|
13
|
+
export declare function ɵgetProviders(options?: NgxsWebSocketPluginOptions): ({
|
|
14
14
|
provide: import("@angular/core").InjectionToken<unknown>;
|
|
15
|
-
useValue:
|
|
15
|
+
useValue: NgxsWebSocketPluginOptions | undefined;
|
|
16
16
|
useFactory?: undefined;
|
|
17
17
|
deps?: undefined;
|
|
18
18
|
multi?: undefined;
|
|
19
19
|
} | {
|
|
20
|
-
provide: import("@angular/core").InjectionToken<
|
|
20
|
+
provide: import("@angular/core").InjectionToken<NgxsWebSocketPluginOptions>;
|
|
21
21
|
useFactory: typeof ɵwebsocketOptionsFactory;
|
|
22
22
|
deps: import("@angular/core").InjectionToken<unknown>[];
|
|
23
23
|
useValue?: undefined;
|
package/src/public_api.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { NgxsWebSocketPluginModule, withNgxsWebSocketPlugin } from './websocket.module';
|
|
2
|
+
export { ConnectWebSocket, WebSocketMessageError, DisconnectWebSocket, WebSocketDisconnected, SendWebSocketMessage, WebSocketConnectionUpdated, WebSocketConnected } from './symbols';
|
package/src/symbols.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export declare const NGXS_WEBSOCKET_OPTIONS: InjectionToken<
|
|
2
|
+
export declare const NGXS_WEBSOCKET_OPTIONS: InjectionToken<NgxsWebSocketPluginOptions>;
|
|
3
3
|
export declare const USER_OPTIONS: InjectionToken<unknown>;
|
|
4
|
-
export interface
|
|
4
|
+
export interface NgxsWebSocketPluginOptions {
|
|
5
5
|
/**
|
|
6
6
|
* URL of the websocket.
|
|
7
7
|
*/
|
|
@@ -47,14 +47,14 @@ export interface NgxsWebsocketPluginOptions {
|
|
|
47
47
|
* Action to connect to the websocket. Optionally pass a URL.
|
|
48
48
|
*/
|
|
49
49
|
export declare class ConnectWebSocket {
|
|
50
|
-
payload?:
|
|
50
|
+
payload?: NgxsWebSocketPluginOptions | undefined;
|
|
51
51
|
static readonly type = "[WebSocket] Connect";
|
|
52
|
-
constructor(payload?:
|
|
52
|
+
constructor(payload?: NgxsWebSocketPluginOptions | undefined);
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* Action triggered when a error ocurrs
|
|
56
56
|
*/
|
|
57
|
-
export declare class
|
|
57
|
+
export declare class WebSocketMessageError {
|
|
58
58
|
payload: any;
|
|
59
59
|
static readonly type = "[WebSocket] Message Error";
|
|
60
60
|
constructor(payload: any);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OnDestroy, NgZone } from '@angular/core';
|
|
2
2
|
import { Actions, Store } from '@ngxs/store';
|
|
3
|
-
import {
|
|
3
|
+
import { NgxsWebSocketPluginOptions } from './symbols';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class WebSocketHandler implements OnDestroy {
|
|
6
6
|
private _store;
|
|
@@ -11,7 +11,7 @@ export declare class WebSocketHandler implements OnDestroy {
|
|
|
11
11
|
private readonly _socketClosed$;
|
|
12
12
|
private readonly _typeKey;
|
|
13
13
|
private readonly _destroy$;
|
|
14
|
-
constructor(_store: Store, _ngZone: NgZone, _actions$: Actions, _options:
|
|
14
|
+
constructor(_store: Store, _ngZone: NgZone, _actions$: Actions, _options: NgxsWebSocketPluginOptions);
|
|
15
15
|
ngOnDestroy(): void;
|
|
16
16
|
private _setupActionsListeners;
|
|
17
17
|
private connect;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ModuleWithProviders, EnvironmentProviders } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { NgxsWebSocketPluginOptions } from './symbols';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class
|
|
5
|
-
static forRoot(options?:
|
|
6
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<
|
|
8
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<
|
|
4
|
+
export declare class NgxsWebSocketPluginModule {
|
|
5
|
+
static forRoot(options?: NgxsWebSocketPluginOptions): ModuleWithProviders<NgxsWebSocketPluginModule>;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxsWebSocketPluginModule, never>;
|
|
7
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NgxsWebSocketPluginModule, never, never, never>;
|
|
8
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<NgxsWebSocketPluginModule>;
|
|
9
9
|
}
|
|
10
|
-
export declare function withNgxsWebSocketPlugin(options?:
|
|
10
|
+
export declare function withNgxsWebSocketPlugin(options?: NgxsWebSocketPluginOptions): EnvironmentProviders;
|