@24i/bigscreen-sdk 1.0.54-alpha.2841 → 1.0.54-test.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24i/bigscreen-sdk",
3
- "version": "1.0.54-alpha.2841",
3
+ "version": "1.0.54-test.0",
4
4
  "description": "SmartApps BIGscreen SDK monorepo",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -128,6 +128,7 @@
128
128
  "./driver-saphi": "./packages/driver-saphi/src/index.ts",
129
129
  "./driver-smartcast": "./packages/driver-smartcast/src/index.ts",
130
130
  "./driver-tizen": "./packages/driver-tizen/src/index.ts",
131
+ "./driver-vegaos": "./packages/driver-vegaos/src/index.ts",
131
132
  "./driver-vidaa": "./packages/driver-vidaa/src/index.ts",
132
133
  "./driver-webos/scripts/template": "./packages/driver-webos/scripts/template.ts",
133
134
  "./driver-webos/scripts/exportWebOSTVjs": "./packages/driver-webos/scripts/exportWebOSTVjs.ts",
@@ -0,0 +1 @@
1
+ export { DeviceVegaOS as Device } from '@24i/bigscreen-sdk/driver-vegaos';
@@ -7,6 +7,7 @@ import { DeviceHbbTV } from '@24i/bigscreen-sdk/driver-hbbtv';
7
7
  import { DeviceKreaTV } from '@24i/bigscreen-sdk/driver-kreatv';
8
8
  import { DeviceSaphi } from '@24i/bigscreen-sdk/driver-saphi';
9
9
  import { DeviceTizen } from '@24i/bigscreen-sdk/driver-tizen';
10
+ import { DeviceVegaOS } from '@24i/bigscreen-sdk/driver-vegaos';
10
11
  import { DeviceVidaa } from '@24i/bigscreen-sdk/driver-vidaa';
11
12
  import { DeviceSmartCast } from '@24i/bigscreen-sdk/driver-smartcast';
12
13
  import { DeviceWebos } from '@24i/bigscreen-sdk/driver-webos';
@@ -34,6 +35,10 @@ const getDevice = () => {
34
35
  info('AndroidTV');
35
36
  return new DeviceAndroidTV();
36
37
  }
