@signageos/front-applet 8.1.1 → 8.1.3

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 (74) hide show
  1. package/dist/bundle.js +1 -1
  2. package/dist/bundle.js.map +1 -1
  3. package/docs/sos/browser.md +66 -14
  4. package/docs/sos/command.md +52 -6
  5. package/docs/sos/debug.md +17 -2
  6. package/docs/sos/deviceInfo.md +27 -0
  7. package/docs/sos/display.md +34 -3
  8. package/docs/sos/fileSystem.md +1135 -59
  9. package/docs/sos/index.md +36 -12
  10. package/docs/sos/input.md +42 -1
  11. package/docs/sos/native/mdc.md +65 -19
  12. package/docs/sos/offline/cache.md +14 -8
  13. package/docs/sos/stream.md +1172 -37
  14. package/docs/sos/sync.md +2 -2
  15. package/docs/sos/video.md +515 -22
  16. package/docs/sos_management/security.md +4 -2
  17. package/docs/sos_management/wifi.md +9 -9
  18. package/es6/FrontApplet/Browser/Browser.d.ts +25 -9
  19. package/es6/FrontApplet/Browser/Browser.js +25 -9
  20. package/es6/FrontApplet/Browser/Browser.js.map +1 -1
  21. package/es6/FrontApplet/Browser/IOpenLinkOptions.d.ts +7 -0
  22. package/es6/FrontApplet/Browser/IOpenLinkOptions.js.map +1 -1
  23. package/es6/FrontApplet/Browser/events.d.ts +6 -0
  24. package/es6/FrontApplet/Browser/events.js.map +1 -1
  25. package/es6/FrontApplet/Command/Command.d.ts +15 -6
  26. package/es6/FrontApplet/Command/Command.js +15 -6
  27. package/es6/FrontApplet/Command/Command.js.map +1 -1
  28. package/es6/FrontApplet/Command/ICommand.d.ts +7 -0
  29. package/es6/FrontApplet/Command/ICommandEvent.d.ts +6 -0
  30. package/es6/FrontApplet/Debug/Debug.d.ts +11 -3
  31. package/es6/FrontApplet/Debug/Debug.js +11 -3
  32. package/es6/FrontApplet/Debug/Debug.js.map +1 -1
  33. package/es6/FrontApplet/DeviceInfo/DeviceInfo.d.ts +15 -0
  34. package/es6/FrontApplet/DeviceInfo/DeviceInfo.js +16 -2
  35. package/es6/FrontApplet/DeviceInfo/DeviceInfo.js.map +1 -1
  36. package/es6/FrontApplet/Display/Display.d.ts +22 -14
  37. package/es6/FrontApplet/Display/Display.js +22 -14
  38. package/es6/FrontApplet/Display/Display.js.map +1 -1
  39. package/es6/FrontApplet/Display/IDisplay.d.ts +4 -0
  40. package/es6/FrontApplet/FileSystem/FileSystem.d.ts +429 -41
  41. package/es6/FrontApplet/FileSystem/FileSystem.js +427 -39
  42. package/es6/FrontApplet/FileSystem/FileSystem.js.map +1 -1
  43. package/es6/FrontApplet/FileSystem/HashAlgorithm.d.ts +4 -1
  44. package/es6/FrontApplet/FileSystem/types.d.ts +46 -0
  45. package/es6/FrontApplet/FileSystem/types.js.map +1 -1
  46. package/es6/FrontApplet/FrontApplet.d.ts +31 -7
  47. package/es6/FrontApplet/FrontApplet.js +32 -8
  48. package/es6/FrontApplet/FrontApplet.js.map +1 -1
  49. package/es6/FrontApplet/Input/IKeyUpEvent.d.ts +9 -0
  50. package/es6/FrontApplet/Input/IKeyUpEvent.js +6 -0
  51. package/es6/FrontApplet/Input/IKeyUpEvent.js.map +1 -1
  52. package/es6/FrontApplet/Input/Input.d.ts +17 -1
  53. package/es6/FrontApplet/Input/Input.js +17 -1
  54. package/es6/FrontApplet/Input/Input.js.map +1 -1
  55. package/es6/FrontApplet/NativeCommands/MDC/Mdc.d.ts +32 -11
  56. package/es6/FrontApplet/NativeCommands/MDC/Mdc.js +14 -11
  57. package/es6/FrontApplet/NativeCommands/MDC/Mdc.js.map +1 -1
  58. package/es6/FrontApplet/Stream/IStreamTrackInfo.d.ts +34 -0
  59. package/es6/FrontApplet/Stream/Stream.d.ts +245 -20
  60. package/es6/FrontApplet/Stream/Stream.js +245 -20
  61. package/es6/FrontApplet/Stream/Stream.js.map +1 -1
  62. package/es6/FrontApplet/Stream/StreamProtocol.d.ts +4 -0
  63. package/es6/FrontApplet/Stream/StreamProtocol.js +4 -0
  64. package/es6/FrontApplet/Stream/StreamProtocol.js.map +1 -1
  65. package/es6/FrontApplet/Stream/streamEventProperties.d.ts +11 -1
  66. package/es6/FrontApplet/Stream/streamEvents.d.ts +26 -0
  67. package/es6/FrontApplet/Video/IOptions.d.ts +41 -0
  68. package/es6/FrontApplet/Video/IVideoEvent.d.ts +8 -0
  69. package/es6/FrontApplet/Video/IVideoEvent.js.map +1 -1
  70. package/es6/FrontApplet/Video/IVideoProperties.d.ts +3 -0
  71. package/es6/FrontApplet/Video/Video.d.ts +256 -19
  72. package/es6/FrontApplet/Video/Video.js +258 -22
  73. package/es6/FrontApplet/Video/Video.js.map +1 -1
  74. package/package.json +1 -1
@@ -28,7 +28,7 @@ getPinCode(): Promise<string>;
28
28
 
29
29
  #### Possible errors
30
30
 
31
- The method throws an error **41703**: Get PIN code failed because the PIN code has not been set yet.
31
+ **41703**: Get PIN code failed because the PIN code has not been set yet.
32
32
 
33
33
  <Separator />
34
34
 
@@ -48,4 +48,6 @@ setPinCode(pinCode: string): Promise<void>;
48
48
 
49
49
  #### Possible errors
