@signageos/front-applet 4.10.3 → 4.13.0

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 (47) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.js.map +1 -1
  4. package/docs/js-api/js-browser.md +12 -5
  5. package/docs/js-api/js-file-system.md +56 -0
  6. package/docs/js-api/js-offline-cache-media-files.md +19 -7
  7. package/docs/management-api/10-js-management-application.md +18 -1
  8. package/docs/management-api/11-js-management-network.md +36 -1
  9. package/docs/management-api/2-js-management-firmware.md +4 -0
  10. package/es6/FrontApplet/Browser/Browser.d.ts +16 -6
  11. package/es6/FrontApplet/Browser/Browser.js +39 -12
  12. package/es6/FrontApplet/Browser/Browser.js.map +1 -1
  13. package/es6/FrontApplet/Browser/IOpenLinkOptions.d.ts +8 -0
  14. package/es6/FrontApplet/Browser/IOpenLinkOptions.js +4 -0
  15. package/es6/FrontApplet/Browser/IOpenLinkOptions.js.map +1 -1
  16. package/es6/FrontApplet/Browser/events.d.ts +15 -0
  17. package/es6/FrontApplet/Browser/events.js +14 -0
  18. package/es6/FrontApplet/Browser/events.js.map +1 -0
  19. package/es6/FrontApplet/Browser/messages.d.ts +5 -0
  20. package/es6/FrontApplet/Browser/messages.js +3 -0
  21. package/es6/FrontApplet/Browser/messages.js.map +1 -0
  22. package/es6/FrontApplet/Exchange/Exchange.d.ts +7 -0
  23. package/es6/FrontApplet/Exchange/Exchange.js +28 -0
  24. package/es6/FrontApplet/Exchange/Exchange.js.map +1 -0
  25. package/es6/FrontApplet/FileSystem/FileSystem.d.ts +1 -0
  26. package/es6/FrontApplet/FileSystem/FileSystem.js +10 -0
  27. package/es6/FrontApplet/FileSystem/FileSystem.js.map +1 -1
  28. package/es6/FrontApplet/FrontApplet.js +4 -1
  29. package/es6/FrontApplet/FrontApplet.js.map +1 -1
  30. package/es6/FrontApplet/Hardware/BarcodeScanner/BarcodeScanner.d.ts +30 -0
  31. package/es6/FrontApplet/Hardware/BarcodeScanner/BarcodeScanner.js +92 -0
  32. package/es6/FrontApplet/Hardware/BarcodeScanner/BarcodeScanner.js.map +1 -0
  33. package/es6/FrontApplet/Hardware/BarcodeScanner/IBarcodeScannerDataMessage.d.ts +5 -0
  34. package/es6/FrontApplet/Hardware/BarcodeScanner/IBarcodeScannerDataMessage.js +3 -0
  35. package/es6/FrontApplet/Hardware/BarcodeScanner/IBarcodeScannerDataMessage.js.map +1 -0
  36. package/es6/FrontApplet/Hardware/Hardware.d.ts +4 -1
  37. package/es6/FrontApplet/Hardware/Hardware.js +3 -0
  38. package/es6/FrontApplet/Hardware/Hardware.js.map +1 -1
  39. package/es6/FrontApplet/Management/INetworkInfo.d.ts +1 -0
  40. package/es6/FrontApplet/Management/INetworkInfo.js.map +1 -1
  41. package/es6/FrontApplet/Management/Network.d.ts +1 -0
  42. package/es6/FrontApplet/Management/Network.js +9 -0
  43. package/es6/FrontApplet/Management/Network.js.map +1 -1
  44. package/es6/FrontApplet/Management/helpers/SecurityHelper.js +1 -1
  45. package/es6/FrontApplet/Validate/Validate.js +1 -1
  46. package/es6/FrontApplet/Validate/Validate.js.map +1 -1
  47. package/package.json +3 -4
@@ -33,9 +33,9 @@ Default URL can be opened and even the whitelisting/blacklisting of certain doma
33
33
  - Android devices with Android 5+ (Philips, Benq, Sharp, generic Android device)
34
34
 
35
35
  **With some limitation you can use this API also on**
36
- - Samsung Tizen (SSSP 4 and above); where the website is just in fullscreen without any addressbar or theme options
37
- - LG webOS (webOS 3.0 and above); where the website is just in fullscreen without any addressbar or theme options
38
- - Raspberry Pi and NEC Compute Module; where the website is just in fullscreen without any addressbar or theme options
36
+ - Samsung Tizen (SSSP 4 and above); where the website is just in fullscreen without an address bar or theme options (headless mode)
37
+ - LG webOS (webOS 3.0 and above); where the website is just in fullscreen without an address bar or theme options (headless mode)
38
+ - Raspberry Pi and NEC Compute Module; where the website is just in fullscreen without an address bar or theme options (headless mode)
39
39
  :::
40
40
 
41
41
  ### Javascript
