@antelopejs/dms 0.8.3 → 0.9.1

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 (424) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/data/module-store/catalog.json +71 -0
  3. package/dist/config.d.ts +7 -0
  4. package/dist/config.js +8 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/implementations/dms/frontend-backend-proxies.d.ts +3 -0
  7. package/dist/implementations/dms/frontend-backend-proxies.js +39 -0
  8. package/dist/implementations/dms/frontend-backend-proxies.js.map +1 -0
  9. package/dist/implementations/dms/frontend-bootstrap.d.ts +1 -0
  10. package/dist/implementations/dms/frontend-bootstrap.js +13 -0
  11. package/dist/implementations/dms/frontend-bootstrap.js.map +1 -1
  12. package/dist/implementations/dms/frontend-modules.d.ts +6 -2
  13. package/dist/implementations/dms/frontend-modules.js +37 -8
  14. package/dist/implementations/dms/frontend-modules.js.map +1 -1
  15. package/dist/implementations/dms/frontend-ready.d.ts +8 -0
  16. package/dist/implementations/dms/frontend-ready.js +34 -0
  17. package/dist/implementations/dms/frontend-ready.js.map +1 -0
  18. package/dist/implementations/dms/manifest.d.ts +7 -0
  19. package/dist/implementations/dms/manifest.js +13 -0
  20. package/dist/implementations/dms/manifest.js.map +1 -1
  21. package/dist/implementations/dms/menu-categories.d.ts +16 -0
  22. package/dist/implementations/dms/menu-categories.js +30 -0
  23. package/dist/implementations/dms/menu-categories.js.map +1 -0
  24. package/dist/implementations/dms/nav-badges.d.ts +0 -8
  25. package/dist/implementations/dms/nav-badges.js +0 -16
  26. package/dist/implementations/dms/nav-badges.js.map +1 -1
  27. package/dist/implementations/dms/page.d.ts +13 -5
  28. package/dist/implementations/dms/page.js +72 -41
  29. package/dist/implementations/dms/page.js.map +1 -1
  30. package/dist/implementations/dms-html-render/index.js +5 -2
  31. package/dist/implementations/dms-html-render/index.js.map +1 -1
  32. package/dist/implementations/dms-notifications/index.d.ts +4 -3
  33. package/dist/implementations/dms-notifications/index.js +14 -6
  34. package/dist/implementations/dms-notifications/index.js.map +1 -1
  35. package/dist/pages/settings/settings-index.js +3 -2
  36. package/dist/pages/settings/settings-index.js.map +1 -1
  37. package/dist/pages/settings/users/invites.js +2 -2
  38. package/dist/pages/settings/users/invites.js.map +1 -1
  39. package/dist/pages/settings/users/member-change-notifications.js +17 -6
  40. package/dist/pages/settings/users/member-change-notifications.js.map +1 -1
  41. package/dist/pages/settings/users/member-invite-form.d.ts +3 -2
  42. package/dist/pages/settings/users/member-invite-form.js +7 -4
  43. package/dist/pages/settings/users/member-invite-form.js.map +1 -1
  44. package/dist/pages/settings/users/member-roles-field.js +2 -1
  45. package/dist/pages/settings/users/member-roles-field.js.map +1 -1
  46. package/dist/pages/settings/users/members.js +4 -1
  47. package/dist/pages/settings/users/members.js.map +1 -1
  48. package/dist/pages/settings/users/notifications.d.ts +6 -0
  49. package/dist/pages/settings/users/notifications.js +23 -15
  50. package/dist/pages/settings/users/notifications.js.map +1 -1
  51. package/dist/pages/settings/users/profile.js +1 -1
  52. package/dist/pages/settings/users/profile.js.map +1 -1
  53. package/dist/pages/settings/users/region-form.d.ts +1 -1
  54. package/dist/pages/settings/users/region-form.js +2 -1
  55. package/dist/pages/settings/users/region-form.js.map +1 -1
  56. package/dist/pages/settings/users/role-editor-store.d.ts +3 -1
  57. package/dist/pages/settings/users/role-editor-store.js +17 -4
  58. package/dist/pages/settings/users/role-editor-store.js.map +1 -1
  59. package/dist/pages/settings/users/roles.js +1 -0
  60. package/dist/pages/settings/users/roles.js.map +1 -1
  61. package/dist/realtime/registry.d.ts +1 -0
  62. package/dist/realtime/registry.js +5 -0
  63. package/dist/realtime/registry.js.map +1 -1
  64. package/dist/routes/index.d.ts +1 -0
  65. package/dist/routes/index.js +1 -0
  66. package/dist/routes/index.js.map +1 -1
  67. package/dist/routes/realtime.d.ts +5 -1
  68. package/dist/routes/realtime.js +16 -9
  69. package/dist/routes/realtime.js.map +1 -1
  70. package/dist/routes/store.d.ts +21 -0
  71. package/dist/routes/store.js +130 -0
  72. package/dist/routes/store.js.map +1 -0
  73. package/dist/store/activity.d.ts +2 -0
  74. package/dist/store/activity.js +12 -0
  75. package/dist/store/activity.js.map +1 -0
  76. package/dist/store/cache.d.ts +8 -0
  77. package/dist/store/cache.js +29 -0
  78. package/dist/store/cache.js.map +1 -0
  79. package/dist/store/catalog.d.ts +4 -0
  80. package/dist/store/catalog.js +69 -0
  81. package/dist/store/catalog.js.map +1 -0
  82. package/dist/store/compatibility.d.ts +3 -0
  83. package/dist/store/compatibility.js +45 -0
  84. package/dist/store/compatibility.js.map +1 -0
  85. package/dist/store/declarations.d.ts +18 -0
  86. package/dist/store/declarations.js +116 -0
  87. package/dist/store/declarations.js.map +1 -0
  88. package/dist/store/frontend-compatibility.d.ts +18 -0
  89. package/dist/store/frontend-compatibility.js +93 -0
  90. package/dist/store/frontend-compatibility.js.map +1 -0
  91. package/dist/store/interfaces.d.ts +6 -0
  92. package/dist/store/interfaces.js +126 -0
  93. package/dist/store/interfaces.js.map +1 -0
  94. package/dist/store/listing.d.ts +2 -0
  95. package/dist/store/listing.js +180 -0
  96. package/dist/store/listing.js.map +1 -0
  97. package/dist/store/operations.d.ts +8 -0
  98. package/dist/store/operations.js +254 -0
  99. package/dist/store/operations.js.map +1 -0
  100. package/dist/store/registry.d.ts +4 -0
  101. package/dist/store/registry.js +61 -0
  102. package/dist/store/registry.js.map +1 -0
  103. package/dist/store/requirements.d.ts +14 -0
  104. package/dist/store/requirements.js +81 -0
  105. package/dist/store/requirements.js.map +1 -0
  106. package/dist/store/runtime.d.ts +11 -0
  107. package/dist/store/runtime.js +78 -0
  108. package/dist/store/runtime.js.map +1 -0
  109. package/dist/store/tarball.d.ts +2 -0
  110. package/dist/store/tarball.js +80 -0
  111. package/dist/store/tarball.js.map +1 -0
  112. package/dist/store/types.d.ts +98 -0
  113. package/dist/store/types.js +3 -0
  114. package/dist/store/types.js.map +1 -0
  115. package/dist/test/integration/account-deletion.test.js +2 -2
  116. package/dist/test/integration/account-deletion.test.js.map +1 -1
  117. package/dist/test/integration/auth/auth-key-rotation.test.js +2 -1
  118. package/dist/test/integration/auth/auth-key-rotation.test.js.map +1 -1
  119. package/dist/test/integration/auth/current-password.test.js +2 -1
  120. package/dist/test/integration/auth/current-password.test.js.map +1 -1
  121. package/dist/test/integration/auth/session-revocation.test.js +2 -1
  122. package/dist/test/integration/auth/session-revocation.test.js.map +1 -1
  123. package/dist/test/integration/auth/sign-in-country.test.js +2 -1
  124. package/dist/test/integration/auth/sign-in-country.test.js.map +1 -1
  125. package/dist/test/integration/auth/two-factor-codes.test.js +2 -1
  126. package/dist/test/integration/auth/two-factor-codes.test.js.map +1 -1
  127. package/dist/test/integration/auth/two-factor-password.test.js +3 -2
  128. package/dist/test/integration/auth/two-factor-password.test.js.map +1 -1
  129. package/dist/test/integration/email-change.test.js +2 -1
  130. package/dist/test/integration/email-change.test.js.map +1 -1
  131. package/dist/test/integration/files/component-files.test.js +2 -2
  132. package/dist/test/integration/files/component-files.test.js.map +1 -1
  133. package/dist/test/integration/member-settings-access.test.js +8 -7
  134. package/dist/test/integration/member-settings-access.test.js.map +1 -1
  135. package/dist/test/integration/menu-access-events.test.d.ts +1 -0
  136. package/dist/test/integration/menu-access-events.test.js +148 -0
  137. package/dist/test/integration/menu-access-events.test.js.map +1 -0
  138. package/dist/test/integration/notification-inbox.test.js +4 -1
  139. package/dist/test/integration/notification-inbox.test.js.map +1 -1
  140. package/dist/test/integration/notification-locked-subjects.test.js +3 -2
  141. package/dist/test/integration/notification-locked-subjects.test.js.map +1 -1
  142. package/dist/test/integration/notification-unread-badge.test.js +51 -5
  143. package/dist/test/integration/notification-unread-badge.test.js.map +1 -1
  144. package/dist/test/integration/page-layout-route-guard.test.d.ts +1 -0
  145. package/dist/test/integration/page-layout-route-guard.test.js +56 -0
  146. package/dist/test/integration/page-layout-route-guard.test.js.map +1 -0
  147. package/dist/test/integration/permission-warnings.test.js +3 -2
  148. package/dist/test/integration/permission-warnings.test.js.map +1 -1
  149. package/dist/test/integration/removed-member-notifications.test.js +3 -2
  150. package/dist/test/integration/removed-member-notifications.test.js.map +1 -1
  151. package/dist/test/integration/role-delete-reassign.test.js +2 -1
  152. package/dist/test/integration/role-delete-reassign.test.js.map +1 -1
  153. package/dist/test/integration/role-permission-ancestors.test.js +2 -1
  154. package/dist/test/integration/role-permission-ancestors.test.js.map +1 -1
  155. package/dist/test/unit/frontend-bootstrap.test.js +13 -0
  156. package/dist/test/unit/frontend-bootstrap.test.js.map +1 -1
  157. package/dist/test/unit/implementations/dms/category-slug-registry.test.js +14 -5
  158. package/dist/test/unit/implementations/dms/category-slug-registry.test.js.map +1 -1
  159. package/dist/test/unit/implementations/dms/frontend-backend-proxies.test.d.ts +1 -0
  160. package/dist/test/unit/implementations/dms/frontend-backend-proxies.test.js +66 -0
  161. package/dist/test/unit/implementations/dms/frontend-backend-proxies.test.js.map +1 -0
  162. package/dist/test/unit/implementations/dms/manifest-strip.test.js +26 -0
  163. package/dist/test/unit/implementations/dms/manifest-strip.test.js.map +1 -1
  164. package/dist/test/unit/implementations/dms/nav-badges.test.js +23 -9
  165. package/dist/test/unit/implementations/dms/nav-badges.test.js.map +1 -1
  166. package/dist/test/unit/implementations/dms-html-render/generate-html.test.js +22 -4
  167. package/dist/test/unit/implementations/dms-html-render/generate-html.test.js.map +1 -1
  168. package/dist/test/unit/interfaces/dms/page-layout-query.test.js +12 -0
  169. package/dist/test/unit/interfaces/dms/page-layout-query.test.js.map +1 -1
  170. package/dist/test/unit/interfaces/dms/page-teardown.test.js +1 -1
  171. package/dist/test/unit/interfaces/dms/page-teardown.test.js.map +1 -1
  172. package/dist/test/unit/pages/settings/member-roles-field.test.js +1 -1
  173. package/dist/test/unit/pages/settings/member-roles-field.test.js.map +1 -1
  174. package/dist/test/unit/pages/settings/role-delete-confirm.test.js.map +1 -1
  175. package/dist/test/unit/realtime/menu-topics.test.d.ts +1 -0
  176. package/dist/test/unit/realtime/menu-topics.test.js +26 -0
  177. package/dist/test/unit/realtime/menu-topics.test.js.map +1 -0
  178. package/dist/test/unit/store/store.test.d.ts +1 -0
  179. package/dist/test/unit/store/store.test.js +127 -0
  180. package/dist/test/unit/store/store.test.js.map +1 -0
  181. package/dist/validation/store.schema.d.ts +39 -0
  182. package/dist/validation/store.schema.js +27 -0
  183. package/dist/validation/store.schema.js.map +1 -0
  184. package/frontend-vue/deferred-plugins.ts +3 -4
  185. package/frontend-vue/dms.email.ts +5 -1
  186. package/frontend-vue/dms.frontend.ts +15 -5
  187. package/frontend-vue/dms.server.ts +74 -0
  188. package/frontend-vue/layers/dms-auth/app/composables/useLogout.ts +1 -1
  189. package/frontend-vue/layers/dms-auth/app/composables/usePostLoginRedirect.ts +16 -3
  190. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/2fa.vue +3 -1
  191. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/backup.vue +3 -1
  192. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/forgot-validation.vue +1 -1
  193. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/oauth-complete.vue +26 -3
  194. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/recover.vue +1 -1
  195. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/signup.vue +22 -25
  196. package/frontend-vue/layers/dms-auth/app/custom-pages/auth/validate.vue +1 -1
  197. package/frontend-vue/layers/dms-auth/app/middleware/auth.ts +5 -7
  198. package/frontend-vue/layers/dms-auth/app/plugins/permissions-preload.ts +17 -0
  199. package/frontend-vue/layers/dms-auth/server/accounts.ts +135 -0
  200. package/frontend-vue/layers/dms-auth/server/actions.ts +251 -0
  201. package/frontend-vue/layers/dms-auth/server/oauth.ts +260 -0
  202. package/frontend-vue/layers/dms-auth/server/session.ts +158 -0
  203. package/frontend-vue/layers/dms-core/app/build/utils/asyncDataScope.ts +47 -0
  204. package/frontend-vue/layers/dms-core/app/build/utils/permission-preview.ts +6 -2
  205. package/frontend-vue/layers/dms-core/app/composables/auth/useApiData.ts +148 -0
  206. package/frontend-vue/layers/dms-core/app/composables/auth/useAuthFetch.ts +7 -20
  207. package/frontend-vue/layers/dms-core/app/composables/auth/useCurrentUser.ts +2 -2
  208. package/frontend-vue/layers/dms-core/app/composables/auth/useMultiAccount.ts +18 -5
  209. package/frontend-vue/layers/dms-core/app/composables/auth/usePermissions.ts +35 -6
  210. package/frontend-vue/layers/dms-core/app/composables/auth/useSessionRecovery.ts +1 -1
  211. package/frontend-vue/layers/dms-core/app/composables/period/compareResolvers.ts +20 -14
  212. package/frontend-vue/layers/dms-core/app/composables/period/periodClock.ts +121 -0
  213. package/frontend-vue/layers/dms-core/app/composables/period/periodRenderNow.ts +42 -0
  214. package/frontend-vue/layers/dms-core/app/composables/period/periodTimeZone.ts +31 -0
  215. package/frontend-vue/layers/dms-core/app/composables/period/presetResolvers.ts +48 -19
  216. package/frontend-vue/layers/dms-core/app/composables/period/usePeriod.ts +33 -4
  217. package/frontend-vue/layers/dms-core/app/composables/period/usePeriodScope.ts +78 -25
  218. package/frontend-vue/layers/dms-core/app/composables/realtime/usePageRealtime.ts +3 -0
  219. package/frontend-vue/layers/dms-core/app/composables/realtime/useUserRealtime.ts +36 -6
  220. package/frontend-vue/layers/dms-core/app/composables/user/useUserRegionalPreferences.ts +1 -1
  221. package/frontend-vue/layers/dms-core/app/plugins/async-data-scope.ts +26 -0
  222. package/frontend-vue/layers/dms-core/app/utils/pageRoutes.ts +22 -0
  223. package/frontend-vue/layers/dms-core/app/utils/regional.ts +36 -3
  224. package/frontend-vue/layers/dms-core/app/utils/trailingDeduper.ts +10 -1
  225. package/frontend-vue/layers/dms-core/shared/types/app-config.ts +48 -4
  226. package/frontend-vue/layers/dms-layout/app/app.config.ts +42 -23
  227. package/frontend-vue/layers/dms-layout/app/assets/css/main.css +72 -20
  228. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardFrame.vue +9 -0
  229. package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardSidebar.vue +0 -3
  230. package/frontend-vue/layers/dms-layout/app/build/components/notification/NotificationPopover.vue +9 -3
  231. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreDependencyPicker.vue +136 -0
  232. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreRequirements.vue +98 -0
  233. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleStoreTile.vue +247 -29
  234. package/frontend-vue/layers/dms-layout/app/build/components/pages/modules/ModuleTile.vue +19 -2
  235. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/members/MemberRolePicker.vue +13 -12
  236. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationInboxDisplay.vue +17 -7
  237. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/notification/NotificationPreferencesForm.vue +0 -1
  238. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfilePersonalInfo.vue +36 -33
  239. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/profile/ProfileSecuritySummary.vue +1 -2
  240. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/roles/role-types.ts +5 -4
  241. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecuritySessions.vue +35 -28
  242. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityStatus.vue +0 -1
  243. package/frontend-vue/layers/dms-layout/app/build/components/pages/settings/security/SecurityTwoFactor.vue +1 -1
  244. package/frontend-vue/layers/dms-layout/app/build/composables/dev-reload/useDevReloadHolder.ts +7 -6
  245. package/frontend-vue/layers/dms-layout/app/build/composables/layout/sidePanelState.ts +1 -1
  246. package/frontend-vue/layers/dms-layout/app/build/composables/navigation/useVisitNavBadges.ts +26 -0
  247. package/frontend-vue/layers/dms-layout/app/build/composables/notification/useNotificationCatalog.ts +25 -23
  248. package/frontend-vue/layers/dms-layout/app/build/composables/notification/useNotificationPreferences.ts +44 -23
  249. package/frontend-vue/layers/dms-layout/app/build/composables/security/useSessionHandoff.ts +1 -1
  250. package/frontend-vue/layers/dms-layout/app/build/composables/settings/profile/preferencesSummary.ts +1 -1
  251. package/frontend-vue/layers/dms-layout/app/build/composables/settings/profile/useAccountData.ts +3 -2
  252. package/frontend-vue/layers/dms-layout/app/build/composables/settings/profile/useProfileAvatar.ts +1 -18
  253. package/frontend-vue/layers/dms-layout/app/build/composables/settings/profile/useProfilePreferences.ts +19 -23
  254. package/frontend-vue/layers/dms-layout/app/build/composables/settings/security/useSecurityFormat.ts +6 -3
  255. package/frontend-vue/layers/dms-layout/app/build/composables/settings/security/useSecurityOverview.ts +13 -18
  256. package/frontend-vue/layers/dms-layout/app/build/utils/module-store-catalog.ts +186 -120
  257. package/frontend-vue/layers/dms-layout/app/build/utils/module-store-install.ts +146 -0
  258. package/frontend-vue/layers/dms-layout/app/build/utils/modules-catalog.ts +8 -6
  259. package/frontend-vue/layers/dms-layout/app/build/utils/publicErrorMessage.ts +19 -0
  260. package/frontend-vue/layers/dms-layout/app/components/navigation/CollapsedMenuItem.vue +0 -11
  261. package/frontend-vue/layers/dms-layout/app/components/navigation/NavigationMenu.vue +3 -13
  262. package/frontend-vue/layers/dms-layout/app/composables/general/useSystemState.ts +7 -11
  263. package/frontend-vue/layers/dms-layout/app/composables/notification/useNotifications.ts +103 -22
  264. package/frontend-vue/layers/dms-layout/app/composables/page/useModuleStore.ts +109 -0
  265. package/frontend-vue/layers/dms-layout/app/composables/page/useModulesListing.ts +25 -102
  266. package/frontend-vue/layers/dms-layout/app/composables/page/usePageComponentPreload.ts +0 -10
  267. package/frontend-vue/layers/dms-layout/app/composables/page/useSiteLayout.ts +177 -96
  268. package/frontend-vue/layers/dms-layout/app/composables/profile/useUserLanguage.ts +3 -2
  269. package/frontend-vue/layers/dms-layout/app/custom-pages/modules.vue +341 -62
  270. package/frontend-vue/layers/dms-layout/app/emails/components/EmailLayout.vue +31 -11
  271. package/frontend-vue/layers/dms-layout/app/error.vue +5 -2
  272. package/frontend-vue/layers/dms-layout/app/middleware/module-routing.global.ts +1 -1
  273. package/frontend-vue/layers/dms-layout/app/middleware/page-leave-guard.global.ts +2 -2
  274. package/frontend-vue/layers/dms-layout/app/pages/[...slug].vue +12 -9
  275. package/frontend-vue/layers/dms-layout/app/plugins/dms-menu-sync.client.ts +31 -3
  276. package/frontend-vue/layers/dms-layout/app/plugins/favicon.ts +58 -0
  277. package/frontend-vue/layers/dms-layout/app/plugins/notification-stream.client.ts +15 -7
  278. package/frontend-vue/layers/dms-layout/app/plugins/profile-sync.client.ts +5 -1
  279. package/frontend-vue/layers/dms-layout/app/plugins/regional-preferences.ts +10 -4
  280. package/frontend-vue/layers/dms-layout/app/plugins/time-zone-cookie.client.ts +12 -0
  281. package/frontend-vue/layers/dms-layout/app/types/module-store.ts +134 -0
  282. package/frontend-vue/layers/dms-layout/app/types/page.ts +13 -0
  283. package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +107 -9
  284. package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +107 -9
  285. package/frontend-vue/layers/dms-layout/server/html-render.ts +58 -0
  286. package/frontend-vue/layers/dms-layout/server/render-token.ts +95 -0
  287. package/frontend-vue/layers/dms-onboarding/app/composables/onboarding/useOnboarding.ts +25 -21
  288. package/frontend-vue/layers/dms-onboarding/app/middleware/onboarding.global.ts +1 -1
  289. package/frontend-vue/layers/dms-onboarding/app/plugins/onboarding-preload.ts +9 -0
  290. package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerDefaults.ts +4 -1
  291. package/frontend-vue/layers/dms-ui/app/build/composables/files/useFileMetadata.ts +162 -0
  292. package/frontend-vue/layers/dms-ui/app/build/composables/form/formRecordLoad.ts +23 -4
  293. package/frontend-vue/layers/dms-ui/app/build/composables/live/usePageDataRefresh.ts +101 -0
  294. package/frontend-vue/layers/dms-ui/app/build/composables/navigation/useNavBadges.ts +33 -6
  295. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodDisplay.ts +19 -16
  296. package/frontend-vue/layers/dms-ui/app/build/composables/period/periodQuery.ts +40 -20
  297. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableFooter.ts +6 -8
  298. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableListData.ts +42 -14
  299. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +19 -8
  300. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViews.ts +1 -1
  301. package/frontend-vue/layers/dms-ui/app/components/chart/ChartCard.vue +5 -2
  302. package/frontend-vue/layers/dms-ui/app/components/flow-canvas/FlowCanvas.vue +9 -9
  303. package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +20 -18
  304. package/frontend-vue/layers/dms-ui/app/components/form/components/Cascader.vue +2 -1
  305. package/frontend-vue/layers/dms-ui/app/components/form/components/File.vue +26 -132
  306. package/frontend-vue/layers/dms-ui/app/components/form/components/Image.vue +40 -105
  307. package/frontend-vue/layers/dms-ui/app/components/form/components/InputAddress.vue +2 -0
  308. package/frontend-vue/layers/dms-ui/app/components/form/components/Relation.vue +4 -4
  309. package/frontend-vue/layers/dms-ui/app/components/period/PeriodSelector.vue +9 -13
  310. package/frontend-vue/layers/dms-ui/app/components/table-view/CascaderPath.vue +2 -1
  311. package/frontend-vue/layers/dms-ui/app/components/table-view/FilePreview.vue +12 -24
  312. package/frontend-vue/layers/dms-ui/app/components/table-view/ImagePreview.vue +17 -29
  313. package/frontend-vue/layers/dms-ui/app/components/table-view/KanbanBoard.vue +7 -3
  314. package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +20 -8
  315. package/frontend-vue/layers/dms-ui/app/components/top-list/TopListCard.vue +8 -11
  316. package/frontend-vue/layers/dms-ui/app/composables/chart/useChartFetch.ts +146 -182
  317. package/frontend-vue/layers/dms-ui/app/composables/live/usePageLiveRefresh.ts +8 -2
  318. package/frontend-vue/layers/dms-ui/app/composables/useFileReadUrls.ts +11 -99
  319. package/frontend-vue/layers/dms-ui/app/utils/blockRefresh.ts +32 -3
  320. package/frontend-vue/package.json +3 -3
  321. package/frontend-vue/pnpm-lock.yaml +16 -22
  322. package/frontend-vue/server/private-options.ts +27 -0
  323. package/frontend-vue/tests/async-data-scope.test.ts +121 -0
  324. package/frontend-vue/tests/auth-middleware-error.test.ts +3 -3
  325. package/frontend-vue/tests/banner-block-fetch.test.ts +3 -0
  326. package/frontend-vue/tests/block-fetch-options-forwarding.test.ts +3 -0
  327. package/frontend-vue/tests/block-items-period-realtime.test.ts +3 -0
  328. package/frontend-vue/tests/block-not-found.test.ts +16 -2
  329. package/frontend-vue/tests/block-page-refresh.test.ts +3 -0
  330. package/frontend-vue/tests/block-route-params.test.ts +3 -0
  331. package/frontend-vue/tests/branding-defaults.test.ts +34 -0
  332. package/frontend-vue/tests/builtin-emails.test.ts +23 -2
  333. package/frontend-vue/tests/chart-live-pause.test.ts +4 -1
  334. package/frontend-vue/tests/chart-value-propagation.test.ts +4 -1
  335. package/frontend-vue/tests/composed-text-blocks.test.ts +3 -0
  336. package/frontend-vue/tests/email-layout.test.ts +66 -4
  337. package/frontend-vue/tests/error-page-message.test.ts +25 -2
  338. package/frontend-vue/tests/favicon.test.ts +131 -0
  339. package/frontend-vue/tests/file-fields-ssr.test.ts +145 -0
  340. package/frontend-vue/tests/file-read-urls.test.ts +145 -34
  341. package/frontend-vue/tests/file-unavailable.test.ts +5 -1
  342. package/frontend-vue/tests/fixtures/dataEngine.ts +44 -0
  343. package/frontend-vue/tests/form-load-error.test.ts +55 -1
  344. package/frontend-vue/tests/helpers/api-data-runtime.ts +77 -0
  345. package/frontend-vue/tests/image-hydration-ids.test.ts +21 -16
  346. package/frontend-vue/tests/image-reference-preservation.test.ts +59 -53
  347. package/frontend-vue/tests/input-number-adjust.test.ts +14 -0
  348. package/frontend-vue/tests/key-value-list-copy.test.ts +3 -0
  349. package/frontend-vue/tests/member-role-picker.test.ts +4 -2
  350. package/frontend-vue/tests/menu-sync-reconnect.test.ts +47 -0
  351. package/frontend-vue/tests/metadata-retry.test.ts +5 -1
  352. package/frontend-vue/tests/module-routing.test.ts +2 -5
  353. package/frontend-vue/tests/module-store-catalog.test.ts +270 -51
  354. package/frontend-vue/tests/modules-catalog.test.ts +17 -4
  355. package/frontend-vue/tests/modules-listing-transfer.test.ts +95 -0
  356. package/frontend-vue/tests/multi-account-validate.test.ts +23 -1
  357. package/frontend-vue/tests/nav-badge-tones.test.ts +66 -3
  358. package/frontend-vue/tests/notification-counts-from-writes.test.ts +223 -0
  359. package/frontend-vue/tests/notification-counts-transfer.test.ts +88 -0
  360. package/frontend-vue/tests/notification-inbox-display.test.ts +57 -5
  361. package/frontend-vue/tests/notification-popover-errors.test.ts +21 -1
  362. package/frontend-vue/tests/oauth-complete-handoff.test.ts +209 -0
  363. package/frontend-vue/tests/onboarding-middleware.test.ts +1 -1
  364. package/frontend-vue/tests/onboarding-transfer.test.ts +106 -0
  365. package/frontend-vue/tests/page-data-refresh.test.ts +141 -0
  366. package/frontend-vue/tests/page-fill-height.test.ts +16 -3
  367. package/frontend-vue/tests/page-no-visible-blocks.test.ts +12 -2
  368. package/frontend-vue/tests/page-realtime-remount.test.ts +1 -1
  369. package/frontend-vue/tests/page-record-label.test.ts +0 -7
  370. package/frontend-vue/tests/page-validation-redirect.test.ts +12 -2
  371. package/frontend-vue/tests/period-hydration-now.test.ts +185 -0
  372. package/frontend-vue/tests/period-live-pause.test.ts +3 -0
  373. package/frontend-vue/tests/period-reader-zone.test.ts +137 -0
  374. package/frontend-vue/tests/period-scope-first-fetch.test.ts +17 -1
  375. package/frontend-vue/tests/period-ssr.test.ts +195 -0
  376. package/frontend-vue/tests/permission-preview-partial.test.ts +0 -2
  377. package/frontend-vue/tests/permissions-transfer.test.ts +194 -0
  378. package/frontend-vue/tests/post-login-redirect.test.ts +10 -5
  379. package/frontend-vue/tests/profile-personal-info-ssr.test.ts +150 -0
  380. package/frontend-vue/tests/profile-preferences-summary.test.ts +15 -11
  381. package/frontend-vue/tests/realtime-reconnect.test.ts +22 -3
  382. package/frontend-vue/tests/roles-name-errors.test.ts +1 -1
  383. package/frontend-vue/tests/row-side-panel.test.ts +1 -1
  384. package/frontend-vue/tests/security-sessions-load-error.test.ts +3 -1
  385. package/frontend-vue/tests/server-routes-vs-pages.test.ts +26 -0
  386. package/frontend-vue/tests/server-routes.test.ts +582 -0
  387. package/frontend-vue/tests/session-handoff.test.ts +1 -1
  388. package/frontend-vue/tests/settings-reads-ssr.test.ts +232 -0
  389. package/frontend-vue/tests/side-panels.test.ts +8 -1
  390. package/frontend-vue/tests/sign-in-exit-history.test.ts +219 -0
  391. package/frontend-vue/tests/signup-invitation-link.test.ts +56 -8
  392. package/frontend-vue/tests/site-layout-categories.test.ts +42 -0
  393. package/frontend-vue/tests/site-layout-hydration.test.ts +3 -3
  394. package/frontend-vue/tests/site-layout-rendered.test.ts +103 -0
  395. package/frontend-vue/tests/site-layout-resync.test.ts +87 -0
  396. package/frontend-vue/tests/ssr-guard-preload.test.ts +188 -0
  397. package/frontend-vue/tests/table-cell-tones.test.ts +36 -1
  398. package/frontend-vue/tests/table-data-ssr.test.ts +195 -0
  399. package/frontend-vue/tests/table-list-data-requests.test.ts +154 -0
  400. package/frontend-vue/tests/table-retry-loading.test.ts +37 -0
  401. package/frontend-vue/tests/table-source-navigation.test.ts +0 -1
  402. package/frontend-vue/tests/table-source-period-scope.test.ts +0 -1
  403. package/frontend-vue/tests/table-view-views.test.ts +1 -1
  404. package/frontend-vue/tests/top-list-card-actions.test.ts +3 -0
  405. package/frontend-vue/tests/top-list-card-period-badge-ssr.test.ts +212 -0
  406. package/frontend-vue/tests/top-list-card-period-badge.test.ts +79 -0
  407. package/frontend-vue/tests/top-list-card-value-suffix.test.ts +3 -0
  408. package/frontend-vue/tests/trailing-deduper.test.ts +22 -0
  409. package/frontend-vue/tests/use-api-data-update.test.ts +119 -0
  410. package/frontend-vue/tests/use-api-data.test.ts +410 -0
  411. package/frontend-vue/tests/user-language.test.ts +8 -5
  412. package/frontend-vue/tests/widget-label-i18n.test.ts +4 -1
  413. package/frontend-vue/vitest.config.ts +6 -0
  414. package/package.json +2 -2
  415. package/skills/dms/SKILL.md +2 -1
  416. package/skills/dms-module/SKILL.md +1 -1
  417. package/skills/dms-pages/SKILL.md +4 -1
  418. package/frontend-vue/layers/dms-core/app/build/composables/page/usePageRecordLabel.ts +0 -9
  419. package/frontend-vue/layers/dms-layout/app/composables/page/usePrefetch.ts +0 -21
  420. package/frontend-vue/layers/dms-ui/app/build/composables/form/useControlError.ts +0 -10
  421. package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useServerRenderedAsyncData.ts +0 -23
  422. package/frontend-vue/tests/control-error-path.test.ts +0 -11
  423. package/frontend-vue/tests/modules-listing-per-request.test.ts +0 -104
  424. package/frontend-vue/tests/page-layout-background-refresh.test.ts +0 -321
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ModuleStoreController = void 0;
16
+ const interface_api_1 = require("@antelopejs/interface-api");
17
+ const interface_api_util_1 = require("@antelopejs/interface-api-util");
18
+ const db_1 = require("@antelopejs/interface-dms/db");
19
+ const auth_1 = require("@antelopejs/interface-dms/auth");
20
+ const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
21
+ const tenant_scoped_model_1 = require("@antelopejs/interface-dms/tenant-scoped-model");
22
+ const page_1 = require("../implementations/dms/page");
23
+ const listing_1 = require("../store/listing");
24
+ const operations_1 = require("../store/operations");
25
+ const store_schema_1 = require("../validation/store.schema");
26
+ const HTTP_FORBIDDEN = 403;
27
+ const ERROR_UNAUTHORIZED = "error.unauthorized";
28
+ class ModuleStoreController extends (0, interface_api_1.Controller)("/dms/store") {
29
+ async assertOwner() {
30
+ const isOwner = await (0, page_1.isPlatformOwner)(this.user, this.memberModel, this.roleModel, (0, request_tenant_1.getRequestTenantId)(this.requestContext));
31
+ (0, interface_api_util_1.assert)(isOwner, HTTP_FORBIDDEN, ERROR_UNAUTHORIZED);
32
+ }
33
+ async run(kind, body) {
34
+ await this.assertOwner();
35
+ const { id } = (0, interface_api_util_1.assertValidation)(body, (value) => store_schema_1.storeOperationSchema.parse(value));
36
+ await (0, operations_1.startStoreOperation)(kind, id);
37
+ return (0, listing_1.buildStoreListing)();
38
+ }
39
+ async listing() {
40
+ await this.assertOwner();
41
+ return (0, listing_1.buildStoreListing)();
42
+ }
43
+ async install(body) {
44
+ await this.assertOwner();
45
+ const { id, dependencies } = (0, interface_api_util_1.assertValidation)(body, (value) => store_schema_1.storeInstallSchema.parse(value));
46
+ await (0, operations_1.startStoreOperation)("install", id, { dependencies });
47
+ return (0, listing_1.buildStoreListing)();
48
+ }
49
+ update(body) {
50
+ return this.run("update", body);
51
+ }
52
+ enable(body) {
53
+ return this.run("enable", body);
54
+ }
55
+ disable(body) {
56
+ return this.run("disable", body);
57
+ }
58
+ uninstall(body) {
59
+ return this.run("uninstall", body);
60
+ }
61
+ apply(body) {
62
+ return this.run("apply", body);
63
+ }
64
+ }
65
+ exports.ModuleStoreController = ModuleStoreController;
66
+ __decorate([
67
+ (0, interface_api_1.Context)(),
68
+ __metadata("design:type", Object)
69
+ ], ModuleStoreController.prototype, "requestContext", void 0);
70
+ __decorate([
71
+ (0, tenant_scoped_model_1.TenantScopedModel)(db_1.RoleModel),
72
+ __metadata("design:type", db_1.RoleModel)
73
+ ], ModuleStoreController.prototype, "roleModel", void 0);
74
+ __decorate([
75
+ (0, tenant_scoped_model_1.TenantScopedModel)(db_1.TenantMemberModel),
76
+ __metadata("design:type", db_1.TenantMemberModel)
77
+ ], ModuleStoreController.prototype, "memberModel", void 0);
78
+ __decorate([
79
+ (0, auth_1.IfAuthUser)(),
80
+ __metadata("design:type", Object)
81
+ ], ModuleStoreController.prototype, "user", void 0);
82
+ __decorate([
83
+ (0, interface_api_1.Get)("/listing"),
84
+ __metadata("design:type", Function),
85
+ __metadata("design:paramtypes", []),
86
+ __metadata("design:returntype", Promise)
87
+ ], ModuleStoreController.prototype, "listing", null);
88
+ __decorate([
89
+ (0, interface_api_1.Post)("/install"),
90
+ __param(0, (0, interface_api_1.JSONBody)()),
91
+ __metadata("design:type", Function),
92
+ __metadata("design:paramtypes", [Object]),
93
+ __metadata("design:returntype", Promise)
94
+ ], ModuleStoreController.prototype, "install", null);
95
+ __decorate([
96
+ (0, interface_api_1.Post)("/update"),
97
+ __param(0, (0, interface_api_1.JSONBody)()),
98
+ __metadata("design:type", Function),
99
+ __metadata("design:paramtypes", [Object]),
100
+ __metadata("design:returntype", Promise)
101
+ ], ModuleStoreController.prototype, "update", null);
102
+ __decorate([
103
+ (0, interface_api_1.Post)("/enable"),
104
+ __param(0, (0, interface_api_1.JSONBody)()),
105
+ __metadata("design:type", Function),
106
+ __metadata("design:paramtypes", [Object]),
107
+ __metadata("design:returntype", Promise)
108
+ ], ModuleStoreController.prototype, "enable", null);
109
+ __decorate([
110
+ (0, interface_api_1.Post)("/disable"),
111
+ __param(0, (0, interface_api_1.JSONBody)()),
112
+ __metadata("design:type", Function),
113
+ __metadata("design:paramtypes", [Object]),
114
+ __metadata("design:returntype", Promise)
115
+ ], ModuleStoreController.prototype, "disable", null);
116
+ __decorate([
117
+ (0, interface_api_1.Post)("/uninstall"),
118
+ __param(0, (0, interface_api_1.JSONBody)()),
119
+ __metadata("design:type", Function),
120
+ __metadata("design:paramtypes", [Object]),
121
+ __metadata("design:returntype", Promise)
122
+ ], ModuleStoreController.prototype, "uninstall", null);
123
+ __decorate([
124
+ (0, interface_api_1.Post)("/apply"),
125
+ __param(0, (0, interface_api_1.JSONBody)()),
126
+ __metadata("design:type", Function),
127
+ __metadata("design:paramtypes", [Object]),
128
+ __metadata("design:returntype", Promise)
129
+ ], ModuleStoreController.prototype, "apply", null);
130
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/routes/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isStoreOperationRunning(): boolean;
2
+ export declare function setStoreOperationRunning(running: boolean): void;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStoreOperationRunning = isStoreOperationRunning;
4
+ exports.setStoreOperationRunning = setStoreOperationRunning;
5
+ let isBusy = false;
6
+ function isStoreOperationRunning() {
7
+ return isBusy;
8
+ }
9
+ function setStoreOperationRunning(running) {
10
+ isBusy = running;
11
+ }
12
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/store/activity.ts"],"names":[],"mappings":";;AAOA,0DAEC;AAED,4DAEC;AAbD,IAAI,MAAM,GAAG,KAAK,CAAC;AAOnB,SAAgB,uBAAuB;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,MAAM,GAAG,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface CacheLifetimes {
2
+ found: number;
3
+ failed: number;
4
+ }
5
+ export interface LookupCache<T> {
6
+ get(key: string, lookup: () => Promise<T | undefined>): Promise<T | undefined>;
7
+ }
8
+ export declare function createLookupCache<T>(lifetimes: CacheLifetimes): LookupCache<T>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createLookupCache = createLookupCache;
4
+ function createLookupCache(lifetimes) {
5
+ const values = new Map();
6
+ const pending = new Map();
7
+ const isFresh = (cached) => Date.now() - cached.fetchedAt <
8
+ (cached.value === undefined ? lifetimes.failed : lifetimes.found);
9
+ return {
10
+ get(key, lookup) {
11
+ const cached = values.get(key);
12
+ if (cached && isFresh(cached))
13
+ return Promise.resolve(cached.value);
14
+ const inFlight = pending.get(key);
15
+ if (inFlight)
16
+ return inFlight;
17
+ const run = lookup()
18
+ .catch(() => undefined)
19
+ .then((value) => {
20
+ values.set(key, { fetchedAt: Date.now(), value });
21
+ return value;
22
+ })
23
+ .finally(() => pending.delete(key));
24
+ pending.set(key, run);
25
+ return run;
26
+ },
27
+ };
28
+ }
29
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/store/cache.ts"],"names":[],"mappings":";;AAwBA,8CAyBC;AAzBD,SAAgB,iBAAiB,CAC/B,SAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,MAAsB,EAAW,EAAE,CAClD,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS;QAC7B,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,CAAC,GAAG,EAAE,MAAM;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,EAAE;iBACjB,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;iBACtB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StoreCatalogEntry } from "./types";
2
+ export declare function readCatalogDocument(document: unknown): StoreCatalogEntry[];
3
+ export declare function loadStoreCatalog(): Promise<StoreCatalogEntry[]>;
4
+ export declare function findCatalogEntry(id: string): Promise<StoreCatalogEntry | undefined>;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.readCatalogDocument = readCatalogDocument;
7
+ exports.loadStoreCatalog = loadStoreCatalog;
8
+ exports.findCatalogEntry = findCatalogEntry;
9
+ const node_fs_1 = require("node:fs");
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const logging_1 = require("@antelopejs/interface-core/logging");
12
+ const config_1 = require("../config");
13
+ const BUNDLED_CATALOG_PATH = node_path_1.default.join(__dirname, "../../data/module-store/catalog.json");
14
+ const CATALOG_TTL_MS = 60 * 60 * 1000;
15
+ const CATALOG_FETCH_TIMEOUT_MS = 10_000;
16
+ const SUPPORTED_CATALOG_VERSION = 1;
17
+ let cachedRemote;
18
+ let bundled;
19
+ function isCatalogEntry(value) {
20
+ const entry = value;
21
+ return (typeof entry?.id === "string" &&
22
+ typeof entry.package === "string" &&
23
+ typeof entry.icon === "string" &&
24
+ typeof entry.category === "string");
25
+ }
26
+ function readCatalogDocument(document) {
27
+ const catalog = document;
28
+ if (catalog?.version !== SUPPORTED_CATALOG_VERSION) {
29
+ throw new Error(`Unsupported module catalog version: ${String(catalog?.version)}`);
30
+ }
31
+ return (catalog.modules ?? []).filter(isCatalogEntry);
32
+ }
33
+ function bundledCatalog() {
34
+ bundled ??= readCatalogDocument(JSON.parse((0, node_fs_1.readFileSync)(BUNDLED_CATALOG_PATH, "utf-8")));
35
+ return bundled;
36
+ }
37
+ async function fetchRemoteCatalog(url) {
38
+ const response = await fetch(url, {
39
+ signal: AbortSignal.timeout(CATALOG_FETCH_TIMEOUT_MS),
40
+ });
41
+ if (!response.ok) {
42
+ throw new Error(`HTTP ${response.status}`);
43
+ }
44
+ return readCatalogDocument(await response.json());
45
+ }
46
+ async function loadStoreCatalog() {
47
+ const url = (0, config_1.getStoreConfig)().catalogUrl;
48
+ if (!url) {
49
+ return bundledCatalog();
50
+ }
51
+ const isFresh = cachedRemote?.url === url &&
52
+ Date.now() - cachedRemote.fetchedAt < CATALOG_TTL_MS;
53
+ if (isFresh && cachedRemote) {
54
+ return cachedRemote.modules;
55
+ }
56
+ try {
57
+ const modules = await fetchRemoteCatalog(url);
58
+ cachedRemote = { url, fetchedAt: Date.now(), modules };
59
+ return modules;
60
+ }
61
+ catch (error) {
62
+ logging_1.Logging.Warn(`[DMS] Module catalog ${url} could not be read, using the bundled one: ${String(error)}`);
63
+ return cachedRemote?.url === url ? cachedRemote.modules : bundledCatalog();
64
+ }
65
+ }
66
+ async function findCatalogEntry(id) {
67
+ return (await loadStoreCatalog()).find((entry) => entry.id === id);
68
+ }
69
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/store/catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { PackageRelease } from "./types";
2
+ export declare function installedInterfaceVersion(): string;
3
+ export declare function isCompatible(release: PackageRelease, installedVersion: string): boolean;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.installedInterfaceVersion = installedInterfaceVersion;
7
+ exports.isCompatible = isCompatible;
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = __importDefault(require("node:path"));
10
+ const semver_1 = require("semver");
11
+ const registry_1 = require("./registry");
12
+ const PACKAGE_JSON = "package.json";
13
+ const INTERFACE_ENTRY = `${registry_1.INTERFACE_PACKAGE}/page`;
14
+ let interfaceVersion;
15
+ function readManifest(folder) {
16
+ try {
17
+ return JSON.parse((0, node_fs_1.readFileSync)(node_path_1.default.join(folder, PACKAGE_JSON), "utf-8"));
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ }
23
+ function installedInterfaceVersion() {
24
+ if (interfaceVersion)
25
+ return interfaceVersion;
26
+ let folder = node_path_1.default.dirname(require.resolve(INTERFACE_ENTRY));
27
+ while (folder !== node_path_1.default.dirname(folder)) {
28
+ const manifest = readManifest(folder);
29
+ if (manifest?.name === registry_1.INTERFACE_PACKAGE && manifest.version) {
30
+ interfaceVersion = manifest.version;
31
+ return interfaceVersion;
32
+ }
33
+ folder = node_path_1.default.dirname(folder);
34
+ }
35
+ throw new Error(`Cannot find the installed ${registry_1.INTERFACE_PACKAGE} version`);
36
+ }
37
+ function isCompatible(release, installedVersion) {
38
+ const range = release.interfaceRange
39
+ ? (0, semver_1.validRange)(release.interfaceRange)
40
+ : null;
41
+ if (!range)
42
+ return true;
43
+ return (0, semver_1.satisfies)(installedVersion, range, { includePrerelease: true });
44
+ }
45
+ //# sourceMappingURL=compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../src/store/compatibility.ts"],"names":[],"mappings":";;;;;AA+BA,8DAYC;AAOD,oCASC;AA3DD,qCAAuC;AACvC,0DAA6B;AAC7B,mCAA+C;AAC/C,yCAA+C;AAG/C,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,eAAe,GAAG,GAAG,4BAAiB,OAAO,CAAC;AAOpD,IAAI,gBAAoC,CAAC;AAEzC,SAAS,YAAY,CAAC,MAAc;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CACf,IAAA,sBAAY,EAAC,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,OAAO,CAAC,CACpC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAOD,SAAgB,yBAAyB;IACvC,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,IAAI,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,KAAK,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,QAAQ,EAAE,IAAI,KAAK,4BAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC7D,gBAAgB,GAAG,QAAQ,CAAC,OAAO,CAAC;YACpC,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,4BAAiB,UAAU,CAAC,CAAC;AAC5E,CAAC;AAOD,SAAgB,YAAY,CAC1B,OAAuB,EACvB,gBAAwB;IAExB,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc;QAClC,CAAC,CAAC,IAAA,mBAAU,EAAC,OAAO,CAAC,cAAc,CAAC;QACpC,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,IAAA,kBAAS,EAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;AACzE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ModuleSourcePackage } from "@antelopejs/interface-core/config";
2
+ import type { StoreCatalogEntry, StoreDeclaration } from "./types";
3
+ interface ModuleDeclaration {
4
+ source?: unknown;
5
+ config?: unknown;
6
+ disabled?: boolean;
7
+ optional?: boolean;
8
+ }
9
+ type ModuleDeclarationChanges = Partial<ModuleDeclaration>;
10
+ export declare class DeclarationsUnavailableError extends Error {
11
+ constructor();
12
+ }
13
+ export declare function listCatalogDeclarations(catalog: readonly StoreCatalogEntry[]): Promise<Map<string, StoreDeclaration>>;
14
+ export declare function hasDeclaration(key: string): Promise<boolean>;
15
+ export declare function saveDeclaration(key: string, changes: ModuleDeclarationChanges): Promise<void>;
16
+ export declare function removeDeclaration(key: string): Promise<void>;
17
+ export declare function packageDeclarationSource(packageName: string, range: string): ModuleSourcePackage;
18
+ export {};
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DeclarationsUnavailableError = void 0;
37
+ exports.listCatalogDeclarations = listCatalogDeclarations;
38
+ exports.hasDeclaration = hasDeclaration;
39
+ exports.saveDeclaration = saveDeclaration;
40
+ exports.removeDeclaration = removeDeclaration;
41
+ exports.packageDeclarationSource = packageDeclarationSource;
42
+ const coreModules = __importStar(require("@antelopejs/interface-core/modules"));
43
+ const PACKAGE_SOURCE_TYPE = "package";
44
+ const DECLARATIONS_TIMEOUT_MS = 5000;
45
+ const DECLARATION_FUNCTIONS = [
46
+ "ListModuleDeclarations",
47
+ "SaveModuleDeclaration",
48
+ "RemoveModuleDeclaration",
49
+ ];
50
+ class DeclarationsUnavailableError extends Error {
51
+ constructor() {
52
+ super("This @antelopejs/core cannot edit antelope.config.ts: update it to one that implements the module declaration functions");
53
+ }
54
+ }
55
+ exports.DeclarationsUnavailableError = DeclarationsUnavailableError;
56
+ function isFunction(value) {
57
+ return typeof value === "function";
58
+ }
59
+ function declarationFunctions() {
60
+ const exported = { ...coreModules };
61
+ const functions = DECLARATION_FUNCTIONS.map((name) => exported[name]);
62
+ if (!functions.every(isFunction)) {
63
+ throw new DeclarationsUnavailableError();
64
+ }
65
+ const [list, save, remove] = functions;
66
+ return {
67
+ ListModuleDeclarations: list,
68
+ SaveModuleDeclaration: save,
69
+ RemoveModuleDeclaration: remove,
70
+ };
71
+ }
72
+ function withTimeout(call) {
73
+ let timer;
74
+ const timeout = new Promise((_, reject) => {
75
+ timer = setTimeout(() => reject(new DeclarationsUnavailableError()), DECLARATIONS_TIMEOUT_MS);
76
+ timer.unref();
77
+ });
78
+ return Promise.race([call, timeout]).finally(() => clearTimeout(timer));
79
+ }
80
+ function packageSource(declaration) {
81
+ const source = declaration.source;
82
+ return source?.type === PACKAGE_SOURCE_TYPE ? source : undefined;
83
+ }
84
+ async function listCatalogDeclarations(catalog) {
85
+ const declarations = await withTimeout(declarationFunctions().ListModuleDeclarations());
86
+ const byPackage = new Map(catalog.map((entry) => [entry.package, entry.id]));
87
+ const result = new Map();
88
+ for (const [key, declaration] of Object.entries(declarations)) {
89
+ const source = packageSource(declaration);
90
+ const id = source?.package ? byPackage.get(source.package) : undefined;
91
+ if (!id || !source?.package || result.has(id))
92
+ continue;
93
+ result.set(id, {
94
+ key,
95
+ package: source.package,
96
+ range: source.version ?? "",
97
+ disabled: declaration.disabled === true,
98
+ config: declaration.config,
99
+ });
100
+ }
101
+ return result;
102
+ }
103
+ async function hasDeclaration(key) {
104
+ const declarations = await withTimeout(declarationFunctions().ListModuleDeclarations());
105
+ return Object.hasOwn(declarations, key);
106
+ }
107
+ function saveDeclaration(key, changes) {
108
+ return withTimeout(declarationFunctions().SaveModuleDeclaration(key, changes));
109
+ }
110
+ function removeDeclaration(key) {
111
+ return withTimeout(declarationFunctions().RemoveModuleDeclaration(key));
112
+ }
113
+ function packageDeclarationSource(packageName, range) {
114
+ return { type: PACKAGE_SOURCE_TYPE, package: packageName, version: range };
115
+ }
116
+ //# sourceMappingURL=declarations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../src/store/declarations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { FrontendRequirement, FrontendVersionSource } from "./types";
2
+ export declare const FRONTEND_PACKAGE = "@antelopejs/dms-frontend";
3
+ export interface RunningFrontend {
4
+ version: string;
5
+ source: FrontendVersionSource;
6
+ }
7
+ type DeclaredRange = string | null;
8
+ export declare function releaseFrontendRange(packageName: string, version: string, projectPath: string): Promise<DeclaredRange | undefined>;
9
+ export declare function runningFrontend(projectPath: string): RunningFrontend | undefined;
10
+ export declare function supportsFrontend(range: string, version: string): boolean;
11
+ export interface FrontendRequirementInput {
12
+ range: string;
13
+ running: string;
14
+ projectPath: string;
15
+ replacedFolder?: string;
16
+ }
17
+ export declare function frontendRequirement(input: FrontendRequirementInput): Promise<FrontendRequirement | undefined>;
18
+ export {};
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FRONTEND_PACKAGE = void 0;
7
+ exports.releaseFrontendRange = releaseFrontendRange;
8
+ exports.runningFrontend = runningFrontend;
9
+ exports.supportsFrontend = supportsFrontend;
10
+ exports.frontendRequirement = frontendRequirement;
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = __importDefault(require("node:path"));
13
+ const semver_1 = require("semver");
14
+ const frontend_modules_1 = require("../implementations/dms/frontend-modules");
15
+ const frontend_ready_1 = require("../implementations/dms/frontend-ready");
16
+ const cache_1 = require("./cache");
17
+ const registry_1 = require("./registry");
18
+ const tarball_1 = require("./tarball");
19
+ exports.FRONTEND_PACKAGE = "@antelopejs/dms-frontend";
20
+ const LAYER_MANIFEST = "frontend-vue/package.json";
21
+ const PACKAGE_JSON = "package.json";
22
+ const HOUR_MS = 60 * 60 * 1000;
23
+ const FAILED_LOOKUP_MS = 5 * 60 * 1000;
24
+ const RELEASE_RANGE_LIFETIMES = { found: Infinity, failed: FAILED_LOOKUP_MS };
25
+ const VERSIONS_LIFETIMES = { found: HOUR_MS, failed: FAILED_LOOKUP_MS };
26
+ const releaseRanges = (0, cache_1.createLookupCache)(RELEASE_RANGE_LIFETIMES);
27
+ const publishedVersions = (0, cache_1.createLookupCache)(VERSIONS_LIFETIMES);
28
+ function readManifest(file) {
29
+ try {
30
+ return JSON.parse((0, node_fs_1.readFileSync)(file, "utf-8"));
31
+ }
32
+ catch {
33
+ return undefined;
34
+ }
35
+ }
36
+ function engineRange(manifest) {
37
+ const range = manifest?.engines?.[exports.FRONTEND_PACKAGE];
38
+ return typeof range === "string" && (0, semver_1.validRange)(range) ? range : null;
39
+ }
40
+ function releaseFrontendRange(packageName, version, projectPath) {
41
+ return releaseRanges.get(`${packageName}@${version}`, async () => {
42
+ const files = await (0, tarball_1.readPublishedFiles)(packageName, version, projectPath, [
43
+ LAYER_MANIFEST,
44
+ ]);
45
+ const manifest = files.get(LAYER_MANIFEST);
46
+ return manifest
47
+ ? engineRange(JSON.parse(manifest))
48
+ : null;
49
+ });
50
+ }
51
+ function runningFrontend(projectPath) {
52
+ const reported = (0, frontend_ready_1.getFrontendAcknowledgement)()?.version;
53
+ if (reported)
54
+ return { version: reported, source: "reported" };
55
+ const installed = readManifest(node_path_1.default.join(projectPath, "node_modules", exports.FRONTEND_PACKAGE, PACKAGE_JSON))?.version;
56
+ return installed ? { version: installed, source: "project" } : undefined;
57
+ }
58
+ function supportsFrontend(range, version) {
59
+ const line = (0, semver_1.coerce)(version)?.version ?? version;
60
+ return (0, semver_1.satisfies)(line, range);
61
+ }
62
+ function listPublishedVersions(projectPath) {
63
+ return publishedVersions.get(exports.FRONTEND_PACKAGE, async () => {
64
+ const versions = await (0, registry_1.npmView)(exports.FRONTEND_PACKAGE, ["versions"], projectPath);
65
+ return Array.isArray(versions) ? versions.map(String) : undefined;
66
+ });
67
+ }
68
+ function layersRefusing(version, replacedFolder) {
69
+ const isReplaced = (sourcePath) => replacedFolder !== undefined &&
70
+ !node_path_1.default.relative(replacedFolder, sourcePath).startsWith("..");
71
+ return (0, frontend_modules_1.GetFrontendModules)()
72
+ .filter((layer) => !isReplaced(layer.sourcePath))
73
+ .flatMap((layer) => {
74
+ const range = engineRange(readManifest(node_path_1.default.join(layer.sourcePath, PACKAGE_JSON)));
75
+ return range && !supportsFrontend(range, version)
76
+ ? [{ name: layer.name, range }]
77
+ : [];
78
+ });
79
+ }
80
+ async function frontendRequirement(input) {
81
+ if (supportsFrontend(input.range, input.running))
82
+ return undefined;
83
+ const versions = (await listPublishedVersions(input.projectPath)) ?? [];
84
+ const target = (0, semver_1.maxSatisfying)(versions, input.range) ?? undefined;
85
+ return {
86
+ range: input.range,
87
+ running: input.running,
88
+ target,
89
+ command: target ? `pnpm add -D ${exports.FRONTEND_PACKAGE}@${target}` : undefined,
90
+ breaks: target ? layersRefusing(target, input.replacedFolder) : [],
91
+ };
92
+ }
93
+ //# sourceMappingURL=frontend-compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontend-compatibility.js","sourceRoot":"","sources":["../../src/store/frontend-compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { InterfaceImplementation, MissingInterface, PackageRelease, RuntimeModule } from "./types";
2
+ export declare function findImplementations(interfacePackage: string): Promise<InterfaceImplementation[]>;
3
+ export declare function implementedBy(localPath: string): Promise<string[]>;
4
+ export declare function implementedInterfaces(modules: readonly RuntimeModule[]): Promise<Set<string>>;
5
+ export declare function findMissingInterfaces(release: PackageRelease, implemented: ReadonlySet<string>, projectPath: string): Promise<MissingInterface[]>;
6
+ export declare function findDependents(module: RuntimeModule, running: readonly RuntimeModule[]): Promise<string[]>;