50
50
 
51
- The method throws an error **41701**: Invalid PIN code format (has to be 4-digits string).
51
+
52
+ - **41701**: Invalid PIN code format (has to be 4-digits string).
53
+ - **41702**: PIN code 0000 is not allowed, use another PIN code.
@@ -66,7 +66,7 @@ A promise that resolves when the connection is established or if connection fail
66
66
 
67
67
  #### Possible errors
68
68
 
69
- The method throws an error error If the Wi-Fi state is not in the `client` state.
69
+ Error If the Wi-Fi state is not in the `client` state.
70
70
 
71
71
  #### Example
72
72
 
@@ -108,7 +108,7 @@ disconnect(): Promise<void>;
108
108
 
109
109
  #### Possible errors
110
110
 
111
- The method throws an error error If the Wi-Fi state is not in the `client` state.
111
+ Error If the Wi-Fi state is not in the `client` state.
112
112
 
113
113
  <Separator />
114
114
 
@@ -133,7 +133,7 @@ enableAP(ssid: string, password: string): Promise<void>;
133
133
 
134
134
  #### Possible errors
135
135
 
136
- The method throws an error error If the Wi-Fi state is in the `client` state.
136
+ Error If the Wi-Fi state is in the `client` state.
137
137
 
138
138
  <Separator />
139
139
 
@@ -147,7 +147,7 @@ enableClient(): Promise<void>;
147
147
 
148
148
  #### Possible errors
149
149
 
150
- The method throws an error error If the Wi-Fi state is in the `ap` state.
150
+ Error If the Wi-Fi state is in the `ap` state.
151
151
 
152
152
  <Separator />
153
153
 
@@ -173,7 +173,7 @@ If the device is not connected to any network, it returns `null`.
173
173
 
174
174
  #### Possible errors
175
175
 
176
- The method throws an error error If the Wi-Fi state is not in the `client` state.
176
+ Error If the Wi-Fi state is not in the `client` state.
177
177
 
178
178
  #### Example
179
179
 
@@ -201,7 +201,7 @@ The 2-letter country code from the ISO 3166 standard, or `null` if not set.
201
201
 
202
202
  #### Possible errors
203
203
 
204
- The method throws an error error If the Wi-Fi state is not in the `client` state.
204
+ Error If the Wi-Fi state is not in the `client` state.
205
205
 
206
206
  <Separator />
207
207
 
@@ -233,7 +233,7 @@ if client mode is enabled.
233
233
 
234
234
  #### Possible errors
235
235
 
236
- The method throws an error error If the Wi-Fi state is in the `ap` state.
236
+ Error If the Wi-Fi state is in the `ap` state.
237
237
 
238
238
  <Separator />
239
239
 
