From 5e12a00e44e13edc1bfc7bba10a1fe8b039455c1 Mon Sep 17 00:00:00 2001 From: zhaosy Date: Thu, 11 Aug 2022 18:40:05 +0800 Subject: [PATCH 01/16] [WRTjs] If app is quiting, don't call show app App will crash in below scenario, because all windows are closed, so add protected code. App is quitting -> ready-to-show event is triggered -> visibility_callback -> GetMainNativeWindow Change-Id: Ie71dc4ff71bf639a7059641a34b4819a7e97869a Signed-off-by: zhaosy --- wrt_app/src/web_application.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wrt_app/src/web_application.ts b/wrt_app/src/web_application.ts index ff110c6..c7d497a 100644 --- a/wrt_app/src/web_application.ts +++ b/wrt_app/src/web_application.ts @@ -210,6 +210,9 @@ export class WebApplication { private setupMainWindowEventListener() { this.mainWindow.once('ready-to-show', () => { + if (this.inQuit) + return; + console.log('mainWindow ready-to-show'); if (this.showTimer) clearTimeout(this.showTimer); -- 2.7.4 From 4ad68aefff2a3aa72f41ef16ac4f1fc853402f9b Mon Sep 17 00:00:00 2001 From: "yman.son" Date: Fri, 26 Aug 2022 16:36:14 +0900 Subject: [PATCH 02/16] [WRTjs] add disable screensaver metadata description metadata:http://samsung.com/tv/metadata/disable.screensaver.partialvideo The description of the metadata provided by the application should be added to the .xml file. (VD Division Policy) Change-Id: I45b5906a72e684da88cf13cc87fbdede6bda8084 Signed-off-by: yman.son --- packaging/metadata-profile.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packaging/metadata-profile.xml b/packaging/metadata-profile.xml index bb68518..2d4e7d3 100755 --- a/packaging/metadata-profile.xml +++ b/packaging/metadata-profile.xml @@ -57,4 +57,18 @@ + + + N + 1.0 + + true | false + + + false + + + + + -- 2.7.4 From 5d0adbf56cf744e4182a3dc41ae26d4aa9697a3b Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Tue, 6 Sep 2022 09:09:55 +0900 Subject: [PATCH 03/16] [VD] Add builtins services to webpack config Add missing files if builtin services Change-Id: I94e174d15e53b2976fcafda4a51a575511530b07 Signed-off-by: DongHyun Song --- wrt_app/webpack.config.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/wrt_app/webpack.config.js b/wrt_app/webpack.config.js index 6978719..feb07be 100644 --- a/wrt_app/webpack.config.js +++ b/wrt_app/webpack.config.js @@ -16,6 +16,8 @@ module.exports = { 'addon/renderer/addonapi': path.resolve(__dirname, 'addon', 'renderer', 'addonapi.ts'), 'browser/init': path.resolve(__dirname, 'browser', 'init.ts'), 'renderer/init': path.resolve(__dirname, 'renderer', 'init.ts'), + 'service/builtins/appmanifest_loader': path.resolve(__dirname, 'service', 'builtins', 'appmanifest_loader.ts'), + 'service/builtins/wasm_builder': path.resolve(__dirname, 'service', 'builtins', 'wasm_builder.ts'), 'service/main': path.resolve(__dirname, 'service', 'main.ts'), 'service/service_runner': path.resolve(__dirname, 'service', 'service_runner.ts'), 'src/runtime': path.resolve(__dirname, 'src', 'runtime.ts') -- 2.7.4 From 427d9750258d5a5b334d32491a50f7bf84d16745 Mon Sep 17 00:00:00 2001 From: liwei Date: Mon, 19 Sep 2022 11:51:19 +0800 Subject: [PATCH 04/16] Support 64bit env 1. Support 64bit compile ./tizen/build/build_tv.sh -P profile.tztv_64bit_7.0_arm-pontusm -A aarch64 2. In 64bit env, plugin path should be '/usr/lib64' not '/usr/lib' Change-Id: I4b29a75eff19780fcf855c4fb946033258a271f2 Signed-off-by: liwei --- packaging/plugins_aarch64.json | 88 ++++++++++++++++++++++++++++++++++++++++++ packaging/wrtjs.spec | 5 +++ tizen/build/gbs.conf.in | 19 +++++++++ 3 files changed, 112 insertions(+) create mode 100644 packaging/plugins_aarch64.json diff --git a/packaging/plugins_aarch64.json b/packaging/plugins_aarch64.json new file mode 100644 index 0000000..db12447 --- /dev/null +++ b/packaging/plugins_aarch64.json @@ -0,0 +1,88 @@ +[ + { + "name":"tizen.filesystem", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_filesystem.so", + "entry_points": [] + }, + { + "name":"tizen.messageport", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_messageport.so", + "entry_points": [] + }, + { + "name":"tizen", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen.so", + "entry_points": [] + }, + { + "name":"tizen.datacontrol", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_datacontrol.so", + "entry_points": [] + }, + { + "name":"tizen.application", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_application.so", + "entry_points": ["tizen.ApplicationControl","tizen.ApplicationControlData"] + }, + { + "name":"tizen.time", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_time.so", + "entry_points": ["tizen.TZDate","tizen.TimeDuration"] + }, + { + "name":"xwalk", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_utils.so", + "entry_points": [] + }, + { + "name":"tizen.systeminfo", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_systeminfo.so", + "entry_points": [] + }, + { + "name":"tizen.package", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_package.so", + "entry_points": [] + }, + { + "name":"tizen.alarm", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_alarm.so", + "entry_points": ["tizen.AlarmRelative","tizen.AlarmAbsolute"] + }, + { + "name":"tizen.exif", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_exif.so", + "entry_points": ["tizen.ExifInformation"] + }, + { + "name":"tizen.content", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_content.so", + "entry_points": [] + }, + { + "name":"tizen.download", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_download.so", + "entry_points": ["tizen.DownloadRequest"] + }, + { + "name":"tizen.account", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_account.so", + "entry_points": ["tizen.Account"] + }, + { + "name":"tizen.iotcon", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_iotcon.so", + "entry_points": ["tizen.IotconOption","tizen.Query","tizen.QueryFilter", + "tizen.Representation","tizen.Response","tizen.State"] + }, + { + "name":"tizen.notification", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_notification.so", + "entry_points": ["tizen.StatusNotification","tizen.UserNotification", "tizen.NotificationDetailInfo"] + }, + { + "name":"tizen.archive", + "lib":"/usr/lib64/tizen-extensions-crosswalk/libtizen_archive.so", + "entry_points": [] + } +] diff --git a/packaging/wrtjs.spec b/packaging/wrtjs.spec index dd21607..076c750 100644 --- a/packaging/wrtjs.spec +++ b/packaging/wrtjs.spec @@ -178,7 +178,12 @@ echo %{version} > %{buildroot}%{_datadir}/wrtjs/version %endif mkdir -p %{buildroot}%{_libdir}/%{crosswalk_extensions_service} +%ifarch aarch64 +cp packaging/plugins_aarch64.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service} +mv %{buildroot}%{_libdir}/%{crosswalk_extensions_service}/plugins_aarch64.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service}/plugins.json +%else cp packaging/plugins.json %{buildroot}%{_libdir}/%{crosswalk_extensions_service} +%endif cp -r %{app_dir}/* %{buildroot}%{_resourcedir}/ %if 0%{?_use_tpk} diff --git a/tizen/build/gbs.conf.in b/tizen/build/gbs.conf.in index af5a037..767bdfc 100644 --- a/tizen/build/gbs.conf.in +++ b/tizen/build/gbs.conf.in @@ -238,3 +238,22 @@ repos = repo.da_product_5.5_base, repo.da_product_5.5_fhub_kantm buildroot = ~/GBS-ROOT-TZDA_5.5_ARM-KANTM user = blinkbot passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +############################################### +# +# Tizen v7.0 64bit for product tv (PontusM armv7l) +# +[profile.tztv_64bit_7.0_arm-pontusm] +obs = obs.tizen_product_tv +repos = repo.tv_product_64bit_7.0_pontusm, repo.tv_product_64bit_7.0_base +buildroot = ~/GBS-ROOT-TZTV_64Bit_7.0_ARM-PONTUSM + +[repo.tv_product_64bit_7.0_base] +url = http://168.219.244.109/base/tizen-7.0-base/standard/latest/repos/base/aarch64/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== + +[repo.tv_product_64bit_7.0_pontusm] +url =http://168.219.244.109/products/tv/official/2023/ONEMAIN/OscarP64/latest/repos/product/aarch64/packages/ +user = blinkbot +passwdx = QlpoOTFBWSZTWd0JOhUAAACBAABgIAAhAIIjF3JFOFCQ3Qk6FQ== -- 2.7.4 From 808bcf8f8b5f2ec7f4dd49345647e9f0641de1c1 Mon Sep 17 00:00:00 2001 From: liwei Date: Thu, 1 Sep 2022 13:36:43 +0800 Subject: [PATCH 05/16] Stop Inspector when all windows are closed Some apps(ex. hulu) will call window.close() when terminate, it will cause 'before-quit' invoked after 'window-all-closed'. In current logic, WRT stop inspector when receive 'before-quit' event, but at this case, any wrt api cannot be called successfully(I think it's related with window is closed firstly), so stop inspector in 'window-all-closed' event, then RWI cannot stopped properly and RWI port will be released normally Change-Id: I8d3d46973cc1536bf6818c346d7c3ef43ed4be0a Signed-off-by: liwei --- wrt_app/src/runtime.ts | 1 + wrt_app/src/web_application.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/wrt_app/src/runtime.ts b/wrt_app/src/runtime.ts index 6bc933a..c1a2e8e 100644 --- a/wrt_app/src/runtime.ts +++ b/wrt_app/src/runtime.ts @@ -49,6 +49,7 @@ class Runtime { app.on('window-all-closed', () => { console.log('window-all-closed'); + this.webApplication?.stopInspector(); app.quit(); }); diff --git a/wrt_app/src/web_application.ts b/wrt_app/src/web_application.ts index c7d497a..eef640b 100644 --- a/wrt_app/src/web_application.ts +++ b/wrt_app/src/web_application.ts @@ -302,6 +302,14 @@ export class WebApplication { } } + stopInspector() { + if (this.debugPort) { + console.log('stop inspector server'); + this.debugPort = 0; + wrt.stopInspectorServer(); + } + } + loadUrl(appControl: NativeWRTjs.AppControl) { this.contentSrc = appControl.getLoadInfo().getSrc(); this.launchInspectorIfNeeded(appControl); @@ -361,11 +369,7 @@ export class WebApplication { console.log('WebApplication : beforeQuit'); this.profileDelegate.beforeQuit(); addonManager.emit('lcQuit', this.mainWindow.id); - if (this.debugPort) { - console.log('stop inspector server'); - this.debugPort = 0; - wrt.stopInspectorServer(); - } + this.stopInspector(); this.inQuit = true; } -- 2.7.4 From 278a28f735d4ded4c3abb1428f9ffd84746ce361 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Wed, 12 Oct 2022 17:58:44 +0900 Subject: [PATCH 06/16] [Service] Provide webapis.isRunningApp() API Conventionally, to know an app if it is alive with webapis, it should get all alive packages info and check if the subject app ID is included on them. This is very inefficient way. So, WRT did provide below API recently. - wrt.isRunningApp(appId: string): bool This patch will webapis.isRunningApp(appId: strig) also for the service apps. Change-Id: If20751d6b47913ebb9836463b307d5aa97f76e65 Signed-off-by: DongHyun Song --- wrt_app/service/device_api_router.ts | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index cde4134..7754a63 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -76,14 +76,43 @@ export class DeviceAPIRouter { global.webapis.getAppIdsByMetadata = (metadata: string) => { return wrt.getAppIdsByMetadata(metadata); } + global.webapis.isRunningApp = async (appId: string) => { + if (wrt.isRunningApp) { + return new Promise((resolve) => { + resolve(wrt.isRunningApp(appId)); + }); + } else { + const getAppsContext = async (appId: string): Promise => { + return new Promise((resolve) => { + try { + global.tizen.application.getAppsContext((contexts: any) => { + let isRunningApp = false; + for (let i = 0; i < contexts.length; i++) { + if (appId === contexts[i].appId) { + isRunningApp = true; + break; + } + } + resolve(isRunningApp); + }); + } catch (e) { + console.log(`tizen.application.getAppsContext() has failed with ${e}`); + resolve(false); + } + }); + } + return await getAppsContext(appId); + } + } Object.defineProperties(global.webapis, { getAppIdsByMetadata: { writable: false, enumerable: true }, getCallerAppId: { writable: false, enumerable: true }, getPackageId: { writable: false, enumerable: true }, - getServiceId: { writable: false, enumerable: true }, - postPlainNotification: { writable: false, enumerable: true }, getPreviewData: { writable: false, enumerable: true }, getProfile: { writable: false, enumerable: true }, + getServiceId: { writable: false, enumerable: true }, + isRunningApp: { writable: false, enumerable: true }, + postPlainNotification: { writable: false, enumerable: true }, }); this.initMDEWebapis(); this.initEdgeWebapis(); -- 2.7.4 From 2166ecc63cd53c5e309682561e89dc0832cd60a5 Mon Sep 17 00:00:00 2001 From: liwei Date: Fri, 21 Oct 2022 14:15:12 +0800 Subject: [PATCH 07/16] [VD] Skip addon feature in TV Addon initialize logic will cost over 500ms, it effect app performance, now we skip addon feature in TV. After addon feature is released in TV, we will consider a proper policy to initialize addon in logic(Maybe add FMS key for TV or add app's metadata to enable addon feature). Change-Id: I360f34db70fed32434ce91f692bc8c1103385c2c Signed-off-by: liwei --- wrt_app/src/runtime.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/wrt_app/src/runtime.ts b/wrt_app/src/runtime.ts index 6cb1e77..a9e2fd6 100644 --- a/wrt_app/src/runtime.ts +++ b/wrt_app/src/runtime.ts @@ -61,12 +61,14 @@ class Runtime { app.once('ready', (event: any) => { console.log('ready'); - let addonAvailable = addonManager.initialize(); - console.log("addonBuild : " + addonAvailable); - if (addonAvailable) { - const XWalkExtension = require('../common/wrt_xwalk_extension'); - XWalkExtension.initialize(); - XWalkExtension.preventCleanup(); + if (!wrt.tv) { + let addonAvailable = addonManager.initialize(); + console.log("addonBuild : " + addonAvailable); + if (addonAvailable) { + const XWalkExtension = require('../common/wrt_xwalk_extension'); + XWalkExtension.initialize(); + XWalkExtension.preventCleanup(); + } } }); -- 2.7.4 From 6dc64de013c41ef5374870fcbfa9d4140deae90b Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Thu, 6 Oct 2022 18:24:55 +0900 Subject: [PATCH 08/16] [DeviceHome][VD] Provides webapis.sso APIs This patch introduces 2 sso API. - webapis.sso.getGuid(): string; - webapis.sso.getOspAccessToken(clientId: string, secret: string, resolve: Function, reject?: Function): void; . reject is optional When the 'OspAccessToken' event is emitted from WRT side to the main thread, then, it propagates the event to the all workers. But the worker has registered 'OspAccessToken' event can only take it. Like as this manner, message listener can be expanded for another purpose later. Related chromium-efl patch: https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/282600/ Change-Id: I5c941e66e2729dbbeeafbbdb35a803134ed4924b Signed-off-by: DongHyun Song --- wrt_app/service/device_api_router.ts | 33 ++++++++++++++++++++++++++++++++ wrt_app/service/main.ts | 23 +++++++++++++--------- wrt_app/service/service_manager.ts | 37 ++++++++++++++++++++++++++++++++---- wrt_app/service/service_runner.ts | 29 ++++++++++++++++++---------- 4 files changed, 99 insertions(+), 23 deletions(-) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index 7754a63..c00692e 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -1,5 +1,6 @@ import { wrt } from '../browser/wrt'; import * as ServiceMessage from '../common/service_message'; +import { parentPort } from 'worker_threads'; export class DeviceAPIRouter { currentApplication: any; @@ -20,6 +21,7 @@ export class DeviceAPIRouter { permissions: string[]; pkgApiVersion: string; messagePortInfo: any; + messageListeners: any; constructor(id: string, isGlobal: boolean) { this.id = id; @@ -30,6 +32,7 @@ export class DeviceAPIRouter { this.permissions = []; this.pkgApiVersion = ''; this.messagePortInfo = {}; + this.messageListeners = {}; this.initWebapis(); if (isGlobal) { @@ -114,9 +117,11 @@ export class DeviceAPIRouter { isRunningApp: { writable: false, enumerable: true }, postPlainNotification: { writable: false, enumerable: true }, }); + this.initMDEWebapis(); this.initEdgeWebapis(); this.initProductWebapis(); + this.initSSOWebapis(); } initMDEWebapis() { @@ -184,6 +189,34 @@ export class DeviceAPIRouter { } } + initSSOWebapis() { + if (wrt.tv) { + global.webapis.sso = {}; + global.webapis.sso.getGuid = () => { + return wrt.tv?.getSSOGuid() || ''; + } + global.webapis.sso.getOspAccessToken = (clientId: string, secret: string, resolve: Function, reject?: Function) => { + parentPort?.postMessage({ type: 'register-message', listener: 'OspAccessToken' }); + this.messageListeners['OspAccessToken'] = { resolve, reject }; + return wrt.tv?.getOspAccessToken(clientId, secret) || ''; + } + Object.defineProperties(global.webapis.sso, { + getGuid: { writable: false, enumerable: true }, + getOspAccessToken: { writable: false, enumerable: true }, + }); + } + } + + notifyMessage(notification: any) { + if (!this.messageListeners[notification.listener]) + return; + console.debug(`notification.listener : ${notification.listener}`); + if (notification.data && notification.data.indexOf('error_code') > -1) + this.messageListeners[notification.listener].reject?.(notification.data); + else + this.messageListeners[notification.listener].resolve(notification.data); + } + initProductWebapis() { // for TV profile if (wrt.tv && !global.webapis.productinfo) { diff --git a/wrt_app/service/main.ts b/wrt_app/service/main.ts index 7552ea9..e1ff243 100755 --- a/wrt_app/service/main.ts +++ b/wrt_app/service/main.ts @@ -20,19 +20,24 @@ import '../common/init'; import { wrt } from '../browser/wrt'; import * as ServiceManager from './service_manager'; -wrt.on('start-service', (event: any, internal_id: string) => { - console.debug(`start service app : ${internal_id}`); - ServiceManager.startService(internal_id, ''); +wrt.on('start-service', (event: any, internalId: string) => { + console.debug(`start service app : ${internalId}`); + ServiceManager.startService(internalId, ''); }); -wrt.on('stop-service', (event: any, internal_id: string) => { - console.debug(`stop service app : ${internal_id}`); - ServiceManager.stopService(internal_id); +wrt.on('stop-service', (event: any, internalId: string) => { + console.debug(`stop service app : ${internalId}`); + ServiceManager.stopService(internalId); }); -wrt.on('builtin-service', (event: any, internal_id: string, service_name: string) => { - console.debug(`id: ${internal_id}, service_name: ${service_name}`); - ServiceManager.handleBuiltinService(internal_id, service_name); +wrt.on('builtin-service', (event: any, internalId: string, serviceName: string) => { + console.debug(`id: ${internalId}, serviceName: ${serviceName}`); + ServiceManager.handleBuiltinService(internalId, serviceName); +}); + +wrt.on('message', (event: any, type: string, data: string) => { + console.debug(`onMessage : ${type} - ${data}`); + ServiceManager.notifyMessage(type, data); }); wrt.on('quit', (event: any) => { diff --git a/wrt_app/service/service_manager.ts b/wrt_app/service/service_manager.ts index de807eb..a91715b 100644 --- a/wrt_app/service/service_manager.ts +++ b/wrt_app/service/service_manager.ts @@ -5,8 +5,14 @@ import * as XWalkExtension from '../common/wrt_xwalk_extension'; interface WorkerMap { [id: string]: any; } + +interface MessageObserver { + [id: string]: Set; +} + let workers: WorkerMap = {}; let dyingWorkerQueue: WorkerMap = {}; +let messageObservers: MessageObserver = {}; Object.defineProperty(global, 'serviceType', { value: wrt.getServiceModel(), @@ -46,10 +52,21 @@ function createWorker(id: string, startService: string, filename: string) { filename } }); - workers[id].on('message', (message: string) => { - if (message === 'will-terminate') { - dyingWorkerQueue[id] = message; - checkDyingWorker(); + workers[id].on('message', (message: any) => { + switch (message.type) { + case 'will-terminate': + delete messageObservers[id]; + dyingWorkerQueue[id] = 'will-terminate'; + checkDyingWorker(); + break; + case 'register-message': + if (!messageObservers[id]) { + messageObservers[id] = new Set(); + } + messageObservers[id].add(message.listener); + break; + default: + break; } }); workers[id].on('exit', (code: number) => { @@ -116,4 +133,16 @@ export function handleBuiltinService(serviceId: string, serviceName: string) { let startService = `${__dirname}/../service/builtins/${serviceName}.js`; createWorker(serviceId, startService, ''); } +} + +export function notifyMessage(listener: string, data: string) { + for (const id in messageObservers) { + if (messageObservers[id].has(listener)) { + console.debug(`notify message - ${listener}`); + if (workers[id]) { + const notification = { listener, data }; + workers[id].postMessage({ type: 'notify-message', notification }); + } + } + } } \ No newline at end of file diff --git a/wrt_app/service/service_runner.ts b/wrt_app/service/service_runner.ts index 5f524c6..de15a91 100644 --- a/wrt_app/service/service_runner.ts +++ b/wrt_app/service/service_runner.ts @@ -54,6 +54,7 @@ let requestStopService = (id: string) => { let app: any = null; let dummyTimer: any; let periodLauncherAlive = 40; // 4s +let deviceApiRouter: any = null; let checkLauncherAlive = (id: string) => { periodLauncherAlive--; @@ -88,7 +89,7 @@ export function start(id: string, filename: string) { }); console.debug(`serviceType : ${global['serviceType']}`) - new DeviceAPIRouter(id, isGlobalService()); + deviceApiRouter = new DeviceAPIRouter(id, isGlobalService()); printAppControlData(id); ServiceMessage.initConsoleMessageNotification(id); @@ -157,15 +158,23 @@ function run() { parentPort?.on('message', (message) => { console.debug(`Received message type : ${message.type}`); - if (message.type === 'wake') { - app?.onRequest(); - } else if (message.type === 'stop') { - stop(id); - setTimeout(() => { - XWalkExtension.cleanup(); - parentPort?.postMessage("will-terminate"); - parentPort?.close(); - }, message.delay); + switch (message.type) { + case 'wake': + app?.onRequest(); + break; + case 'stop': + stop(id); + setTimeout(() => { + XWalkExtension.cleanup(); + parentPort?.postMessage({ type : 'will-terminate' }); + parentPort?.close(); + }, message.delay); + break; + case 'notify-message': + deviceApiRouter?.notifyMessage(message.notification); + break; + default: + break; } }); } -- 2.7.4 From 3f3b6e40e3f85b61c49755beb43c2c94fba8fc32 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Thu, 3 Nov 2022 14:45:47 +0900 Subject: [PATCH 09/16] [Service] Support bi-direction message-port From the bundle data, if there is the information of actual remote port, then it make RemoteMessagePort object for the 2nd parameter of message- port callback. Related chromium-efl patch: https://review.tizen.org/gerrit/#/c/platform/framework/web/chromium-efl/+/283803/ Change-Id: I4236b5e50c265ababf9550ea2ae278ea51c23a69 Signed-off-by: DongHyun Song --- wrt_app/service/device_api_router.ts | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index c00692e..16cfa9e 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -441,13 +441,45 @@ export class DeviceAPIRouter { }); } + const makeMessagePort = (portName: string, isTrusted: boolean) => { + const messagePort = this.funcRequestLocalMessagePort(portName); + return { + messagePortName: portName, + isTrusted, + addMessagePortListener: (listener: any) => { + const listenerWrapper = (message: any) => { + let remoteAppId = ''; + let remotePort = ''; + message.forEach((bundle: any) => { + if (bundle.key === 'org_remote_app_id') { + remoteAppId = bundle.value; + } else if (bundle.key === 'org_remote_port') { + remotePort = bundle.value; + } + }); + message = message.filter((bundle: any) => { + return !bundle.key.includes('org_remote'); + }); + let remoteMessagePort = null; + if (remoteAppId && remotePort) + remoteMessagePort = global.tizen.messageport.requestRemoteMessagePort(remoteAppId, remotePort); + return listener(message, remoteMessagePort); + } + return messagePort.addMessagePortListener(listenerWrapper); + }, + removeMessagePortListener: (watchId: any) => { + return messagePort.removeMessagePortListener(watchId); + } + } + } + global.tizen.messageport.requestLocalMessagePort = (portName: string) => { registerMessagePort('requestLocalMessagePort', portName); - return this.funcRequestLocalMessagePort(portName); + return makeMessagePort(portName, false); } global.tizen.messageport.requestTrustedLocalMessagePort = (portName: string) => { registerMessagePort('requestTrustedLocalMessagePort', portName); - return this.funcRequestLocalMessagePort(portName); + return makeMessagePort(portName, true); } global.tizen.messageport.requestTrustedRemoteMessagePort = (appId: string, portName: string) => { return { -- 2.7.4 From 8a35980fbc1170f25dae7f153ac1ef3e8a1d82d0 Mon Sep 17 00:00:00 2001 From: Chunling Ye Date: Wed, 9 Nov 2022 19:19:41 +0800 Subject: [PATCH 10/16] [Service][VD] Add webapis.getCameraInfo() This provides TV CameraInfo for DeviceHome service. Related chromium-efl patch: https://review.tizen.org/gerrit/284089/ Change-Id: Ic3414502fdf7f52d41fd626665177d9b71414a10 Signed-off-by: Chunling Ye --- wrt_app/service/device_api_router.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index 16cfa9e..0edc1c0 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -71,6 +71,17 @@ export class DeviceAPIRouter { return { images: 'no' }; } } + global.webapis.getCameraInfo = () => { + try { + if (wrt.tv) + return wrt.tv.getCameraInfo(); + else + throw 'This API is only for TV profile'; + } catch(e) { + console.debug(`wrt.tv.getCameraInfo() failed, ${e}`); + return '{}'; + } + } global.webapis.getProfile = () => { if (wrt.tv) return 'TV'; else if (wrt.da) return 'DA'; @@ -110,6 +121,7 @@ export class DeviceAPIRouter { Object.defineProperties(global.webapis, { getAppIdsByMetadata: { writable: false, enumerable: true }, getCallerAppId: { writable: false, enumerable: true }, + getCameraInfo: { writable: false, enumerable: true }, getPackageId: { writable: false, enumerable: true }, getPreviewData: { writable: false, enumerable: true }, getProfile: { writable: false, enumerable: true }, -- 2.7.4 From 9b975864ed42a873afb084fd98634c99d8f6b2b7 Mon Sep 17 00:00:00 2001 From: liwei Date: Mon, 14 Nov 2022 15:17:09 +0800 Subject: [PATCH 11/16] [AddOn]Remove unnecessary log Remove unnecessary log 'No handler for the key ***', this log cannot help anything and make misunderstand from other module, so remove it. Change-Id: I857d7d22a4a7ebef56cc16e9dc81b60d2c8fdb12 Signed-off-by: liwei --- wrt_app/src/runtime.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/wrt_app/src/runtime.ts b/wrt_app/src/runtime.ts index 737d4a3..a4e4123 100644 --- a/wrt_app/src/runtime.ts +++ b/wrt_app/src/runtime.ts @@ -167,9 +167,6 @@ class Runtime { case "Down": valid = true; break; - default: - console.log('No handler for the key ' + key); - break; } if (valid) this.webApplication?.keyEvent(key); -- 2.7.4 From e57bcfeb02a105c13ef2c908635d3eac2d9b58ad Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Tue, 15 Nov 2022 21:38:35 +0900 Subject: [PATCH 12/16] [Service] Refactor and fix message-port issue when the app calls RemoteMessageport.sendMessage(), its second parameter should be an LocalMessagePort function which is created in pure message-port webapis. From the bi-direction support, because LocalMessagePort becomes an wrapper object by device_api_router, this makes an error by type validator of webapis core. Thus, this patch's main idea is going to unwrap the object to pass the pure message-port object as the second parameter, also refactors message-port implementation source code on mesage_port_router. Change-Id: I226d9521df7cb5edc84530b3d65ba63a155905d8 Signed-off-by: DongHyun Song --- wrt_app/service/device_api_router.ts | 92 ++++---------------- wrt_app/service/message_port_router.ts | 149 +++++++++++++++++++++++++++++++++ 2 files changed, 165 insertions(+), 76 deletions(-) create mode 100644 wrt_app/service/message_port_router.ts diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index 16cfa9e..96b8384 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -1,6 +1,7 @@ import { wrt } from '../browser/wrt'; -import * as ServiceMessage from '../common/service_message'; +import * as serviceMessage from '../common/service_message'; import { parentPort } from 'worker_threads'; +import { LocalMessagePort, RemoteMessagePort, RemoteTrustedMessagePort } from './message_port_router'; export class DeviceAPIRouter { currentApplication: any; @@ -13,6 +14,7 @@ export class DeviceAPIRouter { funcGetMetadata: any; funcGetPackageInfo: any; funcRequestLocalMessagePort: any; + funcRequestRemoteMessagePort: any; id: string; serviceId: string; @@ -20,7 +22,6 @@ export class DeviceAPIRouter { callerAppId: string; permissions: string[]; pkgApiVersion: string; - messagePortInfo: any; messageListeners: any; constructor(id: string, isGlobal: boolean) { @@ -31,7 +32,6 @@ export class DeviceAPIRouter { this.packageId = wrt.getPackageId(id); this.permissions = []; this.pkgApiVersion = ''; - this.messagePortInfo = {}; this.messageListeners = {}; this.initWebapis(); @@ -146,7 +146,7 @@ export class DeviceAPIRouter { } global.webapis.mde.updateRemoteInput = (inputString: string) => { mde.updateRemoteInput(inputString); - ServiceMessage.notifyServiceMessage('remote-input', inputString); + serviceMessage.notifyServiceMessage('remote-input', inputString); } global.webapis.mde.selectRemoteInput = () => { mde.selectRemoteInput(); @@ -415,85 +415,25 @@ export class DeviceAPIRouter { } refineMessagePortApis() { - this.funcRequestLocalMessagePort = - global.tizen.messageport.requestLocalMessagePort; + this.funcRequestLocalMessagePort = global.tizen.messageport.requestLocalMessagePort; + this.funcRequestRemoteMessagePort = global.tizen.messageport.requestRemoteMessagePort; - const registerMessagePort = (name: string, portName: string, appId?: string, callback?: any) => { - let portInfo = `${name}::${this.serviceId}::${portName}`; - if (this.messagePortInfo[portInfo] === 'created') { - callback?.(); - return; - } - let data_payload = [ - new global.tizen.ApplicationControlData(name, [portName]), - ]; - if (appId) { - data_payload.push(new global.tizen.ApplicationControlData('appId', [appId])); - } - let appControl = new global.tizen.ApplicationControl( - "http://tizen.org/appcontrol/operation/default", null, null, null, - data_payload, null); - global.tizen.application.launchAppControl(appControl, this.serviceId, - () => { - console.debug(`'${portInfo}' is requsted`) - callback?.(); - this.messagePortInfo[portInfo] = 'created'; - }); - } - - const makeMessagePort = (portName: string, isTrusted: boolean) => { - const messagePort = this.funcRequestLocalMessagePort(portName); - return { - messagePortName: portName, - isTrusted, - addMessagePortListener: (listener: any) => { - const listenerWrapper = (message: any) => { - let remoteAppId = ''; - let remotePort = ''; - message.forEach((bundle: any) => { - if (bundle.key === 'org_remote_app_id') { - remoteAppId = bundle.value; - } else if (bundle.key === 'org_remote_port') { - remotePort = bundle.value; - } - }); - message = message.filter((bundle: any) => { - return !bundle.key.includes('org_remote'); - }); - let remoteMessagePort = null; - if (remoteAppId && remotePort) - remoteMessagePort = global.tizen.messageport.requestRemoteMessagePort(remoteAppId, remotePort); - return listener(message, remoteMessagePort); - } - return messagePort.addMessagePortListener(listenerWrapper); - }, - removeMessagePortListener: (watchId: any) => { - return messagePort.removeMessagePortListener(watchId); - } - } - } + LocalMessagePort.setPrototype(this.funcRequestLocalMessagePort, this.funcRequestRemoteMessagePort); global.tizen.messageport.requestLocalMessagePort = (portName: string) => { - registerMessagePort('requestLocalMessagePort', portName); - return makeMessagePort(portName, false); + const messagePortObj = this.funcRequestLocalMessagePort(portName); + return new LocalMessagePort(messagePortObj, portName, false, this.serviceId); } global.tizen.messageport.requestTrustedLocalMessagePort = (portName: string) => { - registerMessagePort('requestTrustedLocalMessagePort', portName); - return makeMessagePort(portName, true); + const messagePortObj = this.funcRequestLocalMessagePort(portName); + return new LocalMessagePort(messagePortObj, portName, true, this.serviceId); + } + global.tizen.messageport.requestRemoteMessagePort = (appId: string, portName: string) => { + const messagePortObj = this.funcRequestRemoteMessagePort(appId, portName); + return new RemoteMessagePort(messagePortObj, appId, portName); } global.tizen.messageport.requestTrustedRemoteMessagePort = (appId: string, portName: string) => { - return { - messagePortName: portName, - appId, - isTrusted: true, - sendMessage: (data: any, localMessagePort?: any) => { - registerMessagePort('requestTrustedRemoteMessagePort', portName, appId, - () => { - let remotePort = global.tizen.messageport.requestRemoteMessagePort(this.serviceId, portName); - remotePort.sendMessage(data, localMessagePort); - }); - } - } + return new RemoteTrustedMessagePort(appId, portName, this.serviceId); } } } diff --git a/wrt_app/service/message_port_router.ts b/wrt_app/service/message_port_router.ts new file mode 100644 index 0000000..bf5927c --- /dev/null +++ b/wrt_app/service/message_port_router.ts @@ -0,0 +1,149 @@ + +let messagePortInfo: any = {}; + +function registerMessagePort(name: string, portName: string, serviceId: string, appId?: string, callback?: any) { + let portInfo = `${name}::${serviceId}::${portName}`; + if (messagePortInfo[portInfo] === 'created') { + callback?.(); + return; + } + let data_payload = [ + new global.tizen.ApplicationControlData(name, [portName]), + ]; + if (appId) { + data_payload.push(new global.tizen.ApplicationControlData('appId', [appId])); + } + let appControl = new global.tizen.ApplicationControl( + "http://tizen.org/appcontrol/operation/default", null, null, null, + data_payload, null); + global.tizen.application.launchAppControl(appControl, serviceId, + () => { + console.debug(`'${portInfo}' is requsted`) + callback?.(); + messagePortInfo[portInfo] = 'created'; + }); +} + +export class LocalMessagePort { + messagePortObj: any; + messagePortName: string; + serviceAppId: string; + isTrusted: boolean; + _id: any; + + static funcLocalMessagePort: any; + static funcRemoteMessagePort: any; + + constructor(messagePortObj: any, messagePortName: string, isTrusted: boolean, serviceAppId: string) { + this.messagePortObj = messagePortObj; + this.messagePortName = messagePortName; + this.isTrusted = isTrusted; + this.serviceAppId = serviceAppId; + this._id = messagePortObj._id; + + if (isTrusted) { + registerMessagePort('requestTrustedLocalMessagePort', messagePortName, serviceAppId); + } else { + registerMessagePort('requestLocalMessagePort', messagePortName, serviceAppId); + } + } + + static setPrototype(funcLocalMessagePort: any, funcRemoteMessagePort: any) { + this.funcLocalMessagePort = funcLocalMessagePort; + this.funcRemoteMessagePort = funcRemoteMessagePort; + } + + addMessagePortListener(listener: any) { + const listenerWrapper = (message: any) => { + let remoteAppId = ''; + let remotePort = ''; + message.forEach((bundle: any) => { + if (bundle.key === 'org_remote_app_id') { + remoteAppId = bundle.value; + } else if (bundle.key === 'org_remote_port') { + remotePort = bundle.value; + } + }); + message = message.filter((bundle: any) => { + return !bundle.key.includes('org_remote'); + }); + let remoteMessagePort = undefined; + if (remoteAppId && remotePort) + remoteMessagePort = LocalMessagePort.funcRemoteMessagePort(remoteAppId, remotePort); + return listener(message, remoteMessagePort); + } + this.messagePortObj.addMessagePortListener(listenerWrapper); + } + + removeMessagePortListener(watchId: any) { + this.messagePortObj.removeMessagePortListener(watchId); + } + + toString() { + return 'LocalMessagePortRouter'; + } + + get() { + return this.messagePortObj; + } +} + +export class RemoteMessagePort { + messagePortObj: any; + messagePortName: string; + remoteAppId: string; + + constructor(messagePortObj: any, remoteAppId: string, messagePortName: string) { + this.messagePortObj = messagePortObj; + this.messagePortName = messagePortName; + this.remoteAppId = remoteAppId; + } + + sendMessage(data: any, localMessagePort?: any) { + if (localMessagePort == 'LocalMessagePortRouter') { + localMessagePort = localMessagePort.get(); + } + if (!this.messagePortObj) { + console.debug('this.messagePortObj is not set'); + return; + } + if (localMessagePort) { + this.messagePortObj.sendMessage(data, localMessagePort); + } else { + this.messagePortObj.sendMessage(data); + } + } +} + +export class RemoteTrustedMessagePort { + messagePortName: string; + remoteAppId: string; + serviceAppId: string; + remoteMessagePort: any; + + constructor(remoteAppId: string, messagePortName: string, serviceAppid: string) { + this.messagePortName = messagePortName; + this.remoteAppId = remoteAppId; + this.serviceAppId = serviceAppid; + } + + sendMessage(data: any, localMessagePort?: any) { + if (localMessagePort == 'LocalMessagePortRouter') { + localMessagePort = localMessagePort.get(); + } + registerMessagePort( + 'requestTrustedRemoteMessagePort', + this.messagePortName, + this.serviceAppId, + this.remoteAppId, + () => { + let remotePort = LocalMessagePort.funcRemoteMessagePort(this.serviceAppId, this.messagePortName); + if (localMessagePort) { + remotePort.sendMessage(data, localMessagePort); + } else { + remotePort.sendMessage(data); + } + } + ); + } +} -- 2.7.4 From 731c112fb466c2069871e367afccf47d260eb7ff Mon Sep 17 00:00:00 2001 From: Hunseop Jeong Date: Thu, 17 Nov 2022 14:43:16 +0900 Subject: [PATCH 13/16] [Service] Add webapis.getDeviceUUID() This provides device UUID Related chromium-efl patch: https://review.tizen.org/gerrit/283644/ Change-Id: I31adedce5ade2f58fe7a1724d7332e7213632ca6 Signed-off-by: Hunseop Jeong --- wrt_app/service/device_api_router.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index 99833de..33692cb 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -170,6 +170,9 @@ export class DeviceAPIRouter { global.webapis.mde.getDeviceName = () => { return mde.getDeviceName(); } + global.webapis.mde.getDeviceUUID = () => { + return mde.getDeviceUUID(); + } global.webapis.mde.launchBrowserFromUrl = (url: string) => { return mde.launchBrowserFromUrl(url); } -- 2.7.4 From 92ecf35d56b63888457b70c3f2d41aac9b93c78c Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Fri, 18 Nov 2022 15:48:49 +0900 Subject: [PATCH 14/16] [VD] Add on-boot option with 10s delay By this option wrt-loader is prepared always 10s later from launchpad ready. Change-Id: I37d149dfa2429a4888b0077ee90683a29071359e Signed-off-by: DongHyun Song --- packaging/wrt_tv.loader | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packaging/wrt_tv.loader b/packaging/wrt_tv.loader index 5e63d15..29581db 100755 --- a/packaging/wrt_tv.loader +++ b/packaging/wrt_tv.loader @@ -5,3 +5,5 @@ APP_TYPE webapp DEACTIVATION_METHOD OUT_OF_MEMORY DETECTION_METHOD TIMEOUT|DEMAND TIMEOUT 10000 +ON_BOOT ON +ON_BOOT_TIMEOUT 10000 -- 2.7.4 From f455dc5f4287ca57dbfd3fafa830a7ea408aa6f8 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Fri, 2 Dec 2022 15:16:37 +0900 Subject: [PATCH 15/16] [VD] Fix a smack error when getSSOGuid() When use sso_get_guid(), smack error happens by access of pid smack label. This patch take sso_get_guid() before smack label change and set global value. Change-Id: Ia6faa64d9104c5bb684f30c2c17e0ed7a19ce97a Signed-off-by: DongHyun Song --- wrt_app/service/device_api_router.ts | 2 +- wrt_app/service/service_runner.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/wrt_app/service/device_api_router.ts b/wrt_app/service/device_api_router.ts index 33692cb..1a61b62 100644 --- a/wrt_app/service/device_api_router.ts +++ b/wrt_app/service/device_api_router.ts @@ -208,7 +208,7 @@ export class DeviceAPIRouter { if (wrt.tv) { global.webapis.sso = {}; global.webapis.sso.getGuid = () => { - return wrt.tv?.getSSOGuid() || ''; + return global.ssoGuid || ''; } global.webapis.sso.getOspAccessToken = (clientId: string, secret: string, resolve: Function, reject?: Function) => { parentPort?.postMessage({ type: 'register-message', listener: 'OspAccessToken' }); diff --git a/wrt_app/service/service_runner.ts b/wrt_app/service/service_runner.ts index de15a91..355347c 100644 --- a/wrt_app/service/service_runner.ts +++ b/wrt_app/service/service_runner.ts @@ -77,6 +77,8 @@ export function start(id: string, filename: string) { requestStopService(id); return; } + + global.ssoGuid = wrt.tv?.getSSOGuid(); wrt.setServiceAppId(id); wrt.security?.dropThreadPrivilege(packageId, serviceId); -- 2.7.4 From cd587c93b44c6bb1165b054cb8025fe78694f155 Mon Sep 17 00:00:00 2001 From: DongHyun Song Date: Wed, 30 Nov 2022 16:09:09 +0900 Subject: [PATCH 16/16] Remove device_home folder Delete unnecessary folder and build config. Change-Id: Ie85fe152fb1fb5aad1e6f2e728c1cf5db3a4007c Signed-off-by: DongHyun Song --- device_home/about.html | 15 - device_home/client/client.html | 108 - device_home/client/css/style.css | 89 - device_home/client/error.html | 31 - device_home/client/images/Hamburger_icon.svg | 1 - .../client/images/tw_list_icon_wallpaper.svg | 17 - device_home/client/invited.html | 32 - device_home/client/js/actions.js | 50 - device_home/client/js/app.js | 559 -- device_home/client/js/client.js | 29 - device_home/client/js/clipping-storage.js | 24 - device_home/client/js/invited.js | 131 - device_home/client/js/lib/mustache.js | 1 - device_home/client/js/myApps.js | 224 - device_home/client/manifest.webmanifest | 13 - .../client/webclip-template/container/webclip.html | 22 - .../client/webclip-template/favorite/webclip.html | 23 - .../webclip-template/image-notitle/css/style.css | 3 - .../webclip-template/image-notitle/webclip.html | 12 - .../client/webclip-template/image/webclip.html | 16 - device_home/icon.png | Bin 57662 -> 0 bytes device_home/node_modules/accepts/LICENSE | 23 - device_home/node_modules/accepts/index.js | 7 - device_home/node_modules/accepts/package.json | 90 - device_home/node_modules/after/.npmignore | 2 - device_home/node_modules/after/.travis.yml | 12 - device_home/node_modules/after/LICENCE | 19 - device_home/node_modules/after/index.js | 1 - device_home/node_modules/after/package.json | 66 - device_home/node_modules/ansi-regex/index.js | 1 - device_home/node_modules/ansi-regex/license | 9 - device_home/node_modules/ansi-regex/package.json | 88 - device_home/node_modules/ansi-styles/index.js | 1 - device_home/node_modules/ansi-styles/license | 9 - device_home/node_modules/ansi-styles/package.json | 91 - device_home/node_modules/array-flatten/LICENSE | 21 - .../node_modules/array-flatten/array-flatten.js | 1 - .../node_modules/array-flatten/package.json | 67 - .../node_modules/arraybuffer.slice/.npmignore | 17 - device_home/node_modules/arraybuffer.slice/LICENCE | 18 - .../node_modules/arraybuffer.slice/Makefile | 8 - .../node_modules/arraybuffer.slice/index.js | 1 - .../node_modules/arraybuffer.slice/package.json | 47 - device_home/node_modules/async/.travis.yml | 5 - device_home/node_modules/async/LICENSE | 19 - device_home/node_modules/async/bower.json | 38 - device_home/node_modules/async/component.json | 16 - device_home/node_modules/async/lib/async.js | 8 - device_home/node_modules/async/package.json | 82 - .../async/support/sync-package-managers.js | 2 - device_home/node_modules/backo2/.npmignore | 1 - device_home/node_modules/backo2/Makefile | 8 - device_home/node_modules/backo2/component.json | 11 - device_home/node_modules/backo2/index.js | 1 - device_home/node_modules/backo2/package.json | 50 - device_home/node_modules/balanced-match/.npmignore | 5 - device_home/node_modules/balanced-match/index.js | 1 - .../node_modules/balanced-match/package.json | 77 - .../node_modules/base64-arraybuffer/.npmignore | 3 - .../node_modules/base64-arraybuffer/.travis.yml | 19 - .../node_modules/base64-arraybuffer/LICENSE-MIT | 22 - .../base64-arraybuffer/lib/base64-arraybuffer.js | 1 - .../node_modules/base64-arraybuffer/package.json | 67 - device_home/node_modules/base64-js/LICENSE | 21 - device_home/node_modules/base64-js/base64js.min.js | 1 - device_home/node_modules/base64-js/index.d.ts | 3 - device_home/node_modules/base64-js/index.js | 1 - device_home/node_modules/base64-js/package.json | 78 - device_home/node_modules/blob/.idea/blob.iml | 12 - .../.idea/inspectionProfiles/profiles_settings.xml | 5 - .../node_modules/blob/.idea/markdown-navigator.xml | 78 - .../.idea/markdown-navigator/profiles_settings.xml | 3 - device_home/node_modules/blob/.idea/modules.xml | 8 - device_home/node_modules/blob/.idea/vcs.xml | 6 - device_home/node_modules/blob/.idea/workspace.xml | 390 - device_home/node_modules/blob/.zuul.yml | 14 - device_home/node_modules/blob/LICENSE | 21 - device_home/node_modules/blob/Makefile | 14 - device_home/node_modules/blob/component.json | 11 - device_home/node_modules/blob/index.js | 1 - device_home/node_modules/blob/package.json | 52 - device_home/node_modules/body-parser/LICENSE | 23 - device_home/node_modules/body-parser/index.js | 6 - device_home/node_modules/body-parser/lib/read.js | 6 - .../node_modules/body-parser/lib/types/json.js | 7 - .../node_modules/body-parser/lib/types/raw.js | 6 - .../node_modules/body-parser/lib/types/text.js | 6 - .../body-parser/lib/types/urlencoded.js | 7 - device_home/node_modules/body-parser/package.json | 94 - device_home/node_modules/brace-expansion/LICENSE | 21 - device_home/node_modules/brace-expansion/index.js | 1 - .../node_modules/brace-expansion/package.json | 75 - .../node_modules/buffer-alloc-unsafe/index.js | 1 - .../node_modules/buffer-alloc-unsafe/package.json | 60 - device_home/node_modules/buffer-alloc/index.js | 1 - device_home/node_modules/buffer-alloc/package.json | 62 - device_home/node_modules/buffer-fill/index.js | 1 - device_home/node_modules/buffer-fill/package.json | 52 - device_home/node_modules/buffer-from/LICENSE | 21 - device_home/node_modules/buffer-from/index.js | 1 - device_home/node_modules/buffer-from/package.json | 57 - device_home/node_modules/buffer/LICENSE | 21 - device_home/node_modules/buffer/index.d.ts | 186 - device_home/node_modules/buffer/index.js | 7 - device_home/node_modules/buffer/package.json | 130 - device_home/node_modules/bytes/LICENSE | 23 - device_home/node_modules/bytes/index.js | 7 - device_home/node_modules/bytes/package.json | 87 - device_home/node_modules/camelcase/index.d.ts | 63 - device_home/node_modules/camelcase/index.js | 1 - device_home/node_modules/camelcase/license | 9 - device_home/node_modules/camelcase/package.json | 78 - device_home/node_modules/chalk/index.js | 1 - device_home/node_modules/chalk/index.js.flow | 93 - device_home/node_modules/chalk/license | 9 - device_home/node_modules/chalk/package.json | 103 - device_home/node_modules/chalk/templates.js | 1 - device_home/node_modules/chalk/types/index.d.ts | 97 - device_home/node_modules/cliui/LICENSE.txt | 14 - device_home/node_modules/cliui/index.js | 1 - device_home/node_modules/cliui/package.json | 102 - device_home/node_modules/color-convert/LICENSE | 21 - .../node_modules/color-convert/conversions.js | 1 - device_home/node_modules/color-convert/index.js | 1 - .../node_modules/color-convert/package.json | 84 - device_home/node_modules/color-convert/route.js | 1 - device_home/node_modules/color-name/.eslintrc.json | 43 - device_home/node_modules/color-name/.npmignore | 107 - device_home/node_modules/color-name/LICENSE | 8 - device_home/node_modules/color-name/index.js | 1 - device_home/node_modules/color-name/package.json | 56 - device_home/node_modules/color-name/test.js | 1 - device_home/node_modules/component-bind/.npmignore | 4 - device_home/node_modules/component-bind/Makefile | 7 - .../node_modules/component-bind/component.json | 13 - device_home/node_modules/component-bind/index.js | 1 - .../node_modules/component-bind/package.json | 54 - device_home/node_modules/component-emitter/LICENSE | 24 - .../node_modules/component-emitter/index.js | 1 - .../node_modules/component-emitter/package.json | 61 - .../node_modules/component-inherit/.npmignore | 3 - .../node_modules/component-inherit/Makefile | 16 - .../node_modules/component-inherit/component.json | 10 - .../node_modules/component-inherit/index.js | 1 - .../node_modules/component-inherit/package.json | 51 - device_home/node_modules/concat-map/.travis.yml | 4 - device_home/node_modules/concat-map/LICENSE | 18 - .../node_modules/concat-map/README.markdown | 62 - device_home/node_modules/concat-map/index.js | 1 - device_home/node_modules/concat-map/package.json | 88 - .../node_modules/content-disposition/LICENSE | 22 - .../node_modules/content-disposition/index.js | 6 - .../node_modules/content-disposition/package.json | 82 - device_home/node_modules/content-type/LICENSE | 22 - device_home/node_modules/content-type/index.js | 6 - device_home/node_modules/content-type/package.json | 79 - device_home/node_modules/cookie-parser/LICENSE | 23 - device_home/node_modules/cookie-parser/index.js | 1 - .../node_modules/cookie-parser/package.json | 85 - .../node_modules/cookie-signature/.npmignore | 4 - device_home/node_modules/cookie-signature/index.js | 1 - .../node_modules/cookie-signature/package.json | 60 - device_home/node_modules/cookie/LICENSE | 24 - device_home/node_modules/cookie/index.js | 7 - device_home/node_modules/cookie/package.json | 81 - device_home/node_modules/debug/.coveralls.yml | 1 - device_home/node_modules/debug/.eslintrc | 11 - device_home/node_modules/debug/.npmignore | 9 - device_home/node_modules/debug/.travis.yml | 14 - device_home/node_modules/debug/LICENSE | 19 - device_home/node_modules/debug/Makefile | 50 - device_home/node_modules/debug/component.json | 19 - device_home/node_modules/debug/karma.conf.js | 1 - device_home/node_modules/debug/node.js | 1 - device_home/node_modules/debug/package.json | 88 - device_home/node_modules/debug/src/browser.js | 1 - device_home/node_modules/debug/src/debug.js | 1 - device_home/node_modules/debug/src/index.js | 1 - .../node_modules/debug/src/inspector-log.js | 1 - device_home/node_modules/debug/src/node.js | 1 - device_home/node_modules/decamelize/index.js | 1 - device_home/node_modules/decamelize/license | 21 - device_home/node_modules/decamelize/package.json | 73 - device_home/node_modules/depd/LICENSE | 22 - device_home/node_modules/depd/index.js | 6 - device_home/node_modules/depd/lib/browser/index.js | 6 - .../depd/lib/compat/callsite-tostring.js | 6 - .../depd/lib/compat/event-listener-count.js | 6 - device_home/node_modules/depd/lib/compat/index.js | 6 - device_home/node_modules/depd/package.json | 82 - device_home/node_modules/destroy/LICENSE | 22 - device_home/node_modules/destroy/index.js | 6 - device_home/node_modules/destroy/package.json | 74 - device_home/node_modules/dijkstrajs/.npmignore | 1 - device_home/node_modules/dijkstrajs/.travis.yml | 4 - device_home/node_modules/dijkstrajs/dijkstra.js | 1 - device_home/node_modules/dijkstrajs/package.json | 88 - device_home/node_modules/ee-first/LICENSE | 22 - device_home/node_modules/ee-first/index.js | 6 - device_home/node_modules/ee-first/package.json | 66 - device_home/node_modules/ejs/LICENSE | 202 - device_home/node_modules/ejs/ejs.js | 8 - device_home/node_modules/ejs/ejs.min.js | 1 - device_home/node_modules/ejs/jakefile.js | 1 - device_home/node_modules/ejs/lib/ejs.js | 8 - device_home/node_modules/ejs/lib/utils.js | 1 - device_home/node_modules/ejs/package.json | 74 - device_home/node_modules/ejs/usage.txt | 24 - .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 - .../node_modules/emoji-regex/es2015/index.js | 1 - .../node_modules/emoji-regex/es2015/text.js | 1 - device_home/node_modules/emoji-regex/index.d.ts | 5 - device_home/node_modules/emoji-regex/index.js | 1 - device_home/node_modules/emoji-regex/package.json | 81 - device_home/node_modules/emoji-regex/text.js | 1 - device_home/node_modules/encodeurl/LICENSE | 22 - device_home/node_modules/encodeurl/index.js | 6 - device_home/node_modules/encodeurl/package.json | 81 - device_home/node_modules/engine.io-client/LICENSE | 22 - .../node_modules/engine.io-client/engine.io.js | 3 - .../engine.io-client/lib/globalThis.browser.js | 1 - .../engine.io-client/lib/globalThis.js | 1 - .../node_modules/engine.io-client/lib/index.js | 1 - .../node_modules/engine.io-client/lib/socket.js | 1 - .../node_modules/engine.io-client/lib/transport.js | 1 - .../engine.io-client/lib/transports/index.js | 1 - .../lib/transports/polling-jsonp.js | 1 - .../engine.io-client/lib/transports/polling-xhr.js | 1 - .../engine.io-client/lib/transports/polling.js | 1 - .../engine.io-client/lib/transports/websocket.js | 1 - .../engine.io-client/lib/xmlhttprequest.js | 1 - .../node_modules/engine.io-client/package.json | 115 - device_home/node_modules/engine.io-parser/LICENSE | 22 - .../node_modules/engine.io-parser/lib/browser.js | 1 - .../node_modules/engine.io-parser/lib/index.js | 1 - .../node_modules/engine.io-parser/lib/keys.js | 1 - .../node_modules/engine.io-parser/lib/utf8.js | 2 - .../node_modules/engine.io-parser/package.json | 66 - device_home/node_modules/engine.io/LICENSE | 19 - .../node_modules/engine.io/lib/engine.io.js | 1 - device_home/node_modules/engine.io/lib/server.js | 1 - device_home/node_modules/engine.io/lib/socket.js | 1 - .../node_modules/engine.io/lib/transport.js | 1 - .../node_modules/engine.io/lib/transports/index.js | 1 - .../engine.io/lib/transports/polling-jsonp.js | 1 - .../engine.io/lib/transports/polling-xhr.js | 1 - .../engine.io/lib/transports/polling.js | 1 - .../engine.io/lib/transports/websocket.js | 1 - .../engine.io/node_modules/base64id/LICENSE | 22 - .../node_modules/base64id/lib/base64id.js | 4 - .../engine.io/node_modules/base64id/package.json | 50 - device_home/node_modules/engine.io/package.json | 101 - device_home/node_modules/escape-html/LICENSE | 24 - device_home/node_modules/escape-html/index.js | 8 - device_home/node_modules/escape-html/package.json | 62 - .../node_modules/escape-string-regexp/index.js | 1 - .../node_modules/escape-string-regexp/license | 21 - .../node_modules/escape-string-regexp/package.json | 81 - device_home/node_modules/etag/LICENSE | 22 - device_home/node_modules/etag/index.js | 6 - device_home/node_modules/etag/package.json | 89 - device_home/node_modules/express-session/LICENSE | 24 - device_home/node_modules/express-session/index.js | 8 - .../node_modules/express-session/package.json | 91 - .../node_modules/express-session/session/cookie.js | 11 - .../node_modules/express-session/session/memory.js | 8 - .../express-session/session/session.js | 7 - .../node_modules/express-session/session/store.js | 7 - device_home/node_modules/express/LICENSE | 24 - device_home/node_modules/express/index.js | 8 - .../node_modules/express/lib/application.js | 8 - device_home/node_modules/express/lib/express.js | 8 - .../node_modules/express/lib/middleware/init.js | 8 - .../node_modules/express/lib/middleware/query.js | 8 - device_home/node_modules/express/lib/request.js | 8 - device_home/node_modules/express/lib/response.js | 7 - .../node_modules/express/lib/router/index.js | 8 - .../node_modules/express/lib/router/layer.js | 8 - .../node_modules/express/lib/router/route.js | 8 - device_home/node_modules/express/lib/utils.js | 7 - device_home/node_modules/express/lib/view.js | 8 - device_home/node_modules/express/package.json | 156 - device_home/node_modules/finalhandler/LICENSE | 22 - device_home/node_modules/finalhandler/index.js | 6 - device_home/node_modules/finalhandler/package.json | 83 - device_home/node_modules/find-up/index.js | 1 - device_home/node_modules/find-up/license | 9 - device_home/node_modules/find-up/package.json | 85 - device_home/node_modules/forwarded/LICENSE | 22 - device_home/node_modules/forwarded/index.js | 6 - device_home/node_modules/forwarded/package.json | 81 - device_home/node_modules/fresh/LICENSE | 23 - device_home/node_modules/fresh/index.js | 7 - device_home/node_modules/fresh/package.json | 93 - .../node_modules/get-caller-file/index.d.ts | 2 - device_home/node_modules/get-caller-file/index.js | 1 - .../node_modules/get-caller-file/package.json | 72 - device_home/node_modules/get-port/index.js | 1 - device_home/node_modules/get-port/license | 9 - device_home/node_modules/get-port/package.json | 107 - device_home/node_modules/has-binary2/LICENSE | 20 - device_home/node_modules/has-binary2/index.js | 1 - device_home/node_modules/has-binary2/package.json | 54 - device_home/node_modules/has-cors/.npmignore | 3 - device_home/node_modules/has-cors/Makefile | 11 - device_home/node_modules/has-cors/component.json | 13 - device_home/node_modules/has-cors/index.js | 1 - device_home/node_modules/has-cors/package.json | 68 - device_home/node_modules/has-cors/test.js | 1 - device_home/node_modules/has-flag/index.js | 1 - device_home/node_modules/has-flag/license | 9 - device_home/node_modules/has-flag/package.json | 76 - device_home/node_modules/http-errors/LICENSE | 23 - device_home/node_modules/http-errors/index.js | 7 - device_home/node_modules/http-errors/package.json | 96 - device_home/node_modules/iconv-lite/LICENSE | 21 - .../iconv-lite/encodings/dbcs-codec.js | 1 - .../node_modules/iconv-lite/encodings/dbcs-data.js | 1 - .../node_modules/iconv-lite/encodings/index.js | 1 - .../node_modules/iconv-lite/encodings/internal.js | 1 - .../iconv-lite/encodings/sbcs-codec.js | 1 - .../iconv-lite/encodings/sbcs-data-generated.js | 1 - .../node_modules/iconv-lite/encodings/sbcs-data.js | 1 - .../iconv-lite/encodings/tables/big5-added.json | 122 - .../iconv-lite/encodings/tables/cp936.json | 264 - .../iconv-lite/encodings/tables/cp949.json | 273 - .../iconv-lite/encodings/tables/cp950.json | 177 - .../iconv-lite/encodings/tables/eucjp.json | 182 - .../encodings/tables/gb18030-ranges.json | 1 - .../iconv-lite/encodings/tables/gbk-added.json | 55 - .../iconv-lite/encodings/tables/shiftjis.json | 125 - .../node_modules/iconv-lite/encodings/utf16.js | 1 - .../node_modules/iconv-lite/encodings/utf7.js | 1 - .../node_modules/iconv-lite/lib/bom-handling.js | 1 - .../node_modules/iconv-lite/lib/extend-node.js | 1 - device_home/node_modules/iconv-lite/lib/index.d.ts | 24 - device_home/node_modules/iconv-lite/lib/index.js | 1 - device_home/node_modules/iconv-lite/lib/streams.js | 1 - device_home/node_modules/iconv-lite/package.json | 80 - device_home/node_modules/ieee754/LICENSE | 11 - device_home/node_modules/ieee754/index.d.ts | 10 - device_home/node_modules/ieee754/index.js | 2 - device_home/node_modules/ieee754/package.json | 87 - device_home/node_modules/indexof/.npmignore | 2 - device_home/node_modules/indexof/Makefile | 11 - device_home/node_modules/indexof/component.json | 10 - device_home/node_modules/indexof/index.js | 1 - device_home/node_modules/indexof/package.json | 45 - device_home/node_modules/inherits/LICENSE | 16 - device_home/node_modules/inherits/inherits.js | 1 - .../node_modules/inherits/inherits_browser.js | 1 - device_home/node_modules/inherits/package.json | 109 - device_home/node_modules/ipaddr.js/LICENSE | 19 - device_home/node_modules/ipaddr.js/ipaddr.min.js | 1 - device_home/node_modules/ipaddr.js/lib/ipaddr.js | 1 - .../node_modules/ipaddr.js/lib/ipaddr.js.d.ts | 68 - device_home/node_modules/ipaddr.js/package.json | 73 - .../node_modules/is-fullwidth-code-point/index.js | 1 - .../node_modules/is-fullwidth-code-point/license | 21 - .../is-fullwidth-code-point/package.json | 80 - device_home/node_modules/isarray/LICENSE | 21 - device_home/node_modules/isarray/index.js | 1 - device_home/node_modules/isarray/package.json | 79 - device_home/node_modules/jake/Makefile | 44 - device_home/node_modules/jake/jakefile.js | 1 - device_home/node_modules/jake/lib/api.js | 1 - device_home/node_modules/jake/lib/jake.js | 1 - device_home/node_modules/jake/lib/loader.js | 1 - device_home/node_modules/jake/lib/namespace.js | 1 - device_home/node_modules/jake/lib/package_task.js | 1 - device_home/node_modules/jake/lib/parseargs.js | 1 - device_home/node_modules/jake/lib/program.js | 1 - device_home/node_modules/jake/lib/publish_task.js | 1 - device_home/node_modules/jake/lib/rule.js | 1 - .../node_modules/jake/lib/task/directory_task.js | 1 - .../node_modules/jake/lib/task/file_task.js | 1 - device_home/node_modules/jake/lib/task/index.js | 1 - device_home/node_modules/jake/lib/task/task.js | 1 - device_home/node_modules/jake/lib/test_task.js | 1 - device_home/node_modules/jake/lib/utils/file.js | 1 - device_home/node_modules/jake/lib/utils/index.js | 1 - device_home/node_modules/jake/lib/utils/logger.js | 1 - device_home/node_modules/jake/package.json | 75 - device_home/node_modules/jake/usage.txt | 16 - device_home/node_modules/locate-path/index.js | 1 - device_home/node_modules/locate-path/license | 9 - device_home/node_modules/locate-path/package.json | 79 - device_home/node_modules/media-typer/LICENSE | 22 - device_home/node_modules/media-typer/index.js | 6 - device_home/node_modules/media-typer/package.json | 64 - device_home/node_modules/merge-descriptors/LICENSE | 23 - .../node_modules/merge-descriptors/index.js | 7 - .../node_modules/merge-descriptors/package.json | 72 - device_home/node_modules/methods/LICENSE | 24 - device_home/node_modules/methods/index.js | 7 - device_home/node_modules/methods/package.json | 82 - device_home/node_modules/mime-db/LICENSE | 22 - device_home/node_modules/mime-db/db.json | 8242 ------------------ device_home/node_modules/mime-db/index.js | 6 - device_home/node_modules/mime-db/package.json | 105 - device_home/node_modules/mime-types/LICENSE | 23 - device_home/node_modules/mime-types/index.js | 7 - device_home/node_modules/mime-types/package.json | 91 - device_home/node_modules/mime/.npmignore | 0 device_home/node_modules/mime/LICENSE | 21 - device_home/node_modules/mime/cli.js | 2 - device_home/node_modules/mime/mime.js | 1 - device_home/node_modules/mime/package.json | 76 - device_home/node_modules/mime/src/build.js | 2 - device_home/node_modules/mime/src/test.js | 1 - device_home/node_modules/mime/types.json | 1 - device_home/node_modules/minimatch/LICENSE | 15 - device_home/node_modules/minimatch/minimatch.js | 1 - device_home/node_modules/minimatch/package.json | 64 - device_home/node_modules/ms/index.js | 1 - device_home/node_modules/ms/package.json | 74 - device_home/node_modules/negotiator/LICENSE | 24 - device_home/node_modules/negotiator/index.js | 8 - device_home/node_modules/negotiator/lib/charset.js | 1 - .../node_modules/negotiator/lib/encoding.js | 1 - .../node_modules/negotiator/lib/language.js | 1 - .../node_modules/negotiator/lib/mediaType.js | 1 - device_home/node_modules/negotiator/package.json | 87 - device_home/node_modules/on-finished/LICENSE | 23 - device_home/node_modules/on-finished/index.js | 7 - device_home/node_modules/on-finished/package.json | 76 - device_home/node_modules/on-headers/LICENSE | 22 - device_home/node_modules/on-headers/index.js | 6 - device_home/node_modules/on-headers/package.json | 77 - device_home/node_modules/p-limit/index.d.ts | 38 - device_home/node_modules/p-limit/index.js | 1 - device_home/node_modules/p-limit/license | 9 - device_home/node_modules/p-limit/package.json | 87 - device_home/node_modules/p-locate/index.js | 1 - device_home/node_modules/p-locate/license | 9 - device_home/node_modules/p-locate/package.json | 86 - device_home/node_modules/p-try/index.d.ts | 39 - device_home/node_modules/p-try/index.js | 1 - device_home/node_modules/p-try/license | 9 - device_home/node_modules/p-try/package.json | 77 - device_home/node_modules/parseqs/LICENSE | 21 - device_home/node_modules/parseqs/Makefile | 3 - device_home/node_modules/parseqs/index.js | 1 - device_home/node_modules/parseqs/package.json | 53 - device_home/node_modules/parseqs/test.js | 1 - device_home/node_modules/parseuri/LICENSE | 21 - device_home/node_modules/parseuri/Makefile | 3 - device_home/node_modules/parseuri/index.js | 1 - device_home/node_modules/parseuri/package.json | 54 - device_home/node_modules/parseuri/test.js | 1 - device_home/node_modules/parseurl/LICENSE | 24 - device_home/node_modules/parseurl/index.js | 7 - device_home/node_modules/parseurl/package.json | 84 - device_home/node_modules/path-exists/index.js | 1 - device_home/node_modules/path-exists/license | 21 - device_home/node_modules/path-exists/package.json | 75 - device_home/node_modules/path-to-regexp/LICENSE | 21 - device_home/node_modules/path-to-regexp/index.js | 1 - .../node_modules/path-to-regexp/package.json | 62 - device_home/node_modules/pngjs/.eslintrc.json | 182 - device_home/node_modules/pngjs/LICENSE | 20 - device_home/node_modules/pngjs/browser.js | 21 - device_home/node_modules/pngjs/lib/bitmapper.js | 1 - device_home/node_modules/pngjs/lib/bitpacker.js | 1 - device_home/node_modules/pngjs/lib/chunkstream.js | 1 - device_home/node_modules/pngjs/lib/constants.js | 1 - device_home/node_modules/pngjs/lib/crc.js | 1 - device_home/node_modules/pngjs/lib/filter-pack.js | 1 - .../node_modules/pngjs/lib/filter-parse-async.js | 1 - .../node_modules/pngjs/lib/filter-parse-sync.js | 1 - device_home/node_modules/pngjs/lib/filter-parse.js | 1 - .../node_modules/pngjs/lib/format-normaliser.js | 1 - device_home/node_modules/pngjs/lib/interlace.js | 1 - device_home/node_modules/pngjs/lib/packer-async.js | 1 - device_home/node_modules/pngjs/lib/packer-sync.js | 1 - device_home/node_modules/pngjs/lib/packer.js | 1 - .../node_modules/pngjs/lib/paeth-predictor.js | 1 - device_home/node_modules/pngjs/lib/parser-async.js | 1 - device_home/node_modules/pngjs/lib/parser-sync.js | 1 - device_home/node_modules/pngjs/lib/parser.js | 1 - device_home/node_modules/pngjs/lib/png-sync.js | 1 - device_home/node_modules/pngjs/lib/png.js | 1 - device_home/node_modules/pngjs/lib/sync-inflate.js | 1 - device_home/node_modules/pngjs/lib/sync-reader.js | 1 - device_home/node_modules/pngjs/package.json | 122 - device_home/node_modules/pngjs/yarn.lock | 2432 ------ device_home/node_modules/proxy-addr/LICENSE | 22 - device_home/node_modules/proxy-addr/index.js | 6 - device_home/node_modules/proxy-addr/package.json | 85 - device_home/node_modules/qrcode/build/qrcode.js | 8 - .../node_modules/qrcode/build/qrcode.min.js | 1 - .../node_modules/qrcode/build/qrcode.tosjis.js | 1 - .../node_modules/qrcode/build/qrcode.tosjis.min.js | 1 - device_home/node_modules/qrcode/helper/to-sjis.js | 1 - device_home/node_modules/qrcode/lib/browser.js | 1 - device_home/node_modules/qrcode/lib/can-promise.js | 1 - .../qrcode/lib/core/alignment-pattern.js | 1 - .../qrcode/lib/core/alphanumeric-data.js | 1 - .../node_modules/qrcode/lib/core/bit-buffer.js | 1 - .../node_modules/qrcode/lib/core/bit-matrix.js | 1 - .../node_modules/qrcode/lib/core/byte-data.js | 1 - .../qrcode/lib/core/error-correction-code.js | 1 - .../qrcode/lib/core/error-correction-level.js | 1 - .../node_modules/qrcode/lib/core/finder-pattern.js | 1 - .../node_modules/qrcode/lib/core/format-info.js | 1 - .../node_modules/qrcode/lib/core/galois-field.js | 1 - .../node_modules/qrcode/lib/core/kanji-data.js | 1 - .../node_modules/qrcode/lib/core/mask-pattern.js | 1 - device_home/node_modules/qrcode/lib/core/mode.js | 1 - .../node_modules/qrcode/lib/core/numeric-data.js | 1 - .../node_modules/qrcode/lib/core/polynomial.js | 1 - device_home/node_modules/qrcode/lib/core/qrcode.js | 1 - .../qrcode/lib/core/reed-solomon-encoder.js | 1 - device_home/node_modules/qrcode/lib/core/regex.js | 1 - .../node_modules/qrcode/lib/core/segments.js | 1 - device_home/node_modules/qrcode/lib/core/utils.js | 1 - .../node_modules/qrcode/lib/core/version-check.js | 1 - .../node_modules/qrcode/lib/core/version.js | 1 - device_home/node_modules/qrcode/lib/index.js | 1 - .../node_modules/qrcode/lib/renderer/canvas.js | 1 - .../node_modules/qrcode/lib/renderer/png.js | 1 - .../node_modules/qrcode/lib/renderer/svg-tag.js | 1 - .../node_modules/qrcode/lib/renderer/svg.js | 1 - .../node_modules/qrcode/lib/renderer/terminal.js | 1 - .../node_modules/qrcode/lib/renderer/utf8.js | 1 - .../node_modules/qrcode/lib/renderer/utils.js | 1 - device_home/node_modules/qrcode/lib/server.js | 1 - .../node_modules/qrcode/lib/utils/buffer.js | 1 - .../qrcode/lib/utils/typedarray-buffer.js | 1 - device_home/node_modules/qrcode/license | 10 - device_home/node_modules/qrcode/package.json | 112 - device_home/node_modules/qs/.editorconfig | 30 - device_home/node_modules/qs/.eslintignore | 1 - device_home/node_modules/qs/.eslintrc | 21 - device_home/node_modules/qs/LICENSE | 28 - device_home/node_modules/qs/dist/qs.js | 1 - device_home/node_modules/qs/lib/formats.js | 1 - device_home/node_modules/qs/lib/index.js | 1 - device_home/node_modules/qs/lib/parse.js | 1 - device_home/node_modules/qs/lib/stringify.js | 1 - device_home/node_modules/qs/lib/utils.js | 1 - device_home/node_modules/qs/package.json | 90 - device_home/node_modules/random-bytes/LICENSE | 21 - device_home/node_modules/random-bytes/index.js | 6 - device_home/node_modules/random-bytes/package.json | 71 - device_home/node_modules/range-parser/LICENSE | 23 - device_home/node_modules/range-parser/index.js | 7 - device_home/node_modules/range-parser/package.json | 94 - device_home/node_modules/raw-body/LICENSE | 22 - device_home/node_modules/raw-body/index.d.ts | 87 - device_home/node_modules/raw-body/index.js | 7 - device_home/node_modules/raw-body/package.json | 93 - .../node_modules/require-directory/.jshintrc | 67 - .../node_modules/require-directory/.npmignore | 1 - .../node_modules/require-directory/.travis.yml | 3 - device_home/node_modules/require-directory/LICENSE | 22 - .../node_modules/require-directory/README.markdown | 184 - .../node_modules/require-directory/index.js | 1 - .../node_modules/require-directory/package.json | 72 - .../node_modules/require-main-filename/LICENSE.txt | 14 - .../node_modules/require-main-filename/index.js | 1 - .../require-main-filename/package.json | 66 - device_home/node_modules/safe-buffer/LICENSE | 21 - device_home/node_modules/safe-buffer/index.d.ts | 187 - device_home/node_modules/safe-buffer/index.js | 1 - device_home/node_modules/safe-buffer/package.json | 97 - device_home/node_modules/safer-buffer/LICENSE | 21 - device_home/node_modules/safer-buffer/dangerous.js | 1 - device_home/node_modules/safer-buffer/package.json | 63 - device_home/node_modules/safer-buffer/safer.js | 1 - device_home/node_modules/safer-buffer/tests.js | 1 - device_home/node_modules/send/LICENSE | 23 - device_home/node_modules/send/index.js | 7 - device_home/node_modules/send/package.json | 109 - device_home/node_modules/serve-static/LICENSE | 25 - device_home/node_modules/serve-static/index.js | 8 - device_home/node_modules/serve-static/package.json | 80 - device_home/node_modules/set-blocking/LICENSE.txt | 14 - device_home/node_modules/set-blocking/index.js | 1 - device_home/node_modules/set-blocking/package.json | 73 - device_home/node_modules/setprototypeof/LICENSE | 13 - device_home/node_modules/setprototypeof/index.d.ts | 2 - device_home/node_modules/setprototypeof/index.js | 1 - .../node_modules/setprototypeof/package.json | 67 - .../socket.io-adapter/.idea/$CACHE_FILE$ | 25 - .../.idea/inspectionProfiles/profiles_settings.xml | 5 - .../node_modules/socket.io-adapter/.idea/misc.xml | 6 - .../socket.io-adapter/.idea/modules.xml | 8 - .../socket.io-adapter/.idea/socket.io-adapter.iml | 12 - .../node_modules/socket.io-adapter/.idea/vcs.xml | 6 - .../socket.io-adapter/.idea/workspace.xml | 71 - device_home/node_modules/socket.io-adapter/LICENSE | 20 - .../node_modules/socket.io-adapter/index.js | 1 - .../node_modules/socket.io-adapter/package.json | 42 - device_home/node_modules/socket.io-parser/LICENSE | 20 - .../node_modules/socket.io-parser/binary.js | 1 - device_home/node_modules/socket.io-parser/index.js | 1 - .../node_modules/socket.io-parser/is-buffer.js | 1 - .../node_modules/socket.io-parser/package.json | 68 - device_home/node_modules/socket.io/LICENSE | 22 - device_home/node_modules/socket.io/lib/client.js | 1 - device_home/node_modules/socket.io/lib/index.js | 1 - .../node_modules/socket.io/lib/namespace.js | 1 - .../node_modules/socket.io/lib/parent-namespace.js | 1 - device_home/node_modules/socket.io/lib/socket.js | 1 - .../node_modules/socket.io-client/LICENSE | 22 - .../socket.io-client/dist/socket.io.dev.js | 8 - .../socket.io-client/dist/socket.io.js | 7 - .../socket.io-client/dist/socket.io.slim.dev.js | 8 - .../socket.io-client/dist/socket.io.slim.js | 7 - .../node_modules/socket.io-client/lib/index.js | 1 - .../node_modules/socket.io-client/lib/manager.js | 1 - .../node_modules/socket.io-client/lib/on.js | 1 - .../node_modules/socket.io-client/lib/socket.js | 1 - .../node_modules/socket.io-client/lib/url.js | 1 - .../node_modules/socket.io-client/package.json | 123 - device_home/node_modules/socket.io/package.json | 102 - device_home/node_modules/statuses/LICENSE | 23 - device_home/node_modules/statuses/codes.json | 66 - device_home/node_modules/statuses/index.js | 7 - device_home/node_modules/statuses/package.json | 93 - device_home/node_modules/string-width/index.js | 1 - device_home/node_modules/string-width/license | 9 - device_home/node_modules/string-width/package.json | 93 - device_home/node_modules/strip-ansi/index.d.ts | 15 - device_home/node_modules/strip-ansi/index.js | 1 - device_home/node_modules/strip-ansi/license | 9 - device_home/node_modules/strip-ansi/package.json | 91 - device_home/node_modules/supports-color/browser.js | 1 - device_home/node_modules/supports-color/index.js | 1 - device_home/node_modules/supports-color/license | 9 - .../node_modules/supports-color/package.json | 85 - device_home/node_modules/to-array/.npmignore | 3 - device_home/node_modules/to-array/LICENCE | 19 - device_home/node_modules/to-array/index.js | 1 - device_home/node_modules/to-array/package.json | 71 - device_home/node_modules/toidentifier/LICENSE | 21 - device_home/node_modules/toidentifier/index.js | 6 - device_home/node_modules/toidentifier/package.json | 79 - device_home/node_modules/type-is/LICENSE | 23 - device_home/node_modules/type-is/index.js | 7 - device_home/node_modules/type-is/package.json | 88 - device_home/node_modules/uid-safe/LICENSE | 22 - device_home/node_modules/uid-safe/index.js | 7 - device_home/node_modules/uid-safe/package.json | 85 - device_home/node_modules/unpipe/LICENSE | 22 - device_home/node_modules/unpipe/index.js | 6 - device_home/node_modules/unpipe/package.json | 66 - device_home/node_modules/utils-merge/.npmignore | 9 - device_home/node_modules/utils-merge/LICENSE | 20 - device_home/node_modules/utils-merge/index.js | 1 - device_home/node_modules/utils-merge/package.json | 69 - device_home/node_modules/vary/LICENSE | 22 - device_home/node_modules/vary/index.js | 6 - device_home/node_modules/vary/package.json | 81 - device_home/node_modules/which-module/LICENSE | 13 - device_home/node_modules/which-module/index.js | 1 - device_home/node_modules/which-module/package.json | 71 - device_home/node_modules/wrap-ansi/index.js | 1 - device_home/node_modules/wrap-ansi/license | 9 - device_home/node_modules/wrap-ansi/package.json | 96 - device_home/node_modules/ws/LICENSE | 21 - device_home/node_modules/ws/index.js | 1 - device_home/node_modules/ws/lib/buffer-util.js | 1 - device_home/node_modules/ws/lib/constants.js | 1 - device_home/node_modules/ws/lib/event-target.js | 1 - device_home/node_modules/ws/lib/extension.js | 1 - .../node_modules/ws/lib/permessage-deflate.js | 1 - device_home/node_modules/ws/lib/receiver.js | 1 - device_home/node_modules/ws/lib/sender.js | 1 - device_home/node_modules/ws/lib/validation.js | 1 - .../node_modules/ws/lib/websocket-server.js | 1 - device_home/node_modules/ws/lib/websocket.js | 1 - .../ws/node_modules/async-limiter/.eslintignore | 2 - .../ws/node_modules/async-limiter/.nycrc | 10 - .../ws/node_modules/async-limiter/.travis.yml | 9 - .../ws/node_modules/async-limiter/LICENSE | 8 - .../ws/node_modules/async-limiter/index.js | 1 - .../ws/node_modules/async-limiter/package.json | 69 - device_home/node_modules/ws/package.json | 78 - .../node_modules/xmlhttprequest-ssl/LICENSE | 22 - .../xmlhttprequest-ssl/autotest.watchr | 8 - .../xmlhttprequest-ssl/lib/XMLHttpRequest.js | 13 - .../node_modules/xmlhttprequest-ssl/package.json | 66 - .../xmlhttprequest-ssl/tests/test-constants.js | 1 - .../xmlhttprequest-ssl/tests/test-events.js | 1 - .../xmlhttprequest-ssl/tests/test-exceptions.js | 1 - .../xmlhttprequest-ssl/tests/test-headers.js | 1 - .../xmlhttprequest-ssl/tests/test-redirect-302.js | 1 - .../xmlhttprequest-ssl/tests/test-redirect-303.js | 1 - .../xmlhttprequest-ssl/tests/test-redirect-307.js | 1 - .../tests/test-request-methods.js | 1 - .../tests/test-request-protocols.js | 1 - .../xmlhttprequest-ssl/tests/testdata.txt | 1 - device_home/node_modules/xmlhttprequest/.jshintrc | 26 - device_home/node_modules/xmlhttprequest/.npmignore | 4 - device_home/node_modules/xmlhttprequest/LICENSE | 22 - .../xmlhttprequest/lib/XMLHttpRequest.js | 13 - .../node_modules/xmlhttprequest/package.json | 56 - device_home/node_modules/y18n/LICENSE | 13 - device_home/node_modules/y18n/index.js | 1 - device_home/node_modules/y18n/package.json | 70 - device_home/node_modules/yargs-parser/LICENSE.txt | 14 - device_home/node_modules/yargs-parser/index.js | 1 - .../yargs-parser/lib/tokenize-arg-string.js | 1 - device_home/node_modules/yargs-parser/package.json | 82 - device_home/node_modules/yargs/LICENSE | 22 - device_home/node_modules/yargs/index.js | 1 - .../node_modules/yargs/lib/apply-extends.js | 1 - device_home/node_modules/yargs/lib/argsert.js | 1 - device_home/node_modules/yargs/lib/command.js | 1 - .../node_modules/yargs/lib/completion-templates.js | 1 - device_home/node_modules/yargs/lib/completion.js | 1 - device_home/node_modules/yargs/lib/decamelize.js | 1 - device_home/node_modules/yargs/lib/is-promise.js | 1 - device_home/node_modules/yargs/lib/levenshtein.js | 1 - device_home/node_modules/yargs/lib/middleware.js | 1 - device_home/node_modules/yargs/lib/obj-filter.js | 1 - device_home/node_modules/yargs/lib/usage.js | 1 - device_home/node_modules/yargs/lib/validation.js | 1 - device_home/node_modules/yargs/lib/yerror.js | 1 - device_home/node_modules/yargs/locales/be.json | 39 - device_home/node_modules/yargs/locales/de.json | 39 - device_home/node_modules/yargs/locales/en.json | 42 - device_home/node_modules/yargs/locales/es.json | 39 - device_home/node_modules/yargs/locales/fr.json | 37 - device_home/node_modules/yargs/locales/hi.json | 42 - device_home/node_modules/yargs/locales/hu.json | 39 - device_home/node_modules/yargs/locales/id.json | 43 - device_home/node_modules/yargs/locales/it.json | 39 - device_home/node_modules/yargs/locales/ja.json | 42 - device_home/node_modules/yargs/locales/ko.json | 42 - device_home/node_modules/yargs/locales/nb.json | 37 - device_home/node_modules/yargs/locales/nl.json | 42 - device_home/node_modules/yargs/locales/nn.json | 39 - device_home/node_modules/yargs/locales/pirate.json | 13 - device_home/node_modules/yargs/locales/pl.json | 42 - device_home/node_modules/yargs/locales/pt.json | 38 - device_home/node_modules/yargs/locales/pt_BR.json | 42 - device_home/node_modules/yargs/locales/ru.json | 39 - device_home/node_modules/yargs/locales/th.json | 39 - device_home/node_modules/yargs/locales/tr.json | 41 - device_home/node_modules/yargs/locales/zh_CN.json | 41 - device_home/node_modules/yargs/locales/zh_TW.json | 40 - device_home/node_modules/yargs/package.json | 109 - device_home/node_modules/yargs/yargs.js | 1 - device_home/node_modules/yeast/LICENSE | 22 - device_home/node_modules/yeast/index.js | 1 - device_home/node_modules/yeast/package.json | 67 - device_home/package-lock.json | 696 -- device_home/pincode/css/pincode.css | 302 - device_home/pincode/js/jsencrypt.js | 2 - device_home/pincode/js/pincode.js | 138 - device_home/pincode/pincode.html | 42 - device_home/service/app_proxy.js | 110 - device_home/service/app_router.js | 36 - device_home/service/initializer/service.js | 124 - device_home/service/jsencrypt.js | 2 - device_home/service/relay-server.js | 271 - device_home/service/security.js | 43 - device_home/service/service.js | 642 -- device_home/service/tv/service_tv.js | 102 - device_home/shared/res/offload.js | 20 - device_home/signaling_server/gen/app.js | 3 - device_home/signaling_server/gen/config.js | 48 - device_home/signaling_server/gen/config.json | 4 - device_home/signaling_server/gen/edge.js | 109 - .../gen/public/offload-worker/index.html | 23 - .../gen/public/offload-worker/js/log.js | 56 - .../gen/public/offload-worker/js/main.js | 133 - .../gen/public/offload-worker/offload-worker.js | 9134 -------------------- device_home/signaling_server/gen/service.js | 457 - device_home/signaling_server/gen/socket-tizen.js | 132 - device_home/signaling_server/gen/util.js | 47 - packaging/config.xml.in | 26 - packaging/config_tv.xml.in | 27 - packaging/wrtjs.spec | 33 - tizen/build/build_app.sh | 58 - 778 files changed, 43424 deletions(-) delete mode 100644 device_home/about.html delete mode 100644 device_home/client/client.html delete mode 100644 device_home/client/css/style.css delete mode 100755 device_home/client/error.html delete mode 100644 device_home/client/images/Hamburger_icon.svg delete mode 100644 device_home/client/images/tw_list_icon_wallpaper.svg delete mode 100755 device_home/client/invited.html delete mode 100644 device_home/client/js/actions.js delete mode 100755 device_home/client/js/app.js delete mode 100755 device_home/client/js/client.js delete mode 100644 device_home/client/js/clipping-storage.js delete mode 100755 device_home/client/js/invited.js delete mode 100644 device_home/client/js/lib/mustache.js delete mode 100644 device_home/client/js/myApps.js delete mode 100644 device_home/client/manifest.webmanifest delete mode 100644 device_home/client/webclip-template/container/webclip.html delete mode 100644 device_home/client/webclip-template/favorite/webclip.html delete mode 100644 device_home/client/webclip-template/image-notitle/css/style.css delete mode 100644 device_home/client/webclip-template/image-notitle/webclip.html delete mode 100644 device_home/client/webclip-template/image/webclip.html delete mode 100644 device_home/icon.png delete mode 100644 device_home/node_modules/accepts/LICENSE delete mode 100644 device_home/node_modules/accepts/index.js delete mode 100644 device_home/node_modules/accepts/package.json delete mode 100644 device_home/node_modules/after/.npmignore delete mode 100644 device_home/node_modules/after/.travis.yml delete mode 100644 device_home/node_modules/after/LICENCE delete mode 100644 device_home/node_modules/after/index.js delete mode 100644 device_home/node_modules/after/package.json delete mode 100644 device_home/node_modules/ansi-regex/index.js delete mode 100644 device_home/node_modules/ansi-regex/license delete mode 100644 device_home/node_modules/ansi-regex/package.json delete mode 100644 device_home/node_modules/ansi-styles/index.js delete mode 100644 device_home/node_modules/ansi-styles/license delete mode 100644 device_home/node_modules/ansi-styles/package.json delete mode 100644 device_home/node_modules/array-flatten/LICENSE delete mode 100644 device_home/node_modules/array-flatten/array-flatten.js delete mode 100644 device_home/node_modules/array-flatten/package.json delete mode 100644 device_home/node_modules/arraybuffer.slice/.npmignore delete mode 100644 device_home/node_modules/arraybuffer.slice/LICENCE delete mode 100644 device_home/node_modules/arraybuffer.slice/Makefile delete mode 100644 device_home/node_modules/arraybuffer.slice/index.js delete mode 100644 device_home/node_modules/arraybuffer.slice/package.json delete mode 100644 device_home/node_modules/async/.travis.yml delete mode 100644 device_home/node_modules/async/LICENSE delete mode 100644 device_home/node_modules/async/bower.json delete mode 100644 device_home/node_modules/async/component.json delete mode 100644 device_home/node_modules/async/lib/async.js delete mode 100644 device_home/node_modules/async/package.json delete mode 100755 device_home/node_modules/async/support/sync-package-managers.js delete mode 100644 device_home/node_modules/backo2/.npmignore delete mode 100644 device_home/node_modules/backo2/Makefile delete mode 100644 device_home/node_modules/backo2/component.json delete mode 100644 device_home/node_modules/backo2/index.js delete mode 100644 device_home/node_modules/backo2/package.json delete mode 100644 device_home/node_modules/balanced-match/.npmignore delete mode 100644 device_home/node_modules/balanced-match/index.js delete mode 100644 device_home/node_modules/balanced-match/package.json delete mode 100644 device_home/node_modules/base64-arraybuffer/.npmignore delete mode 100644 device_home/node_modules/base64-arraybuffer/.travis.yml delete mode 100644 device_home/node_modules/base64-arraybuffer/LICENSE-MIT delete mode 100644 device_home/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js delete mode 100644 device_home/node_modules/base64-arraybuffer/package.json delete mode 100644 device_home/node_modules/base64-js/LICENSE delete mode 100644 device_home/node_modules/base64-js/base64js.min.js delete mode 100644 device_home/node_modules/base64-js/index.d.ts delete mode 100644 device_home/node_modules/base64-js/index.js delete mode 100644 device_home/node_modules/base64-js/package.json delete mode 100644 device_home/node_modules/blob/.idea/blob.iml delete mode 100644 device_home/node_modules/blob/.idea/inspectionProfiles/profiles_settings.xml delete mode 100644 device_home/node_modules/blob/.idea/markdown-navigator.xml delete mode 100644 device_home/node_modules/blob/.idea/markdown-navigator/profiles_settings.xml delete mode 100644 device_home/node_modules/blob/.idea/modules.xml delete mode 100644 device_home/node_modules/blob/.idea/vcs.xml delete mode 100644 device_home/node_modules/blob/.idea/workspace.xml delete mode 100644 device_home/node_modules/blob/.zuul.yml delete mode 100644 device_home/node_modules/blob/LICENSE delete mode 100644 device_home/node_modules/blob/Makefile delete mode 100644 device_home/node_modules/blob/component.json delete mode 100644 device_home/node_modules/blob/index.js delete mode 100644 device_home/node_modules/blob/package.json delete mode 100644 device_home/node_modules/body-parser/LICENSE delete mode 100644 device_home/node_modules/body-parser/index.js delete mode 100644 device_home/node_modules/body-parser/lib/read.js delete mode 100644 device_home/node_modules/body-parser/lib/types/json.js delete mode 100644 device_home/node_modules/body-parser/lib/types/raw.js delete mode 100644 device_home/node_modules/body-parser/lib/types/text.js delete mode 100644 device_home/node_modules/body-parser/lib/types/urlencoded.js delete mode 100644 device_home/node_modules/body-parser/package.json delete mode 100644 device_home/node_modules/brace-expansion/LICENSE delete mode 100644 device_home/node_modules/brace-expansion/index.js delete mode 100644 device_home/node_modules/brace-expansion/package.json delete mode 100644 device_home/node_modules/buffer-alloc-unsafe/index.js delete mode 100644 device_home/node_modules/buffer-alloc-unsafe/package.json delete mode 100644 device_home/node_modules/buffer-alloc/index.js delete mode 100644 device_home/node_modules/buffer-alloc/package.json delete mode 100644 device_home/node_modules/buffer-fill/index.js delete mode 100644 device_home/node_modules/buffer-fill/package.json delete mode 100644 device_home/node_modules/buffer-from/LICENSE delete mode 100644 device_home/node_modules/buffer-from/index.js delete mode 100644 device_home/node_modules/buffer-from/package.json delete mode 100644 device_home/node_modules/buffer/LICENSE delete mode 100644 device_home/node_modules/buffer/index.d.ts delete mode 100644 device_home/node_modules/buffer/index.js delete mode 100644 device_home/node_modules/buffer/package.json delete mode 100644 device_home/node_modules/bytes/LICENSE delete mode 100644 device_home/node_modules/bytes/index.js delete mode 100644 device_home/node_modules/bytes/package.json delete mode 100644 device_home/node_modules/camelcase/index.d.ts delete mode 100644 device_home/node_modules/camelcase/index.js delete mode 100644 device_home/node_modules/camelcase/license delete mode 100644 device_home/node_modules/camelcase/package.json delete mode 100644 device_home/node_modules/chalk/index.js delete mode 100644 device_home/node_modules/chalk/index.js.flow delete mode 100644 device_home/node_modules/chalk/license delete mode 100644 device_home/node_modules/chalk/package.json delete mode 100644 device_home/node_modules/chalk/templates.js delete mode 100644 device_home/node_modules/chalk/types/index.d.ts delete mode 100644 device_home/node_modules/cliui/LICENSE.txt delete mode 100644 device_home/node_modules/cliui/index.js delete mode 100644 device_home/node_modules/cliui/package.json delete mode 100644 device_home/node_modules/color-convert/LICENSE delete mode 100644 device_home/node_modules/color-convert/conversions.js delete mode 100644 device_home/node_modules/color-convert/index.js delete mode 100644 device_home/node_modules/color-convert/package.json delete mode 100644 device_home/node_modules/color-convert/route.js delete mode 100644 device_home/node_modules/color-name/.eslintrc.json delete mode 100644 device_home/node_modules/color-name/.npmignore delete mode 100644 device_home/node_modules/color-name/LICENSE delete mode 100644 device_home/node_modules/color-name/index.js delete mode 100644 device_home/node_modules/color-name/package.json delete mode 100644 device_home/node_modules/color-name/test.js delete mode 100644 device_home/node_modules/component-bind/.npmignore delete mode 100644 device_home/node_modules/component-bind/Makefile delete mode 100644 device_home/node_modules/component-bind/component.json delete mode 100644 device_home/node_modules/component-bind/index.js delete mode 100644 device_home/node_modules/component-bind/package.json delete mode 100644 device_home/node_modules/component-emitter/LICENSE delete mode 100644 device_home/node_modules/component-emitter/index.js delete mode 100644 device_home/node_modules/component-emitter/package.json delete mode 100644 device_home/node_modules/component-inherit/.npmignore delete mode 100644 device_home/node_modules/component-inherit/Makefile delete mode 100644 device_home/node_modules/component-inherit/component.json delete mode 100644 device_home/node_modules/component-inherit/index.js delete mode 100644 device_home/node_modules/component-inherit/package.json delete mode 100755 device_home/node_modules/concat-map/.travis.yml delete mode 100755 device_home/node_modules/concat-map/LICENSE delete mode 100755 device_home/node_modules/concat-map/README.markdown delete mode 100755 device_home/node_modules/concat-map/index.js delete mode 100755 device_home/node_modules/concat-map/package.json delete mode 100644 device_home/node_modules/content-disposition/LICENSE delete mode 100644 device_home/node_modules/content-disposition/index.js delete mode 100644 device_home/node_modules/content-disposition/package.json delete mode 100644 device_home/node_modules/content-type/LICENSE delete mode 100644 device_home/node_modules/content-type/index.js delete mode 100644 device_home/node_modules/content-type/package.json delete mode 100644 device_home/node_modules/cookie-parser/LICENSE delete mode 100644 device_home/node_modules/cookie-parser/index.js delete mode 100644 device_home/node_modules/cookie-parser/package.json delete mode 100644 device_home/node_modules/cookie-signature/.npmignore delete mode 100644 device_home/node_modules/cookie-signature/index.js delete mode 100644 device_home/node_modules/cookie-signature/package.json delete mode 100644 device_home/node_modules/cookie/LICENSE delete mode 100644 device_home/node_modules/cookie/index.js delete mode 100644 device_home/node_modules/cookie/package.json delete mode 100755 device_home/node_modules/debug/.coveralls.yml delete mode 100755 device_home/node_modules/debug/.eslintrc delete mode 100755 device_home/node_modules/debug/.npmignore delete mode 100755 device_home/node_modules/debug/.travis.yml delete mode 100755 device_home/node_modules/debug/LICENSE delete mode 100755 device_home/node_modules/debug/Makefile delete mode 100755 device_home/node_modules/debug/component.json delete mode 100755 device_home/node_modules/debug/karma.conf.js delete mode 100755 device_home/node_modules/debug/node.js delete mode 100755 device_home/node_modules/debug/package.json delete mode 100755 device_home/node_modules/debug/src/browser.js delete mode 100755 device_home/node_modules/debug/src/debug.js delete mode 100755 device_home/node_modules/debug/src/index.js delete mode 100755 device_home/node_modules/debug/src/inspector-log.js delete mode 100755 device_home/node_modules/debug/src/node.js delete mode 100644 device_home/node_modules/decamelize/index.js delete mode 100644 device_home/node_modules/decamelize/license delete mode 100644 device_home/node_modules/decamelize/package.json delete mode 100644 device_home/node_modules/depd/LICENSE delete mode 100644 device_home/node_modules/depd/index.js delete mode 100644 device_home/node_modules/depd/lib/browser/index.js delete mode 100644 device_home/node_modules/depd/lib/compat/callsite-tostring.js delete mode 100644 device_home/node_modules/depd/lib/compat/event-listener-count.js delete mode 100644 device_home/node_modules/depd/lib/compat/index.js delete mode 100644 device_home/node_modules/depd/package.json delete mode 100644 device_home/node_modules/destroy/LICENSE delete mode 100644 device_home/node_modules/destroy/index.js delete mode 100644 device_home/node_modules/destroy/package.json delete mode 100644 device_home/node_modules/dijkstrajs/.npmignore delete mode 100644 device_home/node_modules/dijkstrajs/.travis.yml delete mode 100644 device_home/node_modules/dijkstrajs/dijkstra.js delete mode 100644 device_home/node_modules/dijkstrajs/package.json delete mode 100644 device_home/node_modules/ee-first/LICENSE delete mode 100644 device_home/node_modules/ee-first/index.js delete mode 100644 device_home/node_modules/ee-first/package.json delete mode 100755 device_home/node_modules/ejs/LICENSE delete mode 100755 device_home/node_modules/ejs/ejs.js delete mode 100755 device_home/node_modules/ejs/ejs.min.js delete mode 100755 device_home/node_modules/ejs/jakefile.js delete mode 100755 device_home/node_modules/ejs/lib/ejs.js delete mode 100755 device_home/node_modules/ejs/lib/utils.js delete mode 100755 device_home/node_modules/ejs/package.json delete mode 100755 device_home/node_modules/ejs/usage.txt delete mode 100644 device_home/node_modules/emoji-regex/LICENSE-MIT.txt delete mode 100644 device_home/node_modules/emoji-regex/es2015/index.js delete mode 100644 device_home/node_modules/emoji-regex/es2015/text.js delete mode 100644 device_home/node_modules/emoji-regex/index.d.ts delete mode 100644 device_home/node_modules/emoji-regex/index.js delete mode 100644 device_home/node_modules/emoji-regex/package.json delete mode 100644 device_home/node_modules/emoji-regex/text.js delete mode 100644 device_home/node_modules/encodeurl/LICENSE delete mode 100644 device_home/node_modules/encodeurl/index.js delete mode 100644 device_home/node_modules/encodeurl/package.json delete mode 100644 device_home/node_modules/engine.io-client/LICENSE delete mode 100644 device_home/node_modules/engine.io-client/engine.io.js delete mode 100644 device_home/node_modules/engine.io-client/lib/globalThis.browser.js delete mode 100644 device_home/node_modules/engine.io-client/lib/globalThis.js delete mode 100644 device_home/node_modules/engine.io-client/lib/index.js delete mode 100644 device_home/node_modules/engine.io-client/lib/socket.js delete mode 100644 device_home/node_modules/engine.io-client/lib/transport.js delete mode 100755 device_home/node_modules/engine.io-client/lib/transports/index.js delete mode 100644 device_home/node_modules/engine.io-client/lib/transports/polling-jsonp.js delete mode 100755 device_home/node_modules/engine.io-client/lib/transports/polling-xhr.js delete mode 100644 device_home/node_modules/engine.io-client/lib/transports/polling.js delete mode 100644 device_home/node_modules/engine.io-client/lib/transports/websocket.js delete mode 100644 device_home/node_modules/engine.io-client/lib/xmlhttprequest.js delete mode 100644 device_home/node_modules/engine.io-client/package.json delete mode 100644 device_home/node_modules/engine.io-parser/LICENSE delete mode 100644 device_home/node_modules/engine.io-parser/lib/browser.js delete mode 100644 device_home/node_modules/engine.io-parser/lib/index.js delete mode 100644 device_home/node_modules/engine.io-parser/lib/keys.js delete mode 100644 device_home/node_modules/engine.io-parser/lib/utf8.js delete mode 100644 device_home/node_modules/engine.io-parser/package.json delete mode 100644 device_home/node_modules/engine.io/LICENSE delete mode 100644 device_home/node_modules/engine.io/lib/engine.io.js delete mode 100644 device_home/node_modules/engine.io/lib/server.js delete mode 100644 device_home/node_modules/engine.io/lib/socket.js delete mode 100644 device_home/node_modules/engine.io/lib/transport.js delete mode 100644 device_home/node_modules/engine.io/lib/transports/index.js delete mode 100644 device_home/node_modules/engine.io/lib/transports/polling-jsonp.js delete mode 100644 device_home/node_modules/engine.io/lib/transports/polling-xhr.js delete mode 100644 device_home/node_modules/engine.io/lib/transports/polling.js delete mode 100644 device_home/node_modules/engine.io/lib/transports/websocket.js delete mode 100644 device_home/node_modules/engine.io/node_modules/base64id/LICENSE delete mode 100644 device_home/node_modules/engine.io/node_modules/base64id/lib/base64id.js delete mode 100644 device_home/node_modules/engine.io/node_modules/base64id/package.json delete mode 100644 device_home/node_modules/engine.io/package.json delete mode 100644 device_home/node_modules/escape-html/LICENSE delete mode 100644 device_home/node_modules/escape-html/index.js delete mode 100644 device_home/node_modules/escape-html/package.json delete mode 100755 device_home/node_modules/escape-string-regexp/index.js delete mode 100755 device_home/node_modules/escape-string-regexp/license delete mode 100755 device_home/node_modules/escape-string-regexp/package.json delete mode 100644 device_home/node_modules/etag/LICENSE delete mode 100644 device_home/node_modules/etag/index.js delete mode 100644 device_home/node_modules/etag/package.json delete mode 100755 device_home/node_modules/express-session/LICENSE delete mode 100755 device_home/node_modules/express-session/index.js delete mode 100755 device_home/node_modules/express-session/package.json delete mode 100755 device_home/node_modules/express-session/session/cookie.js delete mode 100755 device_home/node_modules/express-session/session/memory.js delete mode 100755 device_home/node_modules/express-session/session/session.js delete mode 100755 device_home/node_modules/express-session/session/store.js delete mode 100644 device_home/node_modules/express/LICENSE delete mode 100644 device_home/node_modules/express/index.js delete mode 100644 device_home/node_modules/express/lib/application.js delete mode 100644 device_home/node_modules/express/lib/express.js delete mode 100644 device_home/node_modules/express/lib/middleware/init.js delete mode 100644 device_home/node_modules/express/lib/middleware/query.js delete mode 100644 device_home/node_modules/express/lib/request.js delete mode 100644 device_home/node_modules/express/lib/response.js delete mode 100644 device_home/node_modules/express/lib/router/index.js delete mode 100644 device_home/node_modules/express/lib/router/layer.js delete mode 100644 device_home/node_modules/express/lib/router/route.js delete mode 100644 device_home/node_modules/express/lib/utils.js delete mode 100644 device_home/node_modules/express/lib/view.js delete mode 100644 device_home/node_modules/express/package.json delete mode 100644 device_home/node_modules/finalhandler/LICENSE delete mode 100644 device_home/node_modules/finalhandler/index.js delete mode 100644 device_home/node_modules/finalhandler/package.json delete mode 100644 device_home/node_modules/find-up/index.js delete mode 100644 device_home/node_modules/find-up/license delete mode 100644 device_home/node_modules/find-up/package.json delete mode 100644 device_home/node_modules/forwarded/LICENSE delete mode 100644 device_home/node_modules/forwarded/index.js delete mode 100644 device_home/node_modules/forwarded/package.json delete mode 100644 device_home/node_modules/fresh/LICENSE delete mode 100644 device_home/node_modules/fresh/index.js delete mode 100644 device_home/node_modules/fresh/package.json delete mode 100644 device_home/node_modules/get-caller-file/index.d.ts delete mode 100644 device_home/node_modules/get-caller-file/index.js delete mode 100644 device_home/node_modules/get-caller-file/package.json delete mode 100755 device_home/node_modules/get-port/index.js delete mode 100755 device_home/node_modules/get-port/license delete mode 100755 device_home/node_modules/get-port/package.json delete mode 100644 device_home/node_modules/has-binary2/LICENSE delete mode 100644 device_home/node_modules/has-binary2/index.js delete mode 100644 device_home/node_modules/has-binary2/package.json delete mode 100644 device_home/node_modules/has-cors/.npmignore delete mode 100644 device_home/node_modules/has-cors/Makefile delete mode 100644 device_home/node_modules/has-cors/component.json delete mode 100644 device_home/node_modules/has-cors/index.js delete mode 100644 device_home/node_modules/has-cors/package.json delete mode 100644 device_home/node_modules/has-cors/test.js delete mode 100755 device_home/node_modules/has-flag/index.js delete mode 100755 device_home/node_modules/has-flag/license delete mode 100755 device_home/node_modules/has-flag/package.json delete mode 100644 device_home/node_modules/http-errors/LICENSE delete mode 100644 device_home/node_modules/http-errors/index.js delete mode 100644 device_home/node_modules/http-errors/package.json delete mode 100644 device_home/node_modules/iconv-lite/LICENSE delete mode 100644 device_home/node_modules/iconv-lite/encodings/dbcs-codec.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/dbcs-data.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/index.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/internal.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/sbcs-codec.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/sbcs-data-generated.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/sbcs-data.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/big5-added.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/cp936.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/cp949.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/cp950.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/eucjp.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/gbk-added.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/tables/shiftjis.json delete mode 100644 device_home/node_modules/iconv-lite/encodings/utf16.js delete mode 100644 device_home/node_modules/iconv-lite/encodings/utf7.js delete mode 100644 device_home/node_modules/iconv-lite/lib/bom-handling.js delete mode 100644 device_home/node_modules/iconv-lite/lib/extend-node.js delete mode 100644 device_home/node_modules/iconv-lite/lib/index.d.ts delete mode 100644 device_home/node_modules/iconv-lite/lib/index.js delete mode 100644 device_home/node_modules/iconv-lite/lib/streams.js delete mode 100644 device_home/node_modules/iconv-lite/package.json delete mode 100644 device_home/node_modules/ieee754/LICENSE delete mode 100644 device_home/node_modules/ieee754/index.d.ts delete mode 100644 device_home/node_modules/ieee754/index.js delete mode 100644 device_home/node_modules/ieee754/package.json delete mode 100644 device_home/node_modules/indexof/.npmignore delete mode 100644 device_home/node_modules/indexof/Makefile delete mode 100644 device_home/node_modules/indexof/component.json delete mode 100644 device_home/node_modules/indexof/index.js delete mode 100644 device_home/node_modules/indexof/package.json delete mode 100644 device_home/node_modules/inherits/LICENSE delete mode 100644 device_home/node_modules/inherits/inherits.js delete mode 100644 device_home/node_modules/inherits/inherits_browser.js delete mode 100644 device_home/node_modules/inherits/package.json delete mode 100644 device_home/node_modules/ipaddr.js/LICENSE delete mode 100644 device_home/node_modules/ipaddr.js/ipaddr.min.js delete mode 100644 device_home/node_modules/ipaddr.js/lib/ipaddr.js delete mode 100644 device_home/node_modules/ipaddr.js/lib/ipaddr.js.d.ts delete mode 100644 device_home/node_modules/ipaddr.js/package.json delete mode 100644 device_home/node_modules/is-fullwidth-code-point/index.js delete mode 100644 device_home/node_modules/is-fullwidth-code-point/license delete mode 100644 device_home/node_modules/is-fullwidth-code-point/package.json delete mode 100644 device_home/node_modules/isarray/LICENSE delete mode 100644 device_home/node_modules/isarray/index.js delete mode 100644 device_home/node_modules/isarray/package.json delete mode 100755 device_home/node_modules/jake/Makefile delete mode 100755 device_home/node_modules/jake/jakefile.js delete mode 100755 device_home/node_modules/jake/lib/api.js delete mode 100755 device_home/node_modules/jake/lib/jake.js delete mode 100755 device_home/node_modules/jake/lib/loader.js delete mode 100755 device_home/node_modules/jake/lib/namespace.js delete mode 100755 device_home/node_modules/jake/lib/package_task.js delete mode 100755 device_home/node_modules/jake/lib/parseargs.js delete mode 100755 device_home/node_modules/jake/lib/program.js delete mode 100755 device_home/node_modules/jake/lib/publish_task.js delete mode 100755 device_home/node_modules/jake/lib/rule.js delete mode 100755 device_home/node_modules/jake/lib/task/directory_task.js delete mode 100755 device_home/node_modules/jake/lib/task/file_task.js delete mode 100755 device_home/node_modules/jake/lib/task/index.js delete mode 100755 device_home/node_modules/jake/lib/task/task.js delete mode 100755 device_home/node_modules/jake/lib/test_task.js delete mode 100755 device_home/node_modules/jake/lib/utils/file.js delete mode 100755 device_home/node_modules/jake/lib/utils/index.js delete mode 100755 device_home/node_modules/jake/lib/utils/logger.js delete mode 100755 device_home/node_modules/jake/package.json delete mode 100755 device_home/node_modules/jake/usage.txt delete mode 100644 device_home/node_modules/locate-path/index.js delete mode 100644 device_home/node_modules/locate-path/license delete mode 100644 device_home/node_modules/locate-path/package.json delete mode 100644 device_home/node_modules/media-typer/LICENSE delete mode 100644 device_home/node_modules/media-typer/index.js delete mode 100644 device_home/node_modules/media-typer/package.json delete mode 100644 device_home/node_modules/merge-descriptors/LICENSE delete mode 100644 device_home/node_modules/merge-descriptors/index.js delete mode 100644 device_home/node_modules/merge-descriptors/package.json delete mode 100644 device_home/node_modules/methods/LICENSE delete mode 100644 device_home/node_modules/methods/index.js delete mode 100644 device_home/node_modules/methods/package.json delete mode 100644 device_home/node_modules/mime-db/LICENSE delete mode 100644 device_home/node_modules/mime-db/db.json delete mode 100644 device_home/node_modules/mime-db/index.js delete mode 100644 device_home/node_modules/mime-db/package.json delete mode 100644 device_home/node_modules/mime-types/LICENSE delete mode 100644 device_home/node_modules/mime-types/index.js delete mode 100644 device_home/node_modules/mime-types/package.json delete mode 100644 device_home/node_modules/mime/.npmignore delete mode 100644 device_home/node_modules/mime/LICENSE delete mode 100755 device_home/node_modules/mime/cli.js delete mode 100644 device_home/node_modules/mime/mime.js delete mode 100644 device_home/node_modules/mime/package.json delete mode 100755 device_home/node_modules/mime/src/build.js delete mode 100644 device_home/node_modules/mime/src/test.js delete mode 100644 device_home/node_modules/mime/types.json delete mode 100755 device_home/node_modules/minimatch/LICENSE delete mode 100755 device_home/node_modules/minimatch/minimatch.js delete mode 100755 device_home/node_modules/minimatch/package.json delete mode 100644 device_home/node_modules/ms/index.js delete mode 100644 device_home/node_modules/ms/package.json delete mode 100644 device_home/node_modules/negotiator/LICENSE delete mode 100644 device_home/node_modules/negotiator/index.js delete mode 100644 device_home/node_modules/negotiator/lib/charset.js delete mode 100644 device_home/node_modules/negotiator/lib/encoding.js delete mode 100644 device_home/node_modules/negotiator/lib/language.js delete mode 100644 device_home/node_modules/negotiator/lib/mediaType.js delete mode 100644 device_home/node_modules/negotiator/package.json delete mode 100644 device_home/node_modules/on-finished/LICENSE delete mode 100644 device_home/node_modules/on-finished/index.js delete mode 100644 device_home/node_modules/on-finished/package.json delete mode 100755 device_home/node_modules/on-headers/LICENSE delete mode 100755 device_home/node_modules/on-headers/index.js delete mode 100755 device_home/node_modules/on-headers/package.json delete mode 100644 device_home/node_modules/p-limit/index.d.ts delete mode 100644 device_home/node_modules/p-limit/index.js delete mode 100644 device_home/node_modules/p-limit/license delete mode 100644 device_home/node_modules/p-limit/package.json delete mode 100644 device_home/node_modules/p-locate/index.js delete mode 100644 device_home/node_modules/p-locate/license delete mode 100644 device_home/node_modules/p-locate/package.json delete mode 100644 device_home/node_modules/p-try/index.d.ts delete mode 100644 device_home/node_modules/p-try/index.js delete mode 100644 device_home/node_modules/p-try/license delete mode 100644 device_home/node_modules/p-try/package.json delete mode 100644 device_home/node_modules/parseqs/LICENSE delete mode 100644 device_home/node_modules/parseqs/Makefile delete mode 100644 device_home/node_modules/parseqs/index.js delete mode 100644 device_home/node_modules/parseqs/package.json delete mode 100644 device_home/node_modules/parseqs/test.js delete mode 100644 device_home/node_modules/parseuri/LICENSE delete mode 100644 device_home/node_modules/parseuri/Makefile delete mode 100644 device_home/node_modules/parseuri/index.js delete mode 100644 device_home/node_modules/parseuri/package.json delete mode 100644 device_home/node_modules/parseuri/test.js delete mode 100644 device_home/node_modules/parseurl/LICENSE delete mode 100644 device_home/node_modules/parseurl/index.js delete mode 100644 device_home/node_modules/parseurl/package.json delete mode 100644 device_home/node_modules/path-exists/index.js delete mode 100644 device_home/node_modules/path-exists/license delete mode 100644 device_home/node_modules/path-exists/package.json delete mode 100644 device_home/node_modules/path-to-regexp/LICENSE delete mode 100644 device_home/node_modules/path-to-regexp/index.js delete mode 100644 device_home/node_modules/path-to-regexp/package.json delete mode 100644 device_home/node_modules/pngjs/.eslintrc.json delete mode 100644 device_home/node_modules/pngjs/LICENSE delete mode 100644 device_home/node_modules/pngjs/browser.js delete mode 100644 device_home/node_modules/pngjs/lib/bitmapper.js delete mode 100644 device_home/node_modules/pngjs/lib/bitpacker.js delete mode 100644 device_home/node_modules/pngjs/lib/chunkstream.js delete mode 100644 device_home/node_modules/pngjs/lib/constants.js delete mode 100644 device_home/node_modules/pngjs/lib/crc.js delete mode 100644 device_home/node_modules/pngjs/lib/filter-pack.js delete mode 100644 device_home/node_modules/pngjs/lib/filter-parse-async.js delete mode 100644 device_home/node_modules/pngjs/lib/filter-parse-sync.js delete mode 100644 device_home/node_modules/pngjs/lib/filter-parse.js delete mode 100644 device_home/node_modules/pngjs/lib/format-normaliser.js delete mode 100644 device_home/node_modules/pngjs/lib/interlace.js delete mode 100644 device_home/node_modules/pngjs/lib/packer-async.js delete mode 100644 device_home/node_modules/pngjs/lib/packer-sync.js delete mode 100644 device_home/node_modules/pngjs/lib/packer.js delete mode 100644 device_home/node_modules/pngjs/lib/paeth-predictor.js delete mode 100644 device_home/node_modules/pngjs/lib/parser-async.js delete mode 100644 device_home/node_modules/pngjs/lib/parser-sync.js delete mode 100644 device_home/node_modules/pngjs/lib/parser.js delete mode 100644 device_home/node_modules/pngjs/lib/png-sync.js delete mode 100644 device_home/node_modules/pngjs/lib/png.js delete mode 100644 device_home/node_modules/pngjs/lib/sync-inflate.js delete mode 100644 device_home/node_modules/pngjs/lib/sync-reader.js delete mode 100644 device_home/node_modules/pngjs/package.json delete mode 100644 device_home/node_modules/pngjs/yarn.lock delete mode 100644 device_home/node_modules/proxy-addr/LICENSE delete mode 100644 device_home/node_modules/proxy-addr/index.js delete mode 100644 device_home/node_modules/proxy-addr/package.json delete mode 100644 device_home/node_modules/qrcode/build/qrcode.js delete mode 100644 device_home/node_modules/qrcode/build/qrcode.min.js delete mode 100644 device_home/node_modules/qrcode/build/qrcode.tosjis.js delete mode 100644 device_home/node_modules/qrcode/build/qrcode.tosjis.min.js delete mode 100644 device_home/node_modules/qrcode/helper/to-sjis.js delete mode 100644 device_home/node_modules/qrcode/lib/browser.js delete mode 100644 device_home/node_modules/qrcode/lib/can-promise.js delete mode 100644 device_home/node_modules/qrcode/lib/core/alignment-pattern.js delete mode 100644 device_home/node_modules/qrcode/lib/core/alphanumeric-data.js delete mode 100644 device_home/node_modules/qrcode/lib/core/bit-buffer.js delete mode 100644 device_home/node_modules/qrcode/lib/core/bit-matrix.js delete mode 100644 device_home/node_modules/qrcode/lib/core/byte-data.js delete mode 100755 device_home/node_modules/qrcode/lib/core/error-correction-code.js delete mode 100644 device_home/node_modules/qrcode/lib/core/error-correction-level.js delete mode 100644 device_home/node_modules/qrcode/lib/core/finder-pattern.js delete mode 100644 device_home/node_modules/qrcode/lib/core/format-info.js delete mode 100644 device_home/node_modules/qrcode/lib/core/galois-field.js delete mode 100644 device_home/node_modules/qrcode/lib/core/kanji-data.js delete mode 100644 device_home/node_modules/qrcode/lib/core/mask-pattern.js delete mode 100644 device_home/node_modules/qrcode/lib/core/mode.js delete mode 100644 device_home/node_modules/qrcode/lib/core/numeric-data.js delete mode 100644 device_home/node_modules/qrcode/lib/core/polynomial.js delete mode 100644 device_home/node_modules/qrcode/lib/core/qrcode.js delete mode 100644 device_home/node_modules/qrcode/lib/core/reed-solomon-encoder.js delete mode 100644 device_home/node_modules/qrcode/lib/core/regex.js delete mode 100644 device_home/node_modules/qrcode/lib/core/segments.js delete mode 100644 device_home/node_modules/qrcode/lib/core/utils.js delete mode 100644 device_home/node_modules/qrcode/lib/core/version-check.js delete mode 100755 device_home/node_modules/qrcode/lib/core/version.js delete mode 100644 device_home/node_modules/qrcode/lib/index.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/canvas.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/png.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/svg-tag.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/svg.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/terminal.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/utf8.js delete mode 100644 device_home/node_modules/qrcode/lib/renderer/utils.js delete mode 100644 device_home/node_modules/qrcode/lib/server.js delete mode 100644 device_home/node_modules/qrcode/lib/utils/buffer.js delete mode 100644 device_home/node_modules/qrcode/lib/utils/typedarray-buffer.js delete mode 100644 device_home/node_modules/qrcode/license delete mode 100644 device_home/node_modules/qrcode/package.json delete mode 100644 device_home/node_modules/qs/.editorconfig delete mode 100644 device_home/node_modules/qs/.eslintignore delete mode 100644 device_home/node_modules/qs/.eslintrc delete mode 100644 device_home/node_modules/qs/LICENSE delete mode 100644 device_home/node_modules/qs/dist/qs.js delete mode 100644 device_home/node_modules/qs/lib/formats.js delete mode 100644 device_home/node_modules/qs/lib/index.js delete mode 100644 device_home/node_modules/qs/lib/parse.js delete mode 100644 device_home/node_modules/qs/lib/stringify.js delete mode 100644 device_home/node_modules/qs/lib/utils.js delete mode 100644 device_home/node_modules/qs/package.json delete mode 100755 device_home/node_modules/random-bytes/LICENSE delete mode 100755 device_home/node_modules/random-bytes/index.js delete mode 100755 device_home/node_modules/random-bytes/package.json delete mode 100644 device_home/node_modules/range-parser/LICENSE delete mode 100644 device_home/node_modules/range-parser/index.js delete mode 100644 device_home/node_modules/range-parser/package.json delete mode 100644 device_home/node_modules/raw-body/LICENSE delete mode 100644 device_home/node_modules/raw-body/index.d.ts delete mode 100644 device_home/node_modules/raw-body/index.js delete mode 100644 device_home/node_modules/raw-body/package.json delete mode 100644 device_home/node_modules/require-directory/.jshintrc delete mode 100644 device_home/node_modules/require-directory/.npmignore delete mode 100644 device_home/node_modules/require-directory/.travis.yml delete mode 100644 device_home/node_modules/require-directory/LICENSE delete mode 100644 device_home/node_modules/require-directory/README.markdown delete mode 100644 device_home/node_modules/require-directory/index.js delete mode 100644 device_home/node_modules/require-directory/package.json delete mode 100644 device_home/node_modules/require-main-filename/LICENSE.txt delete mode 100644 device_home/node_modules/require-main-filename/index.js delete mode 100644 device_home/node_modules/require-main-filename/package.json delete mode 100644 device_home/node_modules/safe-buffer/LICENSE delete mode 100644 device_home/node_modules/safe-buffer/index.d.ts delete mode 100644 device_home/node_modules/safe-buffer/index.js delete mode 100644 device_home/node_modules/safe-buffer/package.json delete mode 100644 device_home/node_modules/safer-buffer/LICENSE delete mode 100644 device_home/node_modules/safer-buffer/dangerous.js delete mode 100644 device_home/node_modules/safer-buffer/package.json delete mode 100644 device_home/node_modules/safer-buffer/safer.js delete mode 100644 device_home/node_modules/safer-buffer/tests.js delete mode 100644 device_home/node_modules/send/LICENSE delete mode 100644 device_home/node_modules/send/index.js delete mode 100644 device_home/node_modules/send/package.json delete mode 100644 device_home/node_modules/serve-static/LICENSE delete mode 100644 device_home/node_modules/serve-static/index.js delete mode 100644 device_home/node_modules/serve-static/package.json delete mode 100644 device_home/node_modules/set-blocking/LICENSE.txt delete mode 100644 device_home/node_modules/set-blocking/index.js delete mode 100644 device_home/node_modules/set-blocking/package.json delete mode 100644 device_home/node_modules/setprototypeof/LICENSE delete mode 100644 device_home/node_modules/setprototypeof/index.d.ts delete mode 100644 device_home/node_modules/setprototypeof/index.js delete mode 100644 device_home/node_modules/setprototypeof/package.json delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/$CACHE_FILE$ delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/inspectionProfiles/profiles_settings.xml delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/misc.xml delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/modules.xml delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/socket.io-adapter.iml delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/vcs.xml delete mode 100644 device_home/node_modules/socket.io-adapter/.idea/workspace.xml delete mode 100644 device_home/node_modules/socket.io-adapter/LICENSE delete mode 100644 device_home/node_modules/socket.io-adapter/index.js delete mode 100644 device_home/node_modules/socket.io-adapter/package.json delete mode 100644 device_home/node_modules/socket.io-parser/LICENSE delete mode 100644 device_home/node_modules/socket.io-parser/binary.js delete mode 100644 device_home/node_modules/socket.io-parser/index.js delete mode 100644 device_home/node_modules/socket.io-parser/is-buffer.js delete mode 100644 device_home/node_modules/socket.io-parser/package.json delete mode 100644 device_home/node_modules/socket.io/LICENSE delete mode 100644 device_home/node_modules/socket.io/lib/client.js delete mode 100644 device_home/node_modules/socket.io/lib/index.js delete mode 100644 device_home/node_modules/socket.io/lib/namespace.js delete mode 100644 device_home/node_modules/socket.io/lib/parent-namespace.js delete mode 100644 device_home/node_modules/socket.io/lib/socket.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/LICENSE delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.dev.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.slim.dev.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.slim.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/lib/index.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/lib/manager.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/lib/on.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/lib/socket.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/lib/url.js delete mode 100644 device_home/node_modules/socket.io/node_modules/socket.io-client/package.json delete mode 100644 device_home/node_modules/socket.io/package.json delete mode 100644 device_home/node_modules/statuses/LICENSE delete mode 100644 device_home/node_modules/statuses/codes.json delete mode 100644 device_home/node_modules/statuses/index.js delete mode 100644 device_home/node_modules/statuses/package.json delete mode 100644 device_home/node_modules/string-width/index.js delete mode 100644 device_home/node_modules/string-width/license delete mode 100644 device_home/node_modules/string-width/package.json delete mode 100644 device_home/node_modules/strip-ansi/index.d.ts delete mode 100644 device_home/node_modules/strip-ansi/index.js delete mode 100644 device_home/node_modules/strip-ansi/license delete mode 100644 device_home/node_modules/strip-ansi/package.json delete mode 100755 device_home/node_modules/supports-color/browser.js delete mode 100755 device_home/node_modules/supports-color/index.js delete mode 100755 device_home/node_modules/supports-color/license delete mode 100755 device_home/node_modules/supports-color/package.json delete mode 100644 device_home/node_modules/to-array/.npmignore delete mode 100644 device_home/node_modules/to-array/LICENCE delete mode 100644 device_home/node_modules/to-array/index.js delete mode 100644 device_home/node_modules/to-array/package.json delete mode 100644 device_home/node_modules/toidentifier/LICENSE delete mode 100644 device_home/node_modules/toidentifier/index.js delete mode 100644 device_home/node_modules/toidentifier/package.json delete mode 100644 device_home/node_modules/type-is/LICENSE delete mode 100644 device_home/node_modules/type-is/index.js delete mode 100644 device_home/node_modules/type-is/package.json delete mode 100755 device_home/node_modules/uid-safe/LICENSE delete mode 100755 device_home/node_modules/uid-safe/index.js delete mode 100755 device_home/node_modules/uid-safe/package.json delete mode 100644 device_home/node_modules/unpipe/LICENSE delete mode 100644 device_home/node_modules/unpipe/index.js delete mode 100644 device_home/node_modules/unpipe/package.json delete mode 100644 device_home/node_modules/utils-merge/.npmignore delete mode 100644 device_home/node_modules/utils-merge/LICENSE delete mode 100644 device_home/node_modules/utils-merge/index.js delete mode 100644 device_home/node_modules/utils-merge/package.json delete mode 100644 device_home/node_modules/vary/LICENSE delete mode 100644 device_home/node_modules/vary/index.js delete mode 100644 device_home/node_modules/vary/package.json delete mode 100644 device_home/node_modules/which-module/LICENSE delete mode 100644 device_home/node_modules/which-module/index.js delete mode 100644 device_home/node_modules/which-module/package.json delete mode 100755 device_home/node_modules/wrap-ansi/index.js delete mode 100644 device_home/node_modules/wrap-ansi/license delete mode 100644 device_home/node_modules/wrap-ansi/package.json delete mode 100755 device_home/node_modules/ws/LICENSE delete mode 100755 device_home/node_modules/ws/index.js delete mode 100755 device_home/node_modules/ws/lib/buffer-util.js delete mode 100755 device_home/node_modules/ws/lib/constants.js delete mode 100755 device_home/node_modules/ws/lib/event-target.js delete mode 100755 device_home/node_modules/ws/lib/extension.js delete mode 100755 device_home/node_modules/ws/lib/permessage-deflate.js delete mode 100755 device_home/node_modules/ws/lib/receiver.js delete mode 100755 device_home/node_modules/ws/lib/sender.js delete mode 100755 device_home/node_modules/ws/lib/validation.js delete mode 100755 device_home/node_modules/ws/lib/websocket-server.js delete mode 100755 device_home/node_modules/ws/lib/websocket.js delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/.eslintignore delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/.nycrc delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/.travis.yml delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/LICENSE delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/index.js delete mode 100755 device_home/node_modules/ws/node_modules/async-limiter/package.json delete mode 100755 device_home/node_modules/ws/package.json delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/LICENSE delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/autotest.watchr delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/lib/XMLHttpRequest.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/package.json delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-constants.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-events.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-exceptions.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-headers.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-redirect-302.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-redirect-303.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-redirect-307.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-request-methods.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/test-request-protocols.js delete mode 100644 device_home/node_modules/xmlhttprequest-ssl/tests/testdata.txt delete mode 100755 device_home/node_modules/xmlhttprequest/.jshintrc delete mode 100755 device_home/node_modules/xmlhttprequest/.npmignore delete mode 100755 device_home/node_modules/xmlhttprequest/LICENSE delete mode 100755 device_home/node_modules/xmlhttprequest/lib/XMLHttpRequest.js delete mode 100755 device_home/node_modules/xmlhttprequest/package.json delete mode 100644 device_home/node_modules/y18n/LICENSE delete mode 100644 device_home/node_modules/y18n/index.js delete mode 100644 device_home/node_modules/y18n/package.json delete mode 100644 device_home/node_modules/yargs-parser/LICENSE.txt delete mode 100644 device_home/node_modules/yargs-parser/index.js delete mode 100644 device_home/node_modules/yargs-parser/lib/tokenize-arg-string.js delete mode 100644 device_home/node_modules/yargs-parser/package.json delete mode 100644 device_home/node_modules/yargs/LICENSE delete mode 100644 device_home/node_modules/yargs/index.js delete mode 100644 device_home/node_modules/yargs/lib/apply-extends.js delete mode 100644 device_home/node_modules/yargs/lib/argsert.js delete mode 100644 device_home/node_modules/yargs/lib/command.js delete mode 100644 device_home/node_modules/yargs/lib/completion-templates.js delete mode 100644 device_home/node_modules/yargs/lib/completion.js delete mode 100644 device_home/node_modules/yargs/lib/decamelize.js delete mode 100644 device_home/node_modules/yargs/lib/is-promise.js delete mode 100644 device_home/node_modules/yargs/lib/levenshtein.js delete mode 100644 device_home/node_modules/yargs/lib/middleware.js delete mode 100644 device_home/node_modules/yargs/lib/obj-filter.js delete mode 100644 device_home/node_modules/yargs/lib/usage.js delete mode 100644 device_home/node_modules/yargs/lib/validation.js delete mode 100644 device_home/node_modules/yargs/lib/yerror.js delete mode 100644 device_home/node_modules/yargs/locales/be.json delete mode 100644 device_home/node_modules/yargs/locales/de.json delete mode 100644 device_home/node_modules/yargs/locales/en.json delete mode 100644 device_home/node_modules/yargs/locales/es.json delete mode 100644 device_home/node_modules/yargs/locales/fr.json delete mode 100644 device_home/node_modules/yargs/locales/hi.json delete mode 100644 device_home/node_modules/yargs/locales/hu.json delete mode 100644 device_home/node_modules/yargs/locales/id.json delete mode 100644 device_home/node_modules/yargs/locales/it.json delete mode 100644 device_home/node_modules/yargs/locales/ja.json delete mode 100644 device_home/node_modules/yargs/locales/ko.json delete mode 100644 device_home/node_modules/yargs/locales/nb.json delete mode 100644 device_home/node_modules/yargs/locales/nl.json delete mode 100644 device_home/node_modules/yargs/locales/nn.json delete mode 100644 device_home/node_modules/yargs/locales/pirate.json delete mode 100644 device_home/node_modules/yargs/locales/pl.json delete mode 100644 device_home/node_modules/yargs/locales/pt.json delete mode 100644 device_home/node_modules/yargs/locales/pt_BR.json delete mode 100644 device_home/node_modules/yargs/locales/ru.json delete mode 100644 device_home/node_modules/yargs/locales/th.json delete mode 100644 device_home/node_modules/yargs/locales/tr.json delete mode 100644 device_home/node_modules/yargs/locales/zh_CN.json delete mode 100644 device_home/node_modules/yargs/locales/zh_TW.json delete mode 100644 device_home/node_modules/yargs/package.json delete mode 100644 device_home/node_modules/yargs/yargs.js delete mode 100644 device_home/node_modules/yeast/LICENSE delete mode 100644 device_home/node_modules/yeast/index.js delete mode 100644 device_home/node_modules/yeast/package.json delete mode 100644 device_home/package-lock.json delete mode 100755 device_home/pincode/css/pincode.css delete mode 100755 device_home/pincode/js/jsencrypt.js delete mode 100644 device_home/pincode/js/pincode.js delete mode 100755 device_home/pincode/pincode.html delete mode 100644 device_home/service/app_proxy.js delete mode 100755 device_home/service/app_router.js delete mode 100755 device_home/service/initializer/service.js delete mode 100755 device_home/service/jsencrypt.js delete mode 100755 device_home/service/relay-server.js delete mode 100755 device_home/service/security.js delete mode 100644 device_home/service/service.js delete mode 100644 device_home/service/tv/service_tv.js delete mode 100644 device_home/shared/res/offload.js delete mode 100644 device_home/signaling_server/gen/app.js delete mode 100644 device_home/signaling_server/gen/config.js delete mode 100644 device_home/signaling_server/gen/config.json delete mode 100644 device_home/signaling_server/gen/edge.js delete mode 100644 device_home/signaling_server/gen/public/offload-worker/index.html delete mode 100644 device_home/signaling_server/gen/public/offload-worker/js/log.js delete mode 100644 device_home/signaling_server/gen/public/offload-worker/js/main.js delete mode 100644 device_home/signaling_server/gen/public/offload-worker/offload-worker.js delete mode 100644 device_home/signaling_server/gen/service.js delete mode 100644 device_home/signaling_server/gen/socket-tizen.js delete mode 100644 device_home/signaling_server/gen/util.js delete mode 100644 packaging/config.xml.in delete mode 100644 packaging/config_tv.xml.in delete mode 100755 tizen/build/build_app.sh diff --git a/device_home/about.html b/device_home/about.html deleted file mode 100644 index 4360646..0000000 --- a/device_home/about.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - -
-

Global Device Web Server v.0.1

-
- - - diff --git a/device_home/client/client.html b/device_home/client/client.html deleted file mode 100644 index e6c5461..0000000 --- a/device_home/client/client.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - My Device App - - - - - - - - - - - - - -
-
-
- My Device App -
-
- -
-
- - - -
-
-
-
- -
- D2D on My Device -
-
-
-
-
-
-
-
-
-
-
-
-
My Device App
-
- -
-
-
- Customize widgets -
-
- -
- -
-
-
- - - diff --git a/device_home/client/css/style.css b/device_home/client/css/style.css deleted file mode 100644 index 56afa8b..0000000 --- a/device_home/client/css/style.css +++ /dev/null @@ -1,89 +0,0 @@ -.app-image-grid { - margin: auto; - display: grid; - grid-template-columns: repeat(3, 100px [col-start]); - grid-template-rows: auto; - gap: 10px; - justify-items: center; - justify-content: center; - padding: 20px; -} - -.app-image-big-grid { - margin: auto; - display: grid; - grid-template-columns: repeat(1, 100px [col-start]); - grid-template-rows: auto; - gap: 10px; - justify-items: center; - justify-content: center; - padding: 20px; -} - -.app-icon-img { - width: 100px; - height: 100px; -} - -.app-icon-big-img { - width: 150px; - height: 150px; -} - -.app-btn-icon-burger { - margin-left: 20px; - margin-right: 12px; -} - -.app-btn-icon-burger::after { - -webkit-mask-image: url(../images/Hamburger_icon.svg); - mask-image: url(../images/Hamburger_icon.svg); -} - -.app-dummy-payment input { - display: block; - font-size: 18px; - padding: 8px; - margin: 4px 0; - border-radius: 8px; - border: 1px solid #ddd; - box-sizing: border-box; - width: 100%; -} - -.app-dummy-payment input.ui-inline { - width: auto; - display: inline; -} - -.error-body { - background-color: #F2F2F2; - color: #505050; -} - -.error-msg { - color: #505050; - display: block; - text-align: center; -} - -body { - /*disable-pull-to-refresh-effect*/ - overscroll-behavior: contain; -} - -.app-display-none { - display: none; -} - -.app-preview-img { - width: 100px; -} - -#preview-section { - display: none; -} - -#preview-list { - display: none; -} \ No newline at end of file diff --git a/device_home/client/error.html b/device_home/client/error.html deleted file mode 100755 index b62d84e..0000000 --- a/device_home/client/error.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - My Device App - - - - - -
-

- Error -

-
-

Service is not available

-

due to network issue of

-

-
-
- - - - diff --git a/device_home/client/images/Hamburger_icon.svg b/device_home/client/images/Hamburger_icon.svg deleted file mode 100644 index 233bf21..0000000 --- a/device_home/client/images/Hamburger_icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/device_home/client/images/tw_list_icon_wallpaper.svg b/device_home/client/images/tw_list_icon_wallpaper.svg deleted file mode 100644 index bb27344..0000000 --- a/device_home/client/images/tw_list_icon_wallpaper.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - -settings/main_icon/05_wallpaper copy -Created with Sketch. - - - - - - - - diff --git a/device_home/client/invited.html b/device_home/client/invited.html deleted file mode 100755 index 5253d5c..0000000 --- a/device_home/client/invited.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - My Device App - - - - - - - - -
-
-
-
-
-
-

Would you like to join the room?

-
-
-
-
-
-
- - - - diff --git a/device_home/client/js/actions.js b/device_home/client/js/actions.js deleted file mode 100644 index 1ff3f9a..0000000 --- a/device_home/client/js/actions.js +++ /dev/null @@ -1,50 +0,0 @@ -const serverPort = 9000; -const serverURL = window.location.protocol + '//' + window.location.hostname; - -class Actions { - /** - * Launch App on TV - * This method creates function for onclick listener - * @param {string} pkgId - * @param {string} appId - * @param {Function} callback - * @returns {Function} - */ - - launchAppOnTV(pkgId, appId, action, callback) { - var data = { - pkgId, - appId, - action - }; - return this.sendDataToApp('app', data, callback); - }; - - /** - * Send data to host - * @param {string} pkgId - * @param {string} appId - * @param {Object} data - * @param {Function} callback - */ - sendDataToApp(api, data, callback) { - const xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function() { - if (xhr.readyState === xhr.DONE) { - if (xhr.status === 200 || xhr.status === 201) { - var response = JSON.parse(xhr.responseText); - if (typeof callback === "function") { - callback(response); - } - } else { - console.error(xhr.responseText); - } - } - } - xhr.open('POST', `${serverURL}:${serverPort}/${api}`); - xhr.setRequestHeader('Content-Type', 'application/json'); - xhr.send(JSON.stringify(data)); - }; -} - -export default Actions; diff --git a/device_home/client/js/app.js b/device_home/client/js/app.js deleted file mode 100755 index d2340a9..0000000 --- a/device_home/client/js/app.js +++ /dev/null @@ -1,559 +0,0 @@ -import Storage from "./clipping-storage.js"; -import Actions from './actions.js'; -import { openAppWindow } from './myApps.js'; - -const moduleapp = {}; - -(function () { - "use strict"; - var tau = window.tau, - HomeApp = function () { - this.version = "0.1"; - this.appsList = []; - }, - prototype = HomeApp.prototype, - storage = new Storage(), - actions = new Actions(), - WEBCLIP_TEMPLATE_COLLECTION_PATH = "./client/webclip-template/", - appsList = [], - homeApp; - - const defaultList = [], - getAppsList = new Promise((resolve, reject) => { - const requestURL = "client/updateWebclip"; - - fetch(requestURL) - .then((response) => response.json()) - .then((response) => { - //addWSListener(data.wsPort); - resolve(response.data.apps); - }) - .catch((e) => { - reject(e); - }) - }); - - function updateAppsList(message) { - if (message.type === "full") { - return updateAppsListFull(message.data); - } else if (message.type === "diff") { - updateAppsListDiff(message.data); - return true; - } else { - console.warn("app.js: unsupported type of applist."); - } - return false; - } - - function updateAppsListDiff(apps) { - apps.forEach(function (remoteApp) { - if (remoteApp.action === "add") { // add (or update if app already added) - let localApp = appsList.filter(function (localApp) { - return remoteApp.appId === localApp.appId; - })[0]; - delete remoteApp.action; - - if (!localApp) { // add new - appsList.push(remoteApp); - } else { // update local app - /** - * @todo - * Which properties we need update - */ - localApp.isActive = remoteApp.isActive; - } - } else if (remoteApp.action === "remove") { // remove local app - appsList = appsList.filter(function (localApp) { - return remoteApp.appId !== localApp.appId; - }); - } else { - console.warn("Unsupported action:", remoteApp.action); - } - - }); - - updateOrderOfApplist(); - } - - function updateOrderOfApplist() { - var change = false, - currentOrder = ""; - - currentOrder = appsList.reduce(function (prev, app) { - return prev + app.appId; - }, ""); - - // check apps order - appsList = appsList.sort(function (app1, app2) { - return (app1.isActive) ? - (app2.isActive) ? 0 : -1 : 1 - }); - - // order has been changed - if (currentOrder !== appsList.reduce(function (prev, app) { - return prev + app.appId; - }, "")) { - change = true; - } - - return change; - } - - function updateAppsListFull(apps) { - var change = false, - appsCount = appsList.length; - - console.log("updateAppsListFull"); - // remove app from local apps list if not exists on remote host - appsList = appsList.filter(function (localApp) { - return apps.some(function (remoteApp) { - return remoteApp.appId === localApp.appId; - }); - }); - - if (appsCount !== appsList.length) { - change = true; - } - - // filter app which should be add to local apps list - const added = apps.filter(function (remoteApp) { - return !appsList.some(function (localApp) { - return localApp.appId === remoteApp.appId; - }); - }); - - if (added.length) { - change = true; - } - - // add apps to local apps list - added.forEach(function (remoteApp) { - appsList.push(remoteApp); - }); - - // update active items - appsList.forEach(function (localApp) { - apps.forEach(function (remoteApp) { - if (remoteApp.appId === localApp.appId) { - if (localApp.isActive !== remoteApp.isActive) { - localApp.isActive = remoteApp.isActive; - change = true; - } - } - }) - }); - - if (updateOrderOfApplist()) { - change = true; - }; - - return change; - } - function onWSMessage(message) { - if (updateAppsList(message)) { - tau.log("change"); - storage.refreshStorage(Storage.elements.APPSLIST, appsList); - - updateWebClipsUI(); - updateWebClipListPopup(); - } else { - tau.log("nothing change"); - } - } - async function getManifests() { - const promisesList = [], - indexesList = []; - - let responses = []; - - console.log("getManifests"); - appsList.forEach(function (app, appIndex) { - app.webClipsList.forEach(function (webClip, webClipIndex) { - promisesList.push( - fetch(webClip.url + "\\manifest.json") - ); - indexesList.push({ appIndex: appIndex, webClipIndex: webClipIndex }); - }); - }); - - responses = await Promise.allSettled(promisesList); - - for (let responseIndex = 0; responseIndex < responses.length; responseIndex++) { - const response = responses[responseIndex]; - - if (response.status === "rejected" || !response.value.ok) { - appsList[indexesList[responseIndex].appIndex].webClipsList.splice(indexesList[responseIndex].webClipIndex, 1); - } else { - const contentPromise = await response.value.json(); - - appsList[indexesList[responseIndex].appIndex].webClipsList[indexesList[responseIndex].webClipIndex].manifest = contentPromise; - } - } - } - - function changeTheme(event) { - tau.theme.setTheme(event.target.value); - } - - function onPopupSubmit() { - appsList.forEach(function (app) { - app.webClipsList.forEach(function (webclip) { - const webClipName = getWebClipName(webclip.url), - checkbox = document.getElementById("popup-checkbox-" + webClipName); - - webclip.isSelected = checkbox.checked; - }) - }); - storage.refreshStorage(Storage.elements.APPSLIST, appsList); - - updateWebClipsUI(); - tau.history.back(); - } - - /** - * Click button event handler - * Opens drawer - */ - function onButtonClick() { - var drawerWidget = tau.widget.Drawer(document.querySelector(".ui-drawer")); - - drawerWidget.open(); - } - function onDone(result) { - console.log("onDone", result); - } - function createWebClipCard(webClip, appId, pkgId) { - var card = document.createElement("div"), - webClipUrl = webClip.url, - webClipTemplateUrl = '', - dataSource = webClip.manifest.dataSource, - cardWidget, - loadData, - loadTemplate; - - // add slash for name of webClip - if (!webClipUrl.match(/\/$/)) { - webClipUrl += "/"; - } - webClipUrl += "webclip.html"; - - console.log("dataSrc", dataSource, webClip); - - card.classList.add("ui-card"); - card.addEventListener("cardcontentchange", function (ev) { - var card = ev.target, - webclipElement = card.parentElement; - - console.log("cardcontentchange", webclipElement); - }); - - card.addEventListener("webclip-message", function (ev) { - if (ev.detail.remoteui) - actions.sendDataToApp(pkgId, appId, ev.detail, openAppWindow); - else - actions.sendDataToApp(pkgId, appId, ev.detail, onDone); - }); - - if (dataSource) { - // Set webclip template type - card.setAttribute("data-template-type", webClip.manifest.templateType); - - loadData = window.fetch(webClip.url + "/" + dataSource); - loadData.then(response => response.json()) - .then(function (data) { - card.setAttribute("data-template-data", JSON.stringify(data)); - let cardWidget = tau.engine.getBinding(card); - if (cardWidget) { - // set template data - cardWidget.option("templateData", JSON.stringify(data)); - } - }); - - /** - * @todo - * 1. Get template path by templateType - * 2. Register webclip templates in DeviceWebServer - */ - webClipTemplateUrl = WEBCLIP_TEMPLATE_COLLECTION_PATH + - webClip.manifest.templateType + "/webclip.html" - - card.setAttribute("data-template-base-path", webClip.url + "/"); - card.setAttribute("data-src", webClipTemplateUrl); - } else { - card.setAttribute("data-src", webClipUrl); - } - - return card; - } - - homeApp = new HomeApp(); - - prototype.createControlCard = function (data) { - var controlCard = document.createElement("div"), - title = document.createElement("span"), - icon = document.createElement("div"), - img = document.createElement("img"), - a = document.createElement("a"); - - controlCard.classList.add("ui-content-area"); - icon.classList.add("ui-icon"); - title.classList.add("ui-title"); - title.textContent = data.title; - img.src = data.icon; - a.href = data.href || "#next-control"; - a.setAttribute("data-style", "flat"); - a.setAttribute("data-inline", true); - a.setAttribute("data-icon", "next"); - a.classList.add("ui-btn"); - - icon.appendChild(img); - - controlCard.appendChild(icon); - controlCard.appendChild(title); - controlCard.appendChild(a); - - return controlCard; - } - - prototype.addControlCard = function (data) { - var controlCard = this.createControlCard(data), - appBarElement = document.querySelector(".ui-page-active header"), - appBar = tau.widget.Appbar(appBarElement); - - controlCard.setAttribute("data-title", data.title); - - appBar.addInstantContainer(controlCard); - } - - prototype.removeControlCard = function (card) { - var appBarElement = document.querySelector(".ui-page-active header"), - appBar = tau.widget.Appbar(appBarElement); - - appBar.removeInstantContainer(card); - } - - function updateWebClipsUI() { - var webclipsContainer = document.getElementById("web-clips"), - // get Cards elements and convert NodeList to array - currentWebClipsCards = [].slice.call(webclipsContainer.querySelectorAll(".ui-card[data-url],.ui-card[data-src]")), - // list of webClips url in order - webClipsUrlList = appsList.reduce(function (prev, app) { - return prev.concat( - app.webClipsList.filter((webClip) => webClip.isSelected) - .map((webClip) => webClip.url)); - }, []); - - // remove card - currentWebClipsCards.forEach(function (card) { - const found = webClipsUrlList.filter(function (webClipUrl) { - return card.dataset.url && card.dataset.url.indexOf(webClipUrl) > -1 || - card.dataset.src && card.dataset.src.indexOf(webClipUrl) > -1; - }); - - // remove card from UI if not exists on list - if (found.length === 0) { - card.parentElement.removeChild(card); - } - }); - - // add card - appsList.forEach(function (app) { - app.webClipsList.forEach((webClip) => { - const found = currentWebClipsCards.filter(function (card) { - return card.dataset.url && card.dataset.url.indexOf(webClip.url) > -1 || - card.dataset.src && card.dataset.src.indexOf(webClip.url) > -1; - }); - - if (found.length === 0) { - if (webClip.isSelected) { - webclipsContainer.appendChild( - createWebClipCard(webClip, app.appId, app.pkgId) - ); - } - } - }); - }); - - // set proper order of cards - // @todo change inline styles to css class after merge HomeApp branches - webclipsContainer.style.display = "flex"; - webclipsContainer.style.flexDirection = "column"; - currentWebClipsCards = [].slice.call(webclipsContainer.querySelectorAll(".ui-card[data-url],.ui-card[data-src]")); - - webClipsUrlList.forEach(function (url, order) { - const card = currentWebClipsCards.filter(function (card) { - return card.dataset.url && card.dataset.url.indexOf(url) > -1 || - card.dataset.src && card.dataset.src.indexOf(url) > -1; - })[0]; - - if (card) { - card.style.order = order; - } - }); - - // add/remove mini control cards - appsList.forEach(function (app) { - app.webClipsList.forEach((webClip) => { - if (webClip.manifest && webClip.manifest.cardType === "control") { - if (webClip.isSelected) { - if (!document.querySelector("[data-title='" + webClip.manifest.description + "']")) { - homeApp.addControlCard({ - title: webClip.manifest.description, - href: "#open-control-card", - icon: "images/Icon.png" - } - ); - } - } else if (document.querySelector("[data-title='" + webClip.manifest.description + "']")) { - // remove mini controll card - homeApp.removeControlCard(document.querySelector("[data-title='" + webClip.manifest.description + "']")); - } - } - }); - }); - - tau.engine.createWidgets(webclipsContainer); - } - - //TODO: provide mechanism for getting web clip name from webClip meta data - // and separate from getting ID - function getWebClipName(webClip) { - // remove all text to the last \ - return webClip.replace(/.*\//, ""); - } - - function updateWebClipListPopup() { - - var popupList = document.getElementById("popup-list"); - - // remove previous li items - while (popupList.firstChild) { - popupList.firstChild.remove() - } - - appsList.forEach(function (app) { - app.webClipsList.forEach(function (webclip) { - var li = document.createElement("li"), - input = document.createElement("input"), - label = document.createElement("label"), - webClipName = getWebClipName(webclip.url); - - li.classList.add("ui-li-has-checkbox"); - li.classList.add("ui-group-index"); - - input.setAttribute("type", "checkbox"); - input.setAttribute("id", "popup-checkbox-" + webClipName); - - label.setAttribute("for", "popup-checkbox-" + webClipName); - label.classList.add("ui-li-text"); - label.innerHTML = webclip.manifest && webclip.manifest.description || webClipName; - - li.appendChild(input); - li.appendChild(label); - popupList.appendChild(li); - }); - }); - - tau.engine.createWidgets(popupList); - - appsList.forEach(function (app) { - app.webClipsList.forEach(function (webclip) { - if (webclip.isSelected) { - const webClipName = getWebClipName(webclip.url), - checkbox = document.getElementById("popup-checkbox-" + webClipName); - - if (checkbox) { - checkbox.checked = true; - } - } - }); - }); - } - - function init() { - var themeChanger = document.querySelector("#theme-selector"), - page = document.querySelector(".ui-page"), - themeChangerButton = page.querySelector("#selector-opener"), - burgerButton = page.querySelector(".app-btn-icon-burger"), - popupButton = page.querySelector("#popup-submit"); - - themeChanger.addEventListener("change", changeTheme); - - themeChangerButton.addEventListener("vclick", function () { - var dropdownmenuWidget = tau.widget.DropdownMenu(themeChanger); - - dropdownmenuWidget.open(); - }); - - burgerButton.addEventListener("click", onButtonClick); - popupButton.addEventListener("click", onPopupSubmit); - - // use apps list from storage or default apps list if sth wrong - appsList = storage.readAllFromStorage(Storage.elements.APPSLIST); - - // check webclips on remote server - getAppsList.then((apps) => { - updateAppsListFull(apps); - }).catch((e) => { - console.warn("Error getting app lits: " + e.message); - if (appsList.length === 0) { - updateAppsListFull(defaultList); - } - }).finally(() => { - // check webclips access - getManifests().then(() => { - storage.refreshStorage(Storage.elements.APPSLIST, appsList); - updateWebClipsUI(); - updateWebClipListPopup(); - }); - }); - } - - function onPageBeforeShow(event) { - if (event.target.id === "main") { - init(); - } - } - - /** - * Map array of D2D apps to webclip list - * @param {Array} dataApps - */ - function d2dAppsToWebClipsList(dataApps) { - var result = []; - var webclips = []; - - dataApps.forEach(function (app) { - webclips = []; - app.webclips.forEach(function (webclip) { - if (webclip && webclip.manifest) { - webclips.push({ - url: 'client/webclip/' + webclip.manifest.name, - isSelected: true, - manifest: webclip.manifest - }); - } - }); - result.push({ - appId: app.d2dApp.appId, - pkgId: app.d2dApp.pkgId, - isInstalled: true, - isActive: false, - webClipsList: webclips - }); - }); - return result; - } - - document.addEventListener("pagebeforeshow", onPageBeforeShow); - moduleapp.onWSMessage = onWSMessage; - moduleapp.d2dAppsToWebClipsList = d2dAppsToWebClipsList; -}()); - -export function UpdateWebClip(message) { - var data = { - type: "full", - data: moduleapp.d2dAppsToWebClipsList(message) - } - moduleapp.onWSMessage(data); -}; diff --git a/device_home/client/js/client.js b/device_home/client/js/client.js deleted file mode 100755 index c7f8fc2..0000000 --- a/device_home/client/js/client.js +++ /dev/null @@ -1,29 +0,0 @@ -(function () { - /** - * Back key event handler - */ - window.addEventListener("tizenhwkey", function (ev) { - let page = null; - let pageId = ''; - - if (ev.keyName === "back") { - page = document.getElementsByClassName("ui-page")[0]; - pageId = page ? page.id : ""; - - if (pageId === "main" || ev.target.id === "error-page") { - try { - /** - * Exit application - */ - tizen.application.getCurrentApplication().exit(); - } catch (ignore) { - } - } else { - /** - * Go to previous browser window - */ - window.history.back(); - } - } - }); -}()); diff --git a/device_home/client/js/clipping-storage.js b/device_home/client/js/clipping-storage.js deleted file mode 100644 index 02af624..0000000 --- a/device_home/client/js/clipping-storage.js +++ /dev/null @@ -1,24 +0,0 @@ -class Storage { - constructor() { - this.appsList = JSON.parse(localStorage.getItem("appsList")) || []; - } - - refreshStorage(element, data = []) { - this[element] = data; - localStorage.setItem(element, JSON.stringify(this[element])); - } - - writeToStorage(element, link) { - this[element].push(link); - localStorage.setItem(element, JSON.stringify(this[element])); - } - - readAllFromStorage(element) { - return this[element]; - } - -} - -Storage.elements = {APPSLIST: "appsList"}; - -export default Storage; \ No newline at end of file diff --git a/device_home/client/js/invited.js b/device_home/client/js/invited.js deleted file mode 100755 index 169d1ce..0000000 --- a/device_home/client/js/invited.js +++ /dev/null @@ -1,131 +0,0 @@ -"use strict"; -import Actions from './actions.js'; - -const serverPort = 9000; -const serverURL = window.location.protocol + '//' + window.location.hostname; -const actions = new Actions(); -const NEW_WINDOW_TIMEOUT = 1000; -const myappsmodule = {}; - -(function () { - var xhr; - function emptyElement(elm) { - while (elm.firstChild) { - elm.removeChild(elm.firstChild); - } - return elm; - } - /** - * Open app in new window - * @param {Object} response - * @private - */ - function openAppWindow(response) { - document.getElementById("page-invited").style.display = "none"; - var timer = setTimeout(function () { - clearTimeout(timer); - document.getElementById("page-invited").style.display = "block"; - window.open(serverURL + ':' + response.port + '/app', 'newWindow'); - }, NEW_WINDOW_TIMEOUT); - }; - - function showListView(dataArray) { - var formResult = document.getElementById("d2dApps"), - imgResult = document.getElementById("d2dAppList"), - formObj, - imgObj, - textObj, - objTable, - objRow, - i, - d2dApp, - icon; - - emptyElement(imgResult); - - objTable = document.createElement("div"); - objTable.className = "result-table"; - - if (dataArray.length > 0) { - for (i = 0; i < dataArray.length; i++) { - if (dataArray[i]['d2dApp'].appName === 'WatchTogether') { - formObj = document.createElement("div"); - imgObj = document.createElement("img"); - textObj = document.createElement("p"); - formObj.style.textAlign = "center"; - d2dApp = dataArray[i]['d2dApp']; - if (d2dApp.hasOwnProperty("appName")) { - if (d2dApp.iconPath) { - icon = d2dApp.iconPath.substring(d2dApp.iconPath.indexOf('/', 10) + 1); - imgObj.src = `/d2dIcon/${icon}`; - } else { - imgObj.src = `./images/icon.png`; - } - imgObj.className = "app-icon-big-img"; - imgObj.alt = d2dApp.appName; - textObj.style.display = "block"; - textObj.style.marginBottom = "60px"; - textObj.style.fontSize = "16px"; - textObj.innerHTML = d2dApp.appName; - } - imgObj.addEventListener("click", actions.launchAppOnTV( - d2dApp.pkgId, - d2dApp.appId, - function (response) { - openAppWindow(response); - })); - formObj.appendChild(imgObj); - formObj.appendChild(textObj); - - imgResult.appendChild(formObj); - } - } - formResult.appendChild(imgResult); - } else { - objRow = document.createElement("div"); - objRow.className = "result-table-error"; - objRow.appendChild(document.createTextNode("No Data")); - objTable.appendChild(objRow); - } - } - - function showList() { - xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function () { - if (xhr.readyState === xhr.DONE) { - if (xhr.status === 200 || xhr.status === 201) { - showListView(JSON.parse(xhr.responseText)); - } else { - console.error(xhr.responseText); - } - } - }; - xhr.open('GET', serverURL + ':' + serverPort + '/appList'); - xhr.send(); - } - - function init() { - var eventSource = new EventSource(serverURL + ':' + serverPort + '/updateAppList'); - eventSource.addEventListener('message', evt => { - showListView(JSON.parse(evt.data)); - }, false); - eventSource.addEventListener('open', evt => { - console.log("Connected to..."); - }, false); - eventSource.addEventListener('error', evt => { - if (evt.target.readyState == EventSource.CLOSED) { - console.log("Disconnected from..."); - } else if (evt.target.readyState == EventSource.CONNECTING) { - console.log('Connecting to...'); - } - }, false); - showList(); - } - window.onload = init; - myappsmodule.openAppWindow = openAppWindow; -}()); - -export function openAppWindow(response) { - myappsmodule.openAppWindow(response); -}; - diff --git a/device_home/client/js/lib/mustache.js b/device_home/client/js/lib/mustache.js deleted file mode 100644 index 4326b92..0000000 --- a/device_home/client/js/lib/mustache.js +++ /dev/null @@ -1 +0,0 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).Mustache=t()}(this,function(){"use strict";var e=Object.prototype.toString,t=Array.isArray||function(t){return"[object Array]"===e.call(t)};function n(e){return"function"==typeof e}function r(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function i(e,t){return null!=e&&"object"==typeof e&&t in e}var o=RegExp.prototype.test;var a=/\S/;function s(e){return!function(e,t){return o.call(e,t)}(a,e)}var c={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};var p=/\s*/,u=/\s+/,l=/\s*=/,h=/\s*\}/,f=/#|\^|\/|>|\{|&|=|!/;function g(e){this.string=e,this.tail=e,this.pos=0}function d(e,t){this.view=e,this.cache={".":this.view},this.parent=t}function v(){this.templateCache={_cache:{},set:function(e,t){this._cache[e]=t},get:function(e){return this._cache[e]},clear:function(){this._cache={}}}}g.prototype.eos=function(){return""===this.tail},g.prototype.scan=function(e){var t=this.tail.match(e);if(!t||0!==t.index)return"";var n=t[0];return this.tail=this.tail.substring(n.length),this.pos+=n.length,n},g.prototype.scanUntil=function(e){var t,n=this.tail.search(e);switch(n){case-1:t=this.tail,this.tail="";break;case 0:t="";break;default:t=this.tail.substring(0,n),this.tail=this.tail.substring(n)}return this.pos+=t.length,t},d.prototype.push=function(e){return new d(e,this)},d.prototype.lookup=function(e){var t,r,o,a=this.cache;if(a.hasOwnProperty(e))t=a[e];else{for(var s,c,p,u=this,l=!1;u;){if(e.indexOf(".")>0)for(s=u.view,c=e.split("."),p=0;null!=s&&p0?i[i.length-1][4]:n;break;default:r.push(t)}return n}(function(e){for(var t,n,r=[],i=0,o=e.length;i"===a?s=this.renderPartial(o,t,n,i):"&"===a?s=this.unescapedValue(o,t):"name"===a?s=this.escapedValue(o,t,i):"text"===a&&(s=this.rawValue(o)),void 0!==s&&(c+=s);return c},v.prototype.renderSection=function(e,r,i,o,a){var s=this,c="",p=r.lookup(e[1]);if(p){if(t(p))for(var u=0,l=p.length;u0||!n)&&(i[o]=r+i[o]);return i.join("\n")},v.prototype.renderPartial=function(e,t,r,i){if(r){var o=this.getConfigTags(i),a=n(r)?r(e[1]):r[e[1]];if(null!=a){var s=e[6],c=e[5],p=e[4],u=a;0==c&&p&&(u=this.indentPartial(a,p,s));var l=this.parse(u,o);return this.renderTokens(l,t,r,u,i)}}},v.prototype.unescapedValue=function(e,t){var n=t.lookup(e[1]);if(null!=n)return n},v.prototype.escapedValue=function(e,t,n){var r=this.getConfigEscape(n)||y.escape,i=t.lookup(e[1]);if(null!=i)return"number"==typeof i&&r===y.escape?String(i):r(i)},v.prototype.rawValue=function(e){return e[1]},v.prototype.getConfigTags=function(e){return t(e)?e:e&&"object"==typeof e?e.tags:void 0},v.prototype.getConfigEscape=function(e){return e&&"object"==typeof e&&!t(e)?e.escape:void 0};var y={name:"mustache.js",version:"4.2.0",tags:["{{","}}"],clearCache:void 0,escape:void 0,parse:void 0,render:void 0,Scanner:void 0,Context:void 0,Writer:void 0,set templateCache(e){w.templateCache=e},get templateCache(){return w.templateCache}},w=new v;return y.clearCache=function(){return w.clearCache()},y.parse=function(e,t){return w.parse(e,t)},y.render=function(e,n,r,i){if("string"!=typeof e)throw new TypeError('Invalid template! Template should be a "string" but "'+(t(o=e)?"array":typeof o)+'" was given as the first argument for mustache#render(template, view, partials)');var o;return w.render(e,n,r,i)},y.escape=function(e){return String(e).replace(/[&<>"'`=\/]/g,function(e){return c[e]})},y.Scanner=g,y.Context=d,y.Writer=v,y}); \ No newline at end of file diff --git a/device_home/client/js/myApps.js b/device_home/client/js/myApps.js deleted file mode 100644 index 8eebe74..0000000 --- a/device_home/client/js/myApps.js +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -"use strict"; -import { UpdateWebClip } from './app.js'; -import Actions from './actions.js'; - -const serverPort = 9000; -const serverURL = window.location.protocol + '//' + window.location.hostname; -const actions = new Actions(); -const NEW_WINDOW_TIMEOUT = 1000; -const myappsmodule = {}; - -(function () { - function emptyElement(elm) { - while (elm.firstChild) { - elm.removeChild(elm.firstChild); - } - return elm; - } - /** - * Open app in new window - * @param {Object} response - * @private - */ - function openAppWindow(response) { - document.getElementById("page-main").style.display = "none"; - var timer = setTimeout(function () { - clearTimeout(timer); - document.getElementById("page-main").style.display = "block"; - window.open(serverURL + ':' + response.port + '/app', 'newWindow'); - }, NEW_WINDOW_TIMEOUT); - }; - - function request(method, json, api, body) { - return new Promise( - (resolve, reject) => { - const xhr = new XMLHttpRequest(); - xhr.onreadystatechange = function () { - if (xhr.readyState === xhr.DONE) { - if (xhr.status === 200 || xhr.status === 201) { - resolve(xhr.responseText); - } else { - reject(xhr.responseText); - } - } - }; - xhr.open(method, `${serverURL}:${serverPort}/${api}`); - if (json) - xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8'); - body ? xhr.send(body) : xhr.send(); - }); - } - - function showListView(dataArray) { - var formResult = document.getElementById("d2dApps"), - imgResult = document.getElementById("d2dAppList"), - formObj, - imgObj, - textObj, - objTable, - objRow, - i, - d2dApp, - icon; - - emptyElement(imgResult); - - objTable = document.createElement("div"); - objTable.className = "result-table"; - - if (dataArray.length > 0) { - for (i = 0; i < dataArray.length; i++) { - formObj = document.createElement("div"); - imgObj = document.createElement("img"); - textObj = document.createElement("p"); - formObj.style.textAlign = "center"; - d2dApp = dataArray[i]['d2dApp']; - if (d2dApp.hasOwnProperty("appName")) { - if (d2dApp.iconPath) { - icon = d2dApp.iconPath.substring(d2dApp.iconPath.indexOf('/', 10) + 1); - imgObj.src = `/d2dIcon/${icon}`; - } else { - imgObj.src = `./images/icon.png`; - } - imgObj.className = "app-icon-img"; - imgObj.alt = d2dApp.appName; - imgObj.setAttribute('pkgId', d2dApp.pkgId); - imgObj.setAttribute('appId', d2dApp.appId); - textObj.style.display = "block"; - textObj.style.margin = "0 auto"; - textObj.style.fontSize = "14px"; - textObj.innerHTML = d2dApp.appName; - } - imgObj.addEventListener("click", function () { - var pkgId = this.getAttribute('pkgId'); - var appId = this.getAttribute('appId'); - showPreview(pkgId, appId); - }, false); - imgObj.addEventListener("dblclick", function () { - var pkgId = this.getAttribute('pkgId'); - var appId = this.getAttribute('appId'); - actions.launchAppOnTV( - pkgId, - appId, - '', - function (response) { - // TODO: should check if the app provides client page or not - openAppWindow(response); - }) - }, false); - formObj.appendChild(imgObj); - formObj.appendChild(textObj); - - imgResult.appendChild(formObj); - } - formResult.appendChild(imgResult); - } else { - objRow = document.createElement("div"); - objRow.className = "result-table-error"; - objRow.appendChild(document.createTextNode("No Data")); - objTable.appendChild(objRow); - } - } - - function showPreview(pkgId, appId) { - const reqBody = JSON.stringify({ pkgId, appId }); - request('POST', true, 'previewData', reqBody).then((body) => { - const preview = JSON.parse(body); - if (!preview.result.sections || !preview.result.sections.length) - return; - const previewSection = document.getElementById('preview-section'); - previewSection.style.display = 'block'; - previewSection.innerHTML = 'Preview'; - const previewList = document.getElementById('preview-list'); - previewList.style.display = 'grid'; - previewList.innerHTML = ''; - preview.result.sections.forEach(section => { - if (!section.tiles) - return; - section.tiles.forEach(tile => { - if (!tile.image_url) - return; - const img = document.createElement('img'); - img.src = tile.image_url; - img.border = 0; - img.className = 'app-preview-img'; - img.onclick = function () { - actions.launchAppOnTV( - pkgId, - appId, - tile.action_play_url, - function () { console.log('preview resumed') }); - } - previewList.appendChild(img); - }); - }); - }); - } - - function showList() { - request('GET', false, 'appList').then((body) => { - showListView(JSON.parse(body)); - }) - } - - function initEventSource() { - const eventSource = new EventSource(serverURL + ':' + serverPort + '/listenMessage'); - eventSource.addEventListener('message', evt => { - console.log(`evt.data : ${evt.data}`); - const message = JSON.parse(evt.data); - switch (message.type) { - case 'updateapp-list': - showListView(message.body); - UpdateWebClip(message.body); - break; - case 'redirect-url': - const body = JSON.parse(message.body); - window.open(body.url, '_blank'); - break; - case 'remote-message': - document.dispatchEvent(new CustomEvent('remotemessage', message.body)); - break; - case 'ime-event': - break; - default: - console.log(`no matched case : ${message.type}`); - } - }, false); - eventSource.addEventListener('open', evt => { - console.log("Connected to..."); - }, false); - eventSource.addEventListener('error', evt => { - if (evt.target.readyState == EventSource.CLOSED) { - console.log("Disconnected from..."); - } else if (evt.target.readyState == EventSource.CONNECTING) { - console.log('Connecting to...'); - } - }, false); - } - - function init() { - initEventSource(); - showList(); - } - window.onload = init; - myappsmodule.openAppWindow = openAppWindow; -}()); - -export function openAppWindow(response) { - myappsmodule.openAppWindow(response); -}; diff --git a/device_home/client/manifest.webmanifest b/device_home/client/manifest.webmanifest deleted file mode 100644 index 5d81355..0000000 --- a/device_home/client/manifest.webmanifest +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "HomeTV App", - "short_name": "HomeTV App", - "start_url": ".", - "display": "standalone", - "background_color": "#fff", - "icons": [ - { - "src":"/images/Icon.png", - "sizes": "48x48 72x72 96x96 128x128" - } - ] -} \ No newline at end of file diff --git a/device_home/client/webclip-template/container/webclip.html b/device_home/client/webclip-template/container/webclip.html deleted file mode 100644 index bde2cb9..0000000 --- a/device_home/client/webclip-template/container/webclip.html +++ /dev/null @@ -1,22 +0,0 @@ -
-
-
{{title}}
-
- -
-
-
-
- {{#items}} -
- {{alt}} -
{{title}}
-
{{subTitle}}
-
- {{/items}} -
-
- -
diff --git a/device_home/client/webclip-template/favorite/webclip.html b/device_home/client/webclip-template/favorite/webclip.html deleted file mode 100644 index 1da4f66..0000000 --- a/device_home/client/webclip-template/favorite/webclip.html +++ /dev/null @@ -1,23 +0,0 @@ -
-
-
{{title}}
-
- -
-
- -
-
- {{#items}} - - {{/items}} -
-
- -
diff --git a/device_home/client/webclip-template/image-notitle/css/style.css b/device_home/client/webclip-template/image-notitle/css/style.css deleted file mode 100644 index 00157d8..0000000 --- a/device_home/client/webclip-template/image-notitle/css/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.app-banner-1 { - top: -17px; -} \ No newline at end of file diff --git a/device_home/client/webclip-template/image-notitle/webclip.html b/device_home/client/webclip-template/image-notitle/webclip.html deleted file mode 100644 index ed8c249..0000000 --- a/device_home/client/webclip-template/image-notitle/webclip.html +++ /dev/null @@ -1,12 +0,0 @@ -
- -
-
- -
-
- -
diff --git a/device_home/client/webclip-template/image/webclip.html b/device_home/client/webclip-template/image/webclip.html deleted file mode 100644 index 3da1bcf..0000000 --- a/device_home/client/webclip-template/image/webclip.html +++ /dev/null @@ -1,16 +0,0 @@ -
-
-
{{title}}
-
- -
-
- -
- Image Webclip -
- - -
diff --git a/device_home/icon.png b/device_home/icon.png deleted file mode 100644 index 9765b1bda7e5bddf0925555ab204b887a873bf24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD -Copyright (c) 2015 Douglas Christopher Wilson - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/device_home/node_modules/accepts/index.js b/device_home/node_modules/accepts/index.js deleted file mode 100644 index 2f5ca2c..0000000 --- a/device_home/node_modules/accepts/index.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * accepts - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ -"use strict";var Negotiator=require("negotiator"),mime=require("mime-types");function Accepts(t){if(!(this instanceof Accepts))return new Accepts(t);this.headers=t.headers,this.negotiator=new Negotiator(t)}function extToMime(t){return-1===t.indexOf("/")?mime.lookup(t):t}function validMime(t){return"string"==typeof t}module.exports=Accepts,Accepts.prototype.type=Accepts.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r= 0.6" - }, - "files": [ - "LICENSE", - "HISTORY.md", - "index.js" - ], - "homepage": "https://github.com/jshttp/accepts#readme", - "keywords": [ - "content", - "negotiation", - "accept", - "accepts" - ], - "license": "MIT", - "name": "accepts", - "repository": { - "type": "git", - "url": "git+https://github.com/jshttp/accepts.git" - }, - "scripts": { - "lint": "eslint --plugin markdown --ext js,md .", - "test": "mocha --reporter spec --check-leaks --bail test/", - "test-cov": "nyc --reporter=html --reporter=text npm test", - "test-travis": "nyc --reporter=text npm test" - }, - "version": "1.3.7" -} diff --git a/device_home/node_modules/after/.npmignore b/device_home/node_modules/after/.npmignore deleted file mode 100644 index 6c78602..0000000 --- a/device_home/node_modules/after/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.monitor diff --git a/device_home/node_modules/after/.travis.yml b/device_home/node_modules/after/.travis.yml deleted file mode 100644 index afd72d0..0000000 --- a/device_home/node_modules/after/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 - - 0.9 - - 0.10 - - 0.12 - - 4.2.4 - - 5.4.1 - - iojs-1 - - iojs-2 - - iojs-3 diff --git a/device_home/node_modules/after/LICENCE b/device_home/node_modules/after/LICENCE deleted file mode 100644 index 7c35130..0000000 --- a/device_home/node_modules/after/LICENCE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011 Raynos. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/device_home/node_modules/after/index.js b/device_home/node_modules/after/index.js deleted file mode 100644 index d022023..0000000 --- a/device_home/node_modules/after/index.js +++ /dev/null @@ -1 +0,0 @@ -function after(o,n,t){var r=!1;return t=t||noop,u.count=o,0===o?n():u;function u(o,e){if(u.count<=0)throw new Error("after called too many times");--u.count,o?(r=!0,n(o),n=t):0!==u.count||r||n(null,e)}}function noop(){}module.exports=after; \ No newline at end of file diff --git a/device_home/node_modules/after/package.json b/device_home/node_modules/after/package.json deleted file mode 100644 index 5927d6a..0000000 --- a/device_home/node_modules/after/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "_args": [ - [ - "after@0.8.2", - "/opt/source/offload.js" - ] - ], - "_from": "after@0.8.2", - "_id": "after@0.8.2", - "_inBundle": false, - "_integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", - "_location": "/after", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "after@0.8.2", - "name": "after", - "escapedName": "after", - "rawSpec": "0.8.2", - "saveSpec": null, - "fetchSpec": "0.8.2" - }, - "_requiredBy": [ - "/engine.io-parser" - ], - "_resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "_spec": "0.8.2", - "_where": "/opt/source/offload.js", - "author": { - "name": "Raynos", - "email": "raynos2@gmail.com" - }, - "bugs": { - "url": "https://github.com/Raynos/after/issues" - }, - "contributors": [ - { - "name": "Raynos", - "email": "raynos2@gmail.com", - "url": "http://raynos.org" - } - ], - "description": "after - tiny flow control", - "devDependencies": { - "mocha": "~1.8.1" - }, - "homepage": "https://github.com/Raynos/after#readme", - "keywords": [ - "flowcontrol", - "after", - "flow", - "control", - "arch" - ], - "license": "MIT", - "name": "after", - "repository": { - "type": "git", - "url": "git://github.com/Raynos/after.git" - }, - "scripts": { - "test": "mocha --ui tdd --reporter spec test/*.js" - }, - "version": "0.8.2" -} diff --git a/device_home/node_modules/ansi-regex/index.js b/device_home/node_modules/ansi-regex/index.js deleted file mode 100644 index 0cd5a73..0000000 --- a/device_home/node_modules/ansi-regex/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";module.exports=t=>{t=Object.assign({onlyFirst:!1},t);const n=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(n,t.onlyFirst?void 0:"g")}; \ No newline at end of file diff --git a/device_home/node_modules/ansi-regex/license b/device_home/node_modules/ansi-regex/license deleted file mode 100644 index e7af2f7..0000000 --- a/device_home/node_modules/ansi-regex/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/device_home/node_modules/ansi-regex/package.json b/device_home/node_modules/ansi-regex/package.json deleted file mode 100644 index 61f7446..0000000 --- a/device_home/node_modules/ansi-regex/package.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "_args": [ - [ - "ansi-regex@4.1.0", - "/opt/source/offload.js" - ] - ], - "_from": "ansi-regex@4.1.0", - "_id": "ansi-regex@4.1.0", - "_inBundle": false, - "_integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "_location": "/ansi-regex", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ansi-regex@4.1.0", - "name": "ansi-regex", - "escapedName": "ansi-regex", - "rawSpec": "4.1.0", - "saveSpec": null, - "fetchSpec": "4.1.0" - }, - "_requiredBy": [ - "/strip-ansi" - ], - "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "_spec": "4.1.0", - "_where": "/opt/source/offload.js", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-regex/issues" - }, - "description": "Regular expression for matching ANSI escape codes", - "devDependencies": { - "ava": "^0.25.0", - "xo": "^0.23.0" - }, - "engines": { - "node": ">=6" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/ansi-regex#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "command-line", - "text", - "regex", - "regexp", - "re", - "match", - "test", - "find", - "pattern" - ], - "license": "MIT", - "name": "ansi-regex", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-regex.git" - }, - "scripts": { - "test": "xo && ava", - "view-supported": "node fixtures/view-codes.js" - }, - "version": "4.1.0" -} diff --git a/device_home/node_modules/ansi-styles/index.js b/device_home/node_modules/ansi-styles/index.js deleted file mode 100644 index c5d91da..0000000 --- a/device_home/node_modules/ansi-styles/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const colorConvert=require("color-convert"),wrapAnsi16=(r,e)=>function(){const o=r.apply(colorConvert,arguments);return`[${o+e}m`},wrapAnsi256=(r,e)=>function(){const o=r.apply(colorConvert,arguments);return`[${38+e};5;${o}m`},wrapAnsi16m=(r,e)=>function(){const o=r.apply(colorConvert,arguments);return`[${38+e};2;${o[0]};${o[1]};${o[2]}m`};function assembleStyles(){const r=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.grey=e.color.gray;for(const o of Object.keys(e)){const n=e[o];for(const o of Object.keys(n)){const i=n[o];e[o]={open:`[${i[0]}m`,close:`[${i[1]}m`},n[o]=e[o],r.set(i[0],i[1])}Object.defineProperty(e,o,{value:n,enumerable:!1}),Object.defineProperty(e,"codes",{value:r,enumerable:!1})}const o=r=>r,n=(r,e,o)=>[r,e,o];e.color.close="",e.bgColor.close="",e.color.ansi={ansi:wrapAnsi16(o,0)},e.color.ansi256={ansi256:wrapAnsi256(o,0)},e.color.ansi16m={rgb:wrapAnsi16m(n,0)},e.bgColor.ansi={ansi:wrapAnsi16(o,10)},e.bgColor.ansi256={ansi256:wrapAnsi256(o,10)},e.bgColor.ansi16m={rgb:wrapAnsi16m(n,10)};for(let r of Object.keys(colorConvert)){if("object"!=typeof colorConvert[r])continue;const o=colorConvert[r];"ansi16"===r&&(r="ansi"),"ansi16"in o&&(e.color.ansi[r]=wrapAnsi16(o.ansi16,0),e.bgColor.ansi[r]=wrapAnsi16(o.ansi16,10)),"ansi256"in o&&(e.color.ansi256[r]=wrapAnsi256(o.ansi256,0),e.bgColor.ansi256[r]=wrapAnsi256(o.ansi256,10)),"rgb"in o&&(e.color.ansi16m[r]=wrapAnsi16m(o.rgb,0),e.bgColor.ansi16m[r]=wrapAnsi16m(o.rgb,10))}return e}Object.defineProperty(module,"exports",{enumerable:!0,get:assembleStyles}); \ No newline at end of file diff --git a/device_home/node_modules/ansi-styles/license b/device_home/node_modules/ansi-styles/license deleted file mode 100644 index e7af2f7..0000000 --- a/device_home/node_modules/ansi-styles/license +++ /dev/null @@ -1,9 +0,0 @@ -MIT License - -Copyright (c) Sindre Sorhus (sindresorhus.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/device_home/node_modules/ansi-styles/package.json b/device_home/node_modules/ansi-styles/package.json deleted file mode 100644 index eb42601..0000000 --- a/device_home/node_modules/ansi-styles/package.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "_args": [ - [ - "ansi-styles@3.2.1", - "/opt/source/offload.js" - ] - ], - "_from": "ansi-styles@3.2.1", - "_id": "ansi-styles@3.2.1", - "_inBundle": false, - "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "_location": "/ansi-styles", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "ansi-styles@3.2.1", - "name": "ansi-styles", - "escapedName": "ansi-styles", - "rawSpec": "3.2.1", - "saveSpec": null, - "fetchSpec": "3.2.1" - }, - "_requiredBy": [ - "/wrap-ansi" - ], - "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "_spec": "3.2.1", - "_where": "/opt/source/offload.js", - "author": { - "name": "Sindre Sorhus", - "email": "sindresorhus@gmail.com", - "url": "sindresorhus.com" - }, - "ava": { - "require": "babel-polyfill" - }, - "bugs": { - "url": "https://github.com/chalk/ansi-styles/issues" - }, - "dependencies": { - "color-convert": "^1.9.0" - }, - "description": "ANSI escape codes for styling strings in the terminal", - "devDependencies": { - "ava": "*", - "babel-polyfill": "^6.23.0", - "svg-term-cli": "^2.1.1", - "xo": "*" - }, - "engines": { - "node": ">=4" - }, - "files": [ - "index.js" - ], - "homepage": "https://github.com/chalk/ansi-styles#readme", - "keywords": [ - "ansi", - "styles", - "color", - "colour", - "colors", - "terminal", - "console", - "cli", - "string", - "tty", - "escape", - "formatting", - "rgb", - "256", - "shell", - "xterm", - "log", - "logging", - "command-line", - "text" - ], - "license": "MIT", - "name": "ansi-styles", - "repository": { - "type": "git", - "url": "git+https://github.com/chalk/ansi-styles.git" - }, - "scripts": { - "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor", - "test": "xo && ava" - }, - "version": "3.2.1" -} diff --git a/device_home/node_modules/array-flatten/LICENSE b/device_home/node_modules/array-flatten/LICENSE deleted file mode 100644 index 983fbe8..0000000 --- a/device_home/node_modules/array-flatten/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/device_home/node_modules/array-flatten/array-flatten.js b/device_home/node_modules/array-flatten/array-flatten.js deleted file mode 100644 index 2b36da6..0000000 --- a/device_home/node_modules/array-flatten/array-flatten.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";function flattenWithDepth(t,r,e){for(var a=0;a0&&Array.isArray(n)?flattenWithDepth(n,r,e-1):r.push(n)}return r}function flattenForever(t,r){for(var e=0;et&&(n=t),e>=t||e>=n||0===t)return new ArrayBuffer(0);for(var f=new Uint8Array(r),i=new Uint8Array(n-e),u=e,a=0;u0.0.0", - "uglify-js": "1.2.x", - "nodelint": ">0.0.0", - "lodash": ">=2.4.1" - }, - "moduleType": [ - "amd", - "globals", - "node" - ], - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "authors": [ - "Caolan McMahon" - ] -} \ No newline at end of file diff --git a/device_home/node_modules/async/component.json b/device_home/node_modules/async/component.json deleted file mode 100644 index 5003a7c..0000000 --- a/device_home/node_modules/async/component.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "async", - "description": "Higher-order functions and common patterns for asynchronous code", - "version": "0.9.2", - "keywords": [ - "async", - "callback", - "utility", - "module" - ], - "license": "MIT", - "repository": "caolan/async", - "scripts": [ - "lib/async.js" - ] -} \ No newline at end of file diff --git a/device_home/node_modules/async/lib/async.js b/device_home/node_modules/async/lib/async.js deleted file mode 100644 index 282c1ea..0000000 --- a/device_home/node_modules/async/lib/async.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * async - * https://github.com/caolan/async - * - * Copyright 2010-2014 Caolan McMahon - * Released under the MIT license - */ -!function(){var n,t,e={};function r(t){var e=!1;return function(){if(e)throw new Error("Callback was already called.");e=!0,t.apply(n,arguments)}}null!=(n=this)&&(t=n.async),e.noConflict=function(){return n.async=t,e};var i=Object.prototype.toString,u=Array.isArray||function(n){return"[object Array]"===i.call(n)},c=function(n,t){for(var e=0;e=n.length&&e()}c(n,(function(n){t(n,r(u))}))},e.forEach=e.each,e.eachSeries=function(n,t,e){if(e=e||function(){},!n.length)return e();var r=0,i=function(){t(n[r],(function(t){t?(e(t),e=function(){}):(r+=1)>=n.length?e():i()}))};i()},e.forEachSeries=e.eachSeries,e.eachLimit=function(n,t,e,r){l(t).apply(null,[n,e,r])},e.forEachLimit=e.eachLimit;var l=function(n){return function(t,e,r){if(r=r||function(){},!t.length||n<=0)return r();var i=0,u=0,c=0;!function o(){if(i>=t.length)return r();for(;c=t.length?r():o())}))}()}},f=function(n){return function(){var t=Array.prototype.slice.call(arguments);return n.apply(null,[e.each].concat(t))}},s=function(n){return function(){var t=Array.prototype.slice.call(arguments);return n.apply(null,[e.eachSeries].concat(t))}},p=function(n,t,e,r){if(t=o(t,(function(n,t){return{index:t,value:n}})),r){var i=[];n(t,(function(n,t){e(n.value,(function(e,r){i[n.index]=r,t(e)}))}),(function(n){r(n,i)}))}else n(t,(function(n,t){e(n.value,(function(n){t(n)}))}))};e.map=f(p),e.mapSeries=s(p),e.mapLimit=function(n,t,e,r){return y(t)(n,e,r)};var y=function(n){return function(n,t){return function(){var e=Array.prototype.slice.call(arguments);return t.apply(null,[l(n)].concat(e))}}(n,p)};e.reduce=function(n,t,r,i){e.eachSeries(n,(function(n,e){r(t,n,(function(n,r){t=r,e(n)}))}),(function(n){i(n,t)}))},e.inject=e.reduce,e.foldl=e.reduce,e.reduceRight=function(n,t,r,i){var u=o(n,(function(n){return n})).reverse();e.reduce(u,t,r,i)},e.foldr=e.reduceRight;var d=function(n,t,e,r){var i=[];n(t=o(t,(function(n,t){return{index:t,value:n}})),(function(n,t){e(n.value,(function(e){e&&i.push(n),t()}))}),(function(n){r(o(i.sort((function(n,t){return n.index-t.index})),(function(n){return n.value})))}))};e.filter=f(d),e.filterSeries=s(d),e.select=e.filter,e.selectSeries=e.filterSeries;var v=function(n,t,e,r){var i=[];n(t=o(t,(function(n,t){return{index:t,value:n}})),(function(n,t){e(n.value,(function(e){e||i.push(n),t()}))}),(function(n){r(o(i.sort((function(n,t){return n.index-t.index})),(function(n){return n.value})))}))};e.reject=f(v),e.rejectSeries=s(v);var h=function(n,t,e,r){n(t,(function(n,t){e(n,(function(e){e?(r(n),r=function(){}):t()}))}),(function(n){r()}))};e.detect=f(h),e.detectSeries=s(h),e.some=function(n,t,r){e.each(n,(function(n,e){t(n,(function(n){n&&(r(!0),r=function(){}),e()}))}),(function(n){r(!1)}))},e.any=e.some,e.every=function(n,t,r){e.each(n,(function(n,e){t(n,(function(n){n||(r(!1),r=function(){}),e()}))}),(function(n){r(!0)}))},e.all=e.every,e.sortBy=function(n,t,r){e.map(n,(function(n,e){t(n,(function(t,r){t?e(t):e(null,{value:n,criteria:r})}))}),(function(n,t){if(n)return r(n);r(null,o(t.sort((function(n,t){var e=n.criteria,r=t.criteria;return er?1:0})),(function(n){return n.value})))}))},e.auto=function(n,t){t=t||function(){};var r=a(n),i=r.length;if(!i)return t();var o={},l=[],f=function(n){l.unshift(n)},s=function(){i--,c(l.slice(0),(function(n){n()}))};f((function(){if(!i){var n=t;t=function(){},n(null,o)}})),c(r,(function(r){var i=u(n[r])?n[r]:[n[r]],p=function(n){var i=Array.prototype.slice.call(arguments,1);if(i.length<=1&&(i=i[0]),n){var u={};c(a(o),(function(n){u[n]=o[n]})),u[r]=i,t(n,u),t=function(){}}else o[r]=i,e.setImmediate(s)},y=i.slice(0,Math.abs(i.length-1))||[],d=function(){return t=function(n,t){return n&&o.hasOwnProperty(t)},e=!0,((n=y).reduce?n.reduce(t,e):(c(n,(function(n,r,i){e=t(e,n,r,i)})),e))&&!o.hasOwnProperty(r);var n,t,e};if(d())i[i.length-1](p,o);else{var v=function(){d()&&(!function(n){for(var t=0;t>>1);e(t,n[u])>=0?r=u:i=u-1}return r}(n.tasks,u,r)+1,0,u),n.saturated&&n.tasks.length===n.concurrency&&n.saturated(),e.setImmediate(n.process)}))}(i,n,t,o)},delete i.unshift,i},e.cargo=function(n,t){var r=!1,i=[],a={tasks:i,payload:t,saturated:null,empty:null,drain:null,drained:!0,push:function(n,r){u(n)||(n=[n]),c(n,(function(n){i.push({data:n,callback:"function"==typeof r?r:null}),a.drained=!1,a.saturated&&i.length===t&&a.saturated()})),e.setImmediate(a.process)},process:function e(){if(!r){if(0===i.length)return a.drain&&!a.drained&&a.drain(),void(a.drained=!0);var u="number"==typeof t?i.splice(0,t):i.splice(0,i.length),l=o(u,(function(n){return n.data}));a.empty&&a.empty(),r=!0,n(l,(function(){r=!1;var n=arguments;c(u,(function(t){t.callback&&t.callback.apply(null,n)})),e()}))}},length:function(){return i.length},running:function(){return r}};return a};var k=function(n){return function(t){var e=Array.prototype.slice.call(arguments,1);t.apply(null,e.concat([function(t){var e=Array.prototype.slice.call(arguments,1);"undefined"!=typeof console&&(t?console.error&&console.error(t):console[n]&&c(e,(function(t){console[n](t)})))}]))}};e.log=k("log"),e.dir=k("dir"),e.memoize=function(n,t){var r={},i={};t=t||function(n){return n};var u=function(){var u=Array.prototype.slice.call(arguments),c=u.pop(),o=t.apply(null,u);o in r?e.nextTick((function(){c.apply(null,r[o])})):o in i?i[o].push(c):(i[o]=[c],n.apply(null,u.concat([function(){r[o]=arguments;var n=i[o];delete i[o];for(var t=0,e=n.length;t2){var r=Array.prototype.slice.call(arguments,2);return e.apply(this,r)}return e};e.applyEach=f(A),e.applyEachSeries=s(A),e.forever=function(n,t){!function e(r){if(r){if(t)return t(r);throw r}n(e)}()},"undefined"!=typeof module&&module.exports?module.exports=e:"undefined"!=typeof define&&define.amd?define([],(function(){return e})):n.async=e}(); \ No newline at end of file diff --git a/device_home/node_modules/async/package.json b/device_home/node_modules/async/package.json deleted file mode 100644 index bad95a5..0000000 --- a/device_home/node_modules/async/package.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "_from": "async@0.9.x", - "_id": "async@0.9.2", - "_inBundle": false, - "_integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", - "_location": "/async", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "async@0.9.x", - "name": "async", - "escapedName": "async", - "rawSpec": "0.9.x", - "saveSpec": null, - "fetchSpec": "0.9.x" - }, - "_requiredBy": [ - "/jake" - ], - "_resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "_shasum": "aea74d5e61c1f899613bf64bda66d4c78f2fd17d", - "_spec": "async@0.9.x", - "_where": "/home/kenshin.choi/workspace/MDE-Framework/DeviceWebServer/GlobalServiceApp_Tau_VDHomeScreen/node_modules/jake", - "author": { - "name": "Caolan McMahon" - }, - "bugs": { - "url": "https://github.com/caolan/async/issues" - }, - "bundleDependencies": false, - "deprecated": false, - "description": "Higher-order functions and common patterns for asynchronous code", - "devDependencies": { - "lodash": ">=2.4.1", - "nodelint": ">0.0.0", - "nodeunit": ">0.0.0", - "uglify-js": "1.2.x" - }, - "homepage": "https://github.com/caolan/async#readme", - "jam": { - "main": "lib/async.js", - "include": [ - "lib/async.js", - "README.md", - "LICENSE" - ], - "categories": [ - "Utilities" - ] - }, - "keywords": [ - "async", - "callback", - "utility", - "module" - ], - "license": "MIT", - "main": "lib/async.js", - "name": "async", - "repository": { - "type": "git", - "url": "git+https://github.com/caolan/async.git" - }, - "scripts": { - "test": "nodeunit test/test-async.js" - }, - "spm": { - "main": "lib/async.js" - }, - "version": "0.9.2", - "volo": { - "main": "lib/async.js", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] - } -} diff --git a/device_home/node_modules/async/support/sync-package-managers.js b/device_home/node_modules/async/support/sync-package-managers.js deleted file mode 100755 index 864d970..0000000 --- a/device_home/node_modules/async/support/sync-package-managers.js +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -var fs=require("fs"),_=require("lodash"),packageJson=require("../package.json"),IGNORES=["**/.*","node_modules","bower_components","test","tests"],INCLUDES=["lib/async.js","README.md","LICENSE"],REPOSITORY_NAME="caolan/async";packageJson.jam={main:packageJson.main,include:INCLUDES,categories:["Utilities"]},packageJson.spm={main:packageJson.main},packageJson.volo={main:packageJson.main,ignore:IGNORES};var bowerSpecific={moduleType:["amd","globals","node"],ignore:IGNORES,authors:[packageJson.author]},bowerInclude=["name","description","version","main","keywords","license","homepage","repository","devDependencies"],componentSpecific={repository:REPOSITORY_NAME,scripts:[packageJson.main]},componentInclude=["name","description","version","keywords","license"],bowerJson=_.merge({},_.pick(packageJson,bowerInclude),bowerSpecific),componentJson=_.merge({},_.pick(packageJson,componentInclude),componentSpecific);fs.writeFileSync("./bower.json",JSON.stringify(bowerJson,null,2)),fs.writeFileSync("./component.json",JSON.stringify(componentJson,null,2)),fs.writeFileSync("./package.json",JSON.stringify(packageJson,null,2)); \ No newline at end of file diff --git a/device_home/node_modules/backo2/.npmignore b/device_home/node_modules/backo2/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/device_home/node_modules/backo2/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ diff --git a/device_home/node_modules/backo2/Makefile b/device_home/node_modules/backo2/Makefile deleted file mode 100644 index 9987df8..0000000 --- a/device_home/node_modules/backo2/Makefile +++ /dev/null @@ -1,8 +0,0 @@ - -test: - @./node_modules/.bin/mocha \ - --require should \ - --reporter dot \ - --bail - -.PHONY: test \ No newline at end of file diff --git a/device_home/node_modules/backo2/component.json b/device_home/node_modules/backo2/component.json deleted file mode 100644 index 994845a..0000000 --- a/device_home/node_modules/backo2/component.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "backo", - "repo": "segmentio/backo", - "dependencies": {}, - "version": "1.0.1", - "description": "simple backoff without the weird abstractions", - "keywords": ["backoff"], - "license": "MIT", - "scripts": ["index.js"], - "main": "index.js" -} diff --git a/device_home/node_modules/backo2/index.js b/device_home/node_modules/backo2/index.js deleted file mode 100644 index 19d92fe..0000000 --- a/device_home/node_modules/backo2/index.js +++ /dev/null @@ -1 +0,0 @@ -function Backoff(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}module.exports=Backoff,Backoff.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var o=Math.random(),i=Math.floor(o*this.jitter*t);t=0==(1&Math.floor(10*o))?t-i:t+i}return 0|Math.min(t,this.max)},Backoff.prototype.reset=function(){this.attempts=0},Backoff.prototype.setMin=function(t){this.ms=t},Backoff.prototype.setMax=function(t){this.max=t},Backoff.prototype.setJitter=function(t){this.jitter=t}; \ No newline at end of file diff --git a/device_home/node_modules/backo2/package.json b/device_home/node_modules/backo2/package.json deleted file mode 100644 index a661272..0000000 --- a/device_home/node_modules/backo2/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "_args": [ - [ - "backo2@1.0.2", - "/opt/source/offload.js" - ] - ], - "_from": "backo2@1.0.2", - "_id": "backo2@1.0.2", - "_inBundle": false, - "_integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "_location": "/backo2", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "backo2@1.0.2", - "name": "backo2", - "escapedName": "backo2", - "rawSpec": "1.0.2", - "saveSpec": null, - "fetchSpec": "1.0.2" - }, - "_requiredBy": [ - "/socket.io/socket.io-client" - ], - "_resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "_spec": "1.0.2", - "_where": "/opt/source/offload.js", - "bugs": { - "url": "https://github.com/mokesmokes/backo/issues" - }, - "dependencies": {}, - "description": "simple backoff based on segmentio/backo", - "devDependencies": { - "mocha": "*", - "should": "*" - }, - "homepage": "https://github.com/mokesmokes/backo#readme", - "keywords": [ - "backoff" - ], - "license": "MIT", - "name": "backo2", - "repository": { - "type": "git", - "url": "git+https://github.com/mokesmokes/backo.git" - }, - "version": "1.0.2" -} diff --git a/device_home/node_modules/balanced-match/.npmignore b/device_home/node_modules/balanced-match/.npmignore deleted file mode 100644 index ae5d8c3..0000000 --- a/device_home/node_modules/balanced-match/.npmignore +++ /dev/null @@ -1,5 +0,0 @@ -test -.gitignore -.travis.yml -Makefile -example.js diff --git a/device_home/node_modules/balanced-match/index.js b/device_home/node_modules/balanced-match/index.js deleted file mode 100644 index 1231112..0000000 --- a/device_home/node_modules/balanced-match/index.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";function balanced(e,n,a){e instanceof RegExp&&(e=maybeMatch(e,a)),n instanceof RegExp&&(n=maybeMatch(n,a));var t=range(e,n,a);return t&&{start:t[0],end:t[1],pre:a.slice(0,t[0]),body:a.slice(t[0]+e.length,t[1]),post:a.slice(t[1]+n.length)}}function maybeMatch(e,n){var a=n.match(e);return a?a[0]:null}function range(e,n,a){var t,r,c,i,l,o=a.indexOf(e),f=a.indexOf(n,o+1),g=o;if(o>=0&&f>0){for(t=[],c=a.length;g>=0&&!l;)g==o?(t.push(g),o=a.indexOf(e,g+1)):1==t.length?l=[t.pop(),f]:((r=t.pop())=0?o:f;t.length&&(l=[c,i])}return l}module.exports=balanced,balanced.range=range; \ No newline at end of file diff --git a/device_home/node_modules/balanced-match/package.json b/device_home/node_modules/balanced-match/package.json deleted file mode 100644 index 7ba0b98..0000000 --- a/device_home/node_modules/balanced-match/package.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_from": "balanced-match@^1.0.0", - "_id": "balanced-match@1.0.0", - "_inBundle": false, - "_integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "_location": "/balanced-match", - "_phantomChildren": {}, - "_requested": { - "type": "range", - "registry": true, - "raw": "balanced-match@^1.0.0", - "name": "balanced-match", - "escapedName": "balanced-match", - "rawSpec": "^1.0.0", - "saveSpec": null, - "fetchSpec": "^1.0.0" - }, - "_requiredBy": [ - "/brace-expansion" - ], - "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "_shasum": "89b4d199ab2bee49de164ea02b89ce462d71b767", - "_spec": "balanced-match@^1.0.0", - "_where": "/home/kenshin.choi/workspace/MDE-Framework/DeviceWebServer/GlobalServiceApp_Tau_VDHomeScreen/node_modules/brace-expansion", - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "bugs": { - "url": "https://github.com/juliangruber/balanced-match/issues" - }, - "bundleDependencies": false, - "dependencies": {}, - "deprecated": false, - "description": "Match balanced character pairs, like \"{\" and \"}\"", - "devDependencies": { - "matcha": "^0.7.0", - "tape": "^4.6.0" - }, - "homepage": "https://github.com/juliangruber/balanced-match", - "keywords": [ - "match", - "regexp", - "test", - "balanced", - "parse" - ], - "license": "MIT", - "main": "index.js", - "name": "balanced-match", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/balanced-match.git" - }, - "scripts": { - "bench": "make bench", - "test": "make test" - }, - "testling": { - "files": "test/*.js", - "browsers": [ - "ie/8..latest", - "firefox/20..latest", - "firefox/nightly", - "chrome/25..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "version": "1.0.0" -} diff --git a/device_home/node_modules/base64-arraybuffer/.npmignore b/device_home/node_modules/base64-arraybuffer/.npmignore deleted file mode 100644 index 332ee5a..0000000 --- a/device_home/node_modules/base64-arraybuffer/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -/node_modules/ -Gruntfile.js -/test/ diff --git a/device_home/node_modules/base64-arraybuffer/.travis.yml b/device_home/node_modules/base64-arraybuffer/.travis.yml deleted file mode 100644 index 19259a5..0000000 --- a/device_home/node_modules/base64-arraybuffer/.travis.yml +++ /dev/null @@ -1,19 +0,0 @@ -language: node_js -node_js: -- '0.12' -- iojs-1 -- iojs-2 -- iojs-3 -- '4.1' -before_script: -- npm install -before_install: npm install -g npm@'>=2.13.5' -deploy: - provider: npm - email: niklasvh@gmail.com - api_key: - secure: oHV9ArprTj5WOk7MP1UF7QMJ70huXw+y7xXb5wF4+V2H8Hyfa5TfE0DiOmqrube1WXTeH1FLgq54shp/sJWi47Hkg/GyeoB5NnsPhYEaJkaON9UG5blML+ODiNVsEnq/1kNBQ8e0+0JItMPLGySKyFmuZ3yflulXKS8O88mfINo= - on: - tags: true - branch: master - repo: niklasvh/base64-arraybuffer diff --git a/device_home/node_modules/base64-arraybuffer/LICENSE-MIT b/device_home/node_modules/base64-arraybuffer/LICENSE-MIT deleted file mode 100644 index ed27b41..0000000 --- a/device_home/node_modules/base64-arraybuffer/LICENSE-MIT +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2012 Niklas von Hertzen - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/device_home/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js b/device_home/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js deleted file mode 100644 index 1d8fbcf..0000000 --- a/device_home/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js +++ /dev/null @@ -1 +0,0 @@ -!function(n){"use strict";exports.encode=function(e){var r,t=new Uint8Array(e),i=t.length,f="";for(r=0;r>2],f+=n[(3&t[r])<<4|t[r+1]>>4],f+=n[(15&t[r+1])<<2|t[r+2]>>6],f+=n[63&t[r+2]];return i%3==2?f=f.substring(0,f.length-1)+"=":i%3==1&&(f=f.substring(0,f.length-2)+"=="),f},exports.decode=function(e){var r,t,i,f,g,o=.75*e.length,u=e.length,s=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),h=new Uint8Array(d);for(r=0;r>4,h[s++]=(15&i)<<4|f>>2,h[s++]=(3&f)<<6|63&g;return d}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); \ No newline at end of file diff --git a/device_home/node_modules/base64-arraybuffer/package.json b/device_home/node_modules/base64-arraybuffer/package.json deleted file mode 100644 index 8c429d8..0000000 --- a/device_home/node_modules/base64-arraybuffer/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "_args": [ - [ - "base64-arraybuffer@0.1.4", - "/opt/source/offload.js" - ] - ], - "_from": "base64-arraybuffer@0.1.4", - "_id": "base64-arraybuffer@0.1.4", - "_inBundle": false, - "_integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", - "_location": "/base64-arraybuffer", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "base64-arraybuffer@0.1.4", - "name": "base64-arraybuffer", - "escapedName": "base64-arraybuffer", - "rawSpec": "0.1.4", - "saveSpec": null, - "fetchSpec": "0.1.4" - }, - "_requiredBy": [ - "/engine.io-parser" - ], - "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "_spec": "0.1.4", - "_where": "/opt/source/offload.js", - "author": { - "name": "Niklas von Hertzen", - "email": "niklasvh@gmail.com", - "url": "http://hertzen.com" - }, - "bugs": { - "url": "https://github.com/niklasvh/base64-arraybuffer/issues" - }, - "description": "Encode/decode base64 data into ArrayBuffers", - "devDependencies": { - "grunt": "^0.4.5", - "grunt-cli": "^0.1.13", - "grunt-contrib-jshint": "^0.11.2", - "grunt-contrib-nodeunit": "^0.4.1", - "grunt-contrib-watch": "^0.6.1" - }, - "engines": { - "node": ">= 0.6.0" - }, - "homepage": "https://github.com/niklasvh/base64-arraybuffer", - "keywords": [], - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/niklasvh/base64-arraybuffer/blob/master/LICENSE-MIT" - } - ], - "main": "lib/base64-arraybuffer", - "name": "base64-arraybuffer", - "repository": { - "type": "git", - "url": "git+https://github.com/niklasvh/base64-arraybuffer.git" - }, - "scripts": { - "test": "grunt nodeunit" - }, - "version": "0.1.4" -} diff --git a/device_home/node_modules/base64-js/LICENSE b/device_home/node_modules/base64-js/LICENSE deleted file mode 100644 index 6d52b8a..0000000 --- a/device_home/node_modules/base64-js/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 Jameson Little - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/device_home/node_modules/base64-js/base64js.min.js b/device_home/node_modules/base64-js/base64js.min.js deleted file mode 100644 index 8a00c11..0000000 --- a/device_home/node_modules/base64-js/base64js.min.js +++ /dev/null @@ -1 +0,0 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window).base64js=e()}}((function(){return function e(r,n,t){function o(i,u){if(!n[i]){if(!r[i]){var a="function"==typeof require&&require;if(!u&&a)return a(i,!0);if(f)return f(i,!0);var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var c=n[i]={exports:{}};r[i][0].call(c.exports,(function(e){return o(r[i][1][e]||e)}),c,c.exports,e,r,n,t)}return n[i].exports}for(var f="function"==typeof require&&require,i=0;i>18]+i[63&e>>12]+i[63&e>>6]+i[63&e]}function f(e,r,n){for(var t,f=[],i=r;i>16,d[c++]=255&r>>8,d[c++]=255&r;return 2===i&&(r=u[e.charCodeAt(n)]<<2|u[e.charCodeAt(n+1)]>>4,d[c++]=255&r),1===i&&(r=u[e.charCodeAt(n)]<<10|u[e.charCodeAt(n+1)]<<4|u[e.charCodeAt(n+2)]>>2,d[c++]=255&r>>8,d[c++]=255&r),d},n.fromByteArray=function(e){for(var r,n=e.length,t=n%3,o=[],u=16383,a=0,d=n-t;ad?d:a+u));return 1===t?(r=e[n-1],o.push(i[r>>2]+i[63&r<<4]+"==")):2===t&&(r=(e[n-2]<<8)+e[n-1],o.push(i[r>>10]+i[63&r>>4]+i[63&r<<2]+"=")),o.join("")};for(var i=[],u=[],a="undefined"==typeof Uint8Array?Array:Uint8Array,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=0,h=d.length;c0)throw new Error("Invalid string. Length must be a multiple of 4");var e=o.indexOf("=");return-1===e&&(e=r),[e,e===r?0:4-e%4]}function byteLength(o){var r=getLens(o),e=r[0],t=r[1];return 3*(e+t)/4-t}function _byteLength(o,r,e){return 3*(r+e)/4-e}function toByteArray(o){var r,e,t=getLens(o),n=t[0],u=t[1],p=new Arr(_byteLength(o,n,u)),a=0,h=u>0?n-4:n;for(e=0;e>16&255,p[a++]=r>>8&255,p[a++]=255&r;return 2===u&&(r=revLookup[o.charCodeAt(e)]<<2|revLookup[o.charCodeAt(e+1)]>>4,p[a++]=255&r),1===u&&(r=revLookup[o.charCodeAt(e)]<<10|revLookup[o.charCodeAt(e+1)]<<4|revLookup[o.charCodeAt(e+2)]>>2,p[a++]=r>>8&255,p[a++]=255&r),p}function tripletToBase64(o){return lookup[o>>18&63]+lookup[o>>12&63]+lookup[o>>6&63]+lookup[63&o]}function encodeChunk(o,r,e){for(var t,n=[],u=r;ua?a:p+u));return 1===t?(r=o[e-1],n.push(lookup[r>>2]+lookup[r<<4&63]+"==")):2===t&&(r=(o[e-2]<<8)+o[e-1],n.push(lookup[r>>10]+lookup[r>>4&63]+lookup[r<<2&63]+"=")),n.join("")}revLookup["-".charCodeAt(0)]=62,revLookup["_".charCodeAt(0)]=63; \ No newline at end of file diff --git a/device_home/node_modules/base64-js/package.json b/device_home/node_modules/base64-js/package.json deleted file mode 100644 index 174bc35..0000000 --- a/device_home/node_modules/base64-js/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_args": [ - [ - "base64-js@1.5.1", - "/opt/source/offload.js" - ] - ], - "_from": "base64-js@1.5.1", - "_id": "base64-js@1.5.1", - "_inBundle": false, - "_integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "_location": "/base64-js", - "_phantomChildren": {}, - "_requested": { - "type": "version", - "registry": true, - "raw": "base64-js@1.5.1", - "name": "base64-js", - "escapedName": "base64-js", - "rawSpec": "1.5.1", - "saveSpec": null, - "fetchSpec": "1.5.1" - }, - "_requiredBy": [ - "/buffer" - ], - "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "_spec": "1.5.1", - "_where": "/opt/source/offload.js", - "author": { - "name": "T. Jameson Little", - "email": "t.jameson.little@gmail.com" - }, - "bugs": { - "url": "https://github.com/beatgammit/base64-js/issues" - }, - "description": "Base64 encoding/decoding in pure JS", - "devDependencies": { - "babel-minify": "^0.5.1", - "benchmark": "^2.1.4", - "browserify": "^16.3.0", - "standard": "*", - "tape": "4.x" - }, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "homepage": "https://github.com/beatgammit/base64-js", - "keywords": [ - "base64" - ], - "license": "MIT", - "main": "index.js", - "name": "base64-js", - "repository": { - "type": "git", - "url": "git://github.com/beatgammit/base64-js.git" - }, - "scripts": { - "build": "browserify -s base64js -r ./ | minify > base64js.min.js", - "lint": "standard", - "test": "npm run lint && npm run unit", - "unit": "tape test/*.js" - }, - "typings": "index.d.ts", - "version": "1.5.1" -} diff --git a/device_home/node_modules/blob/.idea/blob.iml b/device_home/node_modules/blob/.idea/blob.iml deleted file mode 100644 index 0b872d8..0000000 --- a/device_home/node_modules/blob/.idea/blob.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/inspectionProfiles/profiles_settings.xml b/device_home/node_modules/blob/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 0eefe32..0000000 --- a/device_home/node_modules/blob/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/markdown-navigator.xml b/device_home/node_modules/blob/.idea/markdown-navigator.xml deleted file mode 100644 index 24281af..0000000 --- a/device_home/node_modules/blob/.idea/markdown-navigator.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/markdown-navigator/profiles_settings.xml b/device_home/node_modules/blob/.idea/markdown-navigator/profiles_settings.xml deleted file mode 100644 index 9c51dfe..0000000 --- a/device_home/node_modules/blob/.idea/markdown-navigator/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/modules.xml b/device_home/node_modules/blob/.idea/modules.xml deleted file mode 100644 index a24a2af..0000000 --- a/device_home/node_modules/blob/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/vcs.xml b/device_home/node_modules/blob/.idea/vcs.xml deleted file mode 100644 index 9661ac7..0000000 --- a/device_home/node_modules/blob/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/device_home/node_modules/blob/.idea/workspace.xml b/device_home/node_modules/blob/.idea/workspace.xml deleted file mode 100644 index 31e803b..0000000 --- a/device_home/node_modules/blob/.idea/workspace.xml +++ /dev/null @@ -1,390 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - esprima-six - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -