@selfcommunity/utils 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/{types → cjs}/index.d.ts +2 -2
  2. package/lib/cjs/index.d.ts.map +1 -0
  3. package/lib/cjs/index.js +35 -50
  4. package/lib/cjs/index.js.map +1 -0
  5. package/lib/{types → cjs}/utils/browser.d.ts +0 -0
  6. package/lib/{types → cjs}/utils/browser.d.ts.map +0 -0
  7. package/lib/cjs/utils/browser.js +62 -78
  8. package/lib/cjs/utils/browser.js.map +1 -0
  9. package/lib/{types → cjs}/utils/logger.d.ts +0 -0
  10. package/lib/{types → cjs}/utils/logger.d.ts.map +0 -0
  11. package/lib/cjs/utils/logger.js +18 -25
  12. package/lib/cjs/utils/logger.js.map +1 -0
  13. package/lib/{types → cjs}/utils/object.d.ts +0 -0
  14. package/lib/{types → cjs}/utils/object.d.ts.map +0 -0
  15. package/lib/cjs/utils/object.js +23 -29
  16. package/lib/cjs/utils/object.js.map +1 -0
  17. package/lib/{types → cjs}/utils/string.d.ts +0 -0
  18. package/lib/{types → cjs}/utils/string.d.ts.map +0 -0
  19. package/lib/cjs/utils/string.js +56 -65
  20. package/lib/cjs/utils/string.js.map +1 -0
  21. package/lib/{types → cjs}/utils/url.d.ts +0 -0
  22. package/lib/{types → cjs}/utils/url.d.ts.map +0 -0
  23. package/lib/cjs/utils/url.js +52 -77
  24. package/lib/cjs/utils/url.js.map +1 -0
  25. package/lib/{types → cjs}/utils/websocket.d.ts +0 -0
  26. package/lib/{types → cjs}/utils/websocket.d.ts.map +0 -0
  27. package/lib/cjs/utils/websocket.js +221 -284
  28. package/lib/cjs/utils/websocket.js.map +1 -0
  29. package/lib/cjs/utils/window.d.ts +5 -0
  30. package/lib/cjs/utils/window.d.ts.map +1 -0
  31. package/lib/cjs/utils/window.js +34 -32
  32. package/lib/cjs/utils/window.js.map +1 -0
  33. package/lib/esm/index.d.ts +12 -0
  34. package/lib/esm/index.d.ts.map +1 -0
  35. package/lib/esm/index.js +12 -51
  36. package/lib/esm/index.js.map +1 -0
  37. package/lib/esm/utils/browser.d.ts +9 -0
  38. package/lib/esm/utils/browser.d.ts.map +1 -0
  39. package/lib/esm/utils/browser.js +61 -81
  40. package/lib/esm/utils/browser.js.map +1 -0
  41. package/lib/esm/utils/logger.d.ts +11 -0
  42. package/lib/esm/utils/logger.d.ts.map +1 -0
  43. package/lib/esm/utils/logger.js +17 -28
  44. package/lib/esm/utils/logger.js.map +1 -0
  45. package/lib/esm/utils/object.d.ts +13 -0
  46. package/lib/esm/utils/object.d.ts.map +1 -0
  47. package/lib/esm/utils/object.js +21 -32
  48. package/lib/esm/utils/object.js.map +1 -0
  49. package/lib/esm/utils/string.d.ts +43 -0
  50. package/lib/esm/utils/string.d.ts.map +1 -0
  51. package/lib/esm/utils/string.js +54 -73
  52. package/lib/esm/utils/string.js.map +1 -0
  53. package/lib/esm/utils/url.d.ts +33 -0
  54. package/lib/esm/utils/url.d.ts.map +1 -0
  55. package/lib/esm/utils/url.js +46 -80
  56. package/lib/esm/utils/url.js.map +1 -0
  57. package/lib/esm/utils/websocket.d.ts +177 -0
  58. package/lib/esm/utils/websocket.d.ts.map +1 -0
  59. package/lib/esm/utils/websocket.js +220 -286
  60. package/lib/esm/utils/websocket.js.map +1 -0
  61. package/lib/esm/utils/window.d.ts +5 -0
  62. package/lib/esm/utils/window.d.ts.map +1 -0
  63. package/lib/esm/utils/window.js +31 -36
  64. package/lib/esm/utils/window.js.map +1 -0
  65. package/lib/umd/utils.js +1 -1
  66. package/lib/umd/utils.js.map +1 -1
  67. package/package.json +5 -7
  68. package/lib/cjs/index.d.js +0 -2
  69. package/lib/esm/index.d.js +0 -2
  70. package/lib/types/index.d.ts.map +0 -1
  71. package/lib/types/tsconfig.build.tsbuildinfo +0 -1
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Utility Url Replacer
3
+ * @param path
4
+ */
5
+ export declare const urlReplacer: (path: string) => (params: object) => any;
6
+ /**
7
+ * Get domain
8
+ * @param url
9
+ */
10
+ export declare const getDomain: (url: string) => string;
11
+ /**
12
+ * Check a str is a valid url pattern
13
+ * @param url
14
+ */
15
+ export declare const isValidUrl: (url: string) => boolean;
16
+ /**
17
+ * Check a str is a valid list of urls separated by delimiter
18
+ * @param value
19
+ * @param delimiter
20
+ */
21
+ export declare const isValidUrls: (value: string, delimiter: string) => boolean;
22
+ /**
23
+ * Append params
24
+ * @param baseUrl
25
+ * @param queryParams
26
+ */
27
+ export declare function appendURLSearchParams(baseUrl: string, queryParams: Record<string, string | number>[]): string;
28
+ /**
29
+ * Take the application server's public key, which is Base64 URL-safe encoded,
30
+ * and convert it to a UInt8Array, because this is the expected input of the subscribe()
31
+ */
32
+ export declare const urlB64ToUint8Array: (base64String: any) => Uint8Array;
33
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,cAWtB,MAAM,QACvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAS,MAAM,KAAG,MAOvC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,QAAS,MAAM,KAAG,OAGxC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,WAAW,UAAW,MAAM,aAAa,MAAM,KAAG,OAG9D,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,UAWpG;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,mCAW9B,CAAC"}
@@ -1,112 +1,78 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- exports.appendURLSearchParams = appendURLSearchParams;
5
- exports.urlReplacer = exports.urlB64ToUint8Array = exports.isValidUrls = exports.isValidUrl = exports.getDomain = void 0;
6
-
7
1
  /**
8
2
  * Utility Url Replacer
9
3
  * @param path
10
4
  */
11
- const urlReplacer = path => {
12
- const replacer = function replacer(tpl, data) {
13
- const re = /\$\(([^)]+)?\)/g;
14
- let match = re.exec(tpl);
15
-
16
- while (match) {
17
- tpl = tpl.replace(match[0], data[match[1]]);
18
- re.lastIndex = 0;
19
- match = re.exec(tpl);
20
- }
21
-
22
- return tpl;
23
- };
24
-
25
- return params => replacer(path, params);
5
+ export const urlReplacer = (path) => {
6
+ const replacer = function (tpl, data) {
7
+ const re = /\$\(([^)]+)?\)/g;
8
+ let match = re.exec(tpl);
9
+ while (match) {
10
+ tpl = tpl.replace(match[0], data[match[1]]);
11
+ re.lastIndex = 0;
12
+ match = re.exec(tpl);
13
+ }
14
+ return tpl;
15
+ };
16
+ return (params) => replacer(path, params);
26
17
  };
27
18
  /**
28
19
  * Get domain
29
20
  * @param url
30
21
  */
31
-
32
-
33
- exports.urlReplacer = urlReplacer;
34
-
35
- const getDomain = url => {
36
- // eslint-disable-next-line no-useless-escape,@typescript-eslint/prefer-regexp-exec
37
- const matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
38
-
39
- if (matches && matches[1]) {
40
- return matches[1];
41
- }
42
-
43
- return '';
22
+ export const getDomain = (url) => {
23
+ // eslint-disable-next-line no-useless-escape,@typescript-eslint/prefer-regexp-exec
24
+ const matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
25
+ if (matches && matches[1]) {
26
+ return matches[1];
27
+ }
28
+ return '';
44
29
  };
45
30
  /**
46
31
  * Check a str is a valid url pattern
47
32
  * @param url
48
33
  */
49
-
50
-
51
- exports.getDomain = getDomain;
52
-
53
- const isValidUrl = url => {
54
- const regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/;
55
- return regexp.test(url);
34
+ export const isValidUrl = (url) => {
35
+ const regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-/]))?/;
36
+ return regexp.test(url);
56
37
  };
57
38
  /**
58
39
  * Check a str is a valid list of urls separated by delimiter
59
40
  * @param value
60
41
  * @param delimiter
61
42
  */