@@ -409,7 +409,7 @@ interface IScannedDevice {
409
409
 
410
410
  #### Possible errors
411
411
 
412
- The method throws an error error If the Wi-Fi state is not in the `client` state.
412
+ Error If the Wi-Fi state is not in the `client` state.
413
413
 
414
414
  <Separator />
415
415
 
@@ -431,4 +431,4 @@ setCountry(countryCode: string): Promise<void>;
431
431
 
432
432
  #### Possible errors
433
433
 
434
- The method throws an error error If the Wi-Fi state is not in the `client` state.
434
+ Error If the Wi-Fi state is not in the `client` state.
@@ -4,7 +4,7 @@ import IOpenLinkOptions, { IDeprecatedOpenLinkOptions } from './IOpenLinkOptions
4
4
  import { IBrowserMessage } from './messages';
5
5
  import IBrowser from './IBrowser';
6
6
  /**
7
- * The `sos.browser` API groups together methods for working with the integrated web browser.
7
+ * There are several use-cases when you need to open a web browser on a touch-enabled device (also known as a tablet). For these cases, you can use a custom web browser we built. Default URL can be opened and even the whitelisting/blacklisting of certain domains is supported.
8
8
  *
9
9
  * :::info
10
10
  *
@@ -27,21 +27,28 @@ export default class Browser implements IBrowser {
27
27
  /**
28
28
  * The `open()` method opens the specified url in a browser window.
29
29
  *
30
- * @param options.aclDomains List of domains to be interpreted according to `aclMode`.
31
- * @param options.aclMode Either "blacklist" or "whitelist".
32
- * @param options.readOnlyAddressBar Should the address bar be readonly.
33
- * @param options.idleTimeout Close browser after specified period if idle.
30
+ * @param uri The URL to open in the browser.
31
+ * @param options Optional parameters to configure the browser window.
32
+ * @param options.aclDomains List of domains to be interpreted according to `aclMode`. Example: `signageos.io`, `www.example.com`
33
+ * @param options.aclMode `blacklist` Allow access to all domains except those in aclDomains and their subdomains, `whitelist` – Allow access only to domains in aclDomains and their subdomains.
34
+ * @param options.readOnlyAddressBar If `true`, the address bar is read-only, if `false` the user can navigate away by entering a URL in the address bar.
35
+ * @param options.idleTimeout The browser will automatically close after a specified period of inactivity (in milliseconds).
34
36
  * @param options.coordinates Size and position of the browser window. Defaults to fullscreen.
35
37
  * @param options.theme Specify custom UI theme. (Android only)
36
38
  * @param options.headlessMode Headless mode hides the entire address bar. (Android only)
37
39
  * @param options.canUserClose Whether the user can manually close the browser. (default if headless false, else true)
38
40
  * @param options.clearData Clear cache after the browser closes. (default if headless false, else true)
39
- * @param options.method Either "native" or "iframe"
40
- *
41
+ * @param options.method Can only be native (which opens a new, fully sandboxed fullscreen window) or iframe (which opens a configurable-sized window). (only Linux)
42
+ * @returns {Promise<void>} A promise that resolves when the browser is opened.
43
+ * @throws {Error} If the `uri` is not a valid URL or string.
44
+ * @throws {Error} If the `options` are not valid.
45
+ * @throws {Error} If unexpected error occurred when opening link.
41
46
  * @since 4.0.0
42
47
  *
48
+ * @example // {@link https://github.com/signageos/applet-examples/tree/master/examples/content-js-api/browser | Example of Applet for using browser on Android }
49
+ *
43
50
  * @example
44
- * sos.browser.open('https://www.signageos.io', {
51
+ * await sos.browser.open('https://www.signageos.io', {
45
52
  * aclDomains: ['google.com', 'yahoo.com'],
46
53
  * aclMode: 'blacklist', // or 'whitelist'
47
54
  * readOnlyAddressBar: true,
@@ -59,14 +66,23 @@ export default class Browser implements IBrowser {
59
66
  /**
60
67
  * The `close()` method closes the browser window opened by the `open()` method.
61
68
  *
69
+ * @returns {Promise<void>} A promise that resolves when the browser is closed.
62
70
  * @since 4.0.0
71
+ *
72
+ * @example
73
+ * await sos.browser.open('https://www.signageos.io', {
74
+ * readOnlyAddressBar: true,
75
+ * });
76
+ * // some time later
77
+ * await sos.browser.close();
63
78
  */
64
79
  close(): Promise<void>;
65
80
  /**
66
81
  * The `onClose()` method sets up a listener, which is called whenever a browser window is closed. This can happen by an API call, by a
67
82
  * user request or after a timeout. This doesn't fire between `open` calls or on subsequent `close` calls.
68
83
  *
69
- * @returns A callback which removes the listener.
84
+ * @param listener The listener to be called when the browser is closed.
85
+ * @returns {void} A callback which removes the listener.
70
86
  */
71
87
  onClose(listener: (event: CloseEvent) => void): () => void;
72
88
  /** @internal */
@@ -8,7 +8,7 @@ const Validate_1 = __importDefault(require("../Validate/Validate"));
8
8
  const events_2 = require("./events");
9
9
  const IOpenLinkOptions_1 = require("./IOpenLinkOptions");
10
10
  /**
11
- * The `sos.browser` API groups together methods for working with the integrated web browser.
11
+ * There are several use-cases when you need to open a web browser on a touch-enabled device (also known as a tablet). For these cases, you can use a custom web browser we built. Default URL can be opened and even the whitelisting/blacklisting of certain domains is supported.
12
12
  *
13
13
  * :::info
14
14
  *
@@ -33,21 +33,28 @@ class Browser {
33
33
  /**
34
34
  * The `open()` method opens the specified url in a browser window.
35
35
  *
36
- * @param options.aclDomains List of domains to be interpreted according to `aclMode`.
37
- * @param options.aclMode Either "blacklist" or "whitelist".
38
- * @param options.readOnlyAddressBar Should the address bar be readonly.
39
- * @param options.idleTimeout Close browser after specified period if idle.
36
+ * @param uri The URL to open in the browser.
37
+ * @param options Optional parameters to configure the browser window.
38
+ * @param options.aclDomains List of domains to be interpreted according to `aclMode`. Example: `signageos.io`, `www.example.com`
39
+ * @param options.aclMode `blacklist` Allow access to all domains except those in aclDomains and their subdomains, `whitelist` – Allow access only to domains in aclDomains and their subdomains.
40
+ * @param options.readOnlyAddressBar If `true`, the address bar is read-only, if `false` the user can navigate away by entering a URL in the address bar.
41
+ * @param options.idleTimeout The browser will automatically close after a specified period of inactivity (in milliseconds).
40
42
  * @param options.coordinates Size and position of the browser window. Defaults to fullscreen.
41
43
  * @param options.theme Specify custom UI theme. (Android only)
42
44
  * @param options.headlessMode Headless mode hides the entire address bar. (Android only)
43
45
  * @param options.canUserClose Whether the user can manually close the browser. (default if headless false, else true)
44
46
  * @param options.clearData Clear cache after the browser closes. (default if headless false, else true)
45
- * @param options.method Either "native" or "iframe"
46
- *
47
+ * @param options.method Can only be native (which opens a new, fully sandboxed fullscreen window) or iframe (which opens a configurable-sized window). (only Linux)
48
+ * @returns {Promise<void>} A promise that resolves when the browser is opened.
49
+ * @throws {Error} If the `uri` is not a valid URL or string.
50
+ * @throws {Error} If the `options` are not valid.
51
+ * @throws {Error} If unexpected error occurred when opening link.
47
52
  * @since 4.0.0
48
53
  *
54
+ * @example // {@link https://github.com/signageos/applet-examples/tree/master/examples/content-js-api/browser | Example of Applet for using browser on Android }
55
+ *
49
56
  * @example
50
- * sos.browser.open('https://www.signageos.io', {
57
+ * await sos.browser.open('https://www.signageos.io', {
51
58
  * aclDomains: ['google.com', 'yahoo.com'],
52
59
  * aclMode: 'blacklist', // or 'whitelist'
53
60
  * readOnlyAddressBar: true,
@@ -75,7 +82,15 @@ class Browser {
75
82
  /**
76
83
  * The `close()` method closes the browser window opened by the `open()` method.
77
84
  *
85
+ * @returns {Promise<void>} A promise that resolves when the browser is closed.
78
86
  * @since 4.0.0
87
+ *
88
+ * @example
89
+ * await sos.browser.open('https://www.signageos.io', {
90
+ * readOnlyAddressBar: true,
91
+ * });
92
+ * // some time later
93
+ * await sos.browser.close();
79
94
  */
80
95
  async close() {
81
96
  await this.exchange.postMessage({
@@ -86,7 +101,8 @@ class Browser {
86
101
  * The `onClose()` method sets up a listener, which is called whenever a browser window is closed. This can happen by an API call, by a
87
102
  * user request or after a timeout. This doesn't fire between `open` calls or on subsequent `close` calls.
88
103
  *
89
- * @returns A callback which removes the listener.
104
+ * @param listener The listener to be called when the browser is closed.
105
+ * @returns {void} A callback which removes the listener.
90
106
  */
91
107
  onClose(listener) {
92
108
  (0, Validate_1.default)({ listener }).required().function();
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/Browser.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAEtC,oEAA4C;AAC5C,qCAA8D;AAC9D,yDAAqG;AAIrG;;;;;;;;;;;;;;;GAeG;AACH,MAAqB,OAAO;IAIE;IAHZ,MAAM,GAAiB,IAAI,qBAAY,EAAE,CAAC;IAE3D,gBAAgB;IAChB,YAA6B,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACI,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,UAA4B,EAAE;QAC5D,IAAA,kBAAQ,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACnC,IAAA,kBAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,oCAAiB,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,GAAG;YACH,GAAG,OAAO;YACV,YAAY;YACZ,IAAI,EAAE,MAAM;SACZ,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,KAAK;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,IAAI,EAAE,OAAO;SACb,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACI,OAAO,CAAC,QAAqC;QACnD,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAAqB;QAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAC7C,MAAM,KAAK,GAAe;oBACzB,IAAI,EAAE,kBAAS,CAAC,KAAK;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAqB;iBAClC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAsC,EAAE;QAC1E,OAAO,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;QAEjI,IAAA,kBAAQ,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACnC,IAAA,kBAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;QAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,GAAG;YACH,GAAG,OAAO;YACV,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,WAAW;SACjB,CAAC,CAAC;IACJ,CAAC;CACD;AA1GD,0BA0GC"}
1
+ {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/Browser.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAEtC,oEAA4C;AAC5C,qCAA8D;AAC9D,yDAAqG;AAIrG;;;;;;;;;;;;;;;GAeG;AACH,MAAqB,OAAO;IAIE;IAHZ,MAAM,GAAiB,IAAI,qBAAY,EAAE,CAAC;IAE3D,gBAAgB;IAChB,YAA6B,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;IAAG,CAAC;IAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACI,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,UAA4B,EAAE;QAC5D,IAAA,kBAAQ,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACnC,IAAA,kBAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,oCAAiB,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;QAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,GAAG;YACH,GAAG,OAAO;YACV,YAAY;YACZ,IAAI,EAAE,MAAM;SACZ,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,KAAK,CAAC,KAAK;QACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,IAAI,EAAE,OAAO;SACb,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,OAAO,CAAC,QAAqC;QACnD,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,OAAO,GAAG,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvD,CAAC,CAAC;IACH,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAAqB;QAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAC7C,MAAM,KAAK,GAAe;oBACzB,IAAI,EAAE,kBAAS,CAAC,KAAK;oBACrB,MAAM,EAAE,IAAI,CAAC,MAAqB;iBAClC,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBACzC,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAsC,EAAE;QAC1E,OAAO,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;QAEjI,IAAA,kBAAQ,EAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;QACnC,IAAA,kBAAQ,EAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;QAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,GAAG;YACH,GAAG,OAAO;YACV,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,WAAW;SACjB,CAAC,CAAC;IACJ,CAAC;CACD;AA1HD,0BA0HC"}
@@ -89,6 +89,9 @@ export interface IDeprecatedOpenLinkOptions {
89
89
  idleTimeout?: number;
90
90
  theme?: ITheme;
91
91
  }
92
+ /**
93
+ * Interface defines the options for opening a link in the browser.
94
+ */
92
95
  interface IOpenLinkOptions {
93
96
  aclDomains?: string[];
94
97
  aclMode?: 'blacklist' | 'whitelist';
@@ -104,6 +107,10 @@ interface IOpenLinkOptions {
104
107
  headlessMode?: boolean;
105
108
  clearData?: boolean;
106
109
  canUserClose?: boolean;
110
+ /**
111
+ * Method of opening the link.
112
+ * @default 'native'
113
+ */
107
114
  method?: 'native' | 'iframe';
108
115
  }
109
116
  export default IOpenLinkOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"IOpenLinkOptions.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/IOpenLinkOptions.ts"],"names":[],"mappings":";;;AAkCa,QAAA,OAAO,GAAG;IACtB,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;IACtC,KAAK,EAAE;QACN,SAAS,EAAE;YACV,UAAU,EAAE,SAAS;SACrB;KACD;IACD,MAAM,EAAE;QACP,SAAS,EAAE;YACV,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SAClB;KACD;IACD,OAAO,EAAE;QACR,SAAS,EAAE;YACV,WAAW,EAAE;gBACZ,SAAS,EAAE;oBACV,MAAM,EAAE;wBACP,SAAS,EAAE;4BACV,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;YACD,WAAW,EAAE;gBACZ,SAAS,EAAE;oBACV,MAAM,EAAE;wBACP,SAAS,EAAE;4BACV,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,SAAS;yBACf;qBACD;oBACD,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAC/D,IAAI,EAAE,SAAS;iBACf;aACD;YACD,QAAQ,EAAE;gBACT,SAAS,EAAE;oBACV,KAAK,EAAE,SAAS;iBAChB;aACD;SACD;KACD;CACD,CAAC;AA+BW,QAAA,iBAAiB,GAAG;IAChC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAClC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;IAClD,kBAAkB,EAAE,UAAU;IAC9B,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE;QACZ,SAAS,EAAE;YACV,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;SAChB;KACD;IACD,KAAK,EAAE,EAAE,SAAS,EAAE,eAAO,EAAE;IAC7B,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;CAC3C,CAAC"}
1
+ {"version":3,"file":"IOpenLinkOptions.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/IOpenLinkOptions.ts"],"names":[],"mappings":";;;AAkCa,QAAA,OAAO,GAAG;IACtB,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;IACtC,KAAK,EAAE;QACN,SAAS,EAAE;YACV,UAAU,EAAE,SAAS;SACrB;KACD;IACD,MAAM,EAAE;QACP,SAAS,EAAE;YACV,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SAClB;KACD;IACD,OAAO,EAAE;QACR,SAAS,EAAE;YACV,WAAW,EAAE;gBACZ,SAAS,EAAE;oBACV,MAAM,EAAE;wBACP,SAAS,EAAE;4BACV,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;YACD,WAAW,EAAE;gBACZ,SAAS,EAAE;oBACV,MAAM,EAAE;wBACP,SAAS,EAAE;4BACV,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,SAAS;yBACf;qBACD;oBACD,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE;oBAC/D,IAAI,EAAE,SAAS;iBACf;aACD;YACD,QAAQ,EAAE;gBACT,SAAS,EAAE;oBACV,KAAK,EAAE,SAAS;iBAChB;aACD;SACD;KACD;CACD,CAAC;AAwEW,QAAA,iBAAiB,GAAG;IAChC,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;IAClC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;IAClD,kBAAkB,EAAE,UAAU;IAC9B,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE;QACZ,SAAS,EAAE;YACV,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;SAChB;KACD;IACD,KAAK,EAAE,EAAE,SAAS,EAAE,eAAO,EAAE;IAC7B,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,UAAU;IACxB,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;CAC3C,CAAC"}
@@ -5,7 +5,13 @@ export declare const VIEventType: string[];
5
5
  export type Event<TType extends EventType = EventType> = {
6
6
  type: TType;
7
7
  };
8
+ /**
9
+ * Interface representing a close event in the browser.
10
+ */
8
11
  export interface CloseEvent extends Event<EventType.CLOSE> {
12
+ /**
13
+ * The reason for the browser being closed.
14
+ */
9
15
  reason: CloseReason;
10
16
  }
11
17
  export declare enum CloseReason {
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/events.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAEX;AAFD,WAAY,SAAS;IACpB,4BAAe,CAAA;AAChB,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAEY,QAAA,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC;AAUrC,IAAY,WAIX;AAJD,WAAY,WAAW;IACtB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACpB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/events.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAEX;AAFD,WAAY,SAAS;IACpB,4BAAe,CAAA;AAChB,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAEY,QAAA,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC;AAgBrC,IAAY,WAIX;AAJD,WAAY,WAAW;IACtB,0BAAW,CAAA;IACX,4BAAa,CAAA;IACb,kCAAmB,CAAA;AACpB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
@@ -3,7 +3,9 @@ import IPostMessage from '../IPostMessage';
3
3
  import ICommandDispatchToAppletMessage from './ICommandDispatchToAppletMessage';
4
4
  import ICommandEvent from './ICommandEvent';
5
5
  /**
6
- * The `sos.command` API groups together methods for sending logs and receiving commands from signageOS.
6
+ * In some cases, you might be interested in a complete log of what the device was doing during its operation. All of your business or technical logs can be stored in our storage for later usage. You can identify which events happened or even trigger self-repairing logic.
7
+ *
8
+ * All commands will be available in [Applet Command REST API](https://developers.signageos.io/api/#tag/DeviceApplet-Command) and can be downloaded historically as [CSV export](https://developers.signageos.io/api/#tag/DeviceMonitoring/paths/~1v1~1device~1%7BdeviceUid%7D~1report/get).
7
9
  */
8
10
  export default class Command {
9
11
  private messagePrefix;
@@ -16,16 +18,21 @@ export default class Command {
16
18
  * The `dispatch()` method dispatches a new log record to the signageOS.
17
19
  *
18
20
  * :::warning[Dispatch throttling]
19
- *
20
21
  * Sending commands from an applet is throttled, this means that after if the dispatch frequency is too high, some commands may be
21
- * discarded. Currently the limit is 30 commands per 30 seconds, although this may not be fully accurate and it's not possible to know the
22
+ * discarded. Currently, the limit is 30 commands per 30 seconds, although this may not be fully accurate, and it's not possible to know the
22
23
  * exact limit.
23
- *
24
24
  * :::
25
25
  *
26
+ * @param command The command to be dispatched.
27
+ * @throws {AppletCommandError} If type contains invalid characters, allowed to are `/^[a-zA-Z0-9\.\-_]+$/g`
28
+ * @throws {AppletCommandError} If the command type is longer then 100 characters limit.
29
+ * @throws {AppletCommandError} If the command is not an object or is missing required properties.
26
30
  * @since 1.0.3
27
31
  *
28
- * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/sending/ |Sending commands}
32
+ * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/sending/ | Sending commands in Applet}
33
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceApplet-Command/paths/~1v1~1device~1%7BdeviceUid%7D~1applet~1%7BappletUid%7D~1command/post | Rest API - Dispatching commands}
34
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceApplet-Command/paths/~1v1~1device~1%7BdeviceUid%7D~1applet~1command/get | Rest API - Get commands}
35
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceMonitoring/paths/~1v1~1device~1%7BdeviceUid%7D~1report/get | Rest API - Receiving historical data}
29
36
  *
30
37
  * @example
31
38
  * await sos.command.dispatch({
@@ -38,9 +45,11 @@ export default class Command {
38
45
  /**
39
46
  * The `onCommand()` method sets up a listener, which is called whenever a new command from signageOS is received.
40
47
  *
48
+ * @param listener The listener to be called when a new command is received.
49
+ * @returns {void} Resolves when the listener is successfully set up.
41
50
  * @since 1.0.3
42
51
  *
43
- * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/receiving |Receiving commands}
52
+ * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/receiving | Receiving commands in Applet}
44
53
  */
45
54
  onCommand(listener: (command: ICommandEvent) => void): void;
46
55
  /** @internal */
@@ -9,7 +9,9 @@ const ErrorCodes_1 = __importDefault(require("../Error/ErrorCodes"));
9
9
  const ErrorSuggestions_1 = __importDefault(require("../Error/ErrorSuggestions"));
10
10
  const Validate_1 = __importDefault(require("../Validate/Validate"));
11
11
  /**
12
- * The `sos.command` API groups together methods for sending logs and receiving commands from signageOS.
12
+ * In some cases, you might be interested in a complete log of what the device was doing during its operation. All of your business or technical logs can be stored in our storage for later usage. You can identify which events happened or even trigger self-repairing logic.
13
+ *
14
+ * All commands will be available in [Applet Command REST API](https://developers.signageos.io/api/#tag/DeviceApplet-Command) and can be downloaded historically as [CSV export](https://developers.signageos.io/api/#tag/DeviceMonitoring/paths/~1v1~1device~1%7BdeviceUid%7D~1report/get).
13
15
  */
14
16
  class Command {
15
17
  messagePrefix;
@@ -26,16 +28,21 @@ class Command {
26
28
  * The `dispatch()` method dispatches a new log record to the signageOS.
27
29
  *
28
30
  * :::warning[Dispatch throttling]
29
- *
30
31
  * Sending commands from an applet is throttled, this means that after if the dispatch frequency is too high, some commands may be
31
- * discarded. Currently the limit is 30 commands per 30 seconds, although this may not be fully accurate and it's not possible to know the
32
+ * discarded. Currently, the limit is 30 commands per 30 seconds, although this may not be fully accurate, and it's not possible to know the
32
33
  * exact limit.
33
- *
34
34
  * :::
35
35
  *
36
+ * @param command The command to be dispatched.
37
+ * @throws {AppletCommandError} If type contains invalid characters, allowed to are `/^[a-zA-Z0-9\.\-_]+$/g`
38
+ * @throws {AppletCommandError} If the command type is longer then 100 characters limit.
39
+ * @throws {AppletCommandError} If the command is not an object or is missing required properties.
36
40
  * @since 1.0.3
37
41
  *
38
- * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/sending/ |Sending commands}
42
+ * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/sending/ | Sending commands in Applet}
43
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceApplet-Command/paths/~1v1~1device~1%7BdeviceUid%7D~1applet~1%7BappletUid%7D~1command/post | Rest API - Dispatching commands}
44
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceApplet-Command/paths/~1v1~1device~1%7BdeviceUid%7D~1applet~1command/get | Rest API - Get commands}
45
+ * @example // {@link https://developers.signageos.io/api/#tag/DeviceMonitoring/paths/~1v1~1device~1%7BdeviceUid%7D~1report/get | Rest API - Receiving historical data}
39
46
  *
40
47
  * @example
41
48
  * await sos.command.dispatch({
@@ -54,9 +61,11 @@ class Command {
54
61
  /**
55
62
  * The `onCommand()` method sets up a listener, which is called whenever a new command from signageOS is received.
56
63
  *
64
+ * @param listener The listener to be called when a new command is received.
65
+ * @returns {void} Resolves when the listener is successfully set up.
57
66
  * @since 1.0.3
58
67
  *
59
- * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/receiving |Receiving commands}
68
+ * @example // {@link https://github.com/signageos/applet-examples/blob/master/examples/content-js-api/command/receiving | Receiving commands in Applet}
60
69
  */
61
70
  onCommand(listener) {
62
71
  (0, Validate_1.default)({ listener }).required().function();
@@ -1 +1 @@
1
- {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/FrontApplet/Command/Command.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAItC,qFAA6D;AAC7D,qEAA6C;AAC7C,iFAAyD;AACzD,oEAA4C;AAG5C;;GAEG;AACH,MAAqB,OAAO;IAOlB;IACA;IAPF,MAAM,CAAC,cAAc,GAAW,SAAS,CAAC;IAEzC,YAAY,CAAe;IAEnC,gBAAgB;IAChB,YACS,aAAqB,EACrB,WAA+B;QAD/B,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAoB;QAEvC,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,KAAK,CAAC,QAAQ,CAA4B,OAAiB;QACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,WAAW,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACjC,OAAO;SACP,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACI,SAAS,CAAC,QAA0C;QAC1D,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAAqC;QAC7D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;gBACzC,MAAM,YAAY,GAAG;oBACpB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;IACvE,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACrC,MAAM,KAAK,GAAG,sBAAsB,CAAC;QAErC,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC;aAChB,QAAQ,CACR,IAAI,4BAAkB,CAAC;YACtB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,oBAAU,CAAC,sBAAsB;YACvC,UAAU,EAAE,0BAAgB,CAAC,sBAAsB;SACnD,CAAC,CACF;aACA,QAAQ,EAAE;aACV,MAAM,EAAE;aACR,WAAW,CAAC,KAAK,CAAC,CAAC;QAErB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC;aAChB,QAAQ,CACR,IAAI,4BAAkB,CAAC;YACtB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,qCAAqC;YAC9C,IAAI,EAAE,oBAAU,CAAC,wBAAwB;SACzC,CAAC,CACF;aACA,SAAS,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;;AAlGF,0BAmGC"}
1
+ {"version":3,"file":"Command.js","sourceRoot":"","sources":["../../../src/FrontApplet/Command/Command.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAItC,qFAA6D;AAC7D,qEAA6C;AAC7C,iFAAyD;AACzD,oEAA4C;AAG5C;;;;GAIG;AACH,MAAqB,OAAO;IAOlB;IACA;IAPF,MAAM,CAAC,cAAc,GAAW,SAAS,CAAC;IAEzC,YAAY,CAAe;IAEnC,gBAAgB;IAChB,YACS,aAAqB,EACrB,WAA+B;QAD/B,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAoB;QAEvC,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAY,EAAE,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,KAAK,CAAC,QAAQ,CAA4B,OAAiB;QACjE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,CAAC,WAAW,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACjC,OAAO;SACP,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACI,SAAS,CAAC,QAA0C;QAC1D,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAAqC;QAC7D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;gBACzC,MAAM,YAAY,GAAG;oBACpB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;IACvE,CAAC;IAEO,iBAAiB,CAAC,IAAY;QACrC,MAAM,KAAK,GAAG,sBAAsB,CAAC;QAErC,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC;aAChB,QAAQ,CACR,IAAI,4BAAkB,CAAC;YACtB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,mCAAmC;YAC5C,IAAI,EAAE,oBAAU,CAAC,sBAAsB;YACvC,UAAU,EAAE,0BAAgB,CAAC,sBAAsB;SACnD,CAAC,CACF;aACA,QAAQ,EAAE;aACV,MAAM,EAAE;aACR,WAAW,CAAC,KAAK,CAAC,CAAC;QAErB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC;aAChB,QAAQ,CACR,IAAI,4BAAkB,CAAC;YACtB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,qCAAqC;YAC9C,IAAI,EAAE,oBAAU,CAAC,wBAAwB;SACzC,CAAC,CACF;aACA,SAAS,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;;AAzGF,0BA0GC"}
@@ -1,4 +1,11 @@
1
+ /**
2
+ * Interface represents a command structure with a type and additional data.
3
+ */
1
4
  interface ICommand {
2
5
  type: string;
6
+ /**
7
+ * The `data` property is an object that contains additional data related to the command.
8
+ */
9
+ [key: string]: any;
3
10
  }
4
11
  export default ICommand;
@@ -1,6 +1,12 @@
1
1
  import ICommand from './ICommand';
2
+ /**
3
+ * Received command event interface from signageOS.
4
+ */
2
5
  interface ICommandEvent {
3
6
  type: 'command';
7
+ /**
8
+ * Command data received from occurred event.
9
+ */
4
10
  command: ICommand;
5
11
  }
6
12
  export default ICommandEvent;
@@ -3,6 +3,11 @@ import IPostMessage from '../IPostMessage';
3
3
  import IDebug, { IDebugSetWeinreMessage, WeinreData } from './IDebug';
4
4
  /**
5
5
  * The `sos.debug` API groups together methods for checking the state of remote debug mode.
6
+ *
7
+ * :::note
8
+ * - This debug is not the "native debug" of the device, but rather a remote debug mode that allows you to connect to the device using Weinre.
9
+ * - State of the remote debug mode or native debug mode can be changed via Cloud Control or [Rest API](https://developers-staging.signageos.io/api/#tag/DeviceDebug/paths/~1v1~1device~1%7BdeviceUid%7D~1debug/put).
10
+ * :::
6
11
  */
7
12
  export default class Debug extends EventEmitter implements IDebug {
8
13
  readonly window: Window & WeinreData;
@@ -13,15 +18,18 @@ export default class Debug extends EventEmitter implements IDebug {
13
18
  /** @internal */
14
19
  constructor(window: Window & WeinreData, messagePrefix: string, postMessage: IPostMessage<any>);
15
20
  /**
16
- * The `isRemoteDebugEnabled()` method returns the state of the [Device debug](https://docs.signageos.io/hc/en-us/articles/4416366711442-Device-debug).
21
+ * The `isRemoteDebugEnabled()` method returns the state of the Device debug mode.
17
22
  *
23
+ * @returens {Promise<boolean>} Resolves to `true` if the remote debug mode is enabled, otherwise `false`.
18
24
  * @since 5.8.0
19
25
  */
20
26
  isRemoteDebugEnabled(): Promise<boolean>;
21
27
  /**
22
- * The `onRemoteDebugChanged()` method sets up a listener, which is called whenever the state of the [Device debug](https://docs.signageos.io/hc/en-us/articles/4416366711442-Device-debug) is changed.
28
+ * The `onRemoteDebugChanged()` method sets up a listener, which is called whenever the state of the Device debug mode is changed.
23
29
  *
24
- * @since
30
+ * @param listener The listener to be called when the state of the remote debug mode is changed.
31
+ * @returns {void} Resolves when the listener is successfully set up.
32
+ * @since 5.8.0
25
33
  */
26
34
  onRemoteDebugChanged(listener: (data: {
27
35
  enabled: boolean;
@@ -7,6 +7,11 @@ const events_1 = require("events");
7
7
  const Validate_1 = __importDefault(require("../Validate/Validate"));
8
8
  /**
9
9
  * The `sos.debug` API groups together methods for checking the state of remote debug mode.
10
+ *
11
+ * :::note
12
+ * - This debug is not the "native debug" of the device, but rather a remote debug mode that allows you to connect to the device using Weinre.
13
+ * - State of the remote debug mode or native debug mode can be changed via Cloud Control or [Rest API](https://developers-staging.signageos.io/api/#tag/DeviceDebug/paths/~1v1~1device~1%7BdeviceUid%7D~1debug/put).
14
+ * :::
10
15
  */
11
16
  class Debug extends events_1.EventEmitter {
12
17
  window;
@@ -22,8 +27,9 @@ class Debug extends events_1.EventEmitter {
22
27
  this.postMessage = postMessage;
23
28
  }
24
29
  /**
25
- * The `isRemoteDebugEnabled()` method returns the state of the [Device debug](https://docs.signageos.io/hc/en-us/articles/4416366711442-Device-debug).
30
+ * The `isRemoteDebugEnabled()` method returns the state of the Device debug mode.
26
31
  *
32
+ * @returens {Promise<boolean>} Resolves to `true` if the remote debug mode is enabled, otherwise `false`.
27
33
  * @since 5.8.0
28
34
  */
29
35
  async isRemoteDebugEnabled() {
@@ -33,9 +39,11 @@ class Debug extends events_1.EventEmitter {
33
39
  return isEnabled;
34
40
  }
35
41
  /**
36
- * The `onRemoteDebugChanged()` method sets up a listener, which is called whenever the state of the [Device debug](https://docs.signageos.io/hc/en-us/articles/4416366711442-Device-debug) is changed.
42
+ * The `onRemoteDebugChanged()` method sets up a listener, which is called whenever the state of the Device debug mode is changed.
37
43
  *
38
- * @since
44
+ * @param listener The listener to be called when the state of the remote debug mode is changed.
45
+ * @returns {void} Resolves when the listener is successfully set up.
46
+ * @since 5.8.0
39
47
  */
40
48
  onRemoteDebugChanged(listener) {
41
49
  (0, Validate_1.default)({ listener }).required().function();
@@ -1 +1 @@
1
- {"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../../src/FrontApplet/Debug/Debug.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAEtC,oEAA4C;AAG5C;;GAEG;AACH,MAAqB,KAAM,SAAQ,qBAAY;IAM7B;IACR;IACA;IAPF,MAAM,CAAC,cAAc,GAAW,OAAO,CAAC;IACxC,MAAM,CAAC,aAAa,GAAW,eAAe,CAAC;IAEtD,gBAAgB;IAChB,YACiB,MAA2B,EACnC,aAAqB,EACrB,WAA8B;QAEtC,KAAK,EAAE,CAAC;QAJQ,WAAM,GAAN,MAAM,CAAqB;QACnC,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAmB;IAGvC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,oBAAoB;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;SAC1C,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACI,oBAAoB,CAAC,QAA8C;QACzE,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAA4B;QACpD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;wBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAC5D,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,CAAC;wBACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAE9C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;oBACnC,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;gBACxC,CAAC;gBACD,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;IACrE,CAAC;;AAhEF,wBAiEC"}
1
+ {"version":3,"file":"Debug.js","sourceRoot":"","sources":["../../../src/FrontApplet/Debug/Debug.ts"],"names":[],"mappings":";;;;;AAAA,mCAAsC;AAEtC,oEAA4C;AAG5C;;;;;;;GAOG;AACH,MAAqB,KAAM,SAAQ,qBAAY;IAM7B;IACR;IACA;IAPF,MAAM,CAAC,cAAc,GAAW,OAAO,CAAC;IACxC,MAAM,CAAC,aAAa,GAAW,eAAe,CAAC;IAEtD,gBAAgB;IAChB,YACiB,MAA2B,EACnC,aAAqB,EACrB,WAA8B;QAEtC,KAAK,EAAE,CAAC;QAJQ,WAAM,GAAN,MAAM,CAAqB;QACnC,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAmB;IAGvC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,oBAAoB;QAChC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;SAC1C,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACI,oBAAoB,CAAC,QAA8C;QACzE,IAAA,kBAAQ,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,gBAAgB;IACT,iBAAiB,CAAC,IAA4B;QACpD,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;oBAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBAClB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC;oBACvC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;oBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;wBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAC5D,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,CAAC;wBACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAE9C,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;oBACnC,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC;oBACxC,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,SAAS,CAAC;gBACxC,CAAC;gBACD,MAAM;YACP,QAAQ;QACT,CAAC;IACF,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;IACrE,CAAC;;AAnEF,wBAoEC"}
@@ -14,6 +14,11 @@ export default class DeviceInfo implements IDeviceInfo {
14
14
  * The `getLocation()` method returns location of the device. Location is requested from server on application start, automatically
15
15
  * updated when changed and persisted in local storage.
16
16
  *
17
+ * :::note
18
+ * Location can be set only in CloudControl on Device Info page, or via Rest API.
19
+ * :::
20
+ *
21
+ * @returns {Promise<IDeviceLocation | null>} A promise that resolves to the device location or `null` if not set.
17
22
  * @since 5.2.0
18
23
  */
19
24
  getLocation(): Promise<IDeviceLocation | null>;
@@ -21,6 +26,11 @@ export default class DeviceInfo implements IDeviceInfo {
21
26
  * The `getOrganizationTags()` method returns all tags assigned to the device. Tags are requested from server on application start, automatically
22
27
  * updated when changed and persisted in local storage.
23
28
  *
29
+ * :::note
30
+ * Tags can be set only in CloudControl on Device Info page, or via Rest API.
31
+ * :::
32
+ *
33
+ * @returns {Promise<IOrganizationTag[]>} A promise that resolves to an array of organization tags.
24
34
  * @since 5.2.0
25
35
  */
26
36
  getOrganizationTags(): Promise<IOrganizationTag[]>;
@@ -28,7 +38,12 @@ export default class DeviceInfo implements IDeviceInfo {
28
38
  * The `getDeviceName()` method returns a name of the device. Name is requested from server on application start, automatically
29
39
  * updated when changed and persisted in local storage.
30
40
  *
41
+ * @returns {Promise<string>} A promise that resolves to the device name.
31
42
  * @since 6.6.0
43
+ *
44
+ * @example
45
+ * const deviceName = await sos.deviceInfo.getDeviceName();
46
+ * console.log(`Device name is: ${deviceName}`);
32
47
  */
33
48
  getDeviceName(): Promise<string>;
34
49
  private getMessage;
@@ -17,6 +17,11 @@ class DeviceInfo {
17
17
  * The `getLocation()` method returns location of the device. Location is requested from server on application start, automatically
18
18
  * updated when changed and persisted in local storage.
19
19
  *
20
+ * :::note
21
+ * Location can be set only in CloudControl on Device Info page, or via Rest API.
22
+ * :::
23
+ *
24
+ * @returns {Promise<IDeviceLocation | null>} A promise that resolves to the device location or `null` if not set.
20
25
  * @since 5.2.0
21
26
  */
22
27
  async getLocation() {
@@ -27,6 +32,11 @@ class DeviceInfo {
27
32
  * The `getOrganizationTags()` method returns all tags assigned to the device. Tags are requested from server on application start, automatically
28
33
  * updated when changed and persisted in local storage.
29
34
  *
35
+ * :::note
36
+ * Tags can be set only in CloudControl on Device Info page, or via Rest API.
37
+ * :::
38
+ *
39
+ * @returns {Promise<IOrganizationTag[]>} A promise that resolves to an array of organization tags.
30
40
  * @since 5.2.0
31
41
  */
32
42
  async getOrganizationTags() {
@@ -37,11 +47,15 @@ class DeviceInfo {
37
47
  * The `getDeviceName()` method returns a name of the device. Name is requested from server on application start, automatically
38
48
  * updated when changed and persisted in local storage.
39
49
  *
50
+ * @returns {Promise<string>} A promise that resolves to the device name.
40
51
  * @since 6.6.0
52
+ *
53
+ * @example
54
+ * const deviceName = await sos.deviceInfo.getDeviceName();
55
+ * console.log(`Device name is: ${deviceName}`);
41
56
  */
42
57
  async getDeviceName() {
43
- const deviceName = this.geDeviceNameFromTittle();
44
- return deviceName;
58
+ return this.geDeviceNameFromTittle();
45
59
  }
46
60
  getMessage(name) {
47
61
  return [this.messagePrefix, DeviceInfo.MESSAGE_PREFIX, name].join('.');
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceInfo.js","sourceRoot":"","sources":["../../../src/FrontApplet/DeviceInfo/DeviceInfo.ts"],"names":[],"mappings":";;AAGA;;;GAGG;AACH,MAAqB,UAAU;IAKrB;IACA;IALF,MAAM,CAAC,cAAc,GAAW,aAAa,CAAC;IAErD,gBAAgB;IAChB,YACS,aAAqB,EACrB,WAA8B;QAD9B,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAmB;IACpC,CAAC;IAEJ;;;;;OAKG;IACI,KAAK,CAAC,WAAW;QACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa;QACzB,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjD,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAEO,sBAAsB;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,YAAY,CAAC,aAAc,CAAC;QAClD,OAAO,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IACvE,CAAC;;AAnDF,6BAoDC"}
1
+ {"version":3,"file":"DeviceInfo.js","sourceRoot":"","sources":["../../../src/FrontApplet/DeviceInfo/DeviceInfo.ts"],"names":[],"mappings":";;AAGA;;;GAGG;AACH,MAAqB,UAAU;IAKrB;IACA;IALF,MAAM,CAAC,cAAc,GAAW,aAAa,CAAC;IAErD,gBAAgB;IAChB,YACS,aAAqB,EACrB,WAA8B;QAD9B,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAmB;IACpC,CAAC;IAEJ;;;;;;;;;;OAUG;IACI,KAAK,CAAC,WAAW;QACvB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,mBAAmB;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,aAAa;QACzB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IAEO,sBAAsB;QAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC5C,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,YAAY,CAAC,aAAc,CAAC;QAClD,OAAO,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IACvE,CAAC;;AAjEF,6BAkEC"}