waybetter 0.1.1 → 0.7.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 (537) hide show
  1. package/README.md +139 -6
  2. package/bin/waybetter.mjs +43 -0
  3. package/build/runtime.mjs +105 -0
  4. package/cli/buildenv.mjs +130 -0
  5. package/cli/dev.mjs +97 -0
  6. package/cli/i18n.mjs +382 -0
  7. package/cli/manifests.mjs +383 -0
  8. package/cli/release.mjs +437 -0
  9. package/cli/releasecheck.mjs +15 -0
  10. package/cli/remote.mjs +260 -0
  11. package/cli/store.mjs +378 -0
  12. package/cli/strings.mjs +123 -0
  13. package/dist/runtime/column.d.ts +93 -0
  14. package/dist/runtime/column.js +451 -0
  15. package/dist/runtime/column.js.map +1 -0
  16. package/dist/runtime/commandReport.d.ts +19 -0
  17. package/dist/runtime/commandReport.js +47 -0
  18. package/dist/runtime/commandReport.js.map +1 -0
  19. package/dist/runtime/commands.d.ts +72 -0
  20. package/dist/runtime/commands.js +214 -0
  21. package/dist/runtime/commands.js.map +1 -0
  22. package/dist/runtime/devErrors.d.ts +16 -0
  23. package/dist/runtime/devErrors.js +30 -0
  24. package/dist/runtime/devErrors.js.map +1 -0
  25. package/dist/runtime/domHub.d.ts +21 -0
  26. package/dist/runtime/domHub.js +139 -4
  27. package/dist/runtime/domHub.js.map +1 -1
  28. package/dist/runtime/featureModules.d.ts +157 -0
  29. package/dist/runtime/featureModules.js +484 -0
  30. package/dist/runtime/featureModules.js.map +1 -0
  31. package/dist/runtime/featureTable.d.ts +144 -0
  32. package/dist/runtime/featureTable.js +223 -0
  33. package/dist/runtime/featureTable.js.map +1 -0
  34. package/dist/runtime/fonts.d.ts +22 -0
  35. package/dist/runtime/fonts.js +72 -0
  36. package/dist/runtime/fonts.js.map +1 -0
  37. package/dist/runtime/i18n.d.ts +138 -0
  38. package/dist/runtime/i18n.js +614 -0
  39. package/dist/runtime/i18n.js.map +1 -0
  40. package/dist/runtime/i18nCheck.d.ts +30 -0
  41. package/dist/runtime/i18nCheck.js +224 -0
  42. package/dist/runtime/i18nCheck.js.map +1 -0
  43. package/dist/runtime/pageLang.d.ts +8 -0
  44. package/dist/runtime/pageLang.js +64 -0
  45. package/dist/runtime/pageLang.js.map +1 -0
  46. package/dist/runtime/pageStrings.d.ts +35 -0
  47. package/dist/runtime/pageStrings.js +76 -0
  48. package/dist/runtime/pageStrings.js.map +1 -0
  49. package/dist/runtime/panelButton.d.ts +33 -0
  50. package/dist/runtime/panelButton.js +83 -0
  51. package/dist/runtime/panelButton.js.map +1 -0
  52. package/dist/runtime/permissions.d.ts +47 -0
  53. package/dist/runtime/permissions.js +141 -0
  54. package/dist/runtime/permissions.js.map +1 -0
  55. package/dist/runtime/pluginApi.d.ts +51 -2
  56. package/dist/runtime/pluginApi.js +137 -22
  57. package/dist/runtime/pluginApi.js.map +1 -1
  58. package/dist/runtime/pluginI18n.d.ts +29 -0
  59. package/dist/runtime/pluginI18n.js +119 -0
  60. package/dist/runtime/pluginI18n.js.map +1 -0
  61. package/dist/runtime/settingsForm.d.ts +66 -0
  62. package/dist/runtime/settingsForm.js +114 -0
  63. package/dist/runtime/settingsForm.js.map +1 -0
  64. package/dist/runtime/site.d.ts +5 -0
  65. package/dist/runtime/site.js +1 -1
  66. package/dist/runtime/site.js.map +1 -1
  67. package/dist/runtime/siteRuntime.d.ts +144 -0
  68. package/dist/runtime/siteRuntime.js +175 -0
  69. package/dist/runtime/siteRuntime.js.map +1 -0
  70. package/dist/runtime/stringPackHook.d.ts +84 -0
  71. package/dist/runtime/stringPackHook.js +220 -0
  72. package/dist/runtime/stringPackHook.js.map +1 -0
  73. package/dist/runtime/stringPackTranslate.d.ts +61 -0
  74. package/dist/runtime/stringPackTranslate.js +267 -0
  75. package/dist/runtime/stringPackTranslate.js.map +1 -0
  76. package/dist/runtime/stringPacks.d.ts +248 -0
  77. package/dist/runtime/stringPacks.js +610 -0
  78. package/dist/runtime/stringPacks.js.map +1 -0
  79. package/dist/runtime/styles.d.ts +15 -0
  80. package/dist/runtime/styles.js +81 -0
  81. package/dist/runtime/styles.js.map +1 -0
  82. package/dist/runtime/textNet.d.ts +15 -0
  83. package/dist/runtime/textNet.js +131 -0
  84. package/dist/runtime/textNet.js.map +1 -0
  85. package/dist/runtime/themeApi.d.ts +121 -0
  86. package/dist/runtime/themeApi.js +220 -0
  87. package/dist/runtime/themeApi.js.map +1 -0
  88. package/dist/runtime/themeBar.d.ts +28 -0
  89. package/dist/runtime/themeBar.js +82 -0
  90. package/dist/runtime/themeBar.js.map +1 -0
  91. package/dist/runtime/themeChoice.d.ts +52 -0
  92. package/dist/runtime/themeChoice.js +69 -0
  93. package/dist/runtime/themeChoice.js.map +1 -0
  94. package/dist/runtime/themeComponents.d.ts +435 -0
  95. package/dist/runtime/themeComponents.js +476 -0
  96. package/dist/runtime/themeComponents.js.map +1 -0
  97. package/dist/runtime/themeDecor.d.ts +73 -0
  98. package/dist/runtime/themeDecor.js +133 -0
  99. package/dist/runtime/themeDecor.js.map +1 -0
  100. package/dist/runtime/themeDerive.d.ts +69 -0
  101. package/dist/runtime/themeDerive.js +117 -0
  102. package/dist/runtime/themeDerive.js.map +1 -0
  103. package/dist/runtime/themeDoctor.d.ts +52 -0
  104. package/dist/runtime/themeDoctor.js +112 -0
  105. package/dist/runtime/themeDoctor.js.map +1 -0
  106. package/dist/runtime/themeGuards.d.ts +60 -0
  107. package/dist/runtime/themeGuards.js +235 -0
  108. package/dist/runtime/themeGuards.js.map +1 -0
  109. package/dist/runtime/themeIcons.d.ts +130 -0
  110. package/dist/runtime/themeIcons.js +271 -0
  111. package/dist/runtime/themeIcons.js.map +1 -0
  112. package/dist/runtime/themeInk.d.ts +37 -0
  113. package/dist/runtime/themeInk.js +111 -0
  114. package/dist/runtime/themeInk.js.map +1 -0
  115. package/dist/runtime/themeInvariants.d.ts +39 -0
  116. package/dist/runtime/themeInvariants.js +273 -0
  117. package/dist/runtime/themeInvariants.js.map +1 -0
  118. package/dist/runtime/themeRuntime.d.ts +114 -0
  119. package/dist/runtime/themeRuntime.js +570 -0
  120. package/dist/runtime/themeRuntime.js.map +1 -0
  121. package/dist/runtime/themeSchema.d.ts +10 -0
  122. package/dist/runtime/themeSchema.js +150 -0
  123. package/dist/runtime/themeSchema.js.map +1 -0
  124. package/dist/runtime/themeSpec.d.ts +263 -0
  125. package/dist/runtime/themeSpec.js +435 -0
  126. package/dist/runtime/themeSpec.js.map +1 -0
  127. package/dist/runtime/themeTokens.d.ts +12 -0
  128. package/dist/runtime/themeTokens.js +14 -6
  129. package/dist/runtime/themeTokens.js.map +1 -1
  130. package/dist/runtime/themeVariants.d.ts +30 -0
  131. package/dist/runtime/themeVariants.js +53 -0
  132. package/dist/runtime/themeVariants.js.map +1 -0
  133. package/dist/runtime/ui.d.ts +192 -0
  134. package/dist/runtime/ui.js +926 -0
  135. package/dist/runtime/ui.js.map +1 -0
  136. package/dist/shell/InstallDialog.d.ts +40 -0
  137. package/dist/shell/InstallDialog.js +176 -0
  138. package/dist/shell/InstallDialog.js.map +1 -0
  139. package/dist/shell/StoreView.d.ts +78 -0
  140. package/dist/shell/StoreView.js +108 -0
  141. package/dist/shell/StoreView.js.map +1 -0
  142. package/dist/shell/addressModel.js.map +1 -1
  143. package/dist/shell/chrome.js.map +1 -1
  144. package/dist/shell/deckModel.d.ts +117 -0
  145. package/dist/shell/deckModel.js +267 -0
  146. package/dist/shell/deckModel.js.map +1 -0
  147. package/dist/shell/frame/AccountSwitcher.d.ts +42 -0
  148. package/dist/shell/frame/AccountSwitcher.js +243 -0
  149. package/dist/shell/frame/AccountSwitcher.js.map +1 -0
  150. package/dist/shell/frame/AddColumnDialog.d.ts +8 -0
  151. package/dist/shell/frame/AddColumnDialog.js +81 -0
  152. package/dist/shell/frame/AddColumnDialog.js.map +1 -0
  153. package/dist/shell/frame/AppMenu.d.ts +44 -0
  154. package/dist/shell/frame/AppMenu.js +721 -0
  155. package/dist/shell/frame/AppMenu.js.map +1 -0
  156. package/dist/shell/frame/CommandPalette.d.ts +7 -0
  157. package/dist/shell/frame/CommandPalette.js +118 -0
  158. package/dist/shell/frame/CommandPalette.js.map +1 -0
  159. package/dist/shell/frame/DeckView.d.ts +13 -0
  160. package/dist/shell/frame/DeckView.js +287 -0
  161. package/dist/shell/frame/DeckView.js.map +1 -0
  162. package/dist/shell/frame/FindBar.d.ts +10 -0
  163. package/dist/shell/frame/FindBar.js +108 -0
  164. package/dist/shell/frame/FindBar.js.map +1 -0
  165. package/dist/shell/frame/MediaPanel.d.ts +8 -0
  166. package/dist/shell/frame/MediaPanel.js +76 -0
  167. package/dist/shell/frame/MediaPanel.js.map +1 -0
  168. package/dist/shell/frame/NewTabPage.d.ts +9 -0
  169. package/dist/shell/frame/NewTabPage.js +71 -0
  170. package/dist/shell/frame/NewTabPage.js.map +1 -0
  171. package/dist/shell/frame/PaneTheme.d.ts +16 -0
  172. package/dist/shell/frame/PaneTheme.js +67 -0
  173. package/dist/shell/frame/PaneTheme.js.map +1 -0
  174. package/dist/shell/frame/ReportDialog.d.ts +3 -0
  175. package/dist/shell/frame/ReportDialog.js +95 -0
  176. package/dist/shell/frame/ReportDialog.js.map +1 -0
  177. package/dist/shell/frame/Shell.d.ts +9 -0
  178. package/dist/shell/frame/Shell.js +1139 -0
  179. package/dist/shell/frame/Shell.js.map +1 -0
  180. package/dist/shell/frame/Titlebar.d.ts +17 -0
  181. package/dist/shell/frame/Titlebar.js +79 -0
  182. package/dist/shell/frame/Titlebar.js.map +1 -0
  183. package/dist/shell/frame/TitlebarExtras.d.ts +4 -0
  184. package/dist/shell/frame/TitlebarExtras.js +202 -0
  185. package/dist/shell/frame/TitlebarExtras.js.map +1 -0
  186. package/dist/shell/frame/WebPanel.d.ts +4 -0
  187. package/dist/shell/frame/WebPanel.js +185 -0
  188. package/dist/shell/frame/WebPanel.js.map +1 -0
  189. package/dist/shell/frame/accountModel.d.ts +49 -0
  190. package/dist/shell/frame/accountModel.js +67 -0
  191. package/dist/shell/frame/accountModel.js.map +1 -0
  192. package/dist/shell/frame/accountSwitcher.css +91 -0
  193. package/dist/shell/frame/appI18n.d.ts +44 -0
  194. package/dist/shell/frame/appI18n.js +64 -0
  195. package/dist/shell/frame/appI18n.js.map +1 -0
  196. package/dist/shell/frame/appMenu.css +127 -0
  197. package/dist/shell/frame/backupModel.d.ts +38 -0
  198. package/dist/shell/frame/backupModel.js +192 -0
  199. package/dist/shell/frame/backupModel.js.map +1 -0
  200. package/dist/shell/frame/boot.d.ts +8 -0
  201. package/dist/shell/frame/boot.js +37 -0
  202. package/dist/shell/frame/boot.js.map +1 -0
  203. package/dist/shell/frame/brand.d.ts +1 -0
  204. package/dist/shell/frame/brand.js +4 -0
  205. package/dist/shell/frame/brand.js.map +1 -0
  206. package/dist/shell/frame/bridge.d.ts +35 -0
  207. package/dist/shell/frame/bridge.js +70 -0
  208. package/dist/shell/frame/bridge.js.map +1 -0
  209. package/dist/shell/frame/chromeTheme.d.ts +47 -0
  210. package/dist/shell/frame/chromeTheme.js +118 -0
  211. package/dist/shell/frame/chromeTheme.js.map +1 -0
  212. package/dist/shell/frame/deck.css +209 -0
  213. package/dist/shell/frame/deckStore.d.ts +89 -0
  214. package/dist/shell/frame/deckStore.js +239 -0
  215. package/dist/shell/frame/deckStore.js.map +1 -0
  216. package/dist/shell/frame/devHost.d.ts +35 -0
  217. package/dist/shell/frame/devHost.js +80 -0
  218. package/dist/shell/frame/devHost.js.map +1 -0
  219. package/dist/shell/frame/devModel.d.ts +7 -0
  220. package/dist/shell/frame/devModel.js +17 -0
  221. package/dist/shell/frame/devModel.js.map +1 -0
  222. package/dist/shell/frame/diag.d.ts +7 -0
  223. package/dist/shell/frame/diag.js +39 -0
  224. package/dist/shell/frame/diag.js.map +1 -0
  225. package/dist/shell/frame/edges.css +159 -0
  226. package/dist/shell/frame/findBar.css +14 -0
  227. package/dist/shell/frame/frameMessages.d.ts +248 -0
  228. package/dist/shell/frame/frameMessages.js +252 -0
  229. package/dist/shell/frame/frameMessages.js.map +1 -0
  230. package/dist/shell/frame/hooks.d.ts +39 -0
  231. package/dist/shell/frame/hooks.js +97 -0
  232. package/dist/shell/frame/hooks.js.map +1 -0
  233. package/dist/shell/frame/i18n.d.ts +27 -0
  234. package/dist/shell/frame/i18n.js +66 -0
  235. package/dist/shell/frame/i18n.js.map +1 -0
  236. package/dist/shell/frame/iconPack.d.ts +11 -0
  237. package/dist/shell/frame/iconPack.js +45 -0
  238. package/dist/shell/frame/iconPack.js.map +1 -0
  239. package/dist/shell/frame/icons.d.ts +71 -0
  240. package/dist/shell/frame/icons.js +75 -0
  241. package/dist/shell/frame/icons.js.map +1 -0
  242. package/dist/shell/frame/index.d.ts +34 -0
  243. package/dist/shell/frame/index.js +43 -0
  244. package/dist/shell/frame/index.js.map +1 -0
  245. package/dist/shell/frame/language.d.ts +58 -0
  246. package/dist/shell/frame/language.js +165 -0
  247. package/dist/shell/frame/language.js.map +1 -0
  248. package/dist/shell/frame/mediaModel.d.ts +47 -0
  249. package/dist/shell/frame/mediaModel.js +67 -0
  250. package/dist/shell/frame/mediaModel.js.map +1 -0
  251. package/dist/shell/frame/menuMessages.en.json +96 -0
  252. package/dist/shell/frame/menuModel.d.ts +319 -0
  253. package/dist/shell/frame/menuModel.js +301 -0
  254. package/dist/shell/frame/menuModel.js.map +1 -0
  255. package/dist/shell/frame/nativeMenu.d.ts +5 -0
  256. package/dist/shell/frame/nativeMenu.js +178 -0
  257. package/dist/shell/frame/nativeMenu.js.map +1 -0
  258. package/dist/shell/frame/nativeMenuModel.d.ts +102 -0
  259. package/dist/shell/frame/nativeMenuModel.js +186 -0
  260. package/dist/shell/frame/nativeMenuModel.js.map +1 -0
  261. package/dist/shell/frame/paletteModel.d.ts +139 -0
  262. package/dist/shell/frame/paletteModel.js +114 -0
  263. package/dist/shell/frame/paletteModel.js.map +1 -0
  264. package/dist/shell/frame/paneTheme.css +9 -0
  265. package/dist/shell/frame/pluginCommandStore.d.ts +23 -0
  266. package/dist/shell/frame/pluginCommandStore.js +70 -0
  267. package/dist/shell/frame/pluginCommandStore.js.map +1 -0
  268. package/dist/shell/frame/reportModel.d.ts +52 -0
  269. package/dist/shell/frame/reportModel.js +105 -0
  270. package/dist/shell/frame/reportModel.js.map +1 -0
  271. package/dist/shell/frame/safeStore.d.ts +7 -0
  272. package/dist/shell/frame/safeStore.js +40 -0
  273. package/dist/shell/frame/safeStore.js.map +1 -0
  274. package/dist/shell/frame/searchInput.d.ts +2 -0
  275. package/dist/shell/frame/searchInput.js +11 -0
  276. package/dist/shell/frame/searchInput.js.map +1 -0
  277. package/dist/shell/frame/shell.css +634 -0
  278. package/dist/shell/frame/site.d.ts +206 -0
  279. package/dist/shell/frame/site.js +22 -0
  280. package/dist/shell/frame/site.js.map +1 -0
  281. package/dist/shell/frame/state.d.ts +101 -0
  282. package/dist/shell/frame/state.js +286 -0
  283. package/dist/shell/frame/state.js.map +1 -0
  284. package/dist/shell/frame/syncGate.d.ts +10 -0
  285. package/dist/shell/frame/syncGate.js +36 -0
  286. package/dist/shell/frame/syncGate.js.map +1 -0
  287. package/dist/shell/frame/syncHost.d.ts +35 -0
  288. package/dist/shell/frame/syncHost.js +85 -0
  289. package/dist/shell/frame/syncHost.js.map +1 -0
  290. package/dist/shell/frame/tabStill.d.ts +2 -0
  291. package/dist/shell/frame/tabStill.js +62 -0
  292. package/dist/shell/frame/tabStill.js.map +1 -0
  293. package/dist/shell/frame/themeScopes.d.ts +29 -0
  294. package/dist/shell/frame/themeScopes.js +61 -0
  295. package/dist/shell/frame/themeScopes.js.map +1 -0
  296. package/dist/shell/frame/themeStore.d.ts +99 -0
  297. package/dist/shell/frame/themeStore.js +267 -0
  298. package/dist/shell/frame/themeStore.js.map +1 -0
  299. package/dist/shell/frame/windowBinding.d.ts +2 -0
  300. package/dist/shell/frame/windowBinding.js +7 -0
  301. package/dist/shell/frame/windowBinding.js.map +1 -0
  302. package/dist/shell/frame/workspaceModel.d.ts +82 -0
  303. package/dist/shell/frame/workspaceModel.js +250 -0
  304. package/dist/shell/frame/workspaceModel.js.map +1 -0
  305. package/dist/shell/frame/workspaces.css +84 -0
  306. package/dist/shell/frame/workspaces.d.ts +22 -0
  307. package/dist/shell/frame/workspaces.js +125 -0
  308. package/dist/shell/frame/workspaces.js.map +1 -0
  309. package/dist/shell/frame/zoomStore.d.ts +10 -0
  310. package/dist/shell/frame/zoomStore.js +65 -0
  311. package/dist/shell/frame/zoomStore.js.map +1 -0
  312. package/dist/shell/installController.d.ts +137 -0
  313. package/dist/shell/installController.js +172 -0
  314. package/dist/shell/installController.js.map +1 -0
  315. package/dist/shell/installerMessages.d.ts +30 -0
  316. package/dist/shell/installerMessages.js +36 -0
  317. package/dist/shell/installerMessages.js.map +1 -0
  318. package/dist/shell/linkDrop.js.map +1 -1
  319. package/dist/shell/messages.d.ts +16 -0
  320. package/dist/shell/messages.js +27 -0
  321. package/dist/shell/messages.js.map +1 -0
  322. package/dist/shell/palette.js.map +1 -1
  323. package/dist/shell/paneModel.d.ts +22 -0
  324. package/dist/shell/paneModel.js +24 -1
  325. package/dist/shell/paneModel.js.map +1 -1
  326. package/dist/shell/panel/Appearance.d.ts +8 -0
  327. package/dist/shell/panel/Appearance.js +265 -0
  328. package/dist/shell/panel/Appearance.js.map +1 -0
  329. package/dist/shell/panel/BackupPanel.d.ts +5 -0
  330. package/dist/shell/panel/BackupPanel.js +198 -0
  331. package/dist/shell/panel/BackupPanel.js.map +1 -0
  332. package/dist/shell/panel/DeveloperPanel.d.ts +4 -0
  333. package/dist/shell/panel/DeveloperPanel.js +51 -0
  334. package/dist/shell/panel/DeveloperPanel.js.map +1 -0
  335. package/dist/shell/panel/FeatureToggles.d.ts +13 -0
  336. package/dist/shell/panel/FeatureToggles.js +42 -0
  337. package/dist/shell/panel/FeatureToggles.js.map +1 -0
  338. package/dist/shell/panel/Home.d.ts +3 -0
  339. package/dist/shell/panel/Home.js +23 -0
  340. package/dist/shell/panel/Home.js.map +1 -0
  341. package/dist/shell/panel/IconPackInstall.d.ts +15 -0
  342. package/dist/shell/panel/IconPackInstall.js +41 -0
  343. package/dist/shell/panel/IconPackInstall.js.map +1 -0
  344. package/dist/shell/panel/LanguageSettings.d.ts +1 -0
  345. package/dist/shell/panel/LanguageSettings.js +54 -0
  346. package/dist/shell/panel/LanguageSettings.js.map +1 -0
  347. package/dist/shell/panel/MakePanel.d.ts +3 -0
  348. package/dist/shell/panel/MakePanel.js +237 -0
  349. package/dist/shell/panel/MakePanel.js.map +1 -0
  350. package/dist/shell/panel/MarkdownDoc.d.ts +6 -0
  351. package/dist/shell/panel/MarkdownDoc.js +35 -0
  352. package/dist/shell/panel/MarkdownDoc.js.map +1 -0
  353. package/dist/shell/panel/Modes.d.ts +40 -0
  354. package/dist/shell/panel/Modes.js +270 -0
  355. package/dist/shell/panel/Modes.js.map +1 -0
  356. package/dist/shell/panel/NavIcon.d.ts +4 -0
  357. package/dist/shell/panel/NavIcon.js +6 -0
  358. package/dist/shell/panel/NavIcon.js.map +1 -0
  359. package/dist/shell/panel/Panel.d.ts +7 -0
  360. package/dist/shell/panel/Panel.js +139 -0
  361. package/dist/shell/panel/Panel.js.map +1 -0
  362. package/dist/shell/panel/PluginFeatures.d.ts +24 -0
  363. package/dist/shell/panel/PluginFeatures.js +165 -0
  364. package/dist/shell/panel/PluginFeatures.js.map +1 -0
  365. package/dist/shell/panel/Plugins.d.ts +33 -0
  366. package/dist/shell/panel/Plugins.js +112 -0
  367. package/dist/shell/panel/Plugins.js.map +1 -0
  368. package/dist/shell/panel/PowerSettings.d.ts +4 -0
  369. package/dist/shell/panel/PowerSettings.js +52 -0
  370. package/dist/shell/panel/PowerSettings.js.map +1 -0
  371. package/dist/shell/panel/Settings.d.ts +23 -0
  372. package/dist/shell/panel/Settings.js +117 -0
  373. package/dist/shell/panel/Settings.js.map +1 -0
  374. package/dist/shell/panel/ShareSetup.d.ts +8 -0
  375. package/dist/shell/panel/ShareSetup.js +130 -0
  376. package/dist/shell/panel/ShareSetup.js.map +1 -0
  377. package/dist/shell/panel/StoreSection.d.ts +7 -0
  378. package/dist/shell/panel/StoreSection.js +78 -0
  379. package/dist/shell/panel/StoreSection.js.map +1 -0
  380. package/dist/shell/panel/StringPacks.d.ts +20 -0
  381. package/dist/shell/panel/StringPacks.js +131 -0
  382. package/dist/shell/panel/StringPacks.js.map +1 -0
  383. package/dist/shell/panel/ThemeBuilder.d.ts +5 -0
  384. package/dist/shell/panel/ThemeBuilder.js +205 -0
  385. package/dist/shell/panel/ThemeBuilder.js.map +1 -0
  386. package/dist/shell/panel/backup.css +34 -0
  387. package/dist/shell/panel/builder.css +240 -0
  388. package/dist/shell/panel/builderModel.d.ts +55 -0
  389. package/dist/shell/panel/builderModel.js +95 -0
  390. package/dist/shell/panel/builderModel.js.map +1 -0
  391. package/dist/shell/panel/compare.d.ts +10 -0
  392. package/dist/shell/panel/compare.js +51 -0
  393. package/dist/shell/panel/compare.js.map +1 -0
  394. package/dist/shell/panel/controls.d.ts +135 -0
  395. package/dist/shell/panel/controls.js +213 -0
  396. package/dist/shell/panel/controls.js.map +1 -0
  397. package/dist/shell/panel/featureModel.d.ts +69 -0
  398. package/dist/shell/panel/featureModel.js +79 -0
  399. package/dist/shell/panel/featureModel.js.map +1 -0
  400. package/dist/shell/panel/fonts/FontBrowser.d.ts +10 -0
  401. package/dist/shell/panel/fonts/FontBrowser.js +189 -0
  402. package/dist/shell/panel/fonts/FontBrowser.js.map +1 -0
  403. package/dist/shell/panel/fonts/FontRoles.d.ts +20 -0
  404. package/dist/shell/panel/fonts/FontRoles.js +77 -0
  405. package/dist/shell/panel/fonts/FontRoles.js.map +1 -0
  406. package/dist/shell/panel/fonts/catalog.d.ts +37 -0
  407. package/dist/shell/panel/fonts/catalog.js +68 -0
  408. package/dist/shell/panel/fonts/catalog.js.map +1 -0
  409. package/dist/shell/panel/fonts/googleFontsCatalog.json +1 -0
  410. package/dist/shell/panel/index.d.ts +20 -0
  411. package/dist/shell/panel/index.js +34 -0
  412. package/dist/shell/panel/index.js.map +1 -0
  413. package/dist/shell/panel/languageModel.d.ts +5 -0
  414. package/dist/shell/panel/languageModel.js +7 -0
  415. package/dist/shell/panel/languageModel.js.map +1 -0
  416. package/dist/shell/panel/make.css +73 -0
  417. package/dist/shell/panel/makeModel.d.ts +32 -0
  418. package/dist/shell/panel/makeModel.js +84 -0
  419. package/dist/shell/panel/makeModel.js.map +1 -0
  420. package/dist/shell/panel/markdown.d.ts +46 -0
  421. package/dist/shell/panel/markdown.js +100 -0
  422. package/dist/shell/panel/markdown.js.map +1 -0
  423. package/dist/shell/panel/nav.d.ts +12 -0
  424. package/dist/shell/panel/nav.js +50 -0
  425. package/dist/shell/panel/nav.js.map +1 -0
  426. package/dist/shell/panel/panel.css +401 -0
  427. package/dist/shell/panel/panelMessages.d.ts +803 -0
  428. package/dist/shell/panel/panelMessages.js +779 -0
  429. package/dist/shell/panel/panelMessages.js.map +1 -0
  430. package/dist/shell/panel/plugins.css +59 -0
  431. package/dist/shell/panel/setupModel.d.ts +87 -0
  432. package/dist/shell/panel/setupModel.js +152 -0
  433. package/dist/shell/panel/setupModel.js.map +1 -0
  434. package/dist/shell/panel/site.d.ts +259 -0
  435. package/dist/shell/panel/site.js +25 -0
  436. package/dist/shell/panel/site.js.map +1 -0
  437. package/dist/shell/panel/strings.css +7 -0
  438. package/dist/shell/panel/themes.d.ts +10 -0
  439. package/dist/shell/panel/themes.js +8 -0
  440. package/dist/shell/panel/themes.js.map +1 -0
  441. package/dist/shell/profileModel.d.ts +3 -2
  442. package/dist/shell/profileModel.js +7 -5
  443. package/dist/shell/profileModel.js.map +1 -1
  444. package/dist/shell/store.css +250 -0
  445. package/dist/shell/storeMessages.d.ts +193 -0
  446. package/dist/shell/storeMessages.js +196 -0
  447. package/dist/shell/storeMessages.js.map +1 -0
  448. package/dist/shell/storeModel.d.ts +205 -0
  449. package/dist/shell/storeModel.js +146 -0
  450. package/dist/shell/storeModel.js.map +1 -0
  451. package/dist/shell/stringPacksModel.d.ts +44 -0
  452. package/dist/shell/stringPacksModel.js +99 -0
  453. package/dist/shell/stringPacksModel.js.map +1 -0
  454. package/dist/shell/updateModel.d.ts +2 -1
  455. package/dist/shell/updateModel.js +5 -4
  456. package/dist/shell/updateModel.js.map +1 -1
  457. package/dist/shell/windowControls.d.ts +4 -0
  458. package/dist/shell/windowControls.js +5 -0
  459. package/dist/shell/windowControls.js.map +1 -1
  460. package/i18n-config.schema.json +29 -0
  461. package/i18n-meta.schema.json +26 -0
  462. package/i18n.schema.json +42 -0
  463. package/icons.schema.json +655 -0
  464. package/languages.schema.json +23 -0
  465. package/locales/ar-x-fm.json +11 -0
  466. package/locales/ar.json +1388 -0
  467. package/locales/bg.json +1387 -0
  468. package/locales/bn.json +1387 -0
  469. package/locales/ca.json +1387 -0
  470. package/locales/cs.json +1387 -0
  471. package/locales/da.json +1387 -0
  472. package/locales/de.json +1387 -0
  473. package/locales/el.json +1387 -0
  474. package/locales/en-GB.json +27 -0
  475. package/locales/en.json +1386 -0
  476. package/locales/en.meta.json +51 -0
  477. package/locales/es.json +1387 -0
  478. package/locales/eu.json +1387 -0
  479. package/locales/fa.json +1388 -0
  480. package/locales/fi.json +1387 -0
  481. package/locales/fil.json +1387 -0
  482. package/locales/fr.json +1387 -0
  483. package/locales/ga.json +1387 -0
  484. package/locales/gl.json +1387 -0
  485. package/locales/gu.json +1387 -0
  486. package/locales/ha.json +1387 -0
  487. package/locales/he.json +1388 -0
  488. package/locales/hi.json +1387 -0
  489. package/locales/hr.json +1387 -0
  490. package/locales/hu.json +1387 -0
  491. package/locales/id.json +1387 -0
  492. package/locales/ig.json +1387 -0
  493. package/locales/it.json +1387 -0
  494. package/locales/ja.json +1387 -0
  495. package/locales/kn.json +1387 -0
  496. package/locales/ko.json +1387 -0
  497. package/locales/mr.json +1387 -0
  498. package/locales/ms.json +1387 -0
  499. package/locales/nb.json +1387 -0
  500. package/locales/nl.json +1387 -0
  501. package/locales/pl.json +1387 -0
  502. package/locales/pt.json +1387 -0
  503. package/locales/ro.json +1387 -0
  504. package/locales/ru.json +1387 -0
  505. package/locales/sk.json +1387 -0
  506. package/locales/sr.json +1387 -0
  507. package/locales/sv.json +1387 -0
  508. package/locales/ta.json +1387 -0
  509. package/locales/th.json +1387 -0
  510. package/locales/tr.json +1387 -0
  511. package/locales/uk.json +1387 -0
  512. package/locales/ur.json +1388 -0
  513. package/locales/vi.json +1387 -0
  514. package/locales/yo.json +1387 -0
  515. package/locales/zh-Hans.json +1387 -0
  516. package/locales/zh-Hant.json +1387 -0
  517. package/package.json +138 -5
  518. package/store-catalog.schema.json +78 -0
  519. package/theme.schema.json +4668 -0
  520. package/windows/installer.nsi +946 -0
  521. package/windows/languages/Basque.nsh +28 -0
  522. package/windows/languages/Catalan.nsh +28 -0
  523. package/windows/languages/Croatian.nsh +28 -0
  524. package/windows/languages/Czech.nsh +28 -0
  525. package/windows/languages/Danish.nsh +28 -0
  526. package/windows/languages/Finnish.nsh +28 -0
  527. package/windows/languages/Galician.nsh +28 -0
  528. package/windows/languages/Greek.nsh +28 -0
  529. package/windows/languages/Hungarian.nsh +28 -0
  530. package/windows/languages/Indonesian.nsh +28 -0
  531. package/windows/languages/Irish.nsh +28 -0
  532. package/windows/languages/Malay.nsh +28 -0
  533. package/windows/languages/Polish.nsh +28 -0
  534. package/windows/languages/Romanian.nsh +28 -0
  535. package/windows/languages/Serbian.nsh +28 -0
  536. package/windows/languages/Slovak.nsh +28 -0
  537. package/windows/languages/Thai.nsh +28 -0
