@webos-tools/cli 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/.eslintignore +1 -0
  2. package/.eslintrc.js +52 -0
  3. package/APIs.js +79 -0
  4. package/CHANGELOG.md +110 -0
  5. package/LICENSE +201 -0
  6. package/README.md +218 -0
  7. package/bin/ares-config.js +199 -0
  8. package/bin/ares-device-info.js +30 -0
  9. package/bin/ares-device.js +219 -0
  10. package/bin/ares-generate.js +270 -0
  11. package/bin/ares-inspect.js +179 -0
  12. package/bin/ares-install.js +223 -0
  13. package/bin/ares-launch.js +318 -0
  14. package/bin/ares-log.js +255 -0
  15. package/bin/ares-novacom.js +223 -0
  16. package/bin/ares-package.js +336 -0
  17. package/bin/ares-pull.js +156 -0
  18. package/bin/ares-push.js +155 -0
  19. package/bin/ares-server.js +174 -0
  20. package/bin/ares-setup-device.js +520 -0
  21. package/bin/ares-shell.js +132 -0
  22. package/bin/ares.js +166 -0
  23. package/files/conf/ares.json +49 -0
  24. package/files/conf/command-service.json +73 -0
  25. package/files/conf/config.json +22 -0
  26. package/files/conf/ipk.json +30 -0
  27. package/files/conf/novacom-devices.json +35 -0
  28. package/files/conf/query/query-app.json +14 -0
  29. package/files/conf/query/query-hosted.json +18 -0
  30. package/files/conf/query/query-package.json +10 -0
  31. package/files/conf/query/query-service.json +6 -0
  32. package/files/conf/sdk.json +8 -0
  33. package/files/conf/template.json +57 -0
  34. package/files/conf/webos_emul +27 -0
  35. package/files/conf-base/env/sdk-ose.json +8 -0
  36. package/files/conf-base/env/sdk-tv.json +8 -0
  37. package/files/conf-base/profile/config-ose.json +21 -0
  38. package/files/conf-base/profile/config-tv.json +22 -0
  39. package/files/conf-base/query/query-app.json +14 -0
  40. package/files/conf-base/query/query-hosted.json +18 -0
  41. package/files/conf-base/query/query-package.json +10 -0
  42. package/files/conf-base/query/query-service.json +6 -0
  43. package/files/conf-base/template-conf/ose-templates.json +67 -0
  44. package/files/conf-base/template-conf/tv-sdk-templates.json +57 -0
  45. package/files/help/ares-config.help +43 -0
  46. package/files/help/ares-device.help +94 -0
  47. package/files/help/ares-generate.help +65 -0
  48. package/files/help/ares-inspect.help +70 -0
  49. package/files/help/ares-install.help +90 -0
  50. package/files/help/ares-launch.help +100 -0
  51. package/files/help/ares-log-pmlogd.help +84 -0
  52. package/files/help/ares-log.help +101 -0
  53. package/files/help/ares-novacom.help +68 -0
  54. package/files/help/ares-package.help +101 -0
  55. package/files/help/ares-pull.help +38 -0
  56. package/files/help/ares-push.help +38 -0
  57. package/files/help/ares-server.help +39 -0
  58. package/files/help/ares-setup-device.help +75 -0
  59. package/files/help/ares-shell.help +42 -0
  60. package/files/help/ares.help +47 -0
  61. package/files/help/readme.help +23 -0
  62. package/files/schema/ApplicationDescription.schema +319 -0
  63. package/files/schema/NovacomDevices.schema +61 -0
  64. package/files/templates/ose-sdk-templates/appinfo/appinfo.json +10 -0
  65. package/files/templates/ose-sdk-templates/bootplate-web/index.html +88 -0
  66. package/files/templates/ose-sdk-templates/hosted-webapp/index.html +14 -0
  67. package/files/templates/ose-sdk-templates/icon/icon.png +0 -0
  68. package/files/templates/ose-sdk-templates/js-service/helloclient.js +31 -0
  69. package/files/templates/ose-sdk-templates/js-service/helloworld_webos_service.js +188 -0
  70. package/files/templates/ose-sdk-templates/qml-app/main.qml +68 -0
  71. package/files/templates/ose-sdk-templates/qmlappinfo/appinfo.json +10 -0
  72. package/files/templates/ose-sdk-templates/serviceinfo/package.json +11 -0
  73. package/files/templates/ose-sdk-templates/serviceinfo/services.json +8 -0
  74. package/files/templates/tv-sdk-templates/appinfo/appinfo.json +10 -0
  75. package/files/templates/tv-sdk-templates/bootplate-web/index.html +58 -0
  76. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/LICENSE-2.0.txt +202 -0
  77. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/webOSTV-dev.js +1 -0
  78. package/files/templates/tv-sdk-templates/bootplate-web/webOSTVjs-1.2.4/webOSTV.js +1 -0
  79. package/files/templates/tv-sdk-templates/hosted-webapp/index.html +14 -0
  80. package/files/templates/tv-sdk-templates/js-service/helloworld_service.js +37 -0
  81. package/files/templates/tv-sdk-templates/packageinfo/packageinfo.json +4 -0
  82. package/files/templates/tv-sdk-templates/serviceinfo/package.json +11 -0
  83. package/files/templates/tv-sdk-templates/serviceinfo/services.json +8 -0
  84. package/files/templates/tv-sdk-templates/webicon/icon.png +0 -0
  85. package/files/templates/tv-sdk-templates/webicon/largeIcon.png +0 -0
  86. package/lib/base/ares.html +40 -0
  87. package/lib/base/cli-appdata.js +289 -0
  88. package/lib/base/cli-control.js +44 -0
  89. package/lib/base/common-tools.js +29 -0
  90. package/lib/base/error-handler.js +265 -0
  91. package/lib/base/file-watcher.js +155 -0
  92. package/lib/base/help-format.js +147 -0
  93. package/lib/base/luna.js +178 -0
  94. package/lib/base/novacom.js +1191 -0
  95. package/lib/base/sdkenv.js +59 -0
  96. package/lib/base/server.js +137 -0
  97. package/lib/base/setup-device.js +324 -0
  98. package/lib/base/version-tools.js +79 -0
  99. package/lib/com.sdk.ares.hostedapp.ipk +0 -0
  100. package/lib/device.js +1419 -0
  101. package/lib/generator.js +377 -0
  102. package/lib/inspect.js +494 -0
  103. package/lib/install.js +463 -0
  104. package/lib/launch.js +605 -0
  105. package/lib/log.js +584 -0
  106. package/lib/package.js +2129 -0
  107. package/lib/pull.js +231 -0
  108. package/lib/pusher.js +210 -0
  109. package/lib/session.js +74 -0
  110. package/lib/shell.js +193 -0
  111. package/lib/tar-filter-pack.js +62 -0
  112. package/lib/util/copy.js +31 -0
  113. package/lib/util/createFileName.js +40 -0
  114. package/lib/util/eof.js +30 -0
  115. package/lib/util/json.js +63 -0
  116. package/lib/util/merge.js +14 -0
  117. package/lib/util/objclone.js +40 -0
  118. package/lib/util/spinner.js +37 -0
  119. package/npm-shrinkwrap.json +85 -0
  120. package/package.json +98 -0
  121. package/spec/helpers/reporter.js +65 -0
  122. package/spec/jsSpecs/apiTest/generator.spec.js +372 -0
  123. package/spec/jsSpecs/apiTest/inspector.spec.js +89 -0
  124. package/spec/jsSpecs/apiTest/installer.spec.js +67 -0
  125. package/spec/jsSpecs/apiTest/launcher.spec.js +150 -0
  126. package/spec/jsSpecs/apiTest/packager.spec.js +194 -0
  127. package/spec/jsSpecs/apiTest/puller.spec.js +101 -0
  128. package/spec/jsSpecs/apiTest/pusher.spec.js +103 -0
  129. package/spec/jsSpecs/apiTest/server.spec.js +115 -0
  130. package/spec/jsSpecs/apiTest/setupDevice.spec.js +93 -0
  131. package/spec/jsSpecs/apiTest/shell.spec.js +49 -0
  132. package/spec/jsSpecs/ares-config.spec.js +78 -0
  133. package/spec/jsSpecs/ares-device.spec.js +443 -0
  134. package/spec/jsSpecs/ares-generate.spec.js +397 -0
  135. package/spec/jsSpecs/ares-inspect.spec.js +252 -0
  136. package/spec/jsSpecs/ares-install.spec.js +150 -0
  137. package/spec/jsSpecs/ares-launch.spec.js +301 -0
  138. package/spec/jsSpecs/ares-log.spec.js +824 -0
  139. package/spec/jsSpecs/ares-novacom.spec.js +149 -0
  140. package/spec/jsSpecs/ares-package.spec.js +1211 -0
  141. package/spec/jsSpecs/ares-pull.spec.js +157 -0
  142. package/spec/jsSpecs/ares-push.spec.js +146 -0
  143. package/spec/jsSpecs/ares-server.spec.js +160 -0
  144. package/spec/jsSpecs/ares-setup-device.spec.js +281 -0
  145. package/spec/jsSpecs/ares-shell.spec.js +220 -0
  146. package/spec/jsSpecs/ares.spec.js +83 -0
  147. package/spec/jsSpecs/common-spec.js +169 -0
  148. package/spec/support/jasmine.json +22 -0
  149. package/spec/tempFiles/com.jasmine.native.app_0.0.1_arm.ipk +0 -0
  150. package/spec/tempFiles/com.jasmine.native.app_0.0.1_x86.ipk +0 -0
  151. package/spec/tempFiles/com.jasmine.web.app_0.0.1_all.ipk +0 -0
  152. package/spec/tempFiles/com.logtest.web.app_1.0.0_all.ipk +0 -0
  153. package/spec/tempFiles/copyFiles/helloFile.txt +1 -0
  154. package/spec/tempFiles/copyFiles/testFile.txt +1 -0
  155. package/spec/tempFiles/ipks/com.sample.echo_0.0.1_all.ipk +0 -0
  156. package/spec/tempFiles/ipks/com.web.app_1.0.0_all.ipk +0 -0
  157. package/spec/tempFiles/nativeApp/auto/pkg_arm64/GLES2 +0 -0
  158. package/spec/tempFiles/nativeApp/auto/pkg_arm64/appinfo.json +9 -0
  159. package/spec/tempFiles/nativeApp/auto/pkg_arm64/icon.png +0 -0
  160. package/spec/tempFiles/nativeApp/auto/pkg_arm64/largeIcon.png +0 -0
  161. package/spec/tempFiles/nativeApp/ose/pkg_arm/Hello +0 -0
  162. package/spec/tempFiles/nativeApp/ose/pkg_arm/appinfo.json +9 -0
  163. package/spec/tempFiles/nativeApp/ose/pkg_arm/icon.png +0 -0
  164. package/spec/tempFiles/nativeApp/ose/pkg_arm/largeIcon.png +0 -0
  165. package/spec/tempFiles/nativeApp/ose/pkg_arm/package.properties +2 -0
  166. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/Hello +0 -0
  167. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/appinfo.json +9 -0
  168. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/icon.png +0 -0
  169. package/spec/tempFiles/nativeApp/oseEmul/pkg_x86/largeIcon.png +0 -0
  170. package/spec/tempFiles/nativeApp/rsi/pkg_x86/GLES2 +0 -0
  171. package/spec/tempFiles/nativeApp/rsi/pkg_x86/appinfo.json +9 -0
  172. package/spec/tempFiles/nativeApp/rsi/pkg_x86/icon.png +0 -0
  173. package/spec/tempFiles/nativeApp/rsi/pkg_x86/largeIcon.png +0 -0
  174. package/spec/tempFiles/sign/sign.crt +32 -0
  175. package/spec/tempFiles/sign/signPriv.key +52 -0
  176. package/spec/test_data/ares-generate.json +41 -0
  177. package/spec/test_data/ares.json +33 -0
