fontastic 0.1.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/.editorconfig +16 -16
  2. package/.github/FUNDING.yml +3 -12
  3. package/.github/ISSUE_TEMPLATE/bug_report.yml +41 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.yml +29 -0
  5. package/.github/dependabot.yml +6 -6
  6. package/.github/pull_request_template.md +21 -21
  7. package/.github/workflows/claude-code-review.yml +45 -0
  8. package/.github/workflows/claude.yml +46 -0
  9. package/.github/workflows/macos.yml +77 -58
  10. package/.github/workflows/release.yml +165 -0
  11. package/.github/workflows/ubuntu.yml +87 -70
  12. package/.github/workflows/windows.yml +81 -64
  13. package/.husky/pre-commit +1 -0
  14. package/.lintstagedrc.json +6 -0
  15. package/.node-version +1 -1
  16. package/.postcssrc.json +5 -0
  17. package/.prettierignore +8 -0
  18. package/.prettierrc +18 -0
  19. package/.vscode/launch.json +42 -45
  20. package/.vscode/tasks.json +48 -48
  21. package/CODE_OF_CONDUCT.md +128 -45
  22. package/HOW_TO.md +39 -0
  23. package/LICENSE.md +7 -0
  24. package/README.md +103 -111
  25. package/angular.json +166 -202
  26. package/app/Application.js +39 -39
  27. package/app/Application.ts +38 -38
  28. package/app/config/alert.ts +31 -31
  29. package/app/config/database.js +194 -202
  30. package/app/config/database.ts +194 -202
  31. package/app/config/index.js +19 -19
  32. package/app/config/index.ts +2 -2
  33. package/app/config/mimes.js +48 -48
  34. package/app/config/mimes.ts +53 -53
  35. package/app/config/system.js +578 -496
  36. package/app/config/system.ts +580 -498
  37. package/app/config/themes.ts +38 -38
  38. package/app/core/AppLogger.js +30 -30
  39. package/app/core/AppLogger.ts +37 -37
  40. package/app/core/ConfigManager.js +129 -113
  41. package/app/core/ConfigManager.ts +150 -137
  42. package/app/core/ConnectionManager.js +93 -82
  43. package/app/core/ConnectionManager.ts +107 -95
  44. package/app/core/FontCatalog.js +32 -50
  45. package/app/core/FontCatalog.ts +20 -42
  46. package/app/core/FontFinder.js +72 -85
  47. package/app/core/FontFinder.ts +75 -96
  48. package/app/core/FontManager.js +128 -164
  49. package/app/core/FontManager.ts +136 -172
  50. package/app/core/FontObject.js +53 -53
  51. package/app/core/FontObject.ts +62 -62
  52. package/app/core/MessageHandler.js +270 -271
  53. package/app/core/MessageHandler.ts +330 -337
  54. package/app/core/SystemManager.js +132 -139
  55. package/app/core/SystemManager.ts +160 -171
  56. package/app/core/menu/Example.ts +279 -279
  57. package/app/core/menu/MenuBuilder.js +43 -44
  58. package/app/core/menu/MenuBuilder.ts +51 -53
  59. package/app/core/menu/templates/DarwinTemplate.js +124 -126
  60. package/app/core/menu/templates/DarwinTemplate.ts +144 -142
  61. package/app/core/menu/templates/SystemTemplate.js +121 -123
  62. package/app/core/menu/templates/SystemTemplate.ts +136 -139
  63. package/app/database/entity/Collection.schema.js +98 -98
  64. package/app/database/entity/Collection.schema.ts +68 -68
  65. package/app/database/entity/Logger.schema.js +49 -49
  66. package/app/database/entity/Logger.schema.ts +26 -26
  67. package/app/database/entity/Store.schema.js +159 -164
  68. package/app/database/entity/Store.schema.ts +110 -116
  69. package/app/database/entity/index.js +19 -19
  70. package/app/database/entity/index.ts +2 -2
  71. package/app/database/repository/Collection.repository.js +277 -180
  72. package/app/database/repository/Collection.repository.ts +291 -190
  73. package/app/database/repository/Logger.repository.js +24 -24
  74. package/app/database/repository/Logger.repository.ts +10 -10
  75. package/app/database/repository/Store.repository.js +324 -327
  76. package/app/database/repository/Store.repository.ts +349 -358
  77. package/app/database/repository/User.repository.js +11 -11
  78. package/app/database/repository/User.repository.ts +8 -8
  79. package/app/database/repository/index.js +19 -19
  80. package/app/database/repository/index.ts +2 -2
  81. package/app/enums/ChannelType.js +62 -61
  82. package/app/enums/ChannelType.ts +67 -65
  83. package/app/enums/StorageType.js +19 -18
  84. package/app/enums/{storageType.ts → StorageType.ts} +15 -14
  85. package/app/enums/index.js +18 -18
  86. package/app/enums/index.ts +2 -2
  87. package/app/helpers/command.js +27 -27
  88. package/app/helpers/command.ts +19 -19
  89. package/app/helpers/random.js +15 -15
  90. package/app/helpers/random.ts +12 -12
  91. package/app/main.js +97 -81
  92. package/app/main.ts +114 -94
  93. package/app/package-lock.json +2240 -2649
  94. package/app/package.json +23 -35
  95. package/app/types/AppAlert.js +2 -2
  96. package/app/types/AppAlert.ts +8 -8
  97. package/app/types/AuthUser.js +6 -6
  98. package/app/types/AuthUser.ts +5 -5
  99. package/app/types/Breadcrumb.js +2 -2
  100. package/app/types/Breadcrumb.ts +4 -4
  101. package/app/types/FontMetrics.ts +7 -0
  102. package/app/types/ImportOptions.js +6 -6
  103. package/app/types/ImportOptions.ts +3 -3
  104. package/app/types/QueryOptions.js +2 -2
  105. package/app/types/QueryOptions.ts +12 -12
  106. package/app/types/SystemConfig.js +2 -2
  107. package/app/types/SystemConfig.ts +127 -132
  108. package/app/types/SystemStats.js +2 -2
  109. package/app/types/SystemStats.ts +6 -7
  110. package/app/types/SystemTheme.js +2 -2
  111. package/app/types/SystemTheme.ts +5 -5
  112. package/app/types/index.js +24 -24
  113. package/app/types/index.ts +9 -8
  114. package/commitlint.config.mjs +3 -0
  115. package/e2e/main.spec.ts +57 -59
  116. package/e2e/playwright.config.ts +20 -19
  117. package/e2e/tsconfig.e2e.json +13 -13
  118. package/electron-builder.json +34 -71
  119. package/eslint.config.mjs +111 -0
  120. package/package.json +122 -123
  121. package/src/app/app.component.html +1 -2
  122. package/src/app/app.component.spec.ts +21 -0
  123. package/src/app/app.component.ts +40 -37
  124. package/src/app/core/core.module.ts +8 -11
  125. package/src/app/core/services/database/database.service.ts +410 -286
  126. package/src/app/core/services/electron/electron.service.spec.ts +12 -12
  127. package/src/app/core/services/electron/electron.service.ts +62 -62
  128. package/src/app/core/services/index.ts +5 -14
  129. package/src/app/core/services/message/message.service.ts +291 -289
  130. package/src/app/core/services/news/news.service.ts +52 -94
  131. package/src/app/core/services/presentation/presentation.service.ts +253 -341
  132. package/src/app/home/home.component.html +7 -0
  133. package/src/app/home/home.component.spec.ts +31 -0
  134. package/src/app/home/home.component.ts +15 -0
  135. package/src/app/layout/aside/aside.component.html +35 -9
  136. package/src/app/layout/aside/aside.component.ts +60 -26
  137. package/src/app/layout/footer/footer.component.html +5 -11
  138. package/src/app/layout/footer/footer.component.ts +13 -32
  139. package/src/app/layout/header/header.component.html +118 -35
  140. package/src/app/layout/header/header.component.ts +52 -229
  141. package/src/app/layout/layout.component.html +32 -14
  142. package/src/app/layout/layout.component.ts +19 -23
  143. package/src/app/layout/main/main.component.html +46 -0
  144. package/src/app/layout/main/main.component.ts +20 -0
  145. package/src/app/layout/navigation/library/library.component.ts +51 -0
  146. package/src/app/layout/navigation/navigation.component.html +126 -142
  147. package/src/app/layout/navigation/navigation.component.ts +372 -302
  148. package/src/app/layout/navigation/stats/stats.component.ts +56 -0
  149. package/src/app/settings/ai-keys/ai-keys.component.html +56 -0
  150. package/src/app/settings/ai-keys/ai-keys.component.ts +44 -0
  151. package/src/app/settings/danger-zone/danger-zone.component.html +22 -0
  152. package/src/app/settings/danger-zone/danger-zone.component.ts +37 -0
  153. package/src/app/settings/logs/logs.component.html +41 -0
  154. package/src/app/settings/logs/logs.component.ts +43 -0
  155. package/src/app/settings/news-api/news-api.component.html +40 -0
  156. package/src/app/settings/news-api/news-api.component.ts +57 -0
  157. package/src/app/settings/pages/general/general.component.html +7 -0
  158. package/src/app/settings/pages/general/general.component.ts +20 -0
  159. package/src/app/settings/pages/logs/logs.component.html +1 -0
  160. package/src/app/settings/pages/logs/logs.component.ts +10 -0
  161. package/src/app/settings/pages/system/system.component.html +1 -0
  162. package/src/app/settings/pages/system/system.component.ts +10 -0
  163. package/src/app/settings/quick-actions/quick-actions.component.html +49 -0
  164. package/src/app/settings/quick-actions/quick-actions.component.ts +40 -0
  165. package/src/app/settings/settings.component.html +47 -0
  166. package/src/app/settings/settings.component.ts +10 -0
  167. package/src/app/settings/system-info/system-info.component.html +21 -0
  168. package/src/app/settings/system-info/system-info.component.ts +42 -0
  169. package/src/app/settings/theme/theme.component.html +15 -0
  170. package/src/app/settings/theme/theme.component.ts +22 -0
  171. package/src/app/shared/components/collapsible-panel/collapsible-panel.component.ts +43 -0
  172. package/src/app/shared/components/context-menu/context-menu.component.ts +67 -0
  173. package/src/app/shared/components/datagrid/datagrid.component.html +96 -0
  174. package/src/app/shared/components/datagrid/datagrid.component.ts +49 -0
  175. package/src/app/shared/components/index.ts +11 -17
  176. package/src/app/shared/components/inspector/inspector.component.html +140 -0
  177. package/src/app/shared/components/inspector/inspector.component.ts +41 -0
  178. package/src/app/shared/components/page-not-found/page-not-found.component.html +1 -3
  179. package/src/app/shared/components/page-not-found/page-not-found.component.spec.ts +22 -0
  180. package/src/app/shared/components/page-not-found/page-not-found.component.ts +14 -12
  181. package/src/app/shared/components/panel/panel.component.html +5 -0
  182. package/src/app/shared/components/panel/panel.component.ts +8 -0
  183. package/src/app/shared/components/preview/preview.component.html +36 -0
  184. package/src/app/shared/components/preview/preview.component.ts +68 -0
  185. package/src/app/shared/components/prompt-dialog/prompt-dialog.component.html +36 -0
  186. package/src/app/shared/components/prompt-dialog/prompt-dialog.component.ts +39 -0
  187. package/src/app/shared/components/search/search.component.html +329 -54
  188. package/src/app/shared/components/search/search.component.ts +221 -77
  189. package/src/app/shared/components/spinner/spinner.component.ts +10 -26
  190. package/src/app/shared/components/toolbar/toolbar.component.html +207 -0
  191. package/src/app/shared/components/toolbar/toolbar.component.ts +99 -0
  192. package/src/app/shared/components/waterfall/waterfall.component.html +119 -0
  193. package/src/app/shared/components/waterfall/waterfall.component.ts +119 -0
  194. package/src/app/shared/directives/autofocus/autofocus.directive.ts +14 -0
  195. package/src/app/shared/directives/index.ts +2 -2
  196. package/src/app/shared/directives/webview/webview.directive.spec.ts +8 -0
  197. package/src/app/shared/directives/webview/webview.directive.ts +9 -8
  198. package/src/app/shared/shared.module.ts +13 -94
  199. package/src/assets/background.jpg +0 -0
  200. package/src/assets/fonts/md/MaterialIcons-Regular.woff2 +0 -0
  201. package/src/assets/fonts/md/MaterialSymbolsOutlined.woff2 +0 -0
  202. package/src/assets/i18n/en.json +12 -12
  203. package/src/assets/icons/electron.bmp +0 -0
  204. package/src/assets/icons/favicon.256x256.png +0 -0
  205. package/src/assets/icons/favicon.512x512.png +0 -0
  206. package/src/assets/icons/favicon.icns +0 -0
  207. package/src/assets/icons/favicon.ico +0 -0
  208. package/src/assets/icons/favicon.png +0 -0
  209. package/src/environments/environment.dev.ts +4 -4
  210. package/src/environments/environment.prod.ts +4 -4
  211. package/src/environments/environment.ts +4 -4
  212. package/src/favicon.ico +0 -0
  213. package/src/index.html +19 -13
  214. package/src/main.ts +65 -15
  215. package/src/styles/base/reset.css +41 -0
  216. package/src/styles/base/variables.css +356 -0
  217. package/src/styles/components/buttons.css +108 -0
  218. package/src/styles/components/cards.css +60 -0
  219. package/src/styles/components/forms.css +70 -0
  220. package/src/styles/components/navigation.css +24 -0
  221. package/src/styles/components/scrollbox.css +50 -0
  222. package/src/styles/components/spinner.css +7 -0
  223. package/src/styles/components/splash.css +47 -0
  224. package/src/styles/components/toolbar.css +92 -0
  225. package/src/styles/fonts/md.css +39 -0
  226. package/src/styles/themes/dashboard.scss +293 -294
  227. package/src/styles/themes/euphoria.scss +284 -283
  228. package/src/styles/themes/mellow.scss +281 -280
  229. package/src/styles/themes/midnight.scss +284 -283
  230. package/src/styles/themes/passion.scss +281 -280
  231. package/src/styles/themes/swiss.scss +284 -283
  232. package/src/styles.css +17 -0
  233. package/src/tsconfig.app.json +11 -20
  234. package/src/tsconfig.spec.json +10 -23
  235. package/src/typings.d.ts +9 -9
  236. package/src/vitest.d.ts +1 -0
  237. package/tsconfig.json +38 -44
  238. package/tsconfig.serve.json +27 -27
  239. package/.eslintrc.json +0 -54
  240. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -29
  241. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  242. package/.github/stale.yml +0 -17
  243. package/CONTRIBUTING.md +0 -72
  244. package/LICENSE +0 -21
  245. package/angular.webpack.js +0 -35
  246. package/app/core/FontInstaller.js +0 -67
  247. package/app/core/FontInstaller.ts +0 -63
  248. package/docs/logo.png +0 -0
  249. package/docs/screenshots/readme.md +0 -7
  250. package/docs/screenshots/screen-grab1.png +0 -0
  251. package/docs/screenshots/screen-grab2.png +0 -0
  252. package/docs/screenshots/screen-grab3.png +0 -0
  253. package/src/app/app-routing.module.ts +0 -15
  254. package/src/app/app.component.scss +0 -0
  255. package/src/app/app.component.spec.ts.dist +0 -33
  256. package/src/app/app.module.ts +0 -63
  257. package/src/app/core/model/AuthUserModel.ts +0 -7
  258. package/src/app/core/model/CustomThemeModel.ts +0 -7
  259. package/src/app/core/model/DbConnectionModel.ts +0 -16
  260. package/src/app/core/model/ImportOptionsModel.ts +0 -5
  261. package/src/app/core/model/LatestNewsModel.ts +0 -7
  262. package/src/app/core/model/SearchFormModel.ts +0 -10
  263. package/src/app/core/model/index.ts +0 -6
  264. package/src/app/core/services/alert/alert.service.spec.ts +0 -22
  265. package/src/app/core/services/alert/alert.service.ts +0 -71
  266. package/src/app/core/services/auth/auth.service.ts +0 -30
  267. package/src/app/core/services/boot/boot.service.ts +0 -33
  268. package/src/app/core/services/breadcrumb/breadcrumb.service.spec.ts +0 -22
  269. package/src/app/core/services/breadcrumb/breadcrumb.service.ts +0 -30
  270. package/src/app/core/services/config/config.service.ts +0 -63
  271. package/src/app/core/services/font/font.service.ts +0 -79
  272. package/src/app/core/services/gravatar/gravatar.service.spec.ts +0 -16
  273. package/src/app/core/services/gravatar/gravatar.service.ts +0 -18
  274. package/src/app/core/services/modal/modal.service.spec.ts +0 -16
  275. package/src/app/core/services/modal/modal.service.ts +0 -34
  276. package/src/app/core/services/utils/utils.service.spec.ts +0 -12
  277. package/src/app/core/services/utils/utils.service.ts +0 -144
  278. package/src/app/layout/aside/aside.component.scss +0 -1
  279. package/src/app/layout/footer/footer.component.scss +0 -27
  280. package/src/app/layout/header/header.component.scss +0 -60
  281. package/src/app/layout/layout.component.scss +0 -119
  282. package/src/app/layout/layout.module.ts +0 -32
  283. package/src/app/layout/layout.service.ts +0 -13
  284. package/src/app/layout/navigation/navigation.component.scss +0 -0
  285. package/src/app/pages/main/grid/grid.component.html +0 -183
  286. package/src/app/pages/main/grid/grid.component.scss +0 -3
  287. package/src/app/pages/main/grid/grid.component.ts +0 -98
  288. package/src/app/pages/main/inspect/inspect.component.html +0 -7
  289. package/src/app/pages/main/inspect/inspect.component.scss +0 -3
  290. package/src/app/pages/main/inspect/inspect.component.ts +0 -66
  291. package/src/app/pages/main/main-routing.module.ts +0 -30
  292. package/src/app/pages/main/main.component.html +0 -6
  293. package/src/app/pages/main/main.component.scss +0 -191
  294. package/src/app/pages/main/main.component.ts +0 -35
  295. package/src/app/pages/main/main.module.ts +0 -28
  296. package/src/app/pages/main/preview/preview.component.html +0 -46
  297. package/src/app/pages/main/preview/preview.component.scss +0 -0
  298. package/src/app/pages/main/preview/preview.component.ts +0 -239
  299. package/src/app/pages/main/toolbar/toolbar.component.html +0 -78
  300. package/src/app/pages/main/toolbar/toolbar.component.scss +0 -3
  301. package/src/app/pages/main/toolbar/toolbar.component.ts +0 -132
  302. package/src/app/shared/components/alert/alert.component.html +0 -9
  303. package/src/app/shared/components/alert/alert.component.scss +0 -0
  304. package/src/app/shared/components/alert/alert.component.ts +0 -37
  305. package/src/app/shared/components/breadcrumbs/breadcrumbs.component.html +0 -14
  306. package/src/app/shared/components/breadcrumbs/breadcrumbs.component.scss +0 -0
  307. package/src/app/shared/components/breadcrumbs/breadcrumbs.component.ts +0 -36
  308. package/src/app/shared/components/button/button.component.html +0 -3
  309. package/src/app/shared/components/button/button.component.scss +0 -2
  310. package/src/app/shared/components/button/button.component.ts +0 -22
  311. package/src/app/shared/components/collection/create-collection/create-collection.component.html +0 -41
  312. package/src/app/shared/components/collection/create-collection/create-collection.component.scss +0 -0
  313. package/src/app/shared/components/collection/create-collection/create-collection.component.ts +0 -68
  314. package/src/app/shared/components/collection/form-collection/form-collection.component.html +0 -1
  315. package/src/app/shared/components/collection/form-collection/form-collection.component.scss +0 -0
  316. package/src/app/shared/components/collection/form-collection/form-collection.component.ts +0 -15
  317. package/src/app/shared/components/collection/update-collection/update-collection.component.html +0 -40
  318. package/src/app/shared/components/collection/update-collection/update-collection.component.scss +0 -0
  319. package/src/app/shared/components/collection/update-collection/update-collection.component.ts +0 -71
  320. package/src/app/shared/components/glyph-list/glyph-list.component.html +0 -40
  321. package/src/app/shared/components/glyph-list/glyph-list.component.scss +0 -1
  322. package/src/app/shared/components/glyph-list/glyph-list.component.ts +0 -165
  323. package/src/app/shared/components/glyph-view/glyph-view.component.html +0 -23
  324. package/src/app/shared/components/glyph-view/glyph-view.component.scss +0 -0
  325. package/src/app/shared/components/glyph-view/glyph-view.component.ts +0 -228
  326. package/src/app/shared/components/loading/loading.component.html +0 -1
  327. package/src/app/shared/components/loading/loading.component.scss +0 -0
  328. package/src/app/shared/components/loading/loading.component.ts +0 -26
  329. package/src/app/shared/components/modal/modal.component.html +0 -31
  330. package/src/app/shared/components/modal/modal.component.scss +0 -0
  331. package/src/app/shared/components/modal/modal.component.ts +0 -51
  332. package/src/app/shared/components/page-not-found/page-not-found.component.scss +0 -0
  333. package/src/app/shared/components/paginator/paginator.component.html +0 -21
  334. package/src/app/shared/components/paginator/paginator.component.scss +0 -3
  335. package/src/app/shared/components/paginator/paginator.component.ts +0 -133
  336. package/src/app/shared/components/pairing/pairing.component.html +0 -20
  337. package/src/app/shared/components/pairing/pairing.component.scss +0 -0
  338. package/src/app/shared/components/pairing/pairing.component.ts +0 -33
  339. package/src/app/shared/components/search/search.component.scss +0 -10
  340. package/src/app/shared/components/settings/database/database.component.html +0 -151
  341. package/src/app/shared/components/settings/database/database.component.scss +0 -0
  342. package/src/app/shared/components/settings/database/database.component.ts +0 -145
  343. package/src/app/shared/components/settings/general/general.component.html +0 -170
  344. package/src/app/shared/components/settings/general/general.component.scss +0 -0
  345. package/src/app/shared/components/settings/general/general.component.ts +0 -150
  346. package/src/app/shared/components/settings/logs/logs.component.html +0 -44
  347. package/src/app/shared/components/settings/logs/logs.component.scss +0 -0
  348. package/src/app/shared/components/settings/logs/logs.component.ts +0 -37
  349. package/src/app/shared/components/settings/news/news.component.html +0 -41
  350. package/src/app/shared/components/settings/news/news.component.scss +0 -0
  351. package/src/app/shared/components/settings/news/news.component.ts +0 -52
  352. package/src/app/shared/components/settings/settings.component.html +0 -46
  353. package/src/app/shared/components/settings/settings.component.scss +0 -0
  354. package/src/app/shared/components/settings/settings.component.ts +0 -23
  355. package/src/app/shared/components/settings/system/system.component.html +0 -30
  356. package/src/app/shared/components/settings/system/system.component.scss +0 -0
  357. package/src/app/shared/components/settings/system/system.component.ts +0 -43
  358. package/src/app/shared/components/settings/theme/theme.component.html +0 -22
  359. package/src/app/shared/components/settings/theme/theme.component.scss +0 -0
  360. package/src/app/shared/components/settings/theme/theme.component.ts +0 -50
  361. package/src/app/shared/components/spinner/spinner.component.html +0 -1
  362. package/src/app/shared/components/spinner/spinner.component.scss +0 -0
  363. package/src/app/shared/components/splash-screen/splash-screen.component.html +0 -5
  364. package/src/app/shared/components/splash-screen/splash-screen.component.scss +0 -31
  365. package/src/app/shared/components/splash-screen/splash-screen.component.ts +0 -17
  366. package/src/app/shared/components/store/store.component.html +0 -22
  367. package/src/app/shared/components/store/store.component.scss +0 -10
  368. package/src/app/shared/components/store/store.component.ts +0 -58
  369. package/src/app/shared/components/tables/tables.component.html +0 -47
  370. package/src/app/shared/components/tables/tables.component.scss +0 -10
  371. package/src/app/shared/components/tables/tables.component.ts +0 -81
  372. package/src/app/shared/components/typescale/typescale.component.html +0 -53
  373. package/src/app/shared/components/typescale/typescale.component.scss +0 -0
  374. package/src/app/shared/components/typescale/typescale.component.ts +0 -168
  375. package/src/app/shared/directives/gravatar/gravatar.directive.ts +0 -29
  376. package/src/app/shared/pipes/installable.pipe.ts +0 -10
  377. package/src/app/shared/pipes/prettybytes.pipe.ts +0 -10
  378. package/src/app/shared/pipes/safehtml.pipe.ts +0 -10
  379. package/src/assets/fonts/fa/fa-brands-400.eot +0 -0
  380. package/src/assets/fonts/fa/fa-brands-400.svg +0 -3535
  381. package/src/assets/fonts/fa/fa-brands-400.ttf +0 -0
  382. package/src/assets/fonts/fa/fa-brands-400.woff +0 -0
  383. package/src/assets/fonts/fa/fa-brands-400.woff2 +0 -0
  384. package/src/assets/fonts/fa/fa-regular-400.eot +0 -0
  385. package/src/assets/fonts/fa/fa-regular-400.svg +0 -803
  386. package/src/assets/fonts/fa/fa-regular-400.ttf +0 -0
  387. package/src/assets/fonts/fa/fa-regular-400.woff +0 -0
  388. package/src/assets/fonts/fa/fa-regular-400.woff2 +0 -0
  389. package/src/assets/fonts/fa/fa-solid-900.eot +0 -0
  390. package/src/assets/fonts/fa/fa-solid-900.svg +0 -4700
  391. package/src/assets/fonts/fa/fa-solid-900.ttf +0 -0
  392. package/src/assets/fonts/fa/fa-solid-900.woff +0 -0
  393. package/src/assets/fonts/fa/fa-solid-900.woff2 +0 -0
  394. package/src/assets/fonts/md/MaterialIcons-Regular.eot +0 -0
  395. package/src/assets/fonts/md/MaterialIcons-Regular.ijmap +0 -1
  396. package/src/assets/fonts/md/MaterialIcons-Regular.svg +0 -2373
  397. package/src/assets/fonts/md/MaterialIcons-Regular.ttf +0 -0
  398. package/src/assets/fonts/md/MaterialIcons-Regular.woff +0 -0
  399. package/src/assets/fonts/md/README.md +0 -9
  400. package/src/assets/fonts/md/codepoints +0 -932
  401. package/src/assets/fonts/md/material-icons.css +0 -36
  402. package/src/assets/fonts/octicon/octicon.eot +0 -0
  403. package/src/assets/fonts/octicon/octicon.svg +0 -378
  404. package/src/assets/fonts/octicon/octicon.ttf +0 -0
  405. package/src/assets/fonts/octicon/octicon.woff +0 -0
  406. package/src/assets/fonts/octicon/octicon.woff2 +0 -0
  407. package/src/assets/fonts/roboto/Roboto-Bold-webfont.eot +0 -0
  408. package/src/assets/fonts/roboto/Roboto-Bold-webfont.svg +0 -607
  409. package/src/assets/fonts/roboto/Roboto-Bold-webfont.ttf +0 -0
  410. package/src/assets/fonts/roboto/Roboto-Bold-webfont.woff +0 -0
  411. package/src/assets/fonts/roboto/Roboto-Medium-webfont.eot +0 -0
  412. package/src/assets/fonts/roboto/Roboto-Medium-webfont.svg +0 -607
  413. package/src/assets/fonts/roboto/Roboto-Medium-webfont.ttf +0 -0
  414. package/src/assets/fonts/roboto/Roboto-Medium-webfont.woff +0 -0
  415. package/src/assets/fonts/roboto/Roboto-Regular-webfont.eot +0 -0
  416. package/src/assets/fonts/roboto/Roboto-Regular-webfont.svg +0 -635
  417. package/src/assets/fonts/roboto/Roboto-Regular-webfont.ttf +0 -0
  418. package/src/assets/fonts/roboto/Roboto-Regular-webfont.woff +0 -0
  419. package/src/assets/icons/android-chrome-192x192.png +0 -0
  420. package/src/assets/icons/android-chrome-512x512.png +0 -0
  421. package/src/assets/icons/apple-touch-icon.png +0 -0
  422. package/src/assets/icons/favicon-16x16.png +0 -0
  423. package/src/assets/icons/favicon-32x32.png +0 -0
  424. package/src/assets/icons/site.webmanifest +0 -1
  425. package/src/assets/images/electron.bmp +0 -0
  426. package/src/bin/activator +0 -0
  427. package/src/bin/activator.exe +0 -0
  428. package/src/environments/environment.web.prod.ts +0 -4
  429. package/src/environments/environment.web.ts +0 -4
  430. package/src/karma.conf.js +0 -50
  431. package/src/polyfills-test.ts +0 -1
  432. package/src/polyfills.ts +0 -53
  433. package/src/styles/base/loading.scss +0 -87
  434. package/src/styles/base/reset.scss +0 -408
  435. package/src/styles/components/alert.scss +0 -54
  436. package/src/styles/components/buttons.scss +0 -93
  437. package/src/styles/components/forms.scss +0 -96
  438. package/src/styles/components/inputs.scss +0 -113
  439. package/src/styles/components/modal.scss +0 -52
  440. package/src/styles/components/paginator.scss +0 -108
  441. package/src/styles/components/scrollbox.scss +0 -71
  442. package/src/styles/components/spinner.scss +0 -11
  443. package/src/styles/components/tables.scss +0 -42
  444. package/src/styles/components/tabs.scss +0 -44
  445. package/src/styles/components/toolbar.scss +0 -130
  446. package/src/styles/fonts/md.scss +0 -54
  447. package/src/styles/fonts/octicons.scss +0 -1351
  448. package/src/styles/fonts/roboto.scss +0 -32
  449. package/src/styles/tools/_functions.scss +0 -5
  450. package/src/styles/tools/_mixins.scss +0 -159
  451. package/src/styles/tools/_placeholders.scss +0 -17
  452. package/src/styles/tools/_variables.scss +0 -67
  453. package/src/styles.scss +0 -37
  454. package/src/test.ts +0 -17
  455. package/tailwind.config.js +0 -67
