@theia/core 1.65.0-next.19 → 1.65.0-next.28

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 (331) hide show
  1. package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +1 -1
  2. package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -1
  3. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +1 -1
  4. package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -1
  5. package/lib/browser/catalog.json +13 -4
  6. package/lib/browser/common-frontend-contribution.d.ts +2 -3
  7. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  8. package/lib/browser/common-frontend-contribution.js +3 -4
  9. package/lib/browser/common-frontend-contribution.js.map +1 -1
  10. package/lib/browser/encoding-registry.d.ts +1 -1
  11. package/lib/browser/encoding-registry.d.ts.map +1 -1
  12. package/lib/browser/encoding-registry.js +1 -1
  13. package/lib/browser/encoding-registry.js.map +1 -1
  14. package/lib/browser/frontend-application-bindings.d.ts.map +1 -1
  15. package/lib/browser/frontend-application-bindings.js +10 -17
  16. package/lib/browser/frontend-application-bindings.js.map +1 -1
  17. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  18. package/lib/browser/frontend-application-module.js +4 -5
  19. package/lib/browser/frontend-application-module.js.map +1 -1
  20. package/lib/browser/frontend-application.d.ts +1 -1
  21. package/lib/browser/frontend-application.d.ts.map +1 -1
  22. package/lib/browser/frontend-application.js +1 -1
  23. package/lib/browser/frontend-application.js.map +1 -1
  24. package/lib/browser/hover-service.d.ts +1 -2
  25. package/lib/browser/hover-service.d.ts.map +1 -1
  26. package/lib/browser/hover-service.js +1 -2
  27. package/lib/browser/hover-service.js.map +1 -1
  28. package/lib/browser/icon-theme-service.d.ts +3 -2
  29. package/lib/browser/icon-theme-service.d.ts.map +1 -1
  30. package/lib/browser/icon-theme-service.js +4 -3
  31. package/lib/browser/icon-theme-service.js.map +1 -1
  32. package/lib/browser/index.d.ts +0 -1
  33. package/lib/browser/index.d.ts.map +1 -1
  34. package/lib/browser/index.js +0 -1
  35. package/lib/browser/index.js.map +1 -1
  36. package/lib/browser/keybinding.d.ts +1 -1
  37. package/lib/browser/keybinding.d.ts.map +1 -1
  38. package/lib/browser/keybinding.js +1 -1
  39. package/lib/browser/keybinding.js.map +1 -1
  40. package/lib/browser/keybinding.spec.js +1 -1
  41. package/lib/browser/keybinding.spec.js.map +1 -1
  42. package/lib/browser/menu/browser-menu-plugin.d.ts +2 -2
  43. package/lib/browser/menu/browser-menu-plugin.d.ts.map +1 -1
  44. package/lib/browser/menu/browser-menu-plugin.js +2 -3
  45. package/lib/browser/menu/browser-menu-plugin.js.map +1 -1
  46. package/lib/browser/open-with-service.d.ts +1 -1
  47. package/lib/browser/open-with-service.d.ts.map +1 -1
  48. package/lib/browser/open-with-service.js +3 -3
  49. package/lib/browser/open-with-service.js.map +1 -1
  50. package/lib/browser/opener-service.d.ts +1 -2
  51. package/lib/browser/opener-service.d.ts.map +1 -1
  52. package/lib/browser/opener-service.js.map +1 -1
  53. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts +6 -0
  54. package/lib/browser/preferences/frontend-config-preference-contributions.d.ts.map +1 -0
  55. package/lib/browser/preferences/frontend-config-preference-contributions.js +60 -0
  56. package/lib/browser/preferences/frontend-config-preference-contributions.js.map +1 -0
  57. package/lib/browser/preferences/index.d.ts +0 -5
  58. package/lib/browser/preferences/index.d.ts.map +1 -1
  59. package/lib/browser/preferences/index.js +0 -5
  60. package/lib/browser/preferences/index.js.map +1 -1
  61. package/lib/browser/preferences/preference-contribution.d.ts +0 -96
  62. package/lib/browser/preferences/preference-contribution.d.ts.map +1 -1
  63. package/lib/browser/preferences/preference-contribution.js +14 -355
  64. package/lib/browser/preferences/preference-contribution.js.map +1 -1
  65. package/lib/browser/preferences/preference-proxy.spec.js +25 -17
  66. package/lib/browser/preferences/preference-proxy.spec.js.map +1 -1
  67. package/lib/browser/preferences/preference-schema-provider.spec.js +21 -34
  68. package/lib/browser/preferences/preference-schema-provider.spec.js.map +1 -1
  69. package/lib/browser/preferences/preference-service.spec.js +57 -80
  70. package/lib/browser/preferences/preference-service.spec.js.map +1 -1
  71. package/lib/browser/preferences/preference-validation-service.d.ts +24 -26
  72. package/lib/browser/preferences/preference-validation-service.d.ts.map +1 -1
  73. package/lib/browser/preferences/preference-validation-service.js +40 -20
  74. package/lib/browser/preferences/preference-validation-service.js.map +1 -1
  75. package/lib/browser/preferences/preference-validation-service.spec.js +10 -6
  76. package/lib/browser/preferences/preference-validation-service.spec.js.map +1 -1
  77. package/lib/browser/preferences/test/mock-preference-provider.d.ts +2 -3
  78. package/lib/browser/preferences/test/mock-preference-provider.d.ts.map +1 -1
  79. package/lib/browser/preferences/test/mock-preference-provider.js +5 -7
  80. package/lib/browser/preferences/test/mock-preference-provider.js.map +1 -1
  81. package/lib/browser/preferences/test/mock-preference-proxy.d.ts.map +1 -1
  82. package/lib/browser/preferences/test/mock-preference-proxy.js.map +1 -1
  83. package/lib/browser/preferences/test/mock-preference-service.d.ts +1 -4
  84. package/lib/browser/preferences/test/mock-preference-service.d.ts.map +1 -1
  85. package/lib/browser/preferences/test/mock-preference-service.js.map +1 -1
  86. package/lib/browser/quick-input/quick-command-service.d.ts +1 -1
  87. package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
  88. package/lib/browser/quick-input/quick-command-service.js +1 -1
  89. package/lib/browser/quick-input/quick-command-service.js.map +1 -1
  90. package/lib/browser/request/browser-request-service.d.ts +1 -1
  91. package/lib/browser/request/browser-request-service.d.ts.map +1 -1
  92. package/lib/browser/request/browser-request-service.js +2 -2
  93. package/lib/browser/request/browser-request-service.js.map +1 -1
  94. package/lib/browser/shell/application-shell.d.ts +1 -1
  95. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  96. package/lib/browser/shell/application-shell.js +1 -1
  97. package/lib/browser/shell/application-shell.js.map +1 -1
  98. package/lib/browser/shell/tab-bars.d.ts +1 -1
  99. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  100. package/lib/browser/shell/theia-dock-panel.d.ts +1 -1
  101. package/lib/browser/shell/theia-dock-panel.d.ts.map +1 -1
  102. package/lib/browser/status-bar/status-bar.d.ts +1 -1
  103. package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
  104. package/lib/browser/status-bar/status-bar.js +1 -1
  105. package/lib/browser/status-bar/status-bar.js.map +1 -1
  106. package/lib/browser/theming.d.ts +5 -4
  107. package/lib/browser/theming.d.ts.map +1 -1
  108. package/lib/browser/theming.js +7 -6
  109. package/lib/browser/theming.js.map +1 -1
  110. package/lib/browser/tooltip-service.d.ts +1 -1
  111. package/lib/browser/tooltip-service.d.ts.map +1 -1
  112. package/lib/browser/tooltip-service.js +1 -1
  113. package/lib/browser/tooltip-service.js.map +1 -1
  114. package/lib/browser/tree/index.d.ts +0 -1
  115. package/lib/browser/tree/index.d.ts.map +1 -1
  116. package/lib/browser/tree/index.js +0 -1
  117. package/lib/browser/tree/index.js.map +1 -1
  118. package/lib/browser/tree/tree-widget.d.ts +2 -2
  119. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  120. package/lib/browser/tree/tree-widget.js +3 -3
  121. package/lib/browser/tree/tree-widget.js.map +1 -1
  122. package/lib/browser/window/default-secondary-window-service.d.ts +1 -2
  123. package/lib/browser/window/default-secondary-window-service.d.ts.map +1 -1
  124. package/lib/browser/window/default-secondary-window-service.js +1 -2
  125. package/lib/browser/window/default-secondary-window-service.js.map +1 -1
  126. package/lib/browser/window/default-window-service.d.ts +1 -1
  127. package/lib/browser/window/default-window-service.d.ts.map +1 -1
  128. package/lib/browser/window/default-window-service.js +1 -1
  129. package/lib/browser/window/default-window-service.js.map +1 -1
  130. package/lib/browser/window/default-window-service.spec.js +1 -1
  131. package/lib/browser/window/default-window-service.spec.js.map +1 -1
  132. package/lib/browser/window/window-title-service.d.ts +1 -1
  133. package/lib/browser/window/window-title-service.d.ts.map +1 -1
  134. package/lib/browser/window/window-title-service.js +1 -1
  135. package/lib/browser/window/window-title-service.js.map +1 -1
  136. package/lib/{browser → common}/core-preferences.d.ts +2 -1
  137. package/lib/common/core-preferences.d.ts.map +1 -0
  138. package/lib/{browser → common}/core-preferences.js +17 -18
  139. package/lib/common/core-preferences.js.map +1 -0
  140. package/lib/common/index.d.ts +4 -0
  141. package/lib/common/index.d.ts.map +1 -1
  142. package/lib/common/index.js +4 -0
  143. package/lib/common/index.js.map +1 -1
  144. package/lib/common/inversify-utils.d.ts +31 -0
  145. package/lib/common/inversify-utils.d.ts.map +1 -0
  146. package/lib/common/inversify-utils.js +60 -0
  147. package/lib/common/inversify-utils.js.map +1 -0
  148. package/lib/common/json-schema.d.ts +1 -0
  149. package/lib/common/json-schema.d.ts.map +1 -1
  150. package/lib/common/preferences/defaults-preference-provider.d.ts +21 -0
  151. package/lib/common/preferences/defaults-preference-provider.d.ts.map +1 -0
  152. package/lib/common/preferences/defaults-preference-provider.js +99 -0
  153. package/lib/common/preferences/defaults-preference-provider.js.map +1 -0
  154. package/lib/common/preferences/index.d.ts +12 -0
  155. package/lib/common/preferences/index.d.ts.map +1 -0
  156. package/lib/common/preferences/index.js +30 -0
  157. package/lib/common/preferences/index.js.map +1 -0
  158. package/lib/{browser → common}/preferences/injectable-preference-proxy.d.ts +1 -1
  159. package/lib/common/preferences/injectable-preference-proxy.d.ts.map +1 -0
  160. package/lib/{browser → common}/preferences/injectable-preference-proxy.js +2 -2
  161. package/lib/common/preferences/injectable-preference-proxy.js.map +1 -0
  162. package/lib/common/preferences/preference-configurations.d.ts.map +1 -0
  163. package/lib/common/preferences/preference-configurations.js.map +1 -0
  164. package/lib/{browser → common}/preferences/preference-language-override-service.d.ts +4 -13
  165. package/lib/common/preferences/preference-language-override-service.d.ts.map +1 -0
  166. package/lib/{browser → common}/preferences/preference-language-override-service.js +14 -30
  167. package/lib/common/preferences/preference-language-override-service.js.map +1 -0
  168. package/lib/common/preferences/preference-provider-impl.d.ts +52 -0
  169. package/lib/common/preferences/preference-provider-impl.d.ts.map +1 -0
  170. package/lib/{browser/preferences/preference-provider.js → common/preferences/preference-provider-impl.js} +23 -95
  171. package/lib/common/preferences/preference-provider-impl.js.map +1 -0
  172. package/lib/{browser → common}/preferences/preference-provider.d.ts +34 -59
  173. package/lib/common/preferences/preference-provider.d.ts.map +1 -0
  174. package/lib/common/preferences/preference-provider.js +71 -0
  175. package/lib/common/preferences/preference-provider.js.map +1 -0
  176. package/lib/common/preferences/preference-provider.spec.d.ts.map +1 -0
  177. package/lib/{browser → common}/preferences/preference-provider.spec.js +4 -4
  178. package/lib/common/preferences/preference-provider.spec.js.map +1 -0
  179. package/lib/{browser → common}/preferences/preference-proxy.d.ts +2 -2
  180. package/lib/common/preferences/preference-proxy.d.ts.map +1 -0
  181. package/lib/{browser → common}/preferences/preference-proxy.js +10 -10
  182. package/lib/common/preferences/preference-proxy.js.map +1 -0
  183. package/lib/common/preferences/preference-schema-service.d.ts +55 -0
  184. package/lib/common/preferences/preference-schema-service.d.ts.map +1 -0
  185. package/lib/common/preferences/preference-schema-service.js +402 -0
  186. package/lib/common/preferences/preference-schema-service.js.map +1 -0
  187. package/lib/common/preferences/preference-schema.d.ts +145 -43
  188. package/lib/common/preferences/preference-schema.d.ts.map +1 -1
  189. package/lib/common/preferences/preference-schema.js +3 -41
  190. package/lib/common/preferences/preference-schema.js.map +1 -1
  191. package/lib/common/preferences/preference-scope.d.ts +4 -1
  192. package/lib/common/preferences/preference-scope.d.ts.map +1 -1
  193. package/lib/common/preferences/preference-scope.js +5 -14
  194. package/lib/common/preferences/preference-scope.js.map +1 -1
  195. package/lib/{browser → common}/preferences/preference-service.d.ts +9 -10
  196. package/lib/common/preferences/preference-service.d.ts.map +1 -0
  197. package/lib/{browser → common}/preferences/preference-service.js +65 -60
  198. package/lib/common/preferences/preference-service.js.map +1 -0
  199. package/lib/common/supported-encodings.d.ts.map +1 -0
  200. package/lib/common/supported-encodings.js.map +1 -0
  201. package/lib/{browser/tree → common}/tree-preference.d.ts +1 -1
  202. package/lib/common/tree-preference.d.ts.map +1 -0
  203. package/lib/{browser/tree → common}/tree-preference.js +3 -5
  204. package/lib/common/tree-preference.js.map +1 -0
  205. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts +2 -1
  206. package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
  207. package/lib/electron-browser/menu/electron-context-menu-renderer.js +2 -1
  208. package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
  209. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts +1 -2
  210. package/lib/electron-browser/menu/electron-main-menu-factory.d.ts.map +1 -1
  211. package/lib/electron-browser/menu/electron-main-menu-factory.js +1 -1
  212. package/lib/electron-browser/menu/electron-main-menu-factory.js.map +1 -1
  213. package/lib/electron-browser/menu/electron-menu-contribution.d.ts +2 -2
  214. package/lib/electron-browser/menu/electron-menu-contribution.d.ts.map +1 -1
  215. package/lib/electron-browser/menu/electron-menu-contribution.js +6 -6
  216. package/lib/electron-browser/menu/electron-menu-contribution.js.map +1 -1
  217. package/lib/electron-browser/window/electron-window-module.js +1 -1
  218. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  219. package/lib/electron-browser/window/electron-window-service.d.ts +1 -1
  220. package/lib/electron-browser/window/electron-window-service.d.ts.map +1 -1
  221. package/lib/electron-browser/window/electron-window-service.js +1 -1
  222. package/lib/electron-browser/window/electron-window-service.js.map +1 -1
  223. package/lib/{electron-browser/window → electron-common}/electron-window-preferences.d.ts +2 -1
  224. package/lib/electron-common/electron-window-preferences.d.ts.map +1 -0
  225. package/lib/{electron-browser/window → electron-common}/electron-window-preferences.js +7 -7
  226. package/lib/electron-common/electron-window-preferences.js.map +1 -0
  227. package/lib/electron-node/window/electron-window-module.d.ts +4 -0
  228. package/lib/electron-node/window/electron-window-module.d.ts.map +1 -0
  229. package/lib/{browser/preferences/preference-scope.js → electron-node/window/electron-window-module.js} +7 -5
  230. package/lib/electron-node/window/electron-window-module.js.map +1 -0
  231. package/lib/node/backend-application-module.d.ts.map +1 -1
  232. package/lib/node/backend-application-module.js +13 -0
  233. package/lib/node/backend-application-module.js.map +1 -1
  234. package/package.json +6 -5
  235. package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +1 -1
  236. package/src/browser/common-frontend-contribution.ts +2 -3
  237. package/src/browser/encoding-registry.ts +1 -1
  238. package/src/browser/frontend-application-bindings.ts +8 -13
  239. package/src/browser/frontend-application-module.ts +4 -4
  240. package/src/browser/frontend-application.ts +1 -1
  241. package/src/browser/hover-service.ts +1 -2
  242. package/src/browser/icon-theme-service.ts +3 -2
  243. package/src/browser/index.ts +0 -1
  244. package/src/browser/keybinding.spec.ts +1 -1
  245. package/src/browser/keybinding.ts +1 -1
  246. package/src/browser/menu/browser-menu-plugin.ts +4 -4
  247. package/src/browser/open-with-service.ts +1 -1
  248. package/src/browser/opener-service.ts +1 -2
  249. package/src/browser/preferences/frontend-config-preference-contributions.ts +52 -0
  250. package/src/browser/preferences/index.ts +0 -5
  251. package/src/browser/preferences/preference-contribution.ts +16 -398
  252. package/src/browser/preferences/preference-proxy.spec.ts +27 -17
  253. package/src/browser/preferences/preference-schema-provider.spec.ts +25 -37
  254. package/src/browser/preferences/preference-service.spec.ts +32 -56
  255. package/src/browser/preferences/preference-validation-service.spec.ts +27 -19
  256. package/src/browser/preferences/preference-validation-service.ts +60 -41
  257. package/src/browser/preferences/test/mock-preference-provider.ts +2 -5
  258. package/src/browser/preferences/test/mock-preference-proxy.ts +1 -2
  259. package/src/browser/preferences/test/mock-preference-service.ts +1 -4
  260. package/src/browser/quick-input/quick-command-service.ts +1 -1
  261. package/src/browser/request/browser-request-service.ts +4 -4
  262. package/src/browser/shell/application-shell.ts +1 -1
  263. package/src/browser/shell/tab-bars.ts +1 -1
  264. package/src/browser/shell/theia-dock-panel.ts +1 -1
  265. package/src/browser/status-bar/status-bar.tsx +1 -1
  266. package/src/browser/theming.ts +7 -6
  267. package/src/browser/tooltip-service.tsx +1 -1
  268. package/src/browser/tree/index.ts +0 -1
  269. package/src/browser/tree/tree-widget.tsx +4 -4
  270. package/src/browser/window/default-secondary-window-service.ts +1 -2
  271. package/src/browser/window/default-window-service.spec.ts +1 -1
  272. package/src/browser/window/default-window-service.ts +1 -1
  273. package/src/browser/window/window-title-service.ts +1 -1
  274. package/src/{browser → common}/core-preferences.ts +16 -17
  275. package/src/common/index.ts +4 -0
  276. package/src/common/inversify-utils.ts +63 -0
  277. package/src/common/json-schema.ts +1 -0
  278. package/src/common/preferences/defaults-preference-provider.ts +91 -0
  279. package/src/common/preferences/index.ts +27 -0
  280. package/src/{browser → common}/preferences/injectable-preference-proxy.ts +3 -3
  281. package/src/{browser → common}/preferences/preference-language-override-service.ts +12 -29
  282. package/src/common/preferences/preference-provider-impl.ts +165 -0
  283. package/src/{browser → common}/preferences/preference-provider.spec.ts +6 -5
  284. package/src/common/preferences/preference-provider.ts +164 -0
  285. package/src/{browser → common}/preferences/preference-proxy.ts +15 -14
  286. package/src/common/preferences/preference-schema-service.ts +434 -0
  287. package/src/common/preferences/preference-schema.ts +156 -64
  288. package/src/common/preferences/preference-scope.ts +5 -13
  289. package/src/{browser → common}/preferences/preference-service.ts +71 -65
  290. package/src/{browser/tree → common}/tree-preference.ts +2 -4
  291. package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -1
  292. package/src/electron-browser/menu/electron-main-menu-factory.ts +2 -2
  293. package/src/electron-browser/menu/electron-menu-contribution.ts +9 -6
  294. package/src/electron-browser/window/electron-window-module.ts +1 -1
  295. package/src/electron-browser/window/electron-window-service.ts +1 -1
  296. package/src/{electron-browser/window → electron-common}/electron-window-preferences.ts +6 -6
  297. package/src/{browser/preferences/preference-scope.ts → electron-node/window/electron-window-module.ts} +7 -3
  298. package/src/node/backend-application-module.ts +28 -1
  299. package/lib/browser/core-preferences.d.ts.map +0 -1
  300. package/lib/browser/core-preferences.js.map +0 -1
  301. package/lib/browser/preferences/injectable-preference-proxy.d.ts.map +0 -1
  302. package/lib/browser/preferences/injectable-preference-proxy.js.map +0 -1
  303. package/lib/browser/preferences/preference-configurations.d.ts.map +0 -1
  304. package/lib/browser/preferences/preference-configurations.js.map +0 -1
  305. package/lib/browser/preferences/preference-language-override-service.d.ts.map +0 -1
  306. package/lib/browser/preferences/preference-language-override-service.js.map +0 -1
  307. package/lib/browser/preferences/preference-provider.d.ts.map +0 -1
  308. package/lib/browser/preferences/preference-provider.js.map +0 -1
  309. package/lib/browser/preferences/preference-provider.spec.d.ts.map +0 -1
  310. package/lib/browser/preferences/preference-provider.spec.js.map +0 -1
  311. package/lib/browser/preferences/preference-proxy.d.ts.map +0 -1
  312. package/lib/browser/preferences/preference-proxy.js.map +0 -1
  313. package/lib/browser/preferences/preference-scope.d.ts +0 -3
  314. package/lib/browser/preferences/preference-scope.d.ts.map +0 -1
  315. package/lib/browser/preferences/preference-scope.js.map +0 -1
  316. package/lib/browser/preferences/preference-service.d.ts.map +0 -1
  317. package/lib/browser/preferences/preference-service.js.map +0 -1
  318. package/lib/browser/supported-encodings.d.ts.map +0 -1
  319. package/lib/browser/supported-encodings.js.map +0 -1
  320. package/lib/browser/tree/tree-preference.d.ts.map +0 -1
  321. package/lib/browser/tree/tree-preference.js.map +0 -1
  322. package/lib/electron-browser/window/electron-window-preferences.d.ts.map +0 -1
  323. package/lib/electron-browser/window/electron-window-preferences.js.map +0 -1
  324. package/src/browser/preferences/preference-provider.ts +0 -277
  325. /package/lib/{browser → common}/preferences/preference-configurations.d.ts +0 -0
  326. /package/lib/{browser → common}/preferences/preference-configurations.js +0 -0
  327. /package/lib/{browser → common}/preferences/preference-provider.spec.d.ts +0 -0
  328. /package/lib/{browser → common}/supported-encodings.d.ts +0 -0
  329. /package/lib/{browser → common}/supported-encodings.js +0 -0
  330. /package/src/{browser → common}/preferences/preference-configurations.ts +0 -0
  331. /package/src/{browser → common}/supported-encodings.ts +0 -0