@@ -0,0 +1,23 @@
1
+ - help file type : JSON
2
+
3
+ - description of property
4
+ - display [required] : String Array // display list of <help>
5
+ - title [optional] : String Array // display the <help> data with title (title is displayed as uppercase without tab)
6
+ - description [optional] : String Array // display the <help> data without tab.
7
+ - <help> [required] : String || String Array || Object // display the string with tab.
8
+ + String : display the strings in same line.
9
+ + @TAB@ : split the strings, @TAB@ means '\t%-32s'.
10
+
11
+ + String Array : display the strings in different line.
12
+
13
+ + Object (deafult type) : check the profile and platform. If Object has own property of profile or platform, the message should be changed as matched data.
14
+ + default [required] : String || String Array // default help message for profile
15
+ + defalut-platform [optional] : String || String Array // deafult help message for platform dependecy.
16
+ + <profile> : String || String Array, currently 'ose' is possible.
17
+ + <platform> : String || String Array, currently 'win32', 'linux', 'darwin' is possible.
18
+
19
+ + Object (option type) : check the <option> described in 'default' and '<profile>' propety.
20
+ + type [required] : 'option',
21
+ + default [required] : String Array // <option> list for defalut profile.
22
+ + <profile> [optional] : String Array // <option> list for target profile.
23
+ + <option> [required] : String || String Array || Obeject // same as above.
@@ -0,0 +1,319 @@
1
+ {
2
+ "id": "ApplicationDescription",
3
+ "type": "object",
4
+ "properties": {
5
+
6
+ "id": {
7
+ "type": "string",
8
+ "description": "Application ID, e.g., \"com.newco.app.myApp\" . Every application has a unique ID, created from reverse DNS naming conventions."
9
+ },
10
+ "main": {
11
+ "type": "string",
12
+ "description": "The launch point for the app. This is a file path relative to the appinfo.json file and needs to point to an HTML file."
13
+ },
14
+ "title": {
15
+ "type": "string",
16
+ "description": "The title of the application as it shows in the Launcher and the app window. The application title is unique, set once."
17
+ },
18
+ "keywords": {
19
+ "type": "array",
20
+ "items": {
21
+ "type": "string"
22
+ },
23
+ "description": "Keyword meta-data. Just Type list apps that contain the user-entered text in their keywords values."
24
+ },
25
+ "mimeTypes": {
26
+ "type": "array",
27
+ "items": {
28
+ "type": "object",
29
+ "properties": {
30
+ "mime": {
31
+ "type": "string",
32
+ "description": "Mime type refers to the Internet standard for defining the content type."
33
+ },
34
+ "stream": {
35
+ "type": "boolean",
36
+ "default": false,
37
+ "description": "If true, this type should not be downloaded first (pass url directly to app), else download first."
38
+ },
39
+ "extension": {
40
+ "type": "string",
41
+ "description": "The field is extension according to the mime type."
42
+ },
43
+ "urlPattern": {
44
+ "type": "string",
45
+ "description": "A pure redirect form. (e.g. ^[^:]+://www.youtube.com/watch\\?v=)"
46
+ },
47
+ "scheme": {
48
+ "type": "string",
49
+ "description": "A scheme or command form. (e.g. tel://)"
50
+ }
51
+ }
52
+ },
53
+ "description": "Mime type refers to the Internet standard for defining the content type. This field is used mime system."
54
+ },
55
+ "icon": {
56
+ "type": "string",
57
+ "description": "Image displayed for your app. This is a file path relative to the appinfo.json file. The default is \"icon.png\"."
58
+ },
59
+ "largeIcon": {
60
+ "type": "string",
61
+ "description": "Large app icon,This is a file path relative to the appinfo.json file. e.g, largeIcon-130x130.png."
62
+ },
63
+ "mediumIcon": {
64
+ "type": "string",
65
+ "description": "Medium app icon,This is a file path relative to the appinfo.json file. e.g, mediumIcon-96x96.png."
66
+ },
67
+ "type": {
68
+ "type": "string",
69
+ "enum": [
70
+ "web",
71
+ "stub",
72
+ "native",
73
+ "native_builtin",
74
+ "native_appshell",
75
+ "qml"
76
+ ],
77
+ "description": "Identifies the application type"
78
+ },
79
+ "splashBackground": {
80
+ "type": "string",
81
+ "description": "splashBackground is shown in loading screen, e.g, splash-background.png"
82
+ },
83
+ "miniicon": {
84
+ "type": "string",
85
+ "description": "Used for notifications. This is a file path relative to the appinfo.json file."
86
+ },
87
+ "vendor": {
88
+ "type": "string",
89
+ "description": "App owner. This is used in the launcher and deviceinfo dialogs, e.g., LGE"
90
+ },
91
+ "vendorurl": {
92
+ "type": "string",
93
+ "description": "URL that turns the vendor portion in deviceinfo dialogs to hyperlinks."
94
+ },
95
+ "visible": {
96
+ "type": "boolean",
97
+ "default": true,
98
+ "description": "By default, the launch icons are visible...set to false in the json and they won't show in the launcher screen."
99
+ },
100
+ "transparent": {
101
+ "type": "boolean",
102
+ "default": false,
103
+ "description": "whether app is transparent or not."
104
+ },
105
+ "class": {
106
+ "type": "object",
107
+ "properties": {
108
+ "hidden": {
109
+ "type": "boolean",
110
+ "default": false,
111
+ "description": "whether app is hidden in Recents or not"
112
+ }
113
+ },
114
+ "description": "indicates window behavior of app in the compositor"
115
+ },
116
+ "version": {
117
+ "type": "string",
118
+ "default": "1.0.0",
119
+ "description": "The application version number, in the dot-notation format, e.g., 3.0.2500"
120
+ },
121
+ "removable": {
122
+ "type": "boolean",
123
+ "default": true,
124
+ "description": "whether app is removale or not"
125
+ },
126
+ "bootLaunchParams": {
127
+ "type": "object",
128
+ "description": "if specified, params is used on boot application-launching"
129
+ },
130
+ "handlesRelaunch": {
131
+ "type": "boolean",
132
+ "default": false,
133
+ "description": "For native app. If true, SAM relaunch app when user execute native app that already running, If false, just maximize existing window."
134
+ },
135
+ "inspectable": {
136
+ "type": "boolean",
137
+ "default": false,
138
+ "description": "This field is used to tell WAM if an application should be inspectable in DevMode, based on the app's install location (/media/developer) or the presence of an \"inspectable\" field (if true) in the app's appinfo.json file."
139
+ },
140
+ "bgImage": {
141
+ "type": "string",
142
+ "description": "This field is the location of a bitmap. The bitmap is displayed to the user when the user hovers over the launch point with the system pointer."
143
+ },
144
+ "bgColor": {
145
+ "type": "string",
146
+ "description": "This field is the color to be displayed to the user when the user hovers over the launch point with the system pointer. This is used in the absence of the backgroundImage."
147
+ },
148
+ "deeplinkingParams": {
149
+ "type": "string",
150
+ "default": "",
151
+ "description": "This field describes parameter pattern for deep linking. Pattern must have \"$CONTENTID\" keyword which will be replaced with real content ID given by cloud."
152
+ },
153
+ "defaultWindowType": {
154
+ "type": "string",
155
+ "enum": [
156
+ "system_ui",
157
+ "card",
158
+ "favoriteshows",
159
+ "floating",
160
+ "minimal",
161
+ "overlay",
162
+ "popup",
163
+ "screenSaver"
164
+ ],
165
+ "default": "card",
166
+ "description": "Used by WebAppMgr to launch a window with a special window type setting."
167
+ },
168
+ "imageForRecents": {
169
+ "type": "string",
170
+ "description": "This field is the location of a bitmap. The bitmap is displayed in the recent apps list."
171
+ },
172
+ "requiredMemory": {
173
+ "type": "number",
174
+ "description": "Memory consumption is increasing quickly while launching. OOM can be occured before system(Memory Manager) try to acquire adequate memory for the application. requiredMemory is describe the maximum usage of memory while app is publishing. It is not about maximum usage of memory while app is running."
175
+ },
176
+ "iconColor": {
177
+ "type": "string",
178
+ "description": "indicates color of the icon of the launch point."
179
+ },
180
+ "appDescription": {
181
+ "type": "string",
182
+ "description": "A short tagline for the application"
183
+ },
184
+ "appDescriptionLong": {
185
+ "type": "string",
186
+ "description": "A long description for MVPD application. It can exceed 60 characters."
187
+ },
188
+ "inAppSetting":{
189
+ "type": "boolean",
190
+ "default": false,
191
+ "description": "This tells whether an applicaiton supports deeplinking for inAppSetting"
192
+ },
193
+ "disableBackHistoryAPI": {
194
+ "type": "boolean",
195
+ "default": false,
196
+ "description": "Disable WebAppMgr usage of the HTML5 History API with the Back keypress"
197
+ },
198
+ "lockable": {
199
+ "type": "boolean",
200
+ "default": true,
201
+ "description": "When set to true, the app can be locked"
202
+ },
203
+ "checkUpdateOnLaunch": {
204
+ "type": "boolean",
205
+ "default": true,
206
+ "description": "If this value is true and SAM receives checkUpdateOnLaunch:true with launch request, SAM will check update for the app."
207
+ },
208
+ "hasPromotion": {
209
+ "type": "boolean",
210
+ "default": false,
211
+ "description": "This indicates that this app has promotional contents."
212
+ },
213
+ "noSplashOnLaunch": {
214
+ "type": "boolean",
215
+ "default": false,
216
+ "description": "If this value is true, this application is launched without splash screen."
217
+ },
218
+ "spinnerOnLaunch": {
219
+ "type": "boolean",
220
+ "default": true,
221
+ "description": "If this value is true, this application is launched with spinner."
222
+ },
223
+ "unmovable": {
224
+ "type": "boolean",
225
+ "default": false,
226
+ "description": "Hint that an item should never be moved from it's given position"
227
+ },
228
+ "windowGroup": {
229
+ "type": "object",
230
+ "properties": {
231
+ "owner": {
232
+ "type": "boolean",
233
+ "description": "it's true if owner of window group"
234
+ },
235
+ "name": {
236
+ "type": "string",
237
+ "description": "Specify group owner's app id if child window"
238
+ }
239
+ },
240
+ "description": "Set relationship between owner window and child windows",
241
+ "required": ["owner"]
242
+ },
243
+ "accessibility": {
244
+ "type": "object",
245
+ "properties": {
246
+ "supportsAudioGuidance": {
247
+ "type": "boolean",
248
+ "description": "Specify this app supports audio guidance",
249
+ "default": false
250
+ }
251
+ },
252
+ "description": "Specify which accessibility feature this app supports",
253
+ "default": {
254
+ "supportsAudioGuidance": false
255
+ }
256
+ },
257
+ "tileSize": {
258
+ "type": "string",
259
+ "enum": [ "normal", "large" ],
260
+ "default": "normal",
261
+ "description": "Hint for sizing of UI tiles: normal or large, large may be used for a promotional item"
262
+ },
263
+ "redirection": {
264
+ "type": "object",
265
+ "properties": {
266
+ "type": {
267
+ "type": "string",
268
+ "enum": [ "id" ],
269
+ "description": "what type of content is redirected"
270
+ },
271
+ "target": {
272
+ "type": "string",
273
+ "description": "AppId, mime, or keywords"
274
+ },
275
+ "params": {
276
+ "type": "object",
277
+ "description": "Parameters to be sent to redirected app"
278
+ }
279
+ },
280
+ "description": "Redirection Information",
281
+ "required": ["type", "target"]
282
+ },
283
+ "containerJS": {
284
+ "type": "string",
285
+ "description": "container-app.js file"
286
+ },
287
+ "enyoVersion": {
288
+ "type": "string",
289
+ "description": "Enyo version for web app"
290
+ },
291
+ "icons": {
292
+ "type": "array",
293
+ "items": {
294
+ "type": "object",
295
+ "properties": {
296
+ "icon": {
297
+ "type": "string",
298
+ "description": "one of icons"
299
+ },
300
+ "iconColor": {
301
+ "type": "string",
302
+ "description": "one of iconColors"
303
+ }
304
+ },
305
+ "description": "Pair of icon and iconColor",
306
+ "required": ["icon", "iconColor"]
307
+ },
308
+ "default": [],
309
+ "description": "Icon and Color set for dynamic icon"
310
+ }
311
+ },
312
+ "required": [
313
+ "id",
314
+ "main",
315
+ "icon",
316
+ "type",
317
+ "title"
318
+ ]
319
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "id": "/deviceSchema",
3
+ "type": "object",
4
+ "properties": {
5
+ "order": {
6
+ "type": [
7
+ "string",
8
+ "number"
9
+ ],
10
+ "description": "Order Number"
11
+ },
12
+ "default": {
13
+ "type": "boolean",
14
+ "description": "If value is true, this device is default target"
15
+ },
16
+ "profile": {
17
+ "enum": [
18
+ "ose",
19
+ "tv"
20
+ ],
21
+ "description": "webOS Device Type"
22
+ },
23
+ "name": {
24
+ "type": "string",
25
+ "description": "Target Device Name"
26
+ },
27
+ "description": {
28
+ "type": "string",
29
+ "description": "Description about target device"
30
+ },
31
+ "host": {
32
+ "type": "string",
33
+ "description": "IP address of target device"
34
+ },
35
+ "port": {
36
+ "type": [
37
+ "string",
38
+ "number"
39
+ ],
40
+ "description": "SSH port number openned by target device"
41
+ },
42
+ "username": {
43
+ "type": "string",
44
+ "description": "User name to connect via SSH"
45
+ },
46
+ "privateKey": {
47
+ "type": [
48
+ "object",
49
+ "string"
50
+ ],
51
+ "description": "SSH Private Key File Name located in the host pc"
52
+ },
53
+ "indelible": {
54
+ "type": [
55
+ "boolean",
56
+ "string"
57
+ ],
58
+ "description": "If value is true, this device should not be removed."
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "com.domain.app",
3
+ "version": "1.0.0",
4
+ "vendor": "My Company",
5
+ "type": "web",
6
+ "main": "index.html",
7
+ "title": "new app",
8
+ "icon": "icon.png",
9
+ "requiredPermissions": ["time.query", "activity.operation"]
10
+ }
@@ -0,0 +1,88 @@
1
+ <!--
2
+ Copyright (c) 2020-2024 LG Electronics Inc.
3
+
4
+ SPDX-License-Identifier: Apache-2.0
5
+ -->
6
+
7
+ <!DOCTYPE html>
8
+ <html>
9
+ <head>
10
+ <title>Example Web App</title>
11
+ <style type="text/css">
12
+ body {
13
+ width: 100%;
14
+ height: 100%;
15
+ background-color:#202020;
16
+ }
17
+ div {
18
+ position:absolute;
19
+ height:100%;
20
+ width:100%;
21
+ display: table;
22
+ }
23
+ h1 {
24
+ display: table-cell;
25
+ vertical-align: middle;
26
+ text-align:center;
27
+ color:#FFFFFF;
28
+ }
29
+ </style>
30
+ <script type="text/javascript">
31
+ window.onload = function() {
32
+ var bridge = new WebOSServiceBridge();
33
+ /*
34
+ * getTimeApi calls gettime of systemservice, a module in the platform.
35
+ */
36
+ var getTimeApi = 'luna://com.webos.service.systemservice/clock/getTime';
37
+ var getTimeParams = '{}';
38
+
39
+ /*
40
+ * helloApi calls the hello method of js_service template provided by CLI.
41
+ * In this case, the service name is used as default name "com.domain.app.service" is.
42
+ * If you change this service name, you need to change the service name of the following API.
43
+ *
44
+ * If you change the name to helloParmas as you want, the contents will be reflected on the screen.
45
+ */
46
+ var helloApi = 'luna://com.domain.app.service/hello';
47
+ var helloParams = '{"name":"webOS"}';
48
+
49
+ function getTime_callback(msg){
50
+ var arg = JSON.parse(msg);
51
+ if (arg.returnValue) {
52
+ console.log("[APP_NAME: example web app] GETTIME_SUCCESS UTC : " + arg.utc);
53
+ //webOSSystem.PmLogString(6, "GETTIME_SUCCESS", '{"APP_NAME": "example web app"}', "UTC : " + arg.utc);
54
+ }
55
+ else {
56
+ console.error("[APP_NAME: example web app] GETTIME_FAILED errorText : " + arg.errorText);
57
+ //webOSSystem.PmLogString(3, "GETTIME_FAILED", '{"APP_NAME": "example web app"}', "errorText : " + arg.errorText);
58
+ }
59
+ }
60
+
61
+ function hello_callback(msg){
62
+ var arg = JSON.parse(msg);
63
+ if (arg.returnValue) {
64
+ document.getElementById("txt_msg").innerHTML = arg.Response;
65
+ console.log("[APP_NAME: example web app] CALLHELLO_SUCCESS response : " + arg.Response);
66
+ //webOSSystem.PmLogString(6, "CALLHELLO_SUCCESS", '{"APP_NAME": "example web app"}', "response : " + arg.Response);
67
+ }
68
+ else {
69
+ console.error("[APP_NAME: example web app] CALLHELLO_FAILED errorText : " + arg.errorText);
70
+ //webOSSystem.PmLogString(3, "CALLHELLO_FAILED", '{"APP_NAME": "example web app"}', "errorText : " + arg.errorText);
71
+ }
72
+ }
73
+
74
+ bridge.onservicecallback = getTime_callback;
75
+ bridge.call(getTimeApi, getTimeParams);
76
+ document.getElementById("txt_msg").onclick = function() {
77
+ bridge.onservicecallback = hello_callback;
78
+ bridge.call(helloApi, helloParams);
79
+ };
80
+ }
81
+ </script>
82
+ </head>
83
+ <body>
84
+ <div>
85
+ <h1 id="txt_msg">Hello, Web Application!!</h1>
86
+ </div>
87
+ </body>
88
+ </html>
@@ -0,0 +1,14 @@
1
+ <!--
2
+ Copyright (c) 2020-2024 LG Electronics Inc.
3
+
4
+ SPDX-License-Identifier: Apache-2.0
5
+ -->
6
+
7
+ <!DOCTYPE html>
8
+ <html>
9
+ <head>
10
+ <script>location.href='http://webosose.org/';</script>
11
+ </head>
12
+ <body>
13
+ </body>
14
+ </html>
@@ -0,0 +1,31 @@
1
+ /*
2
+ * Copyright (c) 2020-2024 LG Electronics Inc.
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ // helloclient.js
8
+ // Subscribe & cancel subscription to helloService's heartbeat method
9
+ const Service = require('webos-service');
10
+
11
+ const service = new Service("com.example.helloclient"); // Register com.example.helloworld
12
+
13
+ console.log("simple call");
14
+ // Change @SERVICE-NAME@ to real service name
15
+ service.call("luna://@SERVICE-NAME@/hello", {}, function(message) {
16
+ console.log("call @SERVICE-NAME@/hello");
17
+ console.log("message payload: " + JSON.stringify(message.payload));
18
+ const sub = service.subscribe("luna://@SERVICE-NAME@/heartbeat", {subscribe: true});
19
+ const max = 10;
20
+ let count = 0;
21
+ sub.addListener("response", function(msg) {
22
+ console.log(JSON.stringify(msg.payload));
23
+ if (++count >= max) {
24
+ sub.cancel();
25
+ setTimeout(function() {
26
+ console.log(max+" responses received, exiting...");
27
+ process.exit(0);
28
+ }, 1000);
29
+ }
30
+ });
31
+ });