@@ -1,272 +1,271 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const electron_1 = require("electron");
13
- const AppLogger_1 = require("./AppLogger");
14
- // import { Logger } from '../database/entity/Logger.schema';
15
- // import { Store, StoreManyAndCountType } from '../database/entity/Store.schema';
16
- const ChannelType_1 = require("../enums/ChannelType");
17
- class MessageHandler {
18
- constructor(systemManager, configManager, connectionManager, fontManager) {
19
- this.systemManager = systemManager;
20
- this.configManager = configManager;
21
- this.connectionManager = connectionManager;
22
- this.fontManager = fontManager;
23
- }
24
- on(channel, done) {
25
- return electron_1.ipcMain.on(channel, done);
26
- }
27
- send(event, channel, data) {
28
- return event.sender.send(channel, data);
29
- }
30
- handle(channel, done) {
31
- return electron_1.ipcMain.handle(channel, done);
32
- }
33
- initialize() {
34
- this.initSystemCollection();
35
- this.on(ChannelType_1.ChannelType.IPC_REQUEST_SYSTEM_BOOT, (event, _args) => __awaiter(this, void 0, void 0, function* () {
36
- let config = this.configManager.toArray();
37
- let system = this.systemManager.toArray();
38
- const response = Object.assign(Object.assign({}, config), { system: system });
39
- this.send(event, ChannelType_1.ChannelType.IPC_RESPONSE_SYSTEM_BOOT, response);
40
- }));
41
- this.on(ChannelType_1.ChannelType.IPC_SYSTEM_REBOOT, (_event, _args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.reLaunch(); }));
42
- // Config Manager
43
- this.handle(ChannelType_1.ChannelType.IPC_SET_CONFIG, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.set(args.key, args.values); }));
44
- this.handle(ChannelType_1.ChannelType.IPC_GET_CONFIG, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.get(args.key); }));
45
- this.handle(ChannelType_1.ChannelType.IPC_ZAP_CONFIG, (_event) => __awaiter(this, void 0, void 0, function* () { return this.configManager.clear(); }));
46
- // Connection Manager
47
- this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.createDbConnection(args); }));
48
- this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_ENABLE, (_event, args) => this.configManager.enableDbConnection(args));
49
- this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_DELETE, (_event, name) => __awaiter(this, void 0, void 0, function* () { return this.configManager.deleteDbConnection(name); }));
50
- this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_TEST, (_event, args) => __awaiter(this, void 0, void 0, function* () {
51
- const options = this.connectionManager.dataSource.options;
52
- if (options.database === args.database) {
53
- return this.connectionManager.isInitialized()
54
- .then(() => this.sendMessage('success', 'Connection tested successfully'))
55
- .catch((err) => this.sendMessage('error', err.message));
56
- }
57
- else {
58
- return this.connectionManager.createDataSource(args)
59
- .then(() => this.sendMessage('success', 'Connection tested successfully'))
60
- .catch((err) => this.sendMessage('error', err.message));
61
- }
62
- }));
63
- this.handle(ChannelType_1.ChannelType.IPC_DATABASE_DROP, (_event) => __awaiter(this, void 0, void 0, function* () { return this.connectionManager.getDataSource().dropDatabase(); }));
64
- // Font Manager
65
- this.handle(ChannelType_1.ChannelType.IPC_EXEC_CMD, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.executeCommand(args).catch((err) => this.sendMessage('error', err.message)); }));
66
- this.handle(ChannelType_1.ChannelType.IPC_AUTH_USER, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.systemAuthenticate(args); }));
67
- this.handle(ChannelType_1.ChannelType.IPC_SCAN_FILES, (event, args) => __awaiter(this, void 0, void 0, function* () {
68
- const promises = [];
69
- const addToCatalog = () => __awaiter(this, void 0, void 0, function* () {
70
- const dest = this.fontManager.getDestinationFolder();
71
- yield this.fontManager.createCatalog(dest);
72
- yield this.fontManager.copyFiles(args.files, dest);
73
- const files = this.fontManager.getMapFilePaths(args.files, dest);
74
- yield this.fontManager.scanFiles(files, { collection_id: args.collectionId });
75
- });
76
- const addInPlace = () => __awaiter(this, void 0, void 0, function* () {
77
- yield this.fontManager.scanFiles(args.files, { collection_id: args.collectionId });
78
- });
79
- if (args.addToCatalog) {
80
- promises.push(addToCatalog());
81
- }
82
- else {
83
- promises.push(addInPlace());
84
- }
85
- return Promise.allSettled(promises);
86
- }));
87
- this.handle(ChannelType_1.ChannelType.IPC_SCAN_FOLDERS, (_event, args) => __awaiter(this, void 0, void 0, function* () {
88
- const promises = [];
89
- args.folders.forEach((sourceFolder) => __awaiter(this, void 0, void 0, function* () {
90
- const addToCatalog = () => __awaiter(this, void 0, void 0, function* () {
91
- const folders = this.fontManager.getSourceDestinationFolders(sourceFolder);
92
- yield this.fontManager.createCatalog(folders.dest);
93
- yield this.fontManager.copyFolders(folders.src, folders.dest);
94
- yield this.fontManager.scanFolders(folders.dest, { collection_id: args.collectionId });
95
- });
96
- const addInPlace = () => __awaiter(this, void 0, void 0, function* () {
97
- yield this.fontManager.scanFolders(sourceFolder, { collection_id: args.collectionId });
98
- });
99
- if (args.addToCatalog) {
100
- promises.push(addToCatalog());
101
- }
102
- else {
103
- promises.push(addInPlace());
104
- }
105
- }));
106
- return Promise.allSettled(promises);
107
- }));
108
- this.handle(ChannelType_1.ChannelType.IPC_ACTIVATE_FONT, (_event, args) => __awaiter(this, void 0, void 0, function* () {
109
- this.fontManager.fontInstaller(args).catch((err) => this.sendMessage('error', err.message));
110
- }));
111
- this.handle(ChannelType_1.ChannelType.IPC_ACTIVATE_FOLDER, (_event, args) => __awaiter(this, void 0, void 0, function* () {
112
- this.fontManager.folderInstaller(args).catch((err) => this.sendMessage('error', err.message));
113
- }));
114
- this.handle(ChannelType_1.ChannelType.IPC_FETCH_NEWS, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.fetchLatestNews(args); }));
115
- this.handle(ChannelType_1.ChannelType.IPC_SHOW_MESSAGE_BOX, (_event, options) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showMessageBox(options); }));
116
- this.handle(ChannelType_1.ChannelType.IPC_SHOW_OPEN_DIALOG, (_event, options) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showOpenDialog(options); }));
117
- this.handle(ChannelType_1.ChannelType.IPC_OPEN_PATH, (_event, path) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.openPath(path); }));
118
- this.handle(ChannelType_1.ChannelType.IPC_OPEN_FOLDER, (_event, fullPath) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showItemInFolder(fullPath); }));
119
- this.handle(ChannelType_1.ChannelType.IPC_OPEN_EXTERNAL, (_event, url) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.openExternal(url); }));
120
- this.on(ChannelType_1.ChannelType.IPC_RELOAD_WINDOW, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.reLaunch(); }));
121
- this.on(ChannelType_1.ChannelType.IPC_EXIT, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.exit(); }));
122
- this.on(ChannelType_1.ChannelType.IPC_QUIT, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.quit(); }));
123
- this.on(ChannelType_1.ChannelType.IPC_BEEP, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.beep(); }));
124
- // Collection
125
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
126
- return yield this.connectionManager.getCollection().find(args);
127
- }));
128
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
129
- return yield this.connectionManager.getCollectionRepository().findOne(args);
130
- }));
131
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
132
- return yield this.connectionManager.getCollectionRepository().findOneBy(args);
133
- }));
134
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FETCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
135
- return yield this.fetchCollectionsWithCounts(args);
136
- }));
137
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
138
- yield this.connectionManager.getCollectionRepository().createCollection(args);
139
- return yield this.fetchCollectionsWithCounts(args);
140
- }));
141
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
142
- yield this.connectionManager.getCollectionRepository().updateCollection(args.collectionId, args.data);
143
- return yield this.fetchCollectionsWithCounts(args);
144
- }));
145
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_DELETE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
146
- yield this.connectionManager.getCollectionRepository().deleteCollection(args.collectionId);
147
- return yield this.fetchCollectionsWithCounts(args);
148
- }));
149
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_IDS, (_event, args) => __awaiter(this, void 0, void 0, function* () {
150
- return yield this.connectionManager.getCollectionRepository().updateCollectionIds(args.ids, args.data);
151
- }));
152
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_ENABLE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
153
- yield this.connectionManager.getCollectionRepository().resetEnabled();
154
- yield this.connectionManager.getCollectionRepository().updateCollection(args.collectionId, args.data);
155
- return yield this.fetchCollectionsWithCounts(args);
156
- }));
157
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_COUNT, (_event, collectionId) => __awaiter(this, void 0, void 0, function* () {
158
- const { total } = yield this.connectionManager.getStoreRepository().fetchCollectionCount(collectionId);
159
- yield this.connectionManager.getCollectionRepository().updateCollectionCount(collectionId, total);
160
- return yield this.fetchCollectionsWithCounts({});
161
- }));
162
- this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_COUNTS, (_event) => __awaiter(this, void 0, void 0, function* () {
163
- const items = yield this.connectionManager.getStoreRepository().fetchCollectionsCount();
164
- yield this.connectionManager.getCollectionRepository().updateCollectionCounts(items);
165
- return yield this.fetchCollectionsWithCounts({});
166
- }));
167
- // Store
168
- this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
169
- return yield this.connectionManager.getStore().find(args);
170
- }));
171
- this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
172
- return yield this.connectionManager.getStoreRepository().findOne(args);
173
- }));
174
- this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
175
- return yield this.connectionManager.getStoreRepository().findOneBy(args);
176
- }));
177
- this.handle(ChannelType_1.ChannelType.IPC_STORE_FETCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
178
- args.ids = [];
179
- if (args.collectionId) {
180
- const row = yield this.connectionManager.getCollectionRepository().findOneBy({ id: args.collectionId });
181
- if (row) {
182
- const children = yield this.connectionManager.getCollectionRepository().fetchChildren(row, true, false);
183
- if (Array.isArray(children)) {
184
- args.ids = Object.keys(children).map(val => children[val].id);
185
- }
186
- }
187
- }
188
- return yield this.connectionManager.getStoreRepository().fetch(args);
189
- }));
190
- this.handle(ChannelType_1.ChannelType.IPC_STORE_SEARCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
191
- return yield this.connectionManager.getStoreRepository().search(args);
192
- }));
193
- this.handle(ChannelType_1.ChannelType.IPC_STORE_UPDATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
194
- yield this.connectionManager.getStoreRepository().update(args.id, args.data);
195
- return yield this.connectionManager.getStoreRepository().findOne({ where: { id: args.id } });
196
- }));
197
- this.handle(ChannelType_1.ChannelType.IPC_STORE_SYNC_SYSTEM, (_event) => __awaiter(this, void 0, void 0, function* () {
198
- yield this.connectionManager.getStoreRepository().resetSystem();
199
- const row = yield this.connectionManager.getCollectionRepository().findOneBy({ is_system: 1 });
200
- if (row) {
201
- const paths = this.systemManager.getPlatformFontPaths();
202
- const promises = [];
203
- paths.forEach((folder) => __awaiter(this, void 0, void 0, function* () {
204
- promises.push(this.fontManager.scanFolders(folder, { collection_id: row.id, system: 1 }).catch((err) => AppLogger_1.default.getInstance().error(err)));
205
- }));
206
- Promise.allSettled(promises).then(() => __awaiter(this, void 0, void 0, function* () {
207
- return yield this.connectionManager.getStoreRepository().fetchSystemStats();
208
- }));
209
- }
210
- }));
211
- this.handle(ChannelType_1.ChannelType.IPC_STORE_SYNC_ACTIVATED, (_event) => __awaiter(this, void 0, void 0, function* () {
212
- yield this.connectionManager.getStoreRepository().resetActivated();
213
- yield this.connectionManager.getStoreRepository().syncActivated();
214
- return yield this.connectionManager.getStoreRepository().fetchSystemStats();
215
- }));
216
- this.handle(ChannelType_1.ChannelType.IPC_STORE_RESET_FAVORITES, (_event) => __awaiter(this, void 0, void 0, function* () {
217
- yield this.connectionManager.getStoreRepository().resetFavorites();
218
- return yield this.connectionManager.getStoreRepository().fetchSystemStats();
219
- }));
220
- this.handle(ChannelType_1.ChannelType.IPC_STORE_SYSTEM_STATS, (_event) => __awaiter(this, void 0, void 0, function* () {
221
- return yield this.connectionManager.getStoreRepository().fetchSystemStats();
222
- }));
223
- // Logger
224
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
225
- return yield this.connectionManager.getLogger().find(args);
226
- }));
227
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
228
- return yield this.connectionManager.getLoggerRepository().findOne(args);
229
- }));
230
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
231
- return yield this.connectionManager.getLoggerRepository().findOneBy(args);
232
- }));
233
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
234
- return yield this.connectionManager.getLoggerRepository().saveData(args);
235
- }));
236
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_DELETE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
237
- return yield this.connectionManager.getLogger().delete(args.id);
238
- }));
239
- this.handle(ChannelType_1.ChannelType.IPC_LOGGER_TRUNCATE, (_event) => __awaiter(this, void 0, void 0, function* () {
240
- return yield this.connectionManager.getLogger().clear();
241
- }));
242
- }
243
- // Misc
244
- sendMessage(type, message) {
245
- return { type, message };
246
- }
247
- initSystemCollection() {
248
- return __awaiter(this, void 0, void 0, function* () {
249
- const row = yield this.connectionManager.getCollectionRepository().findOneBy({ is_system: 1 });
250
- if (!row) {
251
- return yield this.connectionManager.getCollectionRepository().createSystemCollection();
252
- }
253
- return true;
254
- });
255
- }
256
- fetchCollectionsWithRelations() {
257
- return __awaiter(this, void 0, void 0, function* () {
258
- return yield this.connectionManager.getCollection().find({
259
- relations: {
260
- stores: true,
261
- },
262
- }).catch((err) => AppLogger_1.default.getInstance().info(err.message));
263
- });
264
- }
265
- fetchCollectionsWithCounts(args) {
266
- return __awaiter(this, void 0, void 0, function* () {
267
- return yield this.connectionManager.getCollectionRepository().fetchCollectionsWithCounts(args);
268
- });
269
- }
270
- }
271
- exports.default = MessageHandler;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const electron_1 = require("electron");
13
+ const FontObject_1 = require("./FontObject");
14
+ const AppLogger_1 = require("./AppLogger");
15
+ // import { Logger } from '../database/entity/Logger.schema';
16
+ // import { Store, StoreManyAndCountType } from '../database/entity/Store.schema';
17
+ const ChannelType_1 = require("../enums/ChannelType");
18
+ class MessageHandler {
19
+ constructor(systemManager, configManager, connectionManager, fontManager) {
20
+ this.systemManager = systemManager;
21
+ this.configManager = configManager;
22
+ this.connectionManager = connectionManager;
23
+ this.fontManager = fontManager;
24
+ }
25
+ on(channel, done) {
26
+ return electron_1.ipcMain.on(channel, done);
27
+ }
28
+ send(event, channel, data) {
29
+ return event.sender.send(channel, data);
30
+ }
31
+ handle(channel, done) {
32
+ return electron_1.ipcMain.handle(channel, done);
33
+ }
34
+ initialize() {
35
+ this.initSystemCollection();
36
+ this.on(ChannelType_1.ChannelType.IPC_REQUEST_SYSTEM_BOOT, (event, _args) => __awaiter(this, void 0, void 0, function* () {
37
+ let config = this.configManager.toArray();
38
+ let system = this.systemManager.toArray();
39
+ const response = Object.assign(Object.assign({}, config), { system: system });
40
+ this.send(event, ChannelType_1.ChannelType.IPC_RESPONSE_SYSTEM_BOOT, response);
41
+ }));
42
+ this.on(ChannelType_1.ChannelType.IPC_SYSTEM_REBOOT, (_event, _args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.reLaunch(); }));
43
+ // Config Manager
44
+ this.handle(ChannelType_1.ChannelType.IPC_SET_CONFIG, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.set(args.key, args.values); }));
45
+ this.handle(ChannelType_1.ChannelType.IPC_GET_CONFIG, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.get(args.key); }));
46
+ this.handle(ChannelType_1.ChannelType.IPC_ZAP_CONFIG, (_event) => __awaiter(this, void 0, void 0, function* () { return this.configManager.clear(); }));
47
+ // Connection Manager
48
+ this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.configManager.createDbConnection(args); }));
49
+ this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_ENABLE, (_event, args) => this.configManager.enableDbConnection(args));
50
+ this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_DELETE, (_event, name) => __awaiter(this, void 0, void 0, function* () { return this.configManager.deleteDbConnection(name); }));
51
+ this.handle(ChannelType_1.ChannelType.IPC_DBCONNECTION_TEST, (_event, args) => __awaiter(this, void 0, void 0, function* () {
52
+ const options = this.connectionManager.dataSource.options;
53
+ if (options.database === args.database) {
54
+ return this.connectionManager
55
+ .isInitialized()
56
+ .then(() => this.sendMessage('success', 'Connection tested successfully'))
57
+ .catch((err) => this.sendMessage('error', err.message));
58
+ }
59
+ else {
60
+ return this.connectionManager
61
+ .createDataSource(args)
62
+ .then(() => this.sendMessage('success', 'Connection tested successfully'))
63
+ .catch((err) => this.sendMessage('error', err.message));
64
+ }
65
+ }));
66
+ this.handle(ChannelType_1.ChannelType.IPC_DATABASE_DROP, (_event) => __awaiter(this, void 0, void 0, function* () { return this.connectionManager.getDataSource().dropDatabase(); }));
67
+ // Font Manager
68
+ this.handle(ChannelType_1.ChannelType.IPC_EXEC_CMD, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.executeCommand(args).catch((err) => this.sendMessage('error', err.message)); }));
69
+ this.handle(ChannelType_1.ChannelType.IPC_AUTH_USER, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.systemAuthenticate(args); }));
70
+ this.handle(ChannelType_1.ChannelType.IPC_SCAN_FILES, (_event, args) => __awaiter(this, void 0, void 0, function* () {
71
+ console.log('[IPC_SCAN_FILES] args:', JSON.stringify(args));
72
+ const catalogFiles = yield this.fontManager.copyFiles(args.files, args.collectionId);
73
+ console.log('[IPC_SCAN_FILES] copied to catalog:', catalogFiles);
74
+ yield this.fontManager.scanFiles(catalogFiles, { collection_id: args.collectionId });
75
+ console.log('[IPC_SCAN_FILES] scan complete');
76
+ }));
77
+ this.handle(ChannelType_1.ChannelType.IPC_SCAN_FOLDERS, (_event, args) => __awaiter(this, void 0, void 0, function* () {
78
+ console.log('[IPC_SCAN_FOLDERS] args:', JSON.stringify(args));
79
+ const promises = args.folders.map((sourceFolder) => __awaiter(this, void 0, void 0, function* () {
80
+ const dest = yield this.fontManager.copyFolder(sourceFolder, args.collectionId);
81
+ console.log('[IPC_SCAN_FOLDERS] copied to:', dest);
82
+ yield this.fontManager.scanFolder(dest, { collection_id: args.collectionId });
83
+ console.log('[IPC_SCAN_FOLDERS] scan complete for:', dest);
84
+ }));
85
+ yield Promise.allSettled(promises);
86
+ }));
87
+ this.handle(ChannelType_1.ChannelType.IPC_FETCH_NEWS, (_event, args) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.fetchLatestNews(args); }));
88
+ this.handle(ChannelType_1.ChannelType.IPC_SHOW_MESSAGE_BOX, (_event, options) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showMessageBox(options); }));
89
+ this.handle(ChannelType_1.ChannelType.IPC_SHOW_OPEN_DIALOG, (_event, options) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showOpenDialog(options); }));
90
+ this.handle(ChannelType_1.ChannelType.IPC_OPEN_PATH, (_event, path) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.openPath(path); }));
91
+ this.handle(ChannelType_1.ChannelType.IPC_OPEN_FOLDER, (_event, fullPath) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.showItemInFolder(fullPath); }));
92
+ this.handle(ChannelType_1.ChannelType.IPC_OPEN_EXTERNAL, (_event, url) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.openExternal(url); }));
93
+ this.on(ChannelType_1.ChannelType.IPC_RELOAD_WINDOW, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.reLaunch(); }));
94
+ this.on(ChannelType_1.ChannelType.IPC_EXIT, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.exit(); }));
95
+ this.on(ChannelType_1.ChannelType.IPC_QUIT, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.quit(); }));
96
+ this.on(ChannelType_1.ChannelType.IPC_BEEP, (_event) => __awaiter(this, void 0, void 0, function* () { return this.fontManager.beep(); }));
97
+ // Collection
98
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
99
+ return yield this.connectionManager.getCollection().find(args);
100
+ }));
101
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
102
+ return yield this.connectionManager.getCollectionRepository().findOne(args);
103
+ }));
104
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
105
+ return yield this.connectionManager.getCollectionRepository().findOneBy(args);
106
+ }));
107
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_FETCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
108
+ return yield this.fetchCollectionsWithCounts(args);
109
+ }));
110
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
111
+ yield this.connectionManager.getCollectionRepository().createCollection(args);
112
+ return yield this.fetchCollectionsWithCounts(args);
113
+ }));
114
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
115
+ yield this.connectionManager.getCollectionRepository().updateCollection(args.collectionId, args.data);
116
+ return yield this.fetchCollectionsWithCounts(args);
117
+ }));
118
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_DELETE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
119
+ yield this.connectionManager.getCollectionRepository().deleteCollection(args.collectionId);
120
+ return yield this.fetchCollectionsWithCounts(args);
121
+ }));
122
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_IDS, (_event, args) => __awaiter(this, void 0, void 0, function* () {
123
+ return yield this.connectionManager.getCollectionRepository().updateCollectionIds(args.ids, args.data);
124
+ }));
125
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_MOVE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
126
+ yield this.connectionManager.getCollectionRepository().moveCollection(args.collectionId, args.newParentId, args.newIndex);
127
+ return yield this.fetchCollectionsWithCounts(args);
128
+ }));
129
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_ENABLE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
130
+ yield this.connectionManager.getCollectionRepository().resetEnabled();
131
+ yield this.connectionManager.getCollectionRepository().updateCollection(args.collectionId, args.data);
132
+ return yield this.fetchCollectionsWithCounts(args);
133
+ }));
134
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_COUNT, (_event, collectionId) => __awaiter(this, void 0, void 0, function* () {
135
+ const { total } = yield this.connectionManager.getStoreRepository().fetchCollectionCount(collectionId);
136
+ yield this.connectionManager.getCollectionRepository().updateCollectionCount(collectionId, total);
137
+ return yield this.fetchCollectionsWithCounts({});
138
+ }));
139
+ this.handle(ChannelType_1.ChannelType.IPC_COLLECTION_UPDATE_COUNTS, (_event) => __awaiter(this, void 0, void 0, function* () {
140
+ const items = yield this.connectionManager.getStoreRepository().fetchCollectionsCount();
141
+ yield this.connectionManager.getCollectionRepository().updateCollectionCounts(items);
142
+ return yield this.fetchCollectionsWithCounts({});
143
+ }));
144
+ // Store
145
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
146
+ return yield this.connectionManager.getStore().find(args);
147
+ }));
148
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
149
+ return yield this.connectionManager.getStoreRepository().findOne(args);
150
+ }));
151
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
152
+ return yield this.connectionManager.getStoreRepository().findOneBy(args);
153
+ }));
154
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_FETCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
155
+ args.ids = [];
156
+ if (args.collectionId) {
157
+ const row = yield this.connectionManager.getCollectionRepository().findOneBy({ id: args.collectionId });
158
+ if (row) {
159
+ const children = yield this.connectionManager.getCollectionRepository().fetchChildren(row, true, false);
160
+ if (Array.isArray(children)) {
161
+ args.ids = Object.keys(children).map((val) => children[val].id);
162
+ }
163
+ }
164
+ }
165
+ return yield this.connectionManager.getStoreRepository().fetch(args);
166
+ }));
167
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_SEARCH, (_event, args) => __awaiter(this, void 0, void 0, function* () {
168
+ return yield this.connectionManager.getStoreRepository().search(args);
169
+ }));
170
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_UPDATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
171
+ yield this.connectionManager.getStoreRepository().update(args.id, args.data);
172
+ return yield this.connectionManager.getStoreRepository().findOne({ where: { id: args.id } });
173
+ }));
174
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_SYNC_SYSTEM, (_event) => __awaiter(this, void 0, void 0, function* () {
175
+ yield this.connectionManager.getStoreRepository().resetSystem();
176
+ const row = yield this.connectionManager.getCollectionRepository().findOneBy({ is_system: 1 });
177
+ if (row) {
178
+ const paths = this.systemManager.getPlatformFontPaths();
179
+ const promises = [];
180
+ for (const folder of paths) {
181
+ promises.push(this.fontManager
182
+ .scanFolder(folder, { collection_id: row.id, system: 1 })
183
+ .catch((err) => AppLogger_1.default.getInstance().error(err)));
184
+ }
185
+ yield Promise.allSettled(promises);
186
+ return yield this.connectionManager.getStoreRepository().fetchSystemStats();
187
+ }
188
+ }));
189
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_RESET_FAVORITES, (_event) => __awaiter(this, void 0, void 0, function* () {
190
+ yield this.connectionManager.getStoreRepository().resetFavorites();
191
+ return yield this.connectionManager.getStoreRepository().fetchSystemStats();
192
+ }));
193
+ this.handle(ChannelType_1.ChannelType.IPC_STORE_SYSTEM_STATS, (_event) => __awaiter(this, void 0, void 0, function* () {
194
+ return yield this.connectionManager.getStoreRepository().fetchSystemStats();
195
+ }));
196
+ this.handle(ChannelType_1.ChannelType.IPC_FONT_METRICS, (_event, filePath) => __awaiter(this, void 0, void 0, function* () {
197
+ var _a, _b, _c, _d, _e;
198
+ const fontObject = new FontObject_1.default(filePath);
199
+ if (fontObject.hasError()) {
200
+ return null;
201
+ }
202
+ const font = fontObject.getFont();
203
+ return {
204
+ numGlyphs: (_a = font.numGlyphs) !== null && _a !== void 0 ? _a : 0,
205
+ unitsPerEm: (_b = font.unitsPerEm) !== null && _b !== void 0 ? _b : 0,
206
+ ascent: (_c = font.ascent) !== null && _c !== void 0 ? _c : 0,
207
+ descent: (_d = font.descent) !== null && _d !== void 0 ? _d : 0,
208
+ lineGap: (_e = font.lineGap) !== null && _e !== void 0 ? _e : 0,
209
+ };
210
+ }));
211
+ this.handle(ChannelType_1.ChannelType.IPC_FONT_GLYPHS, (_event, filePath) => __awaiter(this, void 0, void 0, function* () {
212
+ const fontObject = new FontObject_1.default(filePath);
213
+ if (fontObject.hasError()) {
214
+ return [];
215
+ }
216
+ const font = fontObject.getFont();
217
+ return font.characterSet ? Array.from(font.characterSet).sort((a, b) => a - b) : [];
218
+ }));
219
+ // Logger
220
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND, (_event, args) => __awaiter(this, void 0, void 0, function* () {
221
+ return yield this.connectionManager.getLogger().find(args);
222
+ }));
223
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND_ONE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
224
+ return yield this.connectionManager.getLoggerRepository().findOne(args);
225
+ }));
226
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_FIND_ONE_BY, (_event, args) => __awaiter(this, void 0, void 0, function* () {
227
+ return yield this.connectionManager.getLoggerRepository().findOneBy(args);
228
+ }));
229
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_CREATE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
230
+ return yield this.connectionManager.getLoggerRepository().saveData(args);
231
+ }));
232
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_DELETE, (_event, args) => __awaiter(this, void 0, void 0, function* () {
233
+ return yield this.connectionManager.getLogger().delete(args.id);
234
+ }));
235
+ this.handle(ChannelType_1.ChannelType.IPC_LOGGER_TRUNCATE, (_event) => __awaiter(this, void 0, void 0, function* () {
236
+ return yield this.connectionManager.getLogger().clear();
237
+ }));
238
+ }
239
+ // Misc
240
+ sendMessage(type, message) {
241
+ return { type, message };
242
+ }
243
+ initSystemCollection() {
244
+ return __awaiter(this, void 0, void 0, function* () {
245
+ const row = yield this.connectionManager.getCollectionRepository().findOneBy({ is_system: 1 });
246
+ if (!row) {
247
+ return yield this.connectionManager.getCollectionRepository().createSystemCollection();
248
+ }
249
+ return true;
250
+ });
251
+ }
252
+ fetchCollectionsWithRelations() {
253
+ return __awaiter(this, void 0, void 0, function* () {
254
+ return yield this.connectionManager
255
+ .getCollection()
256
+ .find({
257
+ relations: {
258
+ stores: true,
259
+ },
260
+ })
261
+ .catch((err) => AppLogger_1.default.getInstance().info(err.message));
262
+ });
263
+ }
264
+ fetchCollectionsWithCounts(args) {
265
+ return __awaiter(this, void 0, void 0, function* () {
266
+ return yield this.connectionManager.getCollectionRepository().fetchCollectionsWithCounts(args);
267
+ });
268
+ }
269
+ }
270
+ exports.default = MessageHandler;
272
271
  //# sourceMappingURL=MessageHandler.js.map