@@ -24,14 +24,10 @@ import * as assert from 'assert';
24
24
  import { Container } from 'inversify';
25
25
  import { bindPreferenceService } from '../frontend-application-bindings';
26
26
  import { bindMockPreferenceProviders, MockPreferenceProvider } from './test';
27
- import { PreferenceService, PreferenceServiceImpl } from './preference-service';
28
- import { PreferenceSchemaProvider, PreferenceSchema } from './preference-contribution';
29
- import { PreferenceScope } from './preference-scope';
30
- import { PreferenceProvider } from './preference-provider';
27
+ import { PreferenceScope } from '../../common/preferences/preference-scope';
31
28
  import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
32
- import { PreferenceProxyOptions, PreferenceProxy, PreferenceChangeEvent, createPreferenceProxy } from './preference-proxy';
33
- import { PreferenceProxyFactory } from './injectable-preference-proxy';
34
- import { waitForEvent } from '../../common/promise-util';
29
+ import { PreferenceProxyOptions, PreferenceProxy, PreferenceChangeEvent, createPreferenceProxy } from '../../common/preferences/preference-proxy';
30
+ import { PreferenceProxyFactory } from '../../common/preferences/injectable-preference-proxy';
35
31
 
36
32
  disableJSDOM();
37
33
 
@@ -41,6 +37,10 @@ process.on('unhandledRejection', (reason, promise) => {
41
37
  });
