@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 +2 -1
- package/packages/device/src/driver/index.vegaos.tv.ts +1 -0
- package/packages/device/src/resolver/resolver.ts +5 -0
- package/packages/driver-base/src/index.ts +1 -0
- package/packages/driver-vegaos/src/DeviceVegaOS.ts +174 -0
- package/packages/driver-vegaos/src/__mocks__/vegaOSBridge.ts +15 -0
- package/packages/driver-vegaos/src/index.ts +1 -0
- package/packages/driver-vegaos/src/keymap.ts +12 -0
- package/packages/driver-vegaos/src/types.ts +23 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@24i/bigscreen-sdk",
|
|
3
|
-
"version": "1.0.54-
|
|
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
|
+
}
|