62
-
63
-
64
- exports.isValidUrl = isValidUrl;
65
-
66
- const isValidUrls = (value, delimiter) => {
67
- const urls = value.trim().split(delimiter);
68
- return urls.every(isValidUrl);
43
+ export const isValidUrls = (value, delimiter) => {
44
+ const urls = value.trim().split(delimiter);
45
+ return urls.every(isValidUrl);
69
46
  };
70
47
  /**
71
48
  * Append params
72
49
  * @param baseUrl
73
50
  * @param queryParams
74
51
  */
75
-
76
-
77
- exports.isValidUrls = isValidUrls;
78
-
79
- function appendURLSearchParams(baseUrl, queryParams) {
80
- let _url = baseUrl;
81
-
82
- if (queryParams.length && _url) {
83
- const key = Object.keys(queryParams[0])[0];
84
- _url += (_url.split('?')[1] ? '&' : '?') + `${key}=${queryParams[0][key]}`;
85
- queryParams.slice(1).map(p => {
86
- const key = Object.keys(p)[0];
87
- _url += `&${key}=${p[key]}`;
88
- });
89
- }
90
-
91
- return _url;
52
+ export function appendURLSearchParams(baseUrl, queryParams) {
53
+ let _url = baseUrl;
54
+ if (queryParams.length && _url) {
55
+ const key = Object.keys(queryParams[0])[0];
56
+ _url += (_url.split('?')[1] ? '&' : '?') + `${key}=${queryParams[0][key]}`;
57
+ queryParams.slice(1).map((p) => {
58
+ const key = Object.keys(p)[0];
59
+ _url += `&${key}=${p[key]}`;
60
+ });
61
+ }
62
+ return _url;
92
63
  }
93
64
  /**
94
65
  * Take the application server's public key, which is Base64 URL-safe encoded,
95
66
  * and convert it to a UInt8Array, because this is the expected input of the subscribe()
96
67
  */
97
-
98
-
99
- const urlB64ToUint8Array = base64String => {
100
- const padding = '='.repeat((4 - base64String.length % 4) % 4);
101
- const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
102
- const rawData = window.atob(base64);
103
- const outputArray = new Uint8Array(rawData.length);
104
-
105
- for (let i = 0; i < rawData.length; ++i) {
106
- outputArray[i] = rawData.charCodeAt(i);
107
- }
108
-
109
- return outputArray;
68
+ export const urlB64ToUint8Array = (base64String) => {
69
+ const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
70
+ const base64 = (base64String + padding).replace(/-/g, '+').replace(/_/g, '/');
71
+ const rawData = window.atob(base64);
72
+ const outputArray = new Uint8Array(rawData.length);
73
+ for (let i = 0; i < rawData.length; ++i) {
74
+ outputArray[i] = rawData.charCodeAt(i);
75
+ }
76
+ return outputArray;
110
77
  };
111
-
112
- exports.urlB64ToUint8Array = urlB64ToUint8Array;
78
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,177 @@
1
+ /**
2
+ * WSClientPropTypes interface
3
+ */
4
+ export interface WSClientPropTypes {
5
+ /**
6
+ * The Websocket URI
7
+ */
8
+ uri: string;
9
+ /**
10
+ * The Websocket Protocols
11
+ */
12
+ protocols: string | string[];
13
+ /**
14
+ * String to identify the heartbeat message.
15
+ */
16
+ heartbeatMsg?: string;
17
+ /**
18
+ * Reconnect the websocket if close
19
+ */
20
+ mustReconnect?: boolean;
21
+ /**
22
+ * Callback called after the websocket is connected.
23
+ */
24
+ connected?: () => any;
25
+ /**
26
+ * Callback called when the websocket is connecting.
27
+ */
28
+ connecting?: () => any;
29
+ /**
30
+ * Callback called after the websocket is disconnected.
31
+ */
32
+ disconnected?: (evt: any) => any;
33
+ /**
34
+ * Callback called when a message is received from the websocket.
35
+ */
36
+ receiveMessage?: (data: any) => any;
37
+ /**
38
+ * Enable/disable debug
39
+ */
40
+ debug?: boolean;
41
+ }
42
+ export interface WSClientType {
43
+ /**
44
+ * Send message
45
+ * @param message
46
+ */
47
+ sendMessage: (message: any) => void;
48
+ /**
49
+ * Get current state
50
+ */
51
+ getState: () => string;
52
+ /**
53
+ * Get current connection state
54
+ */
55
+ isConnecting: () => boolean;
56
+ /**
57
+ * Check if ws is connected
58
+ */
59
+ isConnected: () => boolean;
60
+ /**
61
+ * Check if ws is closing connection
62
+ */
63
+ isClosing: () => boolean;
64
+ /**
65
+ * Return if ws is closed
66
+ */
67
+ isClosed: () => boolean;
68
+ /**
69
+ * Close the connection
70
+ */
71
+ close: () => void;
72
+ }
73
+ /**
74
+ * WSClient: manage socket connection
75
+ * @param options
76
+ * @constructor
77
+ */
78
+ export default class WSClient implements WSClientType {
79
+ private static _instance;
80
+ private _cfg;
81
+ private _ws;
82
+ private _timer;
83
+ private _attempts;
84
+ private _heartbeatInterval;
85
+ private _missedHeartbeats;
86
+ /**
87
+ * Constructor
88
+ * @param cfg
89
+ */
90
+ constructor(cfg: WSClientPropTypes);
91
+ /**
92
+ * Get instance
93
+ */
94
+ static getInstance(cfg: any): WSClient;
95
+ /**
96
+ * Connect
97
+ */
98
+ connect(): void;
99
+ /**
100
+ * Validate options
101
+ * @param cfg
102
+ */
103
+ isValidOptions(cfg: WSClientPropTypes): boolean;
104
+ /**
105
+ * Try to reconnect if previous connection failed
106
+ * Generate an interval, after that try to reconnect
107
+ */
108
+ tryToReconnect(): void;
109
+ /**
110
+ * Reestablish the connection
111
+ * Increase the number of attempts
112
+ */
113
+ reconnect(): void;
114
+ /**
115
+ * Send heartbeat every 5 seconds
116
+ * If missing more than 3 heartbeats close connection
117
+ */
118
+ sendHeartbeat(): void;
119
+ /**
120
+ * Established the new connection
121
+ * Reset this._attempts counter
122
+ */
123
+ onOpen(): void;
124
+ /**
125
+ * Connection closed. Try to reconnect.
126
+ * @param evt
127
+ */
128
+ onClose(evt: any): void;
129
+ /**
130
+ * An error occured
131
+ * @param evt
132
+ */
133
+ onError(evt: any): void;
134
+ /**
135
+ * A message has arrived.
136
+ * If it is the heartbeat -> reset this._missedHeartbeats
137
+ * If it is data pass data to the callback
138
+ * @param evt
139
+ */
140
+ onMessage(evt: any): any;
141
+ /**
142
+ * Generate an interval that is randomly between 0 and 2^k - 1, where k is
143
+ * the number of connection attmpts, with a maximum interval of 30 seconds,
144
+ * so it starts at 0 - 1 seconds and maxes out at 0 - 30 seconds
145
+ */
146
+ generateInteval(k: any): number;
147
+ /**
148
+ * Send message
149
+ * @param message
150
+ */
151
+ sendMessage(message: any): void;
152
+ /**
153
+ * Get the ws state
154
+ */
155
+ getState(): any;
156
+ /**
157
+ * Check if ws is in connecting state
158
+ */
159
+ isConnecting(): boolean;
160
+ /**
161
+ * Check if ws is connected
162
+ */
163
+ isConnected(): boolean;
164
+ /**
165
+ * Check if ws is in closing state
166
+ */
167
+ isClosing(): boolean;
168
+ /**
169
+ * Check if ws is closed
170
+ */
171
+ isClosed(): boolean;
172
+ /**
173
+ * Close the connection
174
+ */
175
+ close(): void;
176
+ }
177
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/utils/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE7B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,KAAA,KAAK,GAAG,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,KAAA,KAAK,GAAG,CAAC;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAC;IAE/B;;OAEG;IACH,QAAQ,EAAE,MAAM,MAAM,CAAC;IAEvB;;OAEG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC;IAE5B;;OAEG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,MAAM,OAAO,CAAC;IAEzB;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,YAAY;IACnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC;IACb,OAAO,CAAC,GAAG,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,iBAAiB,CAAK;IAE9B;;;OAGG;gBACS,GAAG,EAAE,iBAAiB;IAQlC;;OAEG;WACW,WAAW,CAAC,GAAG,KAAA,GAAG,QAAQ;IAKxC;;OAEG;IACH,OAAO;IAyBP;;;OAGG;IACH,cAAc,CAAC,GAAG,EAAE,iBAAiB;IAqCrC;;;OAGG;IACH,cAAc;IAQd;;;OAGG;IACH,SAAS;IAKT;;;OAGG;IACH,aAAa;IAeb;;;OAGG;IACH,MAAM;IAUN;;;OAGG;IACH,OAAO,CAAC,GAAG,KAAA;IAMX;;;OAGG;IACH,OAAO,CAAC,GAAG,KAAA;IAKX;;;;;OAKG;IACH,SAAS,CAAC,GAAG,KAAA;IASb;;;;OAIG;IACH,eAAe,CAAC,CAAC,KAAA;IAUjB;;;OAGG;IACI,WAAW,CAAC,OAAO,KAAA;IAI1B;;OAEG;IACI,QAAQ;IAIf;;OAEG;IACI,YAAY;IAInB;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,SAAS;IAIhB;;OAEG;IACI,QAAQ;IAIf;;OAEG;IACI,KAAK;CAQb"}