@@ -0,0 +1,196 @@
1
+ // The Store, the install screen and the plugin permission words in English. They live in the
2
+ // framework catalogs (`waybetter/locales/<bcp47>.json`: `wb.store.*`, `wb.install.*`,
3
+ // `wb.permission.*`), so every wayBetter app shows them in its language: merge the framework
4
+ // catalogs into the app's i18n (as for the kit and shell words) and pass its `t` to the components
5
+ // (`StoreText`). Placeholders: `{site}` is the site's name ("X", "WhatsApp"); `{kind}` is plugin or
6
+ // theme (a select); `wb.permission.storage.detail`: keep the API names in parentheses unchanged.
7
+ export const STORE_MESSAGES = {
8
+ 'wb.permission.storage.label': 'Storage',
9
+ 'wb.permission.storage.detail': 'Keeps its own settings in this app (api.storage).',
10
+ 'wb.permission.ui.label': 'Dialogs',
11
+ 'wb.permission.ui.detail': 'Shows dialogs, prompts and notifications (api.ui, api.toast).',
12
+ 'wb.permission.clipboard.label': 'Clipboard',
13
+ 'wb.permission.clipboard.detail': 'Copies text to your clipboard (api.copyText).',
14
+ 'wb.permission.account.label': 'Your account',
15
+ 'wb.permission.account.detail': 'Reads which {site} account is signed in: handle, name, avatar (api.account).',
16
+ 'wb.permission.commands.label': 'Commands',
17
+ 'wb.permission.commands.detail': 'Adds commands to the command palette (Ctrl+K) that run in this page (api.commands).',
18
+ 'wb.permission.users.label': 'Account details',
19
+ 'wb.permission.users.detail': "Reads what {site}'s own responses said about accounts: verified, follows you (api.users).",
20
+ 'wb.permission.network.label': 'Internet',
21
+ 'wb.permission.network.detail': 'Says it contacts servers on the internet.',
22
+ 'wb.permission.networkNone.label': 'No network',
23
+ 'wb.permission.networkNone.detail': 'Says it never contacts a server; the install check found no network calls in its code.',
24
+ 'wb.permission.legacy.label': 'Legacy · full page access',
25
+ 'wb.permission.legacy.detail': 'No @permissions line: it gets the whole plugin API, like plugins before permissions.',
26
+ 'wb.permission.none.label': 'No special access',
27
+ 'wb.permission.none.detail': 'Only the basic page helpers (CSS, DOM, routes, keys, theme).',
28
+ 'wb.permission.unknown': 'Unknown permission.',
29
+ 'wb.store.category.reading': 'Reading',
30
+ 'wb.store.category.writing': 'Writing',
31
+ 'wb.store.category.filters': 'Filters',
32
+ 'wb.store.category.focus': 'Focus',
33
+ 'wb.store.category.tools': 'Tools',
34
+ 'wb.store.category.dark': 'Dark',
35
+ 'wb.store.category.light': 'Light',
36
+ 'wb.store.category.icons': 'Icons',
37
+ 'wb.store.builtIn': 'Built in',
38
+ 'wb.store.use': 'Use',
39
+ 'wb.store.install': 'Install',
40
+ 'wb.store.updateTo': 'Update to {version}',
41
+ 'wb.store.modifiedTitle': "The installed file differs from the store's (edited, or from elsewhere). The store leaves it alone.",
42
+ 'wb.store.modified': 'Changed locally',
43
+ 'wb.store.replace': 'Replace',
44
+ 'wb.store.installed': 'Installed',
45
+ 'wb.store.installedVersion': 'Installed · v{version}',
46
+ 'wb.store.offline': 'Offline copy from {when}: {error}',
47
+ 'wb.store.unreachableShort': 'Store unreachable',
48
+ 'wb.store.verified': 'Signed catalog verified · updated {when}',
49
+ 'wb.store.intro': "Themes and plugins from the wayBetter Store. The catalog is signed; wayBetter checks the signature and every download's SHA-256 before it shows the install screen. Plugins list the permissions they ask for.",
50
+ 'wb.store.search': 'Search the store',
51
+ 'wb.store.searchPlaceholder': 'Search themes and plugins',
52
+ 'wb.store.kind': 'Kind',
53
+ 'wb.store.themes': 'Themes',
54
+ 'wb.store.checking': 'Checking…',
55
+ 'wb.store.refresh': 'Refresh',
56
+ 'wb.store.categories': 'Categories',
57
+ 'wb.store.everything': 'Everything',
58
+ 'wb.store.updates': '{count, plural, one {# update} other {# updates}} available',
59
+ 'wb.store.unreachable': 'The store is not reachable',
60
+ 'wb.store.tryAgain': 'Try again',
61
+ 'wb.store.noCatalog': 'No catalog yet.',
62
+ 'wb.store.nothingChanged': 'Nothing was installed or changed.',
63
+ 'wb.store.noMatch': 'Nothing matches',
64
+ 'wb.store.noMatchHint': 'Try another word or category.',
65
+ 'wb.store.plugin': 'Plugin',
66
+ 'wb.store.by': 'by {author}',
67
+ 'wb.store.permissions': 'Permissions',
68
+ 'wb.store.themeNow': '{name} is your theme now.',
69
+ 'wb.store.foot': 'Have a theme or plugin file? Drop it on the wayBetter window, or open a waybetter://install link from waybetter.fyi. You always see this install screen first.',
70
+ 'wb.install.lines': '{count, plural, one {# line} other {# lines}}',
71
+ 'wb.install.moreLines': 'Show {count, plural, one {# more line} other {# more lines}}',
72
+ 'wb.install.reinstall': 'Reinstall',
73
+ 'wb.install.update': 'Update',
74
+ 'wb.install.eyebrow.install': '{kind, select, plugin {Install plugin} theme {Install theme} other {Install}}',
75
+ 'wb.install.eyebrow.update': '{kind, select, plugin {Update plugin} theme {Update theme} other {Update}}',
76
+ 'wb.install.eyebrow.reinstall': '{kind, select, plugin {Reinstall plugin} theme {Reinstall theme} other {Reinstall}}',
77
+ 'wb.install.noAuthor': 'No author or version given',
78
+ 'wb.install.verified': 'Verified',
79
+ 'wb.install.installedNow': 'Installed now',
80
+ 'wb.install.identical': 'v{version} (identical)',
81
+ 'wb.install.on': 'on',
82
+ 'wb.install.replaces': 'Replaces',
83
+ 'wb.install.replacesValue': 'your copy of this theme',
84
+ 'wb.install.copyHash': 'Copy SHA-256',
85
+ 'wb.install.permissions': 'Permissions it declares',
86
+ 'wb.install.pageAccess': 'Plugins run inside {site} with the same access as the page: they can read what {site} shows you and act in it. Permissions limit what the wayBetter API gives a plugin, not the page. Install only code you trust.',
87
+ 'wb.install.theCode': 'The code',
88
+ 'wb.install.themeCss': 'Theme CSS (runs in {site} like your Custom CSS)',
89
+ 'wb.install.code': 'Code that will be installed',
90
+ 'wb.install.staysOn': 'It stays on',
91
+ 'wb.install.turnOn': 'Turn it on now',
92
+ 'wb.install.useNow': 'Use it now',
93
+ 'wb.install.installing': 'Installing…',
94
+ 'wb.install.done': '{name} is installed',
95
+ 'wb.install.done.pluginOn': 'It is running in your {site} tabs now. Turn it off any time in Plugins.',
96
+ 'wb.install.done.pluginOff': 'It is off. Turn it on in Plugins when you want it.',
97
+ 'wb.install.done.themeOn': 'It is your theme now. Switch back any time in Appearance.',
98
+ 'wb.install.done.themeOff': 'It is in your themes in Appearance.',
99
+ 'wb.install.done.fonts': 'It names Google fonts ({fonts}). Appearance can download them for you; until then it uses its fallback fonts.',
100
+ 'wb.install.openPlugins': 'Open Plugins',
101
+ 'wb.install.openAppearance': 'Open Appearance',
102
+ 'wb.install.eyebrow.strings.install': 'Install string pack',
103
+ 'wb.install.eyebrow.strings.update': 'Update string pack',
104
+ 'wb.install.eyebrow.strings.reinstall': 'Reinstall string pack',
105
+ 'wb.install.err.stringsLarge': 'String packs are limited to 2 MB.',
106
+ 'wb.install.err.stringsNotInstalled': 'The string pack was not installed',
107
+ 'wb.install.license': 'Licence',
108
+ 'wb.install.credits': 'Credits',
109
+ 'wb.install.strings.dataOnly': 'Data only: text that replaces {site}’s own words. No code and no styles; nothing in it runs. Words it does not change stay as {site} shows them.',
110
+ 'wb.install.strings.language': 'Language',
111
+ 'wb.install.strings.count': '{count, plural, one {# string} other {# strings}}',
112
+ 'wb.install.strings.coverage': 'Coverage',
113
+ 'wb.install.strings.coverageValue': '{translated} of {translatable} of {site}’s strings ({percent})',
114
+ 'wb.install.strings.closed': '{count, plural, one {# more string of {site} cannot be replaced by a pack yet (rich text, number formats)} other {# more strings of {site} cannot be replaced by a pack yet (rich text, number formats)}}',
115
+ 'wb.install.strings.unknown': '{count, plural, one {# key {site} does not have is ignored} other {# keys {site} does not have are ignored}}',
116
+ 'wb.install.strings.refused': '{count, plural, one {# string does not fit {site}’s own and is not used} other {# strings do not fit {site}’s own and are not used}}',
117
+ 'wb.install.strings.otherCatalog': 'This pack is for another version of {site} (a different set of strings); it would change nothing here.',
118
+ 'wb.install.strings.sample': 'A sample',
119
+ 'wb.install.strings.file': 'The pack file',
120
+ 'wb.install.done.stringsOn': 'Your {site} tabs reload to show it. Turn it off any time in Languages.',
121
+ 'wb.install.done.stringsOff': 'It is off. Turn it on in Languages when you want it.',
122
+ 'wb.install.openStrings': 'Open Languages',
123
+ 'wb.store.strings': 'Languages',
124
+ 'wb.store.stringsItem': 'String pack',
125
+ 'wb.install.eyebrow.icons.install': 'Install icon pack',
126
+ 'wb.install.eyebrow.icons.update': 'Update icon pack',
127
+ 'wb.install.eyebrow.icons.reinstall': 'Reinstall icon pack',
128
+ 'wb.install.err.icons': 'This icon pack cannot be installed',
129
+ 'wb.install.err.iconsNone': '{site} cannot install icon packs here.',
130
+ 'wb.install.err.iconsLarge': 'Icon packs are limited to 120 KB.',
131
+ 'wb.install.err.iconsNotInstalled': 'The icon pack was not installed',
132
+ 'wb.install.err.opened': 'This file cannot be installed',
133
+ 'wb.install.icons.dataOnly': 'Data only: drawings as path data and small pictures. No code and no styles; nothing in it runs.',
134
+ 'wb.install.icons.license': 'License',
135
+ 'wb.install.icons.source': 'Drawings from',
136
+ 'wb.install.icons.count': 'Icons',
137
+ 'wb.install.icons.countValue': '{count, plural, one {# icon} other {# icons}}',
138
+ 'wb.install.icons.file': 'The pack file',
139
+ 'wb.install.done.iconsOn': 'It is your icon pack now. Switch back any time in Appearance.',
140
+ 'wb.install.done.iconsOff': 'It is in your icon packs in Appearance.',
141
+ 'wb.store.icons': 'Icons',
142
+ 'wb.store.iconsItem': 'Icon pack',
143
+ 'wb.store.builtinTab': 'Built in',
144
+ 'wb.store.builtinItem': 'Built in',
145
+ 'wb.store.areaSwitch': 'Turn {name} on or off',
146
+ 'wb.store.areaOn': 'On',
147
+ 'wb.store.areaOff': 'Off',
148
+ 'wb.strings.section': 'Languages',
149
+ 'wb.strings.title': 'String packs',
150
+ 'wb.strings.intro': 'A string pack replaces {site}’s own words with text: a language {site} does not offer, a better translation, or your own wording. Packs apply in this order; a later one wins where two change the same word. Words no pack changes stay exactly as {site} shows them.',
151
+ 'wb.strings.empty': 'No string packs yet',
152
+ 'wb.strings.emptyHint': 'Get one from the Store, or drop a .strings.json file on the window.',
153
+ 'wb.strings.openStore': 'Open the Store',
154
+ 'wb.strings.by': 'by {authors}',
155
+ 'wb.strings.on': 'Use {name}',
156
+ 'wb.strings.up': 'Move up',
157
+ 'wb.strings.down': 'Move down',
158
+ 'wb.strings.remove': 'Remove',
159
+ 'wb.strings.removed': '{name} is removed.',
160
+ 'wb.strings.applied': 'Your {site} tabs reload to apply it.',
161
+ 'wb.strings.limit': 'At most 8 packs can be on at once.',
162
+ 'wb.strings.dataOnly': 'Data only',
163
+ 'wb.strings.translate': 'Translate mode',
164
+ 'wb.strings.translateHint': 'Every {site} tab shows a bar: click a word to change it. Your edits apply in that tab after a reload, and “Copy pack file” gives you a pack to share. While it is on, words carry invisible markers.',
165
+ 'wb.install.doneButton': 'Done',
166
+ 'wb.install.drop': 'Drop to install',
167
+ 'wb.install.dropHint': 'A theme (.json), a plugin (.plugin.js) or a string pack (.strings.json). You will see what it is before anything is installed.',
168
+ 'wb.install.err.theme': 'This theme cannot be installed',
169
+ 'wb.install.stage.link': '{kind, select, plugin {Install plugin from {host}} theme {Install theme from {host}} other {Install from {host}}}',
170
+ 'wb.install.stage.linkDetail': 'Downloading and checking…',
171
+ 'wb.install.err.kind': '“{file}” is not a theme, a plugin or a string pack',
172
+ 'wb.install.err.kindHint': 'wayBetter installs themes (.json), plugins (.plugin.js) and string packs (.strings.json). To attach a file to a post, drop it on {site}’s composer instead.',
173
+ 'wb.install.err.large': '“{file}” is too large',
174
+ 'wb.install.err.largeHint': '{kind, select, theme {Themes are limited to 2 MB.} other {Plugins are limited to 2 MB.}}',
175
+ 'wb.install.stage.named': 'Install {name}',
176
+ 'wb.install.stage.fileDetail': 'Checking the file…',
177
+ 'wb.install.stage.storeDetail': 'Downloading from the wayBetter Store and checking its signature…',
178
+ 'wb.install.err.link': 'This install link cannot be used',
179
+ 'wb.install.err.notInstalled': '{kind, select, theme {The theme was not installed} other {The plugin was not installed}}',
180
+ 'wb.install.untitled': 'Untitled',
181
+ 'wb.install.file': 'File',
182
+ 'wb.install.size': 'Size',
183
+ 'wb.install.themeFile': 'Theme file',
184
+ 'wb.store.all': 'All',
185
+ 'wb.store.pluginsTab': 'Plugins',
186
+ 'wb.store.theme': 'Theme',
187
+ 'wb.store.remove': 'Remove',
188
+ 'wb.store.keep': 'Keep',
189
+ 'wb.store.removed': '{name} removed.',
190
+ 'wb.install.cancel': 'Cancel',
191
+ 'wb.install.close': 'Close',
192
+ 'wb.install.source.store': 'wayBetter Store (signed catalog, sha256 verified)',
193
+ 'wb.install.source.link': 'Link: {host}',
194
+ 'wb.install.source.file': 'A file you dropped',
195
+ };
196
+ //# sourceMappingURL=storeMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storeMessages.js","sourceRoot":"","sources":["../../../../../shell/src/storeMessages.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,sFAAsF;AACtF,6FAA6F;AAC7F,mGAAmG;AACnG,oGAAoG;AACpG,iGAAiG;AAEjG,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,6BAA6B,EAAE,SAAS;IACxC,8BAA8B,EAAE,mDAAmD;IACnF,wBAAwB,EAAE,SAAS;IACnC,yBAAyB,EAAE,+DAA+D;IAC1F,+BAA+B,EAAE,WAAW;IAC5C,gCAAgC,EAAE,+CAA+C;IACjF,6BAA6B,EAAE,cAAc;IAC7C,8BAA8B,EAAE,8EAA8E;IAC9G,8BAA8B,EAAE,UAAU;IAC1C,+BAA+B,EAAE,qFAAqF;IACtH,2BAA2B,EAAE,iBAAiB;IAC9C,4BAA4B,EAAE,2FAA2F;IACzH,6BAA6B,EAAE,UAAU;IACzC,8BAA8B,EAAE,2CAA2C;IAC3E,iCAAiC,EAAE,YAAY;IAC/C,kCAAkC,EAAE,wFAAwF;IAC5H,4BAA4B,EAAE,2BAA2B;IACzD,6BAA6B,EAAE,sFAAsF;IACrH,0BAA0B,EAAE,mBAAmB;IAC/C,2BAA2B,EAAE,8DAA8D;IAC3F,uBAAuB,EAAE,qBAAqB;IAC9C,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,2BAA2B,EAAE,SAAS;IACtC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,wBAAwB,EAAE,MAAM;IAChC,yBAAyB,EAAE,OAAO;IAClC,yBAAyB,EAAE,OAAO;IAClC,kBAAkB,EAAE,UAAU;IAC9B,cAAc,EAAE,KAAK;IACrB,kBAAkB,EAAE,SAAS;IAC7B,mBAAmB,EAAE,qBAAqB;IAC1C,wBAAwB,EAAE,qGAAqG;IAC/H,mBAAmB,EAAE,iBAAiB;IACtC,kBAAkB,EAAE,SAAS;IAC7B,oBAAoB,EAAE,WAAW;IACjC,2BAA2B,EAAE,wBAAwB;IACrD,kBAAkB,EAAE,mCAAmC;IACvD,2BAA2B,EAAE,mBAAmB;IAChD,mBAAmB,EAAE,0CAA0C;IAC/D,gBAAgB,EAAE,gNAAgN;IAClO,iBAAiB,EAAE,kBAAkB;IACrC,4BAA4B,EAAE,2BAA2B;IACzD,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,QAAQ;IAC3B,mBAAmB,EAAE,WAAW;IAChC,kBAAkB,EAAE,SAAS;IAC7B,qBAAqB,EAAE,YAAY;IACnC,qBAAqB,EAAE,YAAY;IACnC,kBAAkB,EAAE,6DAA6D;IACjF,sBAAsB,EAAE,4BAA4B;IACpD,mBAAmB,EAAE,WAAW;IAChC,oBAAoB,EAAE,iBAAiB;IACvC,yBAAyB,EAAE,mCAAmC;IAC9D,kBAAkB,EAAE,iBAAiB;IACrC,sBAAsB,EAAE,+BAA+B;IACvD,iBAAiB,EAAE,QAAQ;IAC3B,aAAa,EAAE,aAAa;IAC5B,sBAAsB,EAAE,aAAa;IACrC,mBAAmB,EAAE,2BAA2B;IAChD,eAAe,EAAE,gKAAgK;IACjL,kBAAkB,EAAE,+CAA+C;IACnE,sBAAsB,EAAE,8DAA8D;IACtF,sBAAsB,EAAE,WAAW;IACnC,mBAAmB,EAAE,QAAQ;IAC7B,4BAA4B,EAAE,+EAA+E;IAC7G,2BAA2B,EAAE,4EAA4E;IACzG,8BAA8B,EAAE,qFAAqF;IACrH,qBAAqB,EAAE,4BAA4B;IACnD,qBAAqB,EAAE,UAAU;IACjC,yBAAyB,EAAE,eAAe;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,IAAI;IACrB,qBAAqB,EAAE,UAAU;IACjC,0BAA0B,EAAE,yBAAyB;IACrD,qBAAqB,EAAE,cAAc;IACrC,wBAAwB,EAAE,yBAAyB;IACnD,uBAAuB,EAAE,oNAAoN;IAC7O,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,iDAAiD;IACxE,iBAAiB,EAAE,6BAA6B;IAChD,oBAAoB,EAAE,aAAa;IACnC,mBAAmB,EAAE,gBAAgB;IACrC,mBAAmB,EAAE,YAAY;IACjC,uBAAuB,EAAE,aAAa;IACtC,iBAAiB,EAAE,qBAAqB;IACxC,0BAA0B,EAAE,yEAAyE;IACrG,2BAA2B,EAAE,oDAAoD;IACjF,yBAAyB,EAAE,2DAA2D;IACtF,0BAA0B,EAAE,qCAAqC;IACjE,uBAAuB,EAAE,+GAA+G;IACxI,wBAAwB,EAAE,cAAc;IACxC,2BAA2B,EAAE,iBAAiB;IAC9C,oCAAoC,EAAE,qBAAqB;IAC3D,mCAAmC,EAAE,oBAAoB;IACzD,sCAAsC,EAAE,uBAAuB;IAC/D,6BAA6B,EAAE,mCAAmC;IAClE,oCAAoC,EAAE,mCAAmC;IACzE,oBAAoB,EAAE,SAAS;IAC/B,oBAAoB,EAAE,SAAS;IAC/B,6BAA6B,EAAE,kJAAkJ;IACjL,6BAA6B,EAAE,UAAU;IACzC,0BAA0B,EAAE,mDAAmD;IAC/E,6BAA6B,EAAE,UAAU;IACzC,kCAAkC,EAAE,gEAAgE;IACpG,2BAA2B,EAAE,2MAA2M;IACxO,4BAA4B,EAAE,8GAA8G;IAC5I,4BAA4B,EAAE,sIAAsI;IACpK,iCAAiC,EAAE,wGAAwG;IAC3I,2BAA2B,EAAE,UAAU;IACvC,yBAAyB,EAAE,eAAe;IAC1C,2BAA2B,EAAE,wEAAwE;IACrG,4BAA4B,EAAE,sDAAsD;IACpF,wBAAwB,EAAE,gBAAgB;IAC1C,kBAAkB,EAAE,WAAW;IAC/B,sBAAsB,EAAE,aAAa;IACrC,kCAAkC,EAAE,mBAAmB;IACvD,iCAAiC,EAAE,kBAAkB;IACrD,oCAAoC,EAAE,qBAAqB;IAC3D,sBAAsB,EAAE,oCAAoC;IAC5D,0BAA0B,EAAE,wCAAwC;IACpE,2BAA2B,EAAE,mCAAmC;IAChE,kCAAkC,EAAE,iCAAiC;IACrE,uBAAuB,EAAE,+BAA+B;IACxD,2BAA2B,EAAE,iGAAiG;IAC9H,0BAA0B,EAAE,SAAS;IACrC,yBAAyB,EAAE,eAAe;IAC1C,wBAAwB,EAAE,OAAO;IACjC,6BAA6B,EAAE,+CAA+C;IAC9E,uBAAuB,EAAE,eAAe;IACxC,yBAAyB,EAAE,+DAA+D;IAC1F,0BAA0B,EAAE,yCAAyC;IACrE,gBAAgB,EAAE,OAAO;IACzB,oBAAoB,EAAE,WAAW;IACjC,qBAAqB,EAAE,UAAU;IACjC,sBAAsB,EAAE,UAAU;IAClC,qBAAqB,EAAE,uBAAuB;IAC9C,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,KAAK;IACzB,oBAAoB,EAAE,WAAW;IACjC,kBAAkB,EAAE,cAAc;IAClC,kBAAkB,EAAE,wQAAwQ;IAC5R,kBAAkB,EAAE,qBAAqB;IACzC,sBAAsB,EAAE,qEAAqE;IAC7F,sBAAsB,EAAE,gBAAgB;IACxC,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,YAAY;IAC7B,eAAe,EAAE,SAAS;IAC1B,iBAAiB,EAAE,WAAW;IAC9B,mBAAmB,EAAE,QAAQ;IAC7B,oBAAoB,EAAE,oBAAoB;IAC1C,oBAAoB,EAAE,sCAAsC;IAC5D,kBAAkB,EAAE,oCAAoC;IACxD,qBAAqB,EAAE,WAAW;IAClC,sBAAsB,EAAE,gBAAgB;IACxC,0BAA0B,EAAE,sMAAsM;IAClO,uBAAuB,EAAE,MAAM;IAC/B,iBAAiB,EAAE,iBAAiB;IACpC,qBAAqB,EAAE,gIAAgI;IACvJ,sBAAsB,EAAE,gCAAgC;IACxD,uBAAuB,EAAE,mHAAmH;IAC5I,6BAA6B,EAAE,2BAA2B;IAC1D,qBAAqB,EAAE,oDAAoD;IAC3E,yBAAyB,EAAE,6JAA6J;IACxL,sBAAsB,EAAE,uBAAuB;IAC/C,0BAA0B,EAAE,0FAA0F;IACtH,wBAAwB,EAAE,gBAAgB;IAC1C,6BAA6B,EAAE,oBAAoB;IACnD,8BAA8B,EAAE,kEAAkE;IAClG,qBAAqB,EAAE,kCAAkC;IACzD,6BAA6B,EAAE,0FAA0F;IACzH,qBAAqB,EAAE,UAAU;IACjC,iBAAiB,EAAE,MAAM;IACzB,iBAAiB,EAAE,MAAM;IACzB,sBAAsB,EAAE,YAAY;IACpC,cAAc,EAAE,KAAK;IACrB,qBAAqB,EAAE,SAAS;IAChC,gBAAgB,EAAE,OAAO;IACzB,iBAAiB,EAAE,QAAQ;IAC3B,eAAe,EAAE,MAAM;IACvB,kBAAkB,EAAE,iBAAiB;IACrC,mBAAmB,EAAE,QAAQ;IAC7B,kBAAkB,EAAE,OAAO;IAC3B,yBAAyB,EAAE,mDAAmD;IAC9E,wBAAwB,EAAE,cAAc;IACxC,wBAAwB,EAAE,oBAAoB;CACtC,CAAC","sourcesContent":["// The Store, the install screen and the plugin permission words in English. They live in the\n// framework catalogs (`waybetter/locales/<bcp47>.json`: `wb.store.*`, `wb.install.*`,\n// `wb.permission.*`), so every wayBetter app shows them in its language: merge the framework\n// catalogs into the app's i18n (as for the kit and shell words) and pass its `t` to the components\n// (`StoreText`). Placeholders: `{site}` is the site's name (\"X\", \"WhatsApp\"); `{kind}` is plugin or\n// theme (a select); `wb.permission.storage.detail`: keep the API names in parentheses unchanged.\n\nexport const STORE_MESSAGES = {\n 'wb.permission.storage.label': 'Storage',\n 'wb.permission.storage.detail': 'Keeps its own settings in this app (api.storage).',\n 'wb.permission.ui.label': 'Dialogs',\n 'wb.permission.ui.detail': 'Shows dialogs, prompts and notifications (api.ui, api.toast).',\n 'wb.permission.clipboard.label': 'Clipboard',\n 'wb.permission.clipboard.detail': 'Copies text to your clipboard (api.copyText).',\n 'wb.permission.account.label': 'Your account',\n 'wb.permission.account.detail': 'Reads which {site} account is signed in: handle, name, avatar (api.account).',\n 'wb.permission.commands.label': 'Commands',\n 'wb.permission.commands.detail': 'Adds commands to the command palette (Ctrl+K) that run in this page (api.commands).',\n 'wb.permission.users.label': 'Account details',\n 'wb.permission.users.detail': \"Reads what {site}'s own responses said about accounts: verified, follows you (api.users).\",\n 'wb.permission.network.label': 'Internet',\n 'wb.permission.network.detail': 'Says it contacts servers on the internet.',\n 'wb.permission.networkNone.label': 'No network',\n 'wb.permission.networkNone.detail': 'Says it never contacts a server; the install check found no network calls in its code.',\n 'wb.permission.legacy.label': 'Legacy · full page access',\n 'wb.permission.legacy.detail': 'No @permissions line: it gets the whole plugin API, like plugins before permissions.',\n 'wb.permission.none.label': 'No special access',\n 'wb.permission.none.detail': 'Only the basic page helpers (CSS, DOM, routes, keys, theme).',\n 'wb.permission.unknown': 'Unknown permission.',\n 'wb.store.category.reading': 'Reading',\n 'wb.store.category.writing': 'Writing',\n 'wb.store.category.filters': 'Filters',\n 'wb.store.category.focus': 'Focus',\n 'wb.store.category.tools': 'Tools',\n 'wb.store.category.dark': 'Dark',\n 'wb.store.category.light': 'Light',\n 'wb.store.category.icons': 'Icons',\n 'wb.store.builtIn': 'Built in',\n 'wb.store.use': 'Use',\n 'wb.store.install': 'Install',\n 'wb.store.updateTo': 'Update to {version}',\n 'wb.store.modifiedTitle': \"The installed file differs from the store's (edited, or from elsewhere). The store leaves it alone.\",\n 'wb.store.modified': 'Changed locally',\n 'wb.store.replace': 'Replace',\n 'wb.store.installed': 'Installed',\n 'wb.store.installedVersion': 'Installed · v{version}',\n 'wb.store.offline': 'Offline copy from {when}: {error}',\n 'wb.store.unreachableShort': 'Store unreachable',\n 'wb.store.verified': 'Signed catalog verified · updated {when}',\n 'wb.store.intro': \"Themes and plugins from the wayBetter Store. The catalog is signed; wayBetter checks the signature and every download's SHA-256 before it shows the install screen. Plugins list the permissions they ask for.\",\n 'wb.store.search': 'Search the store',\n 'wb.store.searchPlaceholder': 'Search themes and plugins',\n 'wb.store.kind': 'Kind',\n 'wb.store.themes': 'Themes',\n 'wb.store.checking': 'Checking…',\n 'wb.store.refresh': 'Refresh',\n 'wb.store.categories': 'Categories',\n 'wb.store.everything': 'Everything',\n 'wb.store.updates': '{count, plural, one {# update} other {# updates}} available',\n 'wb.store.unreachable': 'The store is not reachable',\n 'wb.store.tryAgain': 'Try again',\n 'wb.store.noCatalog': 'No catalog yet.',\n 'wb.store.nothingChanged': 'Nothing was installed or changed.',\n 'wb.store.noMatch': 'Nothing matches',\n 'wb.store.noMatchHint': 'Try another word or category.',\n 'wb.store.plugin': 'Plugin',\n 'wb.store.by': 'by {author}',\n 'wb.store.permissions': 'Permissions',\n 'wb.store.themeNow': '{name} is your theme now.',\n 'wb.store.foot': 'Have a theme or plugin file? Drop it on the wayBetter window, or open a waybetter://install link from waybetter.fyi. You always see this install screen first.',\n 'wb.install.lines': '{count, plural, one {# line} other {# lines}}',\n 'wb.install.moreLines': 'Show {count, plural, one {# more line} other {# more lines}}',\n 'wb.install.reinstall': 'Reinstall',\n 'wb.install.update': 'Update',\n 'wb.install.eyebrow.install': '{kind, select, plugin {Install plugin} theme {Install theme} other {Install}}',\n 'wb.install.eyebrow.update': '{kind, select, plugin {Update plugin} theme {Update theme} other {Update}}',\n 'wb.install.eyebrow.reinstall': '{kind, select, plugin {Reinstall plugin} theme {Reinstall theme} other {Reinstall}}',\n 'wb.install.noAuthor': 'No author or version given',\n 'wb.install.verified': 'Verified',\n 'wb.install.installedNow': 'Installed now',\n 'wb.install.identical': 'v{version} (identical)',\n 'wb.install.on': 'on',\n 'wb.install.replaces': 'Replaces',\n 'wb.install.replacesValue': 'your copy of this theme',\n 'wb.install.copyHash': 'Copy SHA-256',\n 'wb.install.permissions': 'Permissions it declares',\n 'wb.install.pageAccess': 'Plugins run inside {site} with the same access as the page: they can read what {site} shows you and act in it. Permissions limit what the wayBetter API gives a plugin, not the page. Install only code you trust.',\n 'wb.install.theCode': 'The code',\n 'wb.install.themeCss': 'Theme CSS (runs in {site} like your Custom CSS)',\n 'wb.install.code': 'Code that will be installed',\n 'wb.install.staysOn': 'It stays on',\n 'wb.install.turnOn': 'Turn it on now',\n 'wb.install.useNow': 'Use it now',\n 'wb.install.installing': 'Installing…',\n 'wb.install.done': '{name} is installed',\n 'wb.install.done.pluginOn': 'It is running in your {site} tabs now. Turn it off any time in Plugins.',\n 'wb.install.done.pluginOff': 'It is off. Turn it on in Plugins when you want it.',\n 'wb.install.done.themeOn': 'It is your theme now. Switch back any time in Appearance.',\n 'wb.install.done.themeOff': 'It is in your themes in Appearance.',\n 'wb.install.done.fonts': 'It names Google fonts ({fonts}). Appearance can download them for you; until then it uses its fallback fonts.',\n 'wb.install.openPlugins': 'Open Plugins',\n 'wb.install.openAppearance': 'Open Appearance',\n 'wb.install.eyebrow.strings.install': 'Install string pack',\n 'wb.install.eyebrow.strings.update': 'Update string pack',\n 'wb.install.eyebrow.strings.reinstall': 'Reinstall string pack',\n 'wb.install.err.stringsLarge': 'String packs are limited to 2 MB.',\n 'wb.install.err.stringsNotInstalled': 'The string pack was not installed',\n 'wb.install.license': 'Licence',\n 'wb.install.credits': 'Credits',\n 'wb.install.strings.dataOnly': 'Data only: text that replaces {site}’s own words. No code and no styles; nothing in it runs. Words it does not change stay as {site} shows them.',\n 'wb.install.strings.language': 'Language',\n 'wb.install.strings.count': '{count, plural, one {# string} other {# strings}}',\n 'wb.install.strings.coverage': 'Coverage',\n 'wb.install.strings.coverageValue': '{translated} of {translatable} of {site}’s strings ({percent})',\n 'wb.install.strings.closed': '{count, plural, one {# more string of {site} cannot be replaced by a pack yet (rich text, number formats)} other {# more strings of {site} cannot be replaced by a pack yet (rich text, number formats)}}',\n 'wb.install.strings.unknown': '{count, plural, one {# key {site} does not have is ignored} other {# keys {site} does not have are ignored}}',\n 'wb.install.strings.refused': '{count, plural, one {# string does not fit {site}’s own and is not used} other {# strings do not fit {site}’s own and are not used}}',\n 'wb.install.strings.otherCatalog': 'This pack is for another version of {site} (a different set of strings); it would change nothing here.',\n 'wb.install.strings.sample': 'A sample',\n 'wb.install.strings.file': 'The pack file',\n 'wb.install.done.stringsOn': 'Your {site} tabs reload to show it. Turn it off any time in Languages.',\n 'wb.install.done.stringsOff': 'It is off. Turn it on in Languages when you want it.',\n 'wb.install.openStrings': 'Open Languages',\n 'wb.store.strings': 'Languages',\n 'wb.store.stringsItem': 'String pack',\n 'wb.install.eyebrow.icons.install': 'Install icon pack',\n 'wb.install.eyebrow.icons.update': 'Update icon pack',\n 'wb.install.eyebrow.icons.reinstall': 'Reinstall icon pack',\n 'wb.install.err.icons': 'This icon pack cannot be installed',\n 'wb.install.err.iconsNone': '{site} cannot install icon packs here.',\n 'wb.install.err.iconsLarge': 'Icon packs are limited to 120 KB.',\n 'wb.install.err.iconsNotInstalled': 'The icon pack was not installed',\n 'wb.install.err.opened': 'This file cannot be installed',\n 'wb.install.icons.dataOnly': 'Data only: drawings as path data and small pictures. No code and no styles; nothing in it runs.',\n 'wb.install.icons.license': 'License',\n 'wb.install.icons.source': 'Drawings from',\n 'wb.install.icons.count': 'Icons',\n 'wb.install.icons.countValue': '{count, plural, one {# icon} other {# icons}}',\n 'wb.install.icons.file': 'The pack file',\n 'wb.install.done.iconsOn': 'It is your icon pack now. Switch back any time in Appearance.',\n 'wb.install.done.iconsOff': 'It is in your icon packs in Appearance.',\n 'wb.store.icons': 'Icons',\n 'wb.store.iconsItem': 'Icon pack',\n 'wb.store.builtinTab': 'Built in',\n 'wb.store.builtinItem': 'Built in',\n 'wb.store.areaSwitch': 'Turn {name} on or off',\n 'wb.store.areaOn': 'On',\n 'wb.store.areaOff': 'Off',\n 'wb.strings.section': 'Languages',\n 'wb.strings.title': 'String packs',\n 'wb.strings.intro': 'A string pack replaces {site}’s own words with text: a language {site} does not offer, a better translation, or your own wording. Packs apply in this order; a later one wins where two change the same word. Words no pack changes stay exactly as {site} shows them.',\n 'wb.strings.empty': 'No string packs yet',\n 'wb.strings.emptyHint': 'Get one from the Store, or drop a .strings.json file on the window.',\n 'wb.strings.openStore': 'Open the Store',\n 'wb.strings.by': 'by {authors}',\n 'wb.strings.on': 'Use {name}',\n 'wb.strings.up': 'Move up',\n 'wb.strings.down': 'Move down',\n 'wb.strings.remove': 'Remove',\n 'wb.strings.removed': '{name} is removed.',\n 'wb.strings.applied': 'Your {site} tabs reload to apply it.',\n 'wb.strings.limit': 'At most 8 packs can be on at once.',\n 'wb.strings.dataOnly': 'Data only',\n 'wb.strings.translate': 'Translate mode',\n 'wb.strings.translateHint': 'Every {site} tab shows a bar: click a word to change it. Your edits apply in that tab after a reload, and “Copy pack file” gives you a pack to share. While it is on, words carry invisible markers.',\n 'wb.install.doneButton': 'Done',\n 'wb.install.drop': 'Drop to install',\n 'wb.install.dropHint': 'A theme (.json), a plugin (.plugin.js) or a string pack (.strings.json). You will see what it is before anything is installed.',\n 'wb.install.err.theme': 'This theme cannot be installed',\n 'wb.install.stage.link': '{kind, select, plugin {Install plugin from {host}} theme {Install theme from {host}} other {Install from {host}}}',\n 'wb.install.stage.linkDetail': 'Downloading and checking…',\n 'wb.install.err.kind': '“{file}” is not a theme, a plugin or a string pack',\n 'wb.install.err.kindHint': 'wayBetter installs themes (.json), plugins (.plugin.js) and string packs (.strings.json). To attach a file to a post, drop it on {site}’s composer instead.',\n 'wb.install.err.large': '“{file}” is too large',\n 'wb.install.err.largeHint': '{kind, select, theme {Themes are limited to 2 MB.} other {Plugins are limited to 2 MB.}}',\n 'wb.install.stage.named': 'Install {name}',\n 'wb.install.stage.fileDetail': 'Checking the file…',\n 'wb.install.stage.storeDetail': 'Downloading from the wayBetter Store and checking its signature…',\n 'wb.install.err.link': 'This install link cannot be used',\n 'wb.install.err.notInstalled': '{kind, select, theme {The theme was not installed} other {The plugin was not installed}}',\n 'wb.install.untitled': 'Untitled',\n 'wb.install.file': 'File',\n 'wb.install.size': 'Size',\n 'wb.install.themeFile': 'Theme file',\n 'wb.store.all': 'All',\n 'wb.store.pluginsTab': 'Plugins',\n 'wb.store.theme': 'Theme',\n 'wb.store.remove': 'Remove',\n 'wb.store.keep': 'Keep',\n 'wb.store.removed': '{name} removed.',\n 'wb.install.cancel': 'Cancel',\n 'wb.install.close': 'Close',\n 'wb.install.source.store': 'wayBetter Store (signed catalog, sha256 verified)',\n 'wb.install.source.link': 'Link: {host}',\n 'wb.install.source.file': 'A file you dropped',\n} as const;\nexport type StoreKey = keyof typeof STORE_MESSAGES;\nexport type StoreParams = Readonly<Record<string, string | number>>;\n/** The app's translator for these keys (framework catalogs merged in): the formatted message. */\nexport type StoreText = (key: StoreKey, params?: StoreParams) => string;\n"]}
@@ -0,0 +1,205 @@
1
+ import { type StoreText } from './storeMessages.ts';
2
+ import type { StringsInfo } from './stringPacksModel.ts';
3
+ export type InstallKind = 'theme' | 'plugin' | 'strings' | 'icons';
4
+ /** What a catalog item can be: anything installable, or a feature that ships inside the app (`builtin`, shown with its switch). */
5
+ export type StoreKind = InstallKind | 'builtin';
6
+ export type SourceKind = 'store' | 'link' | 'file';
7
+ export type PermissionTone = 'plain' | 'warn' | 'ok';
8
+ export type PermissionBadge = {
9
+ id: string;
10
+ label: string;
11
+ detail: string;
12
+ tone: PermissionTone;
13
+ };
14
+ /** A store catalog item (waybetter-host `CatalogItem`; the catalog format is documented in docs/STORE.md). */
15
+ export type StoreItem = {
16
+ /** The wayBetter apps it is for; native code only hands an app its own items. */
17
+ apps?: string[];
18
+ kind: StoreKind;
19
+ id: string;
20
+ name: string;
21
+ author: string;
22
+ version: string;
23
+ description: string;
24
+ /** `url`, `sha256` and `size` are absent on a built-in item (nothing to download). */
25
+ category: string;
26
+ tags: string[];
27
+ url?: string;
28
+ file?: string;
29
+ sha256?: string;
30
+ size?: number;
31
+ preview?: string;
32
+ permissions?: string[] | null;
33
+ colors?: {
34
+ bg: string;
35
+ surface?: string;
36
+ text: string;
37
+ accent: string;
38
+ } | null;
39
+ /** String packs: the pack's language tag. */
40
+ language?: string;
41
+ /** Any kind: its licence and who made, translated or reviewed it. */
42
+ license?: string;
43
+ credits?: string;
44
+ };
45
+ export type InstallRecord = {
46
+ kind: InstallKind;
47
+ source: SourceKind;
48
+ url?: string;
49
+ storeId?: string;
50
+ version: string;
51
+ sha256: string;
52
+ installedAt: string;
53
+ };
54
+ export type InstalledPlugin = {
55
+ version: string;
56
+ sha256: string;
57
+ enabled: boolean;
58
+ };
59
+ /** What `store_catalog` returns (waybetter-host `StoreView`): this app's items and what is installed. */
60
+ export type StoreCatalogView = {
61
+ catalog: {
62
+ format?: number;
63
+ name: string;
64
+ generatedAt: string;
65
+ items: StoreItem[];
66
+ } | null;
67
+ fetchedAt: string | null;
68
+ error: string | null;
69
+ plugins: Record<string, InstalledPlugin>;
70
+ records: {
71
+ items: Record<string, InstallRecord>;
72
+ };
73
+ };
74
+ export type ScriptPluginMeta = {
75
+ file: string;
76
+ name: string;
77
+ description: string;
78
+ version: string;
79
+ author: string;
80
+ enabled: boolean;
81
+ permissions: string[] | null;
82
+ problems?: string[];
83
+ };
84
+ /** What `install_stage_*` / `store_stage` return (waybetter-host `InstallPreview`). */
85
+ export type InstallPreview = {
86
+ token: string;
87
+ kind: InstallKind;
88
+ source: {
89
+ kind: SourceKind;
90
+ url: string | null;
91
+ label: string;
92
+ signed: boolean;
93
+ };
94
+ sha256: string;
95
+ size: number;
96
+ file: string | null;
97
+ /** The exact text that will be written. */
98
+ text: string;
99
+ version: string;
100
+ plugin: ScriptPluginMeta | null;
101
+ theme: {
102
+ name: string;
103
+ author: string;
104
+ description: string;
105
+ cssChars: number;
106
+ } | null;
107
+ /** Icon packs: what the pack says about itself (the shell parses and draws the rest). */
108
+ icons?: {
109
+ id: string;
110
+ name: string;
111
+ author: string;
112
+ license: string;
113
+ glyphs: number;
114
+ } | null;
115
+ /** String packs: what the pack says about itself (coverage comes from the site's inventory). */
116
+ strings?: StringsInfo | null;
117
+ findings: string[];
118
+ existing: {
119
+ version: string;
120
+ enabled: boolean;
121
+ same: boolean;
122
+ } | null;
123
+ store: StoreItem | null;
124
+ };
125
+ /** The `install-link` event and `install_pending` entries (waybetter-host `LinkEvent`). */
126
+ export type LinkEvent = {
127
+ link?: {
128
+ kind: InstallKind;
129
+ url: string;
130
+ };
131
+ opened?: OpenedFile;
132
+ error?: string;
133
+ setup?: string;
134
+ };
135
+ /** A file the OS handed to the app ("Open with", double-click): its random id (`install_stage_opened`), name and what it would be. The path never reaches the shell. */
136
+ export type OpenedFile = {
137
+ id: string;
138
+ name: string;
139
+ kind: InstallKind;
140
+ };
141
+ /** Plugin permissions (waybetter-host `PERMISSIONS`, runtime `permissions.ts`) and how much they allow. */
142
+ export declare const PERMISSION_TONES: Readonly<Record<string, PermissionTone>>;
143
+ /** Badges for a plugin's declared permissions; `null` = no `@permissions` line (legacy). `site`: the site's name. */
144
+ export declare function permissionBadges(permissions: readonly string[] | null | undefined, t: StoreText, site: string): PermissionBadge[];
145
+ /** A store category's name (`wb.store.category.<id>`); unknown ones show their id. */
146
+ export declare function categoryLabel(id: string, t: StoreText): string;
147
+ /** What a dropped file is, by name: `.plugin.js` → plugin, `.strings.json` → string pack, `.icons.json` → icon pack, `.json` → theme, else nothing. */
148
+ export declare function kindForFile(name: string): InstallKind | null;
149
+ /** Largest file the shell reads before handing it to native validation (same caps as native). */
150
+ export declare const MAX_FILE_BYTES: Readonly<Record<InstallKind, number>>;
151
+ /** A free theme id: `wanted`, else `wanted-2`, `-3`, … (the way an import names copies). */
152
+ export declare function freeThemeId(wanted: string, taken: Iterable<string>): string;
153
+ /** `a` newer than `b` (numeric dot parts; same rule as native `newer_version`). */
154
+ export declare function newerVersion(a: string, b: string): boolean;
155
+ export type ItemState = {
156
+ state: 'install';
157
+ } | {
158
+ state: 'builtin';
159
+ }
160
+ /** A feature that ships inside the app (an area plugin); the Store shows its switch. */
161
+ | {
162
+ state: 'area';
163
+ } | {
164
+ state: 'installed';
165
+ version: string;
166
+ enabled?: boolean;
167
+ } | {
168
+ state: 'update';
169
+ version: string;
170
+ enabled?: boolean;
171
+ }
172
+ /** Installed but changed locally (edited file, or a copy from somewhere else): the store leaves it alone unless asked. */
173
+ | {
174
+ state: 'modified';
175
+ version: string;
176
+ enabled?: boolean;
177
+ };
178
+ export type ItemContext = {
179
+ plugins: Record<string, InstalledPlugin>;
180
+ records: Record<string, InstallRecord>;
181
+ /** Theme ids that ship with the app (a store copy of one is "built in"). */
182
+ builtinThemes: readonly string[];
183
+ /** The owner's own theme ids right now. */
184
+ userThemes: readonly string[];
185
+ /** The owner's installed icon pack ids right now (absent: trust the install records). */
186
+ userIcons?: readonly string[];
187
+ };
188
+ /**
189
+ * Where a store item stands on this machine. Plugins: by their file in the plugins folder.
190
+ * Themes: built-in ids are part of the app; otherwise the install record for a theme the owner
191
+ * still has.
192
+ */
193
+ export declare function itemState(item: StoreItem, context: ItemContext): ItemState;
194
+ /** The installed user theme id a store theme item was installed as (for updates in place). */
195
+ export declare function installedThemeId(item: StoreItem, records: Record<string, InstallRecord>, userThemes: readonly string[]): string | null;
196
+ /** Search and category filter for the store list. */
197
+ export declare function filterItems(items: readonly StoreItem[], query: string, kind: StoreKind | 'all', category: string | 'all'): StoreItem[];
198
+ export declare const formatBytes: (bytes: number) => string;
199
+ /** Lines of a preview with their numbers, the first `limit` only unless `all`. */
200
+ export declare function previewLines(text: string, limit: number, all?: boolean): {
201
+ lines: string[];
202
+ hidden: number;
203
+ };
204
+ /** An error from a native command, without its `CODE: ` prefix. */
205
+ export declare const errorText: (error: unknown) => string;
@@ -0,0 +1,146 @@
1
+ // The wayBetter Store and install screen, pure part: the wire types of the native store commands
2
+ // (waybetter-host `store`), what each plugin permission means, where a dropped file goes, which id a
3
+ // new theme gets, whether a store item is installed, current or has an update, search, and preview
4
+ // lines. Native code validates everything again; nothing here decides what may be installed.
5
+ import { STORE_MESSAGES } from "./storeMessages.js";
6
+ /** Plugin permissions (waybetter-host `PERMISSIONS`, runtime `permissions.ts`) and how much they allow. */
7
+ export const PERMISSION_TONES = {
8
+ storage: 'plain',
9
+ ui: 'plain',
10
+ clipboard: 'plain',
11
+ account: 'warn',
12
+ commands: 'plain',
13
+ users: 'warn',
14
+ network: 'warn',
15
+ 'network:none': 'ok',
16
+ };
17
+ /** `t(key)` for a key assembled at runtime, or `fallback` when the framework has no such message. */
18
+ function lookup(t, key, params, fallback) {
19
+ return key in STORE_MESSAGES ? t(key, params) : fallback;
20
+ }
21
+ /** Badges for a plugin's declared permissions; `null` = no `@permissions` line (legacy). `site`: the site's name. */
22
+ export function permissionBadges(permissions, t, site) {
23
+ if (permissions == null)
24
+ return [{ id: 'legacy', label: t('wb.permission.legacy.label'), detail: t('wb.permission.legacy.detail'), tone: 'warn' }];
25
+ if (permissions.length === 0)
26
+ return [{ id: 'none', label: t('wb.permission.none.label'), detail: t('wb.permission.none.detail'), tone: 'ok' }];
27
+ return permissions.map(id => {
28
+ const tone = PERMISSION_TONES[id];
29
+ if (!tone)
30
+ return { id, label: id, detail: t('wb.permission.unknown'), tone: 'warn' };
31
+ const name = id.replace(':none', 'None');
32
+ return { id, label: lookup(t, `wb.permission.${name}.label`, undefined, id), detail: lookup(t, `wb.permission.${name}.detail`, { site }, ''), tone };
33
+ });
34
+ }
35
+ /** A store category's name (`wb.store.category.<id>`); unknown ones show their id. */
36
+ export function categoryLabel(id, t) {
37
+ return lookup(t, `wb.store.category.${id}`, undefined, id);
38
+ }
39
+ /** What a dropped file is, by name: `.plugin.js` → plugin, `.strings.json` → string pack, `.icons.json` → icon pack, `.json` → theme, else nothing. */
40
+ export function kindForFile(name) {
41
+ const lower = name.toLowerCase();
42
+ if (lower.endsWith('.plugin.js'))
43
+ return 'plugin';
44
+ if (lower.endsWith('.strings.json'))
45
+ return 'strings';
46
+ if (lower.endsWith('.icons.json'))
47
+ return 'icons';
48
+ if (lower.endsWith('.json'))
49
+ return 'theme';
50
+ return null;
51
+ }
52
+ /** Largest file the shell reads before handing it to native validation (same caps as native). */
53
+ export const MAX_FILE_BYTES = { theme: 2 * 1024 * 1024, plugin: 2 * 1024 * 1024, strings: 2 * 1024 * 1024, icons: 120_000 };
54
+ /** A free theme id: `wanted`, else `wanted-2`, `-3`, … (the way an import names copies). */
55
+ export function freeThemeId(wanted, taken) {
56
+ const used = new Set(taken);
57
+ if (!used.has(wanted))
58
+ return wanted;
59
+ for (let n = 2;; n += 1) {
60
+ const id = `${wanted.slice(0, 36)}-${n}`;
61
+ if (!used.has(id))
62
+ return id;
63
+ }
64
+ }
65
+ /** `a` newer than `b` (numeric dot parts; same rule as native `newer_version`). */
66
+ export function newerVersion(a, b) {
67
+ const parts = (value) => value.split(/[.+-]/).map(part => Number.parseInt(part, 10) || 0);
68
+ const [x, y] = [parts(a), parts(b)];
69
+ for (let i = 0; i < Math.max(x.length, y.length); i += 1) {
70
+ const [p, q] = [x[i] ?? 0, y[i] ?? 0];
71
+ if (p !== q)
72
+ return p > q;
73
+ }
74
+ return false;
75
+ }
76
+ /**
77
+ * Where a store item stands on this machine. Plugins: by their file in the plugins folder.
78
+ * Themes: built-in ids are part of the app; otherwise the install record for a theme the owner
79
+ * still has.
80
+ */
81
+ export function itemState(item, context) {
82
+ if (item.kind === 'plugin') {
83
+ const installed = item.file ? context.plugins[item.file] : undefined;
84
+ if (!installed)
85
+ return { state: 'install' };
86
+ const base = { version: installed.version, enabled: installed.enabled };
87
+ if (installed.sha256 === item.sha256)
88
+ return { state: 'installed', ...base };
89
+ if (newerVersion(item.version, installed.version))
90
+ return { state: 'update', ...base };
91
+ return { state: 'modified', ...base };
92
+ }
93
+ if (item.kind === 'builtin')
94
+ return { state: 'area' };
95
+ if (item.kind === 'icons') {
96
+ const found = Object.entries(context.records).find(([key, value]) => key.startsWith('icons:') && value.storeId === item.id && (context.userIcons?.includes(key.slice(6)) ?? true));
97
+ if (!found)
98
+ return { state: 'install' };
99
+ const [, value] = found;
100
+ if (value.sha256 === item.sha256)
101
+ return { state: 'installed', version: value.version };
102
+ return newerVersion(item.version, value.version) ? { state: 'update', version: value.version } : { state: 'installed', version: value.version };
103
+ }
104
+ if (item.kind === 'strings') {
105
+ const record = context.records[`strings:${item.id}`];
106
+ if (!record)
107
+ return { state: 'install' };
108
+ if (record.sha256 === item.sha256)
109
+ return { state: 'installed', version: record.version };
110
+ return newerVersion(item.version, record.version) ? { state: 'update', version: record.version } : { state: 'installed', version: record.version };
111
+ }
112
+ if (context.builtinThemes.includes(item.id))
113
+ return { state: 'builtin' };
114
+ const id = installedThemeId(item, context.records, context.userThemes);
115
+ if (!id)
116
+ return { state: 'install' };
117
+ const value = context.records[`theme:${id}`];
118
+ if (value.sha256 === item.sha256)
119
+ return { state: 'installed', version: value.version };
120
+ return newerVersion(item.version, value.version) ? { state: 'update', version: value.version } : { state: 'installed', version: value.version };
121
+ }
122
+ /** The installed user theme id a store theme item was installed as (for updates in place). */
123
+ export function installedThemeId(item, records, userThemes) {
124
+ for (const [key, value] of Object.entries(records)) {
125
+ if (key.startsWith('theme:') && value.storeId === item.id && userThemes.includes(key.slice(6)))
126
+ return key.slice(6);
127
+ }
128
+ return null;
129
+ }
130
+ /** Search and category filter for the store list. */
131
+ export function filterItems(items, query, kind, category) {
132
+ const words = query.toLowerCase().split(/\s+/).filter(Boolean);
133
+ return items.filter(item => (kind === 'all' || item.kind === kind) && (category === 'all' || item.category === category)
134
+ && words.every(word => [item.name, item.description, item.author, item.category, item.language ?? '', ...item.tags, ...(item.permissions ?? [])].join(' ').toLowerCase().includes(word)));
135
+ }
136
+ export const formatBytes = (bytes) => bytes < 1024 ? `${bytes} B` : bytes < 1024 * 1024 ? `${(bytes / 1024).toFixed(1)} KB` : `${(bytes / 1024 / 1024).toFixed(2)} MB`;
137
+ /** Lines of a preview with their numbers, the first `limit` only unless `all`. */
138
+ export function previewLines(text, limit, all = false) {
139
+ const lines = text.replace(/\r\n?/g, '\n').split('\n');
140
+ if (all || lines.length <= limit)
141
+ return { lines, hidden: 0 };
142
+ return { lines: lines.slice(0, limit), hidden: lines.length - limit };
143
+ }
144
+ /** An error from a native command, without its `CODE: ` prefix. */
145
+ export const errorText = (error) => (error instanceof Error ? error.message : String(error)).replace(/^[A-Z]+: /, '');
146
+ //# sourceMappingURL=storeModel.js.map