@@ -56,6 +56,9 @@ Method `open()` also supports properties for browser. You can set height, width
56
56
  | `coordinates` | Object | Size of browser screen (only Raspberry Pi) |
57
57
  | `idleTimeout` | Number | Timeout in milliseconds for loading page |
58
58
  | `theme` | Object | Setting custom theme for Android |
59
+ | `headlessMode` | Boolean | Headless mode hides the entire address bar (default) |
60
+ | `canUserClose` | Boolean | Whether the user can manually close the browser. Default:<br>**Headless:** `false`<br>**With UI:** `true` |
61
+ | `clearData` | Boolean | Clear cache after the browser closes. Default:<br>**Headless:** `false`<br>**With UI:** `true` |
59
62
  :::
60
63
 
61
64
 
@@ -64,13 +67,14 @@ sos.browser.open('https://www.signageos.io', {
64
67
  aclDomains: ['google.com', 'yahoo.com'],
65
68
  aclMode: 'blacklist', // or 'whitelist'
66
69
  readOnlyAddressBar: true,
67
- coordinates: { // Supported only on Raspberry Pi
70
+ coordinates: { // Supported only on Raspberry Pi and Android
68
71
  x: 0,
69
72
  y: 0,
70
73
  height: 500,
71
74
  width: 500,
72
75
  },
73
76
  // theme: { ... } // supported only on Android
77
+ headlessMode: false, // supported only on Android
74
78
  ```
75
79
 
76
80
  <div class="row d-flex align-content-stretch force-padding-20">
@@ -141,7 +145,10 @@ interface IOpenLinkOptions {
141
145
  width: number;
142
146
  height: number;
143
147
  };
144
- theme?: ITheme; // supported since 5.0.0
148
+ theme?: ITheme;
149
+ headlessMode?: boolean;
150
+ clearData?: boolean;
151
+ canUserClose?: boolean;
145
152
  }
146
153
 
147
154
  open(uri: string, options?: IOpenLinkOptions): void;
@@ -294,6 +294,36 @@ await sos.fileSystem.downloadFile(
294
294
  );
295
295
  ```
296
296
 
297
+ #### Encoding
298
+ All downloads respect a standard of `Encoding` with optional compression of files. See [Mozilla standard Accept Encoding](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding) and [Content Encoding](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding).
299
+
300
+ Download file method is always sending optional following headers:
301
+ ```
302
+ Accept-Encoding: gzip
303
+ Accept-Encoding: compress
304
+ Accept-Encoding: deflate
305
+ Accept-Encoding: br
306
+ Accept-Encoding: identity
307
+ Accept-Encoding: *
308
+ ```
309
+
310
+ If the server understands the `Encoding` standard, it compresses files using `gzip` algorithm before the files are sent to the client. If so, the response will contain the following headers:
311
+ ```
312
+ Content-Encoding: gzip
313
+ Content-Encoding: compress
314
+ Content-Encoding: deflate
315
+ Content-Encoding: br
316
+ ```
317
+ So the data communication is compressed under the hood. The client will automatically decompress data before it's saved to a specified location path. So from JS API point of view, there is no requirement to decompress data by itself.
318
+
319
+ The standard is supported on all following platforms:
320
+
321
+ - WebOS 3+
322
+ - Tizen 2.4+
323
+ - Brightsign
324
+ - Raspberry Pi
325
+ - Windows
326
+
297
327
  ## deleteFile()
298
328
  Delete a file or directory from the path.
299
329
 
@@ -520,6 +550,32 @@ await sos.fileSystem.writeFile(
520
550
  );
521
551
  ```
522
552
 
553
+ ## appendFile()
554
+ Append content into file directly:
555
+ - string support only
556
+ - append only
557
+
558
+ ::: alert alert--warning
559
+ **LG webOS limitation**:
560
+ It's possible to handle only files up to **~10KB** on webOS devices. At the moment we are working on the solution regarding the file/s 'manipulation' on LG devices.
561
+ :::
562
+
563
+ ### Parameters
564
+
565
+ | Param | Type | Required | Description |
566
+ | ------ | -------- | :------: | ---- |
567
+ | `filePath` | FilePath | <div class="red">Yes</div> | Object contains storageUnit object returned by `listStorageUnits()` and `filePath` if the file or directory |
568
+ | `content` | String | <div class="red">Yes</div> | Parsed content as string |
569
+
570
+
571
+ ### Javascript Example
572
+ ```javascript
573
+ await sos.fileSystem.appendFile(
574
+ { storageUnit: internalStorageUnit, filePath: 'test-dir/log.txt' },
575
+ 'My awesome log line\n',
576
+ );
577
+ ```
578
+
523
579
  ## readFile()
524
580
  Read a text file.
525
581
 
@@ -66,10 +66,14 @@ Method `saveFile()` is used to save files from remote a destination into the dev
66
66
  `headers` has to be a JSON object. If you are passing the value, make sure you use `JSON.parse()`.
67
67
  :::
68
68
 
69
+ ::: alert alert--warning
70
+ `uid` should have the same file extension (e.g.: mp4, svg, jpg) as the original file.
71
+ :::
72
+
69
73
  ### Javascript example
70
74
  ```javascript
71
75
  // Example saving files into internal memory, unique id could be salted md5 hash, uri directs to our CDN
72
- await sos.offline.cache.saveFile('9d66725ba2105f1833731ade5b7f334e', 'https://cdn.my-cms.com/files/video.mp4', { "Authorization": "Basic Zm9vOmJhcg==" })
76
+ await sos.offline.cache.saveFile('9d66725ba2105f1833731ade5b7f334e.mp4', 'https://cdn.my-cms.com/files/video.mp4', { "Authorization": "Basic Zm9vOmJhcg==" })
73
77
  .then(() => { console.log('Saved'); })
74
78
  .catch((error) => { console.error(error); });
75
79
  ```
@@ -87,15 +91,19 @@ Method `loadFile()` is used for individual file retrieval from internal memory.
87
91
  | --------- | ------------ | :---------: | --------------- |
88
92
  | `uid` | string | <div class="red">Yes</div> | Unique file identifier is used for later file retrieval, must contain a-z,A-Z,0-9 and . characters |
89
93
 
94
+ ::: alert alert--warning
95
+ `uid` should have the same file extension (e.g.: mp4, svg, jpg) as the original file.
96
+ :::
97
+
90
98
  ### Javascript Example
91
99
  ```javascript
92
- await sos.offline.cache.loadFile('9d66725ba2105f1833731ade5b7f334e')
100
+ await sos.offline.cache.loadFile('9d66725ba2105f1833731ade5b7f334e.mp4')
93
101
  .then((file) => { console.log('Loaded', file); })
94
102
  .catch((error) => { console.error(error); });
95
103
 
96
104
  // Logs into console
97
105
  {
98
- filePath: '/real/device/path/to/file/9d66725ba2105f1833731ade5b7f334e',
106
+ filePath: '/real/device/path/to/file/9d66725ba2105f1833731ade5b7f334e.mp4',
99
107
  }
100
108
  ```
101
109
 
@@ -124,15 +132,19 @@ To get file from internal memory & save it when not yet exists we prepared `load
124
132
  | `uri` | string | <div class="red">Yes</div> | URL address where to get the file |
125
133
  | `headers` | object | <div class="yellow">No</div> | Key, value pairs of HTTP headers to send along with the request. Used when the target file is protected by a password or if any other specific headers are needed to access it. |
126
134
 
135
+ ::: alert alert--warning
136
+ `uid` should have the same file extension (e.g.: mp4, svg, jpg) as the original file.
137
+ :::
138
+
127
139
  ### Javascript Example
128
140
  ```javascript
129
- await sos.offline.cache.loadOrSaveFile('9d66725ba2105f1833731ade5b7f334e', 'https://cdn.my-cms.com/files/video.mp4', { "Authorization": "Basic Zm9vOmJhcg==" })
141
+ await sos.offline.cache.loadOrSaveFile('9d66725ba2105f1833731ade5b7f334e.mp4', 'https://cdn.my-cms.com/files/video.mp4', { "Authorization": "Basic Zm9vOmJhcg==" })
130
142
  .then((file) => { console.log('Loaded or Saved', file); })
131
143
  .catch((error) => { console.error(error); });
132
144
 
133
145
  // Logs into console
134
146
  {
135
- filePath: '/real/device/path/to/file/9d66725ba2105f1833731ade5b7f334e',
147
+ filePath: '/real/device/path/to/file/9d66725ba2105f1833731ade5b7f334e.mp4',
136
148
  }
137
149
  ```
138
150
 
@@ -187,7 +199,7 @@ Method `deleteFile()` is used for deleting previously saved file from internal m
187
199
 
188
200
  ### Javascript example
189
201
  ```javascript
190
- await sos.offline.cache.deleteFile('9d66725ba2105f1833731ade5b7f334e')
202
+ await sos.offline.cache.deleteFile('9d66725ba2105f1833731ade5b7f334e.mp4')
191
203
  .then(() => { console.log('Deleted'); })
192
204
  .catch((error) => { console.error(error); });
193
205
  ```
@@ -203,7 +215,7 @@ Method `getChecksumFile()` is used for getting the checksum of file from interna
203
215
 
204
216
  ### Javascript example
205
217
  ```javascript
206
- await sos.offline.cache.getChecksumFile('9d66725ba2105f1833731ade5b7f334e', 'md5')
218
+ await sos.offline.cache.getChecksumFile('9d66725ba2105f1833731ade5b7f334e.mp4', 'md5')
207
219
  .then((checksum) => { console.log('MD5 checksum is ' + checksum); })
208
220
  .catch((error) => { console.error(error); });
209
221
  ```
@@ -20,6 +20,7 @@ Management API app lets you check application type and upgrade the application.
20
20
  | Method | Description | Supported since |
21
21
  | ------ | -------- | ------------- |
22
22
  | `getType()` | Information about the platform your application is running on (eg. Tizen) | |
23
+ | `getVersion()` | Information about current version of your application is running on the device (eg. 2.0.5) | |
23
24
  | `upgrade()` | Upgrade/Downgrade the Core App | |
24
25
  :::
25
26
 
@@ -30,8 +31,24 @@ Method `getType()` returns the display type of application on the device.
30
31
  await sos.management.app.getType(); // Returns ex. sssp, android
31
32
  ```
32
33
 
34
+ **Returns one of the following types:**
35
+ - `android`
36
+ - `brightsign`
37
+ - `default` (Emulator)
38
+ - `linux` (Raspberry Pi)
39
+ - `sssp`
40
+ - `tizen`
41
+ - `webos`
42
+ - `windows`
43
+
44
+ ::: alert alert--info
45
+ If you need to get specific Android brand or Raspberry Pi model, use the [Firmware API](api/js/management/latest/2-js-management-firmware) `getType()`.
46
+ :::
47
+
33
48
  ## getVersion()
34
- Method `getVersion()` returns the display version of application on the device.
49
+ Method `getVersion()` returns the version of Core App application on the device.
50
+
51
+ *This API is only available for Applets deployed via Timing from Box or REST API.*
35
52
 
36
53
  ```javascript
37
54
  await sos.management.app.getVersion(); // Returns ex. 2.0.0
@@ -23,6 +23,7 @@ Network management API allows you to manually set network interfaces or set back
23
23
  | `listInterfaces()` | Information about network interfaces | 4.9 |
24
24
  | `setManual()` | Allows you to set network settings manually | 4.0 |
25
25
  | `setDHCP()` | Allows you to set network settings automatically from DHCP | 4.0 |
26
+ | `disableInterface()` | Disables a network interface | 4.13 |
26
27
  :::
27
28
 
28
29
  ## getActiveInfo()
@@ -96,7 +97,8 @@ const interfaces = await sos.management.network.listInterfaces();
96
97
  {
97
98
  "type": "wifi",
98
99
  "name": "wlan0",
99
- "macAddress": "b8:27:eb:25:8f:63"
100
+ "macAddress": "b8:27:eb:25:8f:63",
101
+ "disabled": true,
100
102
  }
101
103
  ]
102
104
  ```
@@ -119,6 +121,11 @@ const interfaces = await sos.management.network.listInterfaces();
119
121
 
120
122
  ## setManual()
121
123
  Manually configures a network interface.
124
+ If the interface is disabled, it will be enabled.
125
+
126
+ ::: alert alert--warning
127
+ Wi-Fi interface can be configured with this method but it has to be first enabled via the [Wi-Fi API](/api/js/management/11-js-management-network).
128
+ :::
122
129
 
123
130
  ### Object properties
124
131
 
@@ -162,6 +169,11 @@ await sos.management.network.setManual({
162
169
 
163
170
  ## setDHCP()
164
171
  Configures a network interface to use DHCP to get an IP address asigned from the network.
172
+ If the interface is disabled, it will be enabled.
173
+
174
+ ::: alert alert--warning
175
+ Wi-Fi interface can be configured with this method but it has to be first enabled via the [Wi-Fi API](/api/js/management/11-js-management-network).
176
+ :::
165
177
 
166
178
  ### Object properties
167
179
 
@@ -183,3 +195,26 @@ await sos.management.network.setDHCP('eth0');
183
195
  // old way (deprecated)
184
196
  await sos.management.network.setDHCP('ethernet');
185
197
  ```
198
+
199
+ ## disableInterface()
200
+ Disables a network interface
201
+
202
+ ::: table-responsive
203
+ | Param | Type | Required | Description |
204
+ | --------------- | ------ | :------------------------: | ---------------------------------------------------- |
205
+ | `interfaceName` | String | <div class="red">Yes</div> | Name of the network interface, that will be disabled |
206
+ :::
207
+
208
+ ### Javascript example
209
+ ```javascript
210
+ await sos.management.wifi.disableInterface("eth0");
211
+ ```
212
+
213
+ ::: alert alert--info
214
+ A disabled network interface can be re-enabled simply by calling either `setDHCP()` or `setManual()`.
215
+ :::
216
+
217
+ ::: alert alert--warning
218
+ Don't use this method to disable Wi-Fi.
219
+ Use [Wi-Fi API](/api/js/management/11-js-management-network) to enable/disable Wi-Fi.
220
+ :::
@@ -80,6 +80,10 @@ Returns a string identifier that, when combined with firmware version, can be us
80
80
  | ------------- | -------------------------------------- |
81
81
  | `rpi` | any Raspberry Pi 3 or Compute Module 3 |
82
82
  | `rpi4` | any Raspberry Pi 4 or Compute Module 4 |
83
+ | `benq-` | any Benq display |
84
+ | `philips-` | any Philips display |
85
+ | `sharp-` | any Sharp display |
86
+ | `elo-` | any Elo display |
83
87
  :::
84
88
 
85
89
  ### Javascript example
@@ -1,14 +1,24 @@
1
- import IPostMessage from '../IPostMessage';
2
1
  import { IDeprecatedOpenLinkOptions } from './IOpenLinkOptions';
3
2
  import IOpenLinkOptions from './IOpenLinkOptions';
3
+ import { CloseEvent } from './events';
4
+ import { IBrowserMessage } from './messages';
5
+ import Exchange from '../Exchange/Exchange';
4
6
  export default class Browser {
5
- private messagePrefix;
6
- private postMessage;
7
- static MESSAGE_PREFIX: string;
8
- constructor(messagePrefix: string, postMessage: IPostMessage<void>);
7
+ private readonly exchange;
8
+ private readonly events;
9
+ constructor(exchange: Exchange<void>);
9
10
  open(uri: string, options?: IOpenLinkOptions): Promise<void>;
10
11
  close(): Promise<void>;
12
+ /**
13
+ * Find out when the browser is closed.
14
+ * This can happen by an API call, by a user request or after a timeout.
15
+ *
16
+ * This doesn't fire between `open` calls or on subsequent `close` calls.
17
+ *
18
+ * @returns A callback which removes the listener.
19
+ */
20
+ onClose(listener: (event: CloseEvent) => void): () => void;
21
+ handleMessageData(data: IBrowserMessage): void;
11
22
  /** @deprecated use sos.browser.open() instead */
12
23
  openLink(uri: string, options?: IDeprecatedOpenLinkOptions): Promise<void>;
13
- private getMessage;
14
24
  }
@@ -11,38 +11,65 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  const IOpenLinkOptions_1 = require("./IOpenLinkOptions");
13
13
  const Validate_1 = require("../Validate/Validate");
14
+ const events_1 = require("./events");
15
+ const events_2 = require("events");
14
16
  class Browser {
15
- constructor(messagePrefix, postMessage) {
16
- this.messagePrefix = messagePrefix;
17
- this.postMessage = postMessage;
17
+ constructor(exchange) {
18
+ this.exchange = exchange;
19
+ this.events = new events_2.EventEmitter();
18
20
  }
19
21
  open(uri, options = {}) {
22
+ var _a;
20
23
  return __awaiter(this, void 0, void 0, function* () {
21
24
  Validate_1.default({ uri }).required().uri();
22
25
  Validate_1.default({ options }).required().object(IOpenLinkOptions_1.VIOpenLinkOptions);
23
- yield this.postMessage(Object.assign({ type: this.getMessage('open'), uri }, options));
26
+ const headlessMode = (_a = options.headlessMode) !== null && _a !== void 0 ? _a : true;
27
+ yield this.exchange.postMessage(Object.assign(Object.assign({ uri }, options), { headlessMode, type: 'open' }));
24
28
  });
25
29
  }
26
30
  close() {
27
31
  return __awaiter(this, void 0, void 0, function* () {
28
- yield this.postMessage({
29
- type: this.getMessage('close'),
32
+ yield this.exchange.postMessage({
33
+ type: 'close',
30
34
  });
31
35
  });
32
36
  }
37
+ /**
38
+ * Find out when the browser is closed.
39
+ * This can happen by an API call, by a user request or after a timeout.
40
+ *
41
+ * This doesn't fire between `open` calls or on subsequent `close` calls.
42
+ *
43
+ * @returns A callback which removes the listener.
44
+ */
45
+ onClose(listener) {
46
+ Validate_1.default({ listener }).required().function();
47
+ this.events.addListener(events_1.EventType.CLOSE, listener);
48
+ return () => {
49
+ this.events.removeListener(events_1.EventType.CLOSE, listener);
50
+ };
51
+ }
52
+ handleMessageData(data) {
53
+ switch (data.type) {
54
+ case this.exchange.messageNameToType('closed'):
55
+ const event = {
56
+ type: events_1.EventType.CLOSE,
57
+ reason: data.reason,
58
+ };
59
+ this.events.emit(events_1.EventType.CLOSE, event);
60
+ break;
61
+ default:
62
+ }
63
+ }
33
64
  /** @deprecated use sos.browser.open() instead */
34
65
  openLink(uri, options = {}) {
35
66
  return __awaiter(this, void 0, void 0, function* () {
67
+ console.warn('sos.browser.openLink() is deprecated and will be removed in the future versions. Use sos.browser.open() instead.');
36
68
  Validate_1.default({ uri }).required().uri();
37
69
  Validate_1.default({ options }).required().object();
38
- console.warn('sos.browser.openLink() is deprecated and will be removed in the future versions. Use sos.browser.open() instead.');
39
- yield this.postMessage(Object.assign({ type: this.getMessage('open_link'), uri }, options));
70
+ yield this.exchange.postMessage(Object.assign(Object.assign({ uri }, options), { headlessMode: false, type: 'open_link' }));
40
71
  });
41
72
  }
42
- getMessage(name) {
43
- return this.messagePrefix + '.' + Browser.MESSAGE_PREFIX + '.' + name;
44
- }
45
73
  }
46
74
  exports.default = Browser;
47
- Browser.MESSAGE_PREFIX = 'browser';
48
75
  //# sourceMappingURL=Browser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/Browser.ts"],"names":[],"mappings":";;;;;;;;;;;AAEA,yDAAmF;AAEnF,mDAA4C;AAE5C,MAAqB,OAAO;IAI3B,YACS,aAAqB,EACrB,WAA+B;QAD/B,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAoB;IACrC,CAAC;IAES,IAAI,CAAC,GAAW,EAAE,UAA4B,EAAE;;YAC5D,kBAAQ,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;YACjC,kBAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,oCAAiB,CAAC,CAAC;YACzD,MAAM,IAAI,CAAC,WAAW,iBACrB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAC7B,GAAG,IACA,OAAO,EACT,CAAC;QACJ,CAAC;KAAA;IAEY,KAAK;;YACjB,MAAM,IAAI,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC;QACJ,CAAC;KAAA;IAED,iDAAiD;IACpC,QAAQ,CACpB,GAAW,EACX,UAAsC,EAAE;;YAExC,kBAAQ,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;YACjC,kBAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;YACjI,MAAM,IAAI,CAAC,WAAW,iBACrB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAClC,GAAG,IACA,OAAO,EACT,CAAC;QACJ,CAAC;KAAA;IAEO,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,aAAa,GAAG,GAAG,GAAG,OAAO,CAAC,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;IACvE,CAAC;;AA1CF,0BA2CC;AAzCc,sBAAc,GAAW,SAAS,CAAC"}
1
+ {"version":3,"file":"Browser.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/Browser.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,yDAAmF;AAEnF,mDAA4C;AAC5C,qCAA8D;AAC9D,mCAAsC;AAItC,MAAqB,OAAO;IAI3B,YACkB,QAAwB;QAAxB,aAAQ,GAAR,QAAQ,CAAgB;QAHzB,WAAM,GAAiB,IAAI,qBAAY,EAAE,CAAC;IAK3D,CAAC;IAEY,IAAI,CAAC,GAAW,EAAE,UAA4B,EAAE;;;YAC5D,kBAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;YACnC,kBAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,oCAAiB,CAAC,CAAC;YAE3D,MAAM,YAAY,SAAG,OAAO,CAAC,YAAY,mCAAI,IAAI,CAAC;YAClD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,+BAC9B,GAAG,IACA,OAAO,KACV,YAAY,EACZ,IAAI,EAAE,MAAM,IACX,CAAC;;KACH;IAEY,KAAK;;YACjB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC/B,IAAI,EAAE,OAAO;aACb,CAAC,CAAC;QACJ,CAAC;KAAA;IAED;;;;;;;OAOG;IACI,OAAO,CAAC,QAAqC;QACnD,kBAAQ,CAAC,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;IAEM,iBAAiB,CAAC,IAAqB;QAC7C,QAAQ,IAAI,CAAC,IAAI,EAAE;YAClB,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;SACR;IACF,CAAC;IAED,iDAAiD;IACpC,QAAQ,CACpB,GAAW,EACX,UAAsC,EAAE;;YAExC,OAAO,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;YAEjI,kBAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC;YACnC,kBAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC;YAE1C,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,+BAC9B,GAAG,IACA,OAAO,KACV,YAAY,EAAE,KAAK,EACnB,IAAI,EAAE,WAAW,IAChB,CAAC;QACJ,CAAC;KAAA;CACD;AA3ED,0BA2EC"}
@@ -93,6 +93,7 @@ interface IOpenLinkOptions {
93
93
  aclDomains?: string[];
94
94
  aclMode?: 'blacklist' | 'whitelist';
95
95
  readOnlyAddressBar?: boolean;
96
+ idleTimeout?: number;
96
97
  coordinates?: {
97
98
  x: number;
98
99
  y: number;
@@ -100,6 +101,9 @@ interface IOpenLinkOptions {
100
101
  height: number;
101
102
  };
102
103
  theme?: ITheme;
104
+ headlessMode?: boolean;
105
+ clearData?: boolean;
106
+ canUserClose?: boolean;
103
107
  }
104
108
  export default IOpenLinkOptions;
105
109
  export declare const VIOpenLinkOptions: {
@@ -110,6 +114,7 @@ export declare const VIOpenLinkOptions: {
110
114
  '?string': string[];
111
115
  };
112
116
  readOnlyAddressBar: string;
117
+ idleTimeout: string;
113
118
  coordinates: {
114
119
  '?object': {
115
120
  x: string;
@@ -171,4 +176,7 @@ export declare const VIOpenLinkOptions: {
171
176
  };
172
177
  };
173
178
  };
179
+ headlessMode: string;
180
+ clearData: string;
181
+ canUserClose: string;
174
182
  };
@@ -43,6 +43,7 @@ exports.VIOpenLinkOptions = {
43
43
  aclDomains: { '?array': 'string' },
44
44
  aclMode: { '?string': ['blacklist', 'whitelist'] },
45
45
  readOnlyAddressBar: '?boolean',
46
+ idleTimeout: '?number',
46
47
  coordinates: { '?object': {
47
48
  x: 'number',
48
49
  y: 'number',
@@ -51,5 +52,8 @@ exports.VIOpenLinkOptions = {
51
52
  }
52
53
  },
53
54
  theme: { '?object': exports.VITheme },
55
+ headlessMode: '?boolean',
56
+ clearData: '?boolean',
57
+ canUserClose: '?boolean',
54
58
  };
55
59
  //# sourceMappingURL=IOpenLinkOptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IOpenLinkOptions.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/IOpenLinkOptions.ts"],"names":[],"mappings":";;AAmCa,QAAA,OAAO,GAAG;IACtB,IAAI,EAAE,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC;IACpC,KAAK,EAAE,EAAC,SAAS,EAAE;YACjB,UAAU,EAAE,SAAS;SACrB;KACD;IACD,MAAM,EAAE,EAAC,SAAS,EAAE;YAClB,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SAClB;KACD;IACD,OAAO,EAAE,EAAC,SAAS,EAAE;YACnB,WAAW,EAAE,EAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,EAAC,SAAS,EAAE;4BAClB,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;YACD,WAAW,EAAE,EAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,EAAC,SAAS,EAAE;4BAClB,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,SAAS;yBACf;qBACD;oBACD,IAAI,EAAE,EAAC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAC;oBAC7D,IAAI,EAAE,SAAS;iBACf;aACD;YACD,QAAQ,EAAE,EAAC,SAAS,EAAE;oBACpB,KAAK,EAAE,SAAS;iBAChB;aACD;SACD;KACD;CACD,CAAC;AA0BW,QAAA,iBAAiB,GAAG;IAChC,UAAU,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;IAChC,OAAO,EAAE,EAAC,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAC;IAChD,kBAAkB,EAAE,UAAU;IAC9B,WAAW,EAAE,EAAC,SAAS,EAAE;YACvB,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;SAChB;KACD;IACD,KAAK,EAAE,EAAC,SAAS,EAAE,eAAO,EAAC;CAC3B,CAAC"}
1
+ {"version":3,"file":"IOpenLinkOptions.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/IOpenLinkOptions.ts"],"names":[],"mappings":";;AAmCa,QAAA,OAAO,GAAG;IACtB,IAAI,EAAE,EAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAC;IACpC,KAAK,EAAE,EAAC,SAAS,EAAE;YACjB,UAAU,EAAE,SAAS;SACrB;KACD;IACD,MAAM,EAAE,EAAC,SAAS,EAAE;YAClB,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,SAAS;SAClB;KACD;IACD,OAAO,EAAE,EAAC,SAAS,EAAE;YACnB,WAAW,EAAE,EAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,EAAC,SAAS,EAAE;4BAClB,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;yBACf;qBACD;iBACD;aACD;YACD,WAAW,EAAE,EAAC,SAAS,EAAE;oBACvB,MAAM,EAAE,EAAC,SAAS,EAAE;4BAClB,UAAU,EAAE,SAAS;4BACrB,IAAI,EAAE,SAAS;4BACf,IAAI,EAAE,SAAS;yBACf;qBACD;oBACD,IAAI,EAAE,EAAC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAC;oBAC7D,IAAI,EAAE,SAAS;iBACf;aACD;YACD,QAAQ,EAAE,EAAC,SAAS,EAAE;oBACpB,KAAK,EAAE,SAAS;iBAChB;aACD;SACD;KACD;CACD,CAAC;AA8BW,QAAA,iBAAiB,GAAG;IAChC,UAAU,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC;IAChC,OAAO,EAAE,EAAC,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAC;IAChD,kBAAkB,EAAE,UAAU;IAC9B,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,EAAC,SAAS,EAAE;YACvB,CAAC,EAAE,QAAQ;YACX,CAAC,EAAE,QAAQ;YACX,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;SAChB;KACD;IACD,KAAK,EAAE,EAAC,SAAS,EAAE,eAAO,EAAC;IAC3B,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,UAAU;CACxB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare enum EventType {
2
+ CLOSE = "close"
3
+ }
4
+ export declare const VIEventType: string[];
5
+ export declare type Event<TType extends EventType = EventType> = {
6
+ type: TType;
7
+ };
8
+ export interface CloseEvent extends Event<EventType.CLOSE> {
9
+ reason: CloseReason;
10
+ }
11
+ export declare enum CloseReason {
12
+ API = "API",
13
+ USER = "USER",
14
+ TIMEOUT = "TIMEOUT"
15
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var EventType;
4
+ (function (EventType) {
5
+ EventType["CLOSE"] = "close";
6
+ })(EventType = exports.EventType || (exports.EventType = {}));
7
+ exports.VIEventType = ['close'];
8
+ var CloseReason;
9
+ (function (CloseReason) {
10
+ CloseReason["API"] = "API";
11
+ CloseReason["USER"] = "USER";
12
+ CloseReason["TIMEOUT"] = "TIMEOUT";
13
+ })(CloseReason = exports.CloseReason || (exports.CloseReason = {}));
14
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/events.ts"],"names":[],"mappings":";;AACA,IAAY,SAEX;AAFD,WAAY,SAAS;IACpB,4BAAe,CAAA;AAChB,CAAC,EAFW,SAAS,GAAT,iBAAS,KAAT,iBAAS,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,GAAX,mBAAW,KAAX,mBAAW,QAItB"}
@@ -0,0 +1,5 @@
1
+ import IMessage from "../IMessage";
2
+ export declare type IBrowserMessage = IBrowserClosedMessage;
3
+ export declare type IBrowserClosedMessage = IMessage & {
4
+ reason: 'API' | 'USER' | 'TIMEOUT';
5
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/FrontApplet/Browser/messages.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import IPostMessage from "../../FrontApplet/IPostMessage";
2
+ export default interface Exchange<TResponse> {
3
+ postMessage: IPostMessage<TResponse>;
4
+ messageNameToType(name: string): string;
5
+ createNamespaced<TNamespacedResponse>(namespace: string): Exchange<TNamespacedResponse>;
6
+ }
7
+ export declare function createExchange<TResponse>(messagePrefix: string, postMessage: IPostMessage<any>): Exchange<TResponse>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ function createExchange(messagePrefix, postMessage) {
13
+ const messageNameToType = (name) => {
14
+ return [messagePrefix, name].join('.');
15
+ };
16
+ const typedPostMessage = (message) => __awaiter(this, void 0, void 0, function* () {
17
+ const type = messageNameToType(message.type);
18
+ message = Object.assign(Object.assign({}, message), { type });
19
+ return postMessage(message);
20
+ });
21
+ return {
22
+ messageNameToType,
23
+ postMessage: typedPostMessage,
24
+ createNamespaced: (namespace) => createExchange(messageNameToType(namespace), postMessage)
25
+ };
26
+ }
27
+ exports.createExchange = createExchange;
28
+ //# sourceMappingURL=Exchange.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Exchange.js","sourceRoot":"","sources":["../../../src/FrontApplet/Exchange/Exchange.ts"],"names":[],"mappings":";;;;;;;;;;;AASA,SAAgB,cAAc,CAC7B,aAAqB,EACrB,WAA8B;IAE9B,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAE,EAAE;QAC1C,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC,CAAC;IACF,MAAM,gBAAgB,GAAG,CAAO,OAAiB,EAAsB,EAAE;QACxE,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,mCACH,OAAO,KACV,IAAI,GACJ,CAAC;QACF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAA,CAAC;IACF,OAAO;QACN,iBAAiB;QACjB,WAAW,EAAE,gBAAgB;QAC7B,gBAAgB,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;KAClG,CAAC;AACH,CAAC;AApBD,wCAoBC"}
@@ -15,6 +15,7 @@ export default class FileSystem {
15
15
  exists(filePath: IFilePath): Promise<boolean>;
16
16
  getFile(filePath: IFilePath): Promise<IFile | null>;
17
17
  writeFile(filePath: IFilePath, contents: string): Promise<void>;
18
+ appendFile(filePath: IFilePath, contents: string): Promise<void>;
18
19
  readFile(filePath: IFilePath): Promise<string>;
19
20
  copyFile(sourceFilePath: IFilePath, destinationFilePath: IFilePath, options?: ICopyFileOptions): Promise<void>;
20
21
  moveFile(sourceFilePath: IFilePath, destinationFilePath: IFilePath, options?: IMoveFileOptions): Promise<void>;
@@ -78,6 +78,16 @@ class FileSystem {
78
78
  });
79
79
  });
80
80
  }
81
+ appendFile(filePath, contents) {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ Validate_1.default({ filePath }).required().object(types_1.VIFilePath);
84
+ yield this.postMessage({
85
+ type: this.getMessage('append_file'),
86
+ filePath,
87
+ contents,
88
+ });
89
+ });
90
+ }
81
91
  readFile(filePath) {
82
92
  return __awaiter(this, void 0, void 0, function* () {
83
93
  Validate_1.default({ filePath }).required().object(types_1.VIFilePath);
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../../src/FrontApplet/FileSystem/FileSystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileSystem.js","sourceRoot":"","sources":["../../../src/FrontApplet/FileSystem/FileSystem.ts"],"names":[],"mappings":"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"}