42
38
 
43
39
  import { expect } from 'chai';
40
+ import { PreferenceProvider } from '../../common/preferences/preference-provider';
41
+ import { PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
42
+ import { PreferenceService, PreferenceServiceImpl } from '../../common/preferences';
43
+ import { waitForEvent } from '../../common/promise-util';
44
44
  let testContainer: Container;
45
45
 
46
46
  function createTestContainer(): Container {
@@ -52,7 +52,7 @@ function createTestContainer(): Container {
52
52
 
53
53
  describe('Preference Proxy', () => {
54
54
  let prefService: PreferenceServiceImpl;
55
- let prefSchema: PreferenceSchemaProvider;
55
+ let prefSchema: PreferenceSchemaService;
56
56
 
57
57
  before(() => {
58
58
  disableJSDOM = enableJSDOM();
@@ -65,7 +65,7 @@ describe('Preference Proxy', () => {
65
65
 
66
66
  beforeEach(async () => {
67
67
  testContainer = createTestContainer();
68
- prefSchema = testContainer.get(PreferenceSchemaProvider);
68
+ prefSchema = testContainer.get(PreferenceSchemaService);
69
69
  prefService = testContainer.get<PreferenceService>(PreferenceService) as PreferenceServiceImpl;
70
70
  getProvider(PreferenceScope.User).markReady();
71
71
  getProvider(PreferenceScope.Workspace).markReady();
@@ -100,24 +100,25 @@ describe('Preference Proxy', () => {
100
100
  promisedSchema?: Promise<PreferenceSchema>
101
101
  } {
102
102
  const s: PreferenceSchema = schema || {
103
+ scope: PreferenceScope.Folder,
103
104
  properties: {
104
105
  'my.pref': {
105
106
  type: 'string',
106
- defaultValue: 'foo'
107
+ default: 'foo'
107
108
  }
108
109
  }
109
110
  };
110
111
  if (testOptions.asyncSchema) {
111
112
  const promisedSchema = new Promise<PreferenceSchema>(resolve => setTimeout(() => {
112
- prefSchema.setSchema(s);
113
+ prefSchema.addSchema(s);
113
114
  resolve(s);
114
- }, 1000));
115
+ }, 500));
115
116
  const proxy = testOptions.useFactory
116
117
  ? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(promisedSchema, options)
117
118
  : createPreferenceProxy(prefService, promisedSchema, options);
118
119
  return { proxy, promisedSchema };
119
120
  } else {
120
- prefSchema.setSchema(s);
121
+ prefSchema.addSchema(s);
121
122
  const proxy = testOptions.useFactory
122
123
  ? testContainer.get<PreferenceProxyFactory>(PreferenceProxyFactory)(s, options)
123
124
  : createPreferenceProxy(prefService, s, options);
@@ -141,6 +142,7 @@ describe('Preference Proxy', () => {
141
142
  expect(Object.keys(proxy).length).to.equal(0);
142
143
  // Once the schema is resolved, operations should be working:
143
144
  await promisedSchema!;
145
+ changed = 0;
144
146
  expect(proxy['my.pref']).to.equal('bar');
145
147
  expect(Object.keys(proxy)).members(['my.pref']);
146
148
  await getProvider(PreferenceScope.User).setPreference('my.pref', 'fizz');
@@ -185,6 +187,7 @@ describe('Preference Proxy', () => {
185
187
  if (promisedSchema) {
186
188
  await promisedSchema;
187
189
  }
190
+ await waitForEvent(prefService.onPreferenceChanged, 500);
188
191
  let theChange: PreferenceChangeEvent<{ [key: string]: any }>;
189
192
  proxy.onPreferenceChanged(change => {
190
193
  expect(theChange).to.equal(undefined);
@@ -208,10 +211,11 @@ describe('Preference Proxy', () => {
208
211
 
209
212
  it("should not forward changes that don't match the proxy's language override", async () => {
210
213
  const { proxy, promisedSchema } = getProxy({
214
+ scope: PreferenceScope.User,
211
215
  properties: {
212
216
  'my.pref': {
213
217
  type: 'string',
214
- defaultValue: 'foo',
218
+ default: 'foo',
215
219
  overridable: true,
216
220
  }
217
221
  }
@@ -222,7 +226,8 @@ describe('Preference Proxy', () => {
222
226
  prefSchema.registerOverrideIdentifier('swift');
223
227
  prefSchema.registerOverrideIdentifier('typescript');
224
228
  // The service will emit events related to updating the overrides - those are irrelevant
225
- await waitForEvent(prefService.onPreferencesChanged, 500);
229
+ await waitForEvent(prefService.onPreferenceChanged, 500);
230
+
226
231
  prefService.onPreferencesChanged(() => changeEventsEmittedByService++);
227
232
  proxy.onPreferenceChanged(() => changeEventsEmittedByProxy++);
228
233
  await prefService.set(prefService.overridePreferenceName({ overrideIdentifier: 'swift', preferenceName: 'my.pref' }), 'boo', PreferenceScope.User);
@@ -241,10 +246,11 @@ describe('Preference Proxy', () => {
241
246
 
242
247
  it('`affects` should only return `true` if the language overrides match', async () => {
243
248
  const { proxy, promisedSchema } = getProxy({
249
+ scope: PreferenceScope.User,
244
250
  properties: {
245
251
  'my.pref': {
246
252
  type: 'string',
247
- defaultValue: 'foo',
253
+ default: 'foo',
248
254
  overridable: true,
249
255
  }
250
256
  }
@@ -268,6 +274,7 @@ describe('Preference Proxy', () => {
268
274
 
269
275
  it('toJSON with deep', async () => {
270
276
  const { proxy, promisedSchema } = getProxy({
277
+ scope: PreferenceScope.Default,
271
278
  properties: {
272
279
  'foo.baz': {
273
280
  type: 'number',
@@ -290,7 +297,9 @@ describe('Preference Proxy', () => {
290
297
  if (promisedSchema) {
291
298
  await promisedSchema;
292
299
  }
293
- assert.deepStrictEqual(JSON.stringify(proxy, undefined, 2), JSON.stringify({
300
+
301
+ const result = JSON.stringify(proxy, undefined, 2);
302
+ assert.equal(result, JSON.stringify({
294
303
  foo: {
295
304
  baz: 4,
296
305
  bar: {
@@ -304,6 +313,7 @@ describe('Preference Proxy', () => {
304
313
 
305
314
  it('get nested default', async () => {
306
315
  const { proxy, promisedSchema } = getProxy({
316
+ scope: PreferenceScope.Default,
307
317
  properties: {
308
318
  'foo': {
309
319
  'anyOf': [
@@ -21,8 +21,9 @@ let disableJSDOM = enableJSDOM();
21
21
  import * as assert from 'assert';
22
22
  import { Container } from 'inversify';
23
23
  import { bindPreferenceService } from '../frontend-application-bindings';
24
- import { PreferenceSchemaProperties, PreferenceSchemaProvider } from './preference-contribution';
25
24
  import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
25
+ import { IndexedAccess, PreferenceDataProperty, PreferenceSchemaService } from '../../common/preferences/preference-schema';
26
+ import { PreferenceProvider, PreferenceProviderProvider, PreferenceScope } from '../../common/preferences';
26
27
 
27
28
  disableJSDOM();
28
29
 
@@ -40,14 +41,14 @@ function createTestContainer(): Container {
40
41
  return result;
41
42
  }
42
43
 
43
- const EDITOR_FONT_SIZE_PROPERTIES: PreferenceSchemaProperties = {
44
+ const EDITOR_FONT_SIZE_PROPERTIES: IndexedAccess<PreferenceDataProperty> = {
44
45
  'editor.fontSize': {
45
46
  type: 'number',
46
47
  default: 14,
47
48
  overridable: true
48
49
  },
49
50
  };
50
- const EDITOR_INSERT_SPACES_PROPERTIES: PreferenceSchemaProperties = {
51
+ const EDITOR_INSERT_SPACES_PROPERTIES: IndexedAccess<PreferenceDataProperty> = {
51
52
  'editor.insertSpaces': {
52
53
  type: 'boolean',
53
54
  default: true,
@@ -56,7 +57,8 @@ const EDITOR_INSERT_SPACES_PROPERTIES: PreferenceSchemaProperties = {
56
57
  };
57
58
 
58
59
  describe('Preference Schema Provider', () => {
59
- let prefSchema: PreferenceSchemaProvider;
60
+ let prefSchema: PreferenceSchemaService;
61
+ let prefDefaults: PreferenceProvider;
60
62
 
61
63
  before(() => {
62
64
  disableJSDOM = enableJSDOM();
@@ -74,57 +76,43 @@ describe('Preference Schema Provider', () => {
74
76
 
75
77
  beforeEach(async () => {
76
78
  testContainer = createTestContainer();
77
- prefSchema = testContainer.get(PreferenceSchemaProvider);
79
+ prefSchema = testContainer.get(PreferenceSchemaService);
80
+ await prefSchema.ready;
81
+ prefSchema.registerOverrideIdentifier('typescript');
82
+ const providerProvider: PreferenceProviderProvider = testContainer.get(PreferenceProviderProvider);
83
+ prefDefaults = providerProvider(PreferenceScope.Default)!;
84
+ await prefDefaults.ready;
78
85
  });
79
86
 
80
87
  it('Should load all preferences specified in the frontend config.', () => {
81
- assert.strictEqual(prefSchema.get('editor.fontSize'), 20);
82
- assert.strictEqual(prefSchema.get('[typescript].editor.fontSize'), 24);
88
+ assert.strictEqual(prefDefaults.get('editor.fontSize'), 20);
89
+ assert.strictEqual(prefDefaults.get('[typescript].editor.fontSize'), 24);
83
90
  });
84
91
 
85
92
  it('Should favor the default specified in the package.json over a default registered by a schema', () => {
86
- prefSchema.setSchema({
93
+ prefSchema.addSchema({
94
+ scope: PreferenceScope.User,
87
95
  properties: {
88
96
  ...EDITOR_FONT_SIZE_PROPERTIES
89
97
  }
90
98
  });
91
99
 
92
- assert.strictEqual(prefSchema.get('editor.fontSize'), 20);
100
+ assert.strictEqual(prefDefaults.get('editor.fontSize'), 20);
93
101
  });
94
102
 
95
103
  it('Should merge language-specific overrides from schemas and the package.json', () => {
96
- prefSchema.setSchema({
104
+ prefSchema.addSchema({
97
105
  properties: {
98
106
  ...EDITOR_FONT_SIZE_PROPERTIES,
99
107
  ...EDITOR_INSERT_SPACES_PROPERTIES,
100
- '[typescript]': {
101
- type: 'object',
102
- default: {
103
- 'editor.insertSpaces': false
104
- }
105
- }
106
- }
108
+ },
109
+ scope: PreferenceScope.Default
107
110
  });
108
- assert.strictEqual(prefSchema.get('editor.insertSpaces'), true);
109
- assert.strictEqual(prefSchema.get('[typescript].editor.insertSpaces'), false);
110
- assert.strictEqual(prefSchema.get('[typescript].editor.fontSize'), 24);
111
- });
112
111
 
113
- it('Should favor package.json specifications in the merge process', () => {
114
- prefSchema.setSchema({
115
- properties: {
116
- ...EDITOR_FONT_SIZE_PROPERTIES,
117
- ...EDITOR_INSERT_SPACES_PROPERTIES,
118
- '[typescript]': {
119
- type: 'object',
120
- default: {
121
- 'editor.insertSpaces': false,
122
- 'editor.fontSize': 36,
123
- }
124
- }
125
- }
126
- });
127
- assert.strictEqual(prefSchema.get('[typescript].editor.insertSpaces'), false);
128
- assert.strictEqual(prefSchema.get('[typescript].editor.fontSize'), 24);
112
+ prefSchema.registerOverride('editor.insertSpaces', 'typescript', false);
113
+
114
+ assert.strictEqual(prefDefaults.get('editor.insertSpaces'), true);
115
+ assert.strictEqual(prefDefaults.get('[typescript].editor.insertSpaces'), false);
116
+ assert.strictEqual(prefDefaults.get('[typescript].editor.fontSize'), 24);
129
117
  });
130
118
  });
@@ -22,14 +22,12 @@ let disableJSDOM = enableJSDOM();
22
22
 
23
23
  import * as assert from 'assert';
24
24
  import { Container } from 'inversify';
25
- import { bindPreferenceService } from '../frontend-application-bindings';
26
- import { bindMockPreferenceProviders, MockPreferenceProvider } from './test';
27
- import { PreferenceService, PreferenceServiceImpl, PreferenceChange, PreferenceChanges } from './preference-service';
28
- import { PreferenceSchemaProvider, PreferenceSchema } from './preference-contribution';
29
- import { PreferenceScope } from './preference-scope';
30
- import { PreferenceProvider } from './preference-provider';
25
+ import { PreferenceChange, PreferenceChanges, PreferenceProvider, PreferenceScope, PreferenceService, PreferenceServiceImpl } from '../../common/preferences';
26
+ import { PreferenceSchema, PreferenceSchemaService } from '../../common/preferences/preference-schema';
31
27
  import { FrontendApplicationConfigProvider } from '../frontend-application-config-provider';
32
- import { createPreferenceProxy, PreferenceChangeEvent } from './preference-proxy';
28
+ import { bindMockPreferenceProviders, MockPreferenceProvider } from './test';
29
+ import { PreferenceChangeEvent, createPreferenceProxy } from '../../common/preferences/preference-proxy';
30
+ import { bindPreferenceService } from '../frontend-application-bindings';
33
31
 
34
32
  disableJSDOM();
35
33
 
@@ -50,7 +48,7 @@ function createTestContainer(): Container {
50
48
 
51
49
  describe('Preference Service', () => {
52
50
  let prefService: PreferenceServiceImpl;
53
- let prefSchema: PreferenceSchemaProvider;
51
+ let prefSchema: PreferenceSchemaService;
54
52
 
55
53
  before(() => {
56
54
  disableJSDOM = enableJSDOM();
@@ -63,7 +61,7 @@ describe('Preference Service', () => {
63
61
 
64
62
  beforeEach(async () => {
65
63
  testContainer = createTestContainer();
66
- prefSchema = testContainer.get(PreferenceSchemaProvider);
64
+ prefSchema = testContainer.get(PreferenceSchemaService);
67
65
  prefService = testContainer.get<PreferenceService>(PreferenceService) as PreferenceServiceImpl;
68
66
  getProvider(PreferenceScope.User).markReady();
69
67
  getProvider(PreferenceScope.Workspace).markReady();
@@ -85,11 +83,11 @@ describe('Preference Service', () => {
85
83
  }
86
84
 
87
85
  it('should return the preference from the more specific scope (user > workspace)', () => {
88
- prefSchema.setSchema({
86
+ prefSchema.addSchema({
87
+ scope: PreferenceScope.Folder,
89
88
  properties: {
90
89
  'test.number': {
91
90
  type: 'number',
92
- scope: 'resource'
93
91
  }
94
92
  }
95
93
  });
@@ -109,14 +107,14 @@ describe('Preference Service', () => {
109
107
  });
110
108
 
111
109
  it('should throw a TypeError if the preference (reference object) is modified', () => {
112
- prefSchema.setSchema({
110
+ prefSchema.addSchema({
111
+ scope: PreferenceScope.Folder,
113
112
  properties: {
114
113
  'test.immutable': {
115
114
  type: 'array',
116
115
  items: {
117
116
  type: 'string'
118
117
  },
119
- scope: 'resource'
120
118
  }
121
119
  }
122
120
  });
@@ -132,11 +130,11 @@ describe('Preference Service', () => {
132
130
  });
133
131
 
134
132
  it('should still report the more specific preference even though the less specific one changed', () => {
135
- prefSchema.setSchema({
133
+ prefSchema.addSchema({
134
+ scope: PreferenceScope.Folder,
136
135
  properties: {
137
136
  'test.number': {
138
137
  type: 'number',
139
- scope: 'resource'
140
138
  }
141
139
  }
142
140
  });
@@ -155,21 +153,18 @@ describe('Preference Service', () => {
155
153
  prefService.onPreferenceChanged(event => events.push(event));
156
154
  prefSchema.registerOverrideIdentifier('go');
157
155
 
158
- const toUnset = prefSchema.setSchema({
156
+ const toUnset = prefSchema.addSchema({
157
+ scope: PreferenceScope.User,
159
158
  properties: {
160
159
  'editor.insertSpaces': {
161
160
  type: 'boolean',
162
161
  default: true,
163
162
  overridable: true
164
- },
165
- '[go]': {
166
- type: 'object',
167
- default: {
168
- 'editor.insertSpaces': false
169
- }
170
163
  }
171
164
  }
172
165
  });
166
+
167
+ prefSchema.registerOverride('editor.insertSpaces', 'go', false);
173
168
  assert.deepStrictEqual([], events.map(e => ({
174
169
  preferenceName: e.preferenceName,
175
170
  newValue: e.newValue,
@@ -185,8 +180,8 @@ describe('Preference Service', () => {
185
180
  newValue: e.newValue,
186
181
  oldValue: e.oldValue
187
182
  })), 'events after unset in the same tick');
188
- assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after');
189
- assert.strictEqual(prefService.get('[go].editor.insertSpaces'), undefined, 'get after overridden');
183
+ assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after'); // removing the schema does not removes the default value
184
+ assert.strictEqual(prefService.get('[go].editor.insertSpaces'), false, 'get after overridden'); // but not the override
190
185
 
191
186
  assert.deepStrictEqual([], events.map(e => ({
192
187
  preferenceName: e.preferenceName,
@@ -199,21 +194,17 @@ describe('Preference Service', () => {
199
194
  prefSchema.registerOverrideIdentifier('go');
200
195
 
201
196
  let pending = new Promise<PreferenceChanges>(resolve => prefService.onPreferencesChanged(resolve));
202
- const toUnset = prefSchema.setSchema({
197
+ const toUnset = prefSchema.addSchema({
198
+ scope: PreferenceScope.User,
203
199
  properties: {
204
200
  'editor.insertSpaces': {
205
201
  type: 'boolean',
206
202
  default: true,
207
203
  overridable: true
208
- },
209
- '[go]': {
210
- type: 'object',
211
- default: {
212
- 'editor.insertSpaces': false
213
- }
214
204
  }
215
205
  }
216
206
  });
207
+ prefSchema.registerOverride('editor.insertSpaces', 'go', false);
217
208
  let changes = await pending;
218
209
 
219
210
  assert.deepStrictEqual([{
@@ -248,20 +239,21 @@ describe('Preference Service', () => {
248
239
  return { preferenceName, newValue, oldValue };
249
240
  }), 'events after');
250
241
  assert.strictEqual(prefService.get('editor.insertSpaces'), undefined, 'get after');
251
- assert.strictEqual(prefService.get('[go].editor.insertSpaces'), undefined, 'get after overridden');
242
+ assert.strictEqual(prefService.get('[go].editor.insertSpaces'), false, 'get after overridden');
252
243
  });
253
244
 
254
245
  function prepareServices(options?: { schema: PreferenceSchema }): {
255
246
  preferences: PreferenceServiceImpl;
256
- schema: PreferenceSchemaProvider;
247
+ schema: PreferenceSchemaService;
257
248
  } {
258
- prefSchema.setSchema(options && options.schema || {
249
+ prefSchema.addSchema(options && options.schema || {
250
+ scope: PreferenceScope.User,
259
251
  properties: {
260
252
  'editor.tabSize': {
261
253
  type: 'number',
254
+ default: 4,
262
255
  description: '',
263
256
  overridable: true,
264
- default: 4
265
257
  }
266
258
  }
267
259
  });
@@ -355,15 +347,10 @@ describe('Preference Service', () => {
355
347
  describe('overridden preferences', () => {
356
348
 
357
349
  it('get #0', () => {
358
- const { preferences, schema } = prepareServices();
350
+ const { preferences } = prepareServices();
359
351
 
360
352
  preferences.set('[json].editor.tabSize', 2, PreferenceScope.User);
361
353
 
362
- expect(preferences.get('editor.tabSize')).to.equal(4);
363
- expect(preferences.get('[json].editor.tabSize')).to.equal(undefined);
364
-
365
- schema.registerOverrideIdentifier('json');
366
-
367
354
  expect(preferences.get('editor.tabSize')).to.equal(4);
368
355
  expect(preferences.get('[json].editor.tabSize')).to.equal(2);
369
356
  });
@@ -532,7 +519,7 @@ describe('Preference Service', () => {
532
519
  await preferences.set('editor.tabSize', 3, PreferenceScope.User);
533
520
 
534
521
  const events: PreferenceChangeEvent<{ [key: string]: any }>[] = [];
535
- const proxy = createPreferenceProxy<{ [key: string]: any }>(preferences, schema.getCombinedSchema(), { overrideIdentifier: 'json' });
522
+ const proxy = createPreferenceProxy<{ [key: string]: any }>(preferences, schema.getJSONSchema(PreferenceScope.Folder), { overrideIdentifier: 'json' });
536
523
  proxy.onPreferenceChanged(event => events.push(event));
537
524
 
538
525
  await preferences.set('[javascript].editor.tabSize', 4, PreferenceScope.User);
@@ -567,6 +554,7 @@ describe('Preference Service', () => {
567
554
  it('defaultOverrides [go].editor.formatOnSave', () => {
568
555
  const { preferences, schema } = prepareServices({
569
556
  schema: {
557
+ scope: PreferenceScope.Folder,
570
558
  properties: {
571
559
  'editor.insertSpaces': {
572
560
  type: 'boolean',
@@ -588,20 +576,8 @@ describe('Preference Service', () => {
588
576
  assert.strictEqual(undefined, preferences.get('[go].editor.formatOnSave'));
589
577
 
590
578
  schema.registerOverrideIdentifier('go');
591
- schema.setSchema({
592
- id: 'defaultOverrides',
593
- title: 'Default Configuration Overrides',
594
- properties: {
595
- '[go]': {
596
- type: 'object',
597
- default: {
598
- 'editor.insertSpaces': false,
599
- 'editor.formatOnSave': true
600
- },
601
- description: 'Configure editor settings to be overridden for go language.'
602
- }
603
- }
604
- });
579
+ prefSchema.registerOverride('editor.insertSpaces', 'go', false);
580
+ prefSchema.registerOverride('editor.formatOnSave', 'go', true);
605
581
 
606
582
  assert.strictEqual(true, preferences.get('editor.insertSpaces'));
607
583
  assert.strictEqual(false, preferences.get('[go].editor.insertSpaces'));
@@ -16,20 +16,28 @@
16
16
 
17
17
  import { Container } from 'inversify';
18
18
  import { PreferenceValidationService } from './preference-validation-service';
19
- import { PreferenceItem, PreferenceSchemaProvider } from './preference-contribution';
20
- import { PreferenceLanguageOverrideService } from './preference-language-override-service';
21
19
  import * as assert from 'assert';
22
20
  import { JSONValue } from '@lumino/coreutils';
23
21
  import { IJSONSchema, JsonType } from '../../common/json-schema';
22
+ import {
23
+ DefaultsPreferenceProvider, Disposable, PreferenceDataProperty, PreferenceProvider,
24
+ PreferenceSchemaService, PreferenceSchemaServiceImpl, PreferenceScope
25
+ } from '../../common';
26
+ import { PreferenceLanguageOverrideService } from '../../common/preferences/preference-language-override-service';
24
27
 
25
28
  /* eslint-disable no-null/no-null */
26
29
 
27
30
  describe('Preference Validation Service', () => {
28
31
  const container = new Container();
29
- container.bind(PreferenceSchemaProvider).toConstantValue({ getDefaultValue: PreferenceSchemaProvider.prototype.getDefaultValue } as PreferenceSchemaProvider);
30
- container.bind(PreferenceLanguageOverrideService).toSelf().inSingletonScope();
32
+ container.bind(PreferenceSchemaService).toConstantValue({
33
+ getDefaultValue: PreferenceSchemaServiceImpl.prototype.getDefaultValue,
34
+ onDidChangeDefaultValue: () => Disposable.NULL
35
+ } as unknown as PreferenceSchemaService);
36
+ container.bind(PreferenceLanguageOverrideService).to(PreferenceLanguageOverrideService).inSingletonScope();
37
+ container.bind(PreferenceProvider).to(DefaultsPreferenceProvider).inSingletonScope().whenTargetNamed(PreferenceScope.Default);
38
+
31
39
  const validator = container.resolve(PreferenceValidationService);
32
- const validateBySchema: (value: JSONValue, schema: PreferenceItem) => JSONValue = validator.validateBySchema.bind(validator, 'dummy');
40
+ const validateBySchema: (value: JSONValue, schema: PreferenceDataProperty) => JSONValue = validator.validateBySchema.bind(validator, 'dummy');
33
41
 
34
42
  describe('should validate strings', () => {
35
43
  const expected = 'expected';
@@ -137,7 +145,7 @@ describe('Preference Validation Service', () => {
137
145
  assert.strictEqual(actual, expected);
138
146
  });
139
147
  it('bad value -> should return default value', () => {
140
- const actual = validateBySchema('not-in-enum', { enum: options, defaultValue });
148
+ const actual = validateBySchema('not-in-enum', { enum: options, default: defaultValue });
141
149
  assert.strictEqual(actual, defaultValue);
142
150
  });
143
151
  it('bad value -> should return first value if no default or bad default', () => {
@@ -155,29 +163,29 @@ describe('Preference Validation Service', () => {
155
163
  assert.deepStrictEqual(validateBySchema(3, schema), {});
156
164
  });
157
165
  it('should reject objects that are missing required fields', () => {
158
- const schema: PreferenceItem = { type: 'object', properties: { 'required': { type: 'string' }, 'not-required': { type: 'number' } }, required: ['required'] };
166
+ const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' }, 'not-required': { type: 'number' } }, required: ['required'] };
159
167
  assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, schema), {});
160
168
  const defaultValue = { required: 'present' };
161
- assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, { ...schema, defaultValue }), defaultValue);
169
+ assert.deepStrictEqual(validateBySchema({ 'not-required': 3 }, { ...schema, default: defaultValue }), defaultValue);
162
170
  });
163
171
  it('should reject objects that have impermissible extra properties', () => {
164
- const schema: PreferenceItem = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: false };
172
+ const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: false };
165
173
  assert.deepStrictEqual(validateBySchema({ 'required': 'hello', 'not-required': 3 }, schema), {});
166
174
  });
167
175
  it('should accept objects with extra properties if extra properties are not forbidden', () => {
168
176
  const input = { 'required': 'hello', 'not-forbidden': 3 };
169
- const schema: PreferenceItem = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: true };
177
+ const schema: PreferenceDataProperty = { type: 'object', properties: { 'required': { type: 'string' } }, additionalProperties: true };
170
178
  assert.deepStrictEqual(validateBySchema(input, schema), input);
171
179
  assert.deepStrictEqual(validateBySchema(input, { ...schema, additionalProperties: undefined }), input);
172
180
  });
173
181
  it("should reject objects with properties that violate the property's rules", () => {
174
182
  const input = { required: 'not-a-number!' };
175
- const schema: PreferenceItem = { type: 'object', properties: { required: { type: 'number' } } };
183
+ const schema: PreferenceDataProperty = { type: 'object', properties: { required: { type: 'number' } } };
176
184
  assert.deepStrictEqual(validateBySchema(input, schema), {});
177
185
  });
178
186
  it('should reject objects with extra properties that violate the extra property rules', () => {
179
187
  const input = { required: 3, 'not-required': 'not-a-number!' };
180
- const schema: PreferenceItem = { type: 'object', properties: { required: { type: 'number' } }, additionalProperties: { type: 'number' } };
188
+ const schema: PreferenceDataProperty = { type: 'object', properties: { required: { type: 'number' } }, additionalProperties: { type: 'number' } };
181
189
  assert.deepStrictEqual(validateBySchema(input, schema), {});
182
190
  });
183
191
  });
@@ -196,7 +204,7 @@ describe('Preference Validation Service', () => {
196
204
  });
197
205
  });
198
206
  describe('should validate tuples', () => {
199
- const schema: PreferenceItem & { items: IJSONSchema[] } = {
207
+ const schema: PreferenceDataProperty & { items: IJSONSchema[] } = {
200
208
  'type': 'array',
201
209
  'items': [{
202
210
  'type': 'number',
@@ -218,7 +226,7 @@ describe('Preference Validation Service', () => {
218
226
  assert.strictEqual(validateBySchema([2, ['second fails']], withDefault), defaultValue);
219
227
  });
220
228
  it('bad input -> in the absence of a default, it should return any good values or the default for each subschema', () => {
221
- const withSubDefault: PreferenceItem = { ...schema, items: [{ type: 'string', default: 'cool' }, ...schema.items] };
229
+ const withSubDefault: PreferenceDataProperty = { ...schema, items: [{ type: 'string', default: 'cool' }, ...schema.items] };
222
230
  assert.deepStrictEqual(validateBySchema('not an array', withSubDefault), ['cool', 0, '']);
223
231
  assert.deepStrictEqual(validateBySchema([2, 8, null], withSubDefault), ['cool', 8, '']);
224
232
  });
@@ -252,7 +260,7 @@ describe('Preference Validation Service', () => {
252
260
  });
253
261
  });
254
262
  describe('should validate anyOfs', () => {
255
- const schema: PreferenceItem = { anyOf: [{ type: 'number', minimum: 1 }, { type: 'array', items: { type: 'string' } }], default: 5 };
263
+ const schema: PreferenceDataProperty = { anyOf: [{ type: 'number', minimum: 1 }, { type: 'array', items: { type: 'string' } }], default: 5 };
256
264
  it('good input -> returns same value', () => {
257
265
  assert.strictEqual(validateBySchema(3, schema), 3);
258
266
  const goodArray = ['a string', 'here too'];
@@ -268,7 +276,7 @@ describe('Preference Validation Service', () => {
268
276
  });
269
277
  describe('should validate oneOfs', () => {
270
278
  // Between 4 and 6 should be rejected
271
- const schema: PreferenceItem = { oneOf: [{ type: 'number', minimum: 1, maximum: 6 }, { type: 'number', minimum: 4, maximum: 10 }], default: 8 };
279
+ const schema: PreferenceDataProperty = { oneOf: [{ type: 'number', minimum: 1, maximum: 6 }, { type: 'number', minimum: 4, maximum: 10 }], default: 8 };
272
280
  it('good input -> returns same value', () => {
273
281
  assert.strictEqual(validateBySchema(2, schema), 2);
274
282
  assert.strictEqual(validateBySchema(7, schema), 7);
@@ -281,7 +289,7 @@ describe('Preference Validation Service', () => {
281
289
  });
282
290
  });
283
291
  describe('should validate consts', () => {
284
- const schema: PreferenceItem = { const: { 'the only': 'possible value' }, default: 'ignore-the-default' };
292
+ const schema: PreferenceDataProperty = { const: { 'the only': 'possible value' }, default: 'ignore-the-default' };
285
293
  const goodValue = { 'the only': 'possible value' };
286
294
  it('good input -> returns same value', () => {
287
295
  assert.strictEqual(validateBySchema(goodValue, schema), goodValue);
@@ -292,7 +300,7 @@ describe('Preference Validation Service', () => {
292
300
  });
293
301
  });
294
302
  describe('should maintain triple equality for valid object types', () => {
295
- const arraySchema: PreferenceItem = { type: 'array', items: { type: 'string' } };
303
+ const arraySchema: PreferenceDataProperty = { type: 'array', items: { type: 'string' } };
296
304
  it('maintains triple equality for arrays', () => {
297
305
  const input = ['one-string', 'two-string'];
298
306
  assert(validateBySchema(input, arraySchema) === input);
@@ -302,7 +310,7 @@ describe('Preference Validation Service', () => {
302
310
  assert.notStrictEqual(validateBySchema(input, arraySchema), input);
303
311
  });
304
312
  it('maintains triple equality for objects', () => {
305
- const schema: PreferenceItem = {
313
+ const schema: PreferenceDataProperty = {
306
314
  'type': 'object',
307
315
  properties: {
308
316
  primitive: { type: 'string' },