38
+ if (userAgent.match(/Kepler/)) {
39
+ info('VegaOS');
40
+ return new DeviceVegaOS();
41
+ }
37
42
  if (userAgent.match(/Tizen/)) {
38
43
  info('Tizen');
39
44
  return new DeviceTizen();
@@ -5,6 +5,7 @@ export { VolumeRange } from './VolumeRange';
5
5
  export type { ScreenSize } from './ScreenSize';
6
6
  export type { KeycodeKeyMap } from './types/KeycodeKeyMap';
7
7
  export type { DeviceEventMap } from './types/DeviceEvent';
8
+ export type { AdInfo } from './types/AdInfo';
8
9
  export type {
9
10
  IAPSuccessPayload, IAPErrorPayload, IAPPromiseResolve, IAPPromiseReject, IAPPurchaseProductData,
10
11
  } from './types/InAppPurchase';
@@ -0,0 +1,174 @@
1
+ import {
2
+ DeviceBase,
3
+ ConnectionType,
4
+ ScreenSaverStatus,
5
+ VolumeRange,
6
+ IAPSuccessPayload,
7
+ IAPPurchaseProductData,
8
+ AdInfo,
9
+ } from '@24i/bigscreen-sdk/driver-base';
10
+ import { generateUuid } from '@24i/bigscreen-sdk/utils';
11
+ import { getKeyMap } from './keymap';
12
+ import { DeviceInfo, IVegaOSBridge } from './types';
13
+
14
+ declare global {
15
+ interface Window extends IVegaOSBridge {}
16
+ }
17
+
18
+ export class DeviceVegaOS extends DeviceBase {
19
+ keyMap = getKeyMap();
20
+
21
+ deviceInfo: DeviceInfo | null = null;
22
+
23
+ async initDevice(): Promise<void> {
24
+ this.initNetworkChangeListener();
25
+ }
26
+
27
+ getDeviceInfo(): DeviceInfo | null {
28
+ if (this.deviceInfo) return this.deviceInfo;
29
+ try {
30
+ const deviceInfo = window.VegaOSBridge.getDeviceInfo();
31
+ if (deviceInfo) this.deviceInfo = deviceInfo;
32
+ return this.deviceInfo;
33
+ } catch {}
34
+ return this.deviceInfo;
35
+ }
36
+
37
+ initNetworkChangeListener() {
38
+ window.addEventListener('online', () => {
39
+ this.triggerEvent('networkchange', { isConnected: true });
40
+ });
41
+ window.addEventListener('offline', () => {
42
+ this.triggerEvent('networkchange', { isConnected: false });
43
+ });
44
+ }
45
+
46
+ reboot(): void {
47
+ let rootPath = '';
48
+ const splitUrl = window.location.href.split('#');
49
+ if (splitUrl.length > 1) rootPath = splitUrl[0];
50
+ window.location.href = rootPath;
51
+ }
52
+
53
+ exit(): void {
54
+ window.VegaOSBridge.exit();
55
+ }
56
+
57
+ async getManufacturerName(): Promise<string> {
58
+ const deviceInfo = this.getDeviceInfo();
59
+ return deviceInfo?.manufacturer || '';
60
+ }
61
+
62
+ async getPlatformName(): Promise<string> {
63
+ return 'VegaOS';
64
+ }
65
+
66
+ async getPlatformVersion(): Promise<string> {
67
+ const deviceInfo = this.getDeviceInfo();
68
+ return deviceInfo?.platformVersion || '';
69
+ }
70
+
71
+ async getDeviceName(): Promise<string> {
72
+ const modelName = await this.getModelName();
73
+ const manufacturerName = await this.getManufacturerName();
74
+ return `VegaOS ${manufacturerName} ${modelName}`.trim();
75
+ }
76
+
77
+ async getModelName(): Promise<string> {
78
+ const deviceInfo = this.getDeviceInfo();
79
+ return deviceInfo?.modelName || '';
80
+ }
81
+
82
+ async getFirmware(): Promise<string> {
83
+ const deviceInfo = this.getDeviceInfo();
84
+ return deviceInfo?.firmwareVersion || '';
85
+ }
86
+
87
+ async is4KSupported(): Promise<boolean> {
88
+ return false;
89
+ }
90
+
91
+ async is8KSupported(): Promise<boolean> {
92
+ return false;
93
+ }
94
+
95
+ async getUuid(): Promise<string> {
96
+ return this.getBaseUuid();
97
+ }
98
+
99
+ async getAdInfo(): Promise<AdInfo> {
100
+ const adId = generateUuid();
101
+ const type = 'sessionid';
102
+ const latEnabled = null;
103
+ return { adId, type, latEnabled };
104
+ }
105
+
106
+ async getOsLanguage(): Promise<string> {
107
+ const deviceInfo = this.getDeviceInfo();
108
+ return deviceInfo?.osLanguage || '';
109
+ }
110
+
111
+ async getVolume(): Promise<number> {
112
+ return VolumeRange.UNSUPPORTED;
113
+ }
114
+
115
+ async getWrapperVersion(): Promise<string> {
116
+ const deviceInfo = this.getDeviceInfo();
117
+ return deviceInfo?.wrapperVersion || '';
118
+ }
119
+
120
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
121
+ async setVolume(volumePercentage: number): Promise<void> {
122
+ // not supported on VegaOS platform
123
+ }
124
+
125
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
126
+ async mute(mute: boolean): Promise<void> {
127
+ // not supported on VegaOS platform
128
+ }
129
+
130
+ async isMute(): Promise<boolean> {
131
+ return false;
132
+ }
133
+
134
+ async getScreenSaver(): Promise<ScreenSaverStatus> {
135
+ return { enabled: false };
136
+ }
137
+
138
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
+ async setScreenSaver(status: ScreenSaverStatus): Promise<void> {
140
+ // not supported on VegaOS platform
141
+ }
142
+
143
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
144
+ async setUserAgent(userAgent: string): Promise<boolean> {
145
+ return false;
146
+ }
147
+
148
+ async isNetworkConnected(): Promise<boolean> {
149
+ return window.navigator.onLine;
150
+ }
151
+
152
+ async getConnectionType(): Promise<ConnectionType> {
153
+ // only wifi connection is supported on VegaOS platform
154
+ return 'wifi';
155
+ }
156
+
157
+ async getLocalIP(): Promise<string> {
158
+ return '';
159
+ }
160
+
161
+ async getMacAddress(): Promise<string> {
162
+ return '';
163
+ }
164
+
165
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
166
+ async purchaseProduct(data: IAPPurchaseProductData): Promise<IAPSuccessPayload> {
167
+ throw new Error('Not supported');
168
+ }
169
+
170
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
171
+ async cancelSubscription(data: IAPPurchaseProductData): Promise<void> {
172
+ throw new Error('Not supported');
173
+ }
174
+ }
@@ -0,0 +1,15 @@
1
+ import { IVegaOSBridge } from '../types';
2
+
3
+ export const mockVegaOSBridge: IVegaOSBridge = {
4
+ VegaOSBridge: {
5
+ getDeviceInfo: () => ({
6
+ manufacturer: 'Amazon',
7
+ platformVersion: '1.0.0',
8
+ firmwareVersion: 'Kepler/1.1 (Linux; AQVV01P)',
9
+ modelName: 'AFTCA001',
10
+ osLanguage: 'en',
11
+ wrapperVersion: '0.0.1',
12
+ }),
13
+ exit: () => {},
14
+ },
15
+ };
@@ -0,0 +1 @@
1
+ export { DeviceVegaOS } from './DeviceVegaOS';
@@ -0,0 +1,12 @@
1
+ /* eslint-disable no-magic-numbers */
2
+ import { KeyMap } from '@24i/bigscreen-sdk/driver-base';
3
+
4
+ export const getKeyMap = () => {
5
+ KeyMap.overrideValues({
6
+ BACK: { keyCode: 8 },
7
+ FF: { keyCode: 228 },
8
+ REW: { keyCode: 227 },
9
+ PLAYPAUSE: { keyCode: 179 },
10
+ });
11
+ return KeyMap.generateKeyCodeKeyMap();
12
+ };
@@ -0,0 +1,23 @@
1
+ interface VegaOSBridge {
2
+ /**
3
+ * It returns a JSON string with device info.
4
+ */
5
+ getDeviceInfo: () => DeviceInfo,
6
+ /**
7
+ * It exists the application.
8
+ */
9
+ exit: () => void,
10
+ }
11
+
12
+ export type DeviceInfo = {
13
+ manufacturer: string;
14
+ platformVersion: string;
15
+ firmwareVersion: string;
16
+ modelName: string;
17
+ osLanguage: string;
18
+ wrapperVersion: string;
19
+ };
20
+
21
+ export interface IVegaOSBridge {
22
+ VegaOSBridge: VegaOSBridge,
23
+ }