@umbraco-cms/backoffice 14.0.0--preview004-9ceaa576 → 14.0.0--preview004-52e41be8

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 (200) hide show
  1. package/dist-cms/apps/app/app.context.d.ts +5 -4
  2. package/dist-cms/apps/app/app.context.js +6 -3
  3. package/dist-cms/apps/app/app.element.js +32 -87
  4. package/dist-cms/apps/app/server-connection.d.ts +29 -0
  5. package/dist-cms/apps/app/server-connection.js +56 -0
  6. package/dist-cms/custom-elements.json +398 -403
  7. package/dist-cms/mocks/data/user.data.d.ts +2 -2
  8. package/dist-cms/mocks/data/user.data.js +3 -2
  9. package/dist-cms/packages/core/components/input-markdown-editor/input-markdown.element.js +2 -2
  10. package/dist-cms/packages/core/components/input-tiny-mce/input-tiny-mce.element.js +5 -5
  11. package/dist-cms/packages/core/components/property-editor-config/property-editor-config.element.js +1 -1
  12. package/dist-cms/packages/core/components/property-type-based-property/property-type-based-property.element.d.ts +1 -1
  13. package/dist-cms/packages/core/components/property-type-based-property/property-type-based-property.element.js +5 -5
  14. package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-flow-input/data-type-flow-input.element.js +1 -1
  15. package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-input/data-type-input.context.d.ts +1 -1
  16. package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-input/data-type-input.context.js +2 -2
  17. package/dist-cms/packages/{settings/data-types → core/data-type}/components/ref-data-type/ref-data-type.element.d.ts +2 -2
  18. package/dist-cms/packages/{settings/data-types → core/data-type}/components/ref-data-type/ref-data-type.element.js +2 -2
  19. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/copy/copy.action.d.ts +3 -3
  20. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/copy/copy.action.js +2 -2
  21. package/dist-cms/packages/core/data-type/entity-actions/copy/manifests.d.ts +2 -0
  22. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/copy/manifests.js +2 -2
  23. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/create.action.d.ts +3 -3
  24. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/create.action.js +2 -2
  25. package/dist-cms/packages/core/data-type/entity-actions/create/manifests.d.ts +2 -0
  26. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/manifests.js +2 -2
  27. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/modal/data-type-create-options-modal.element.d.ts +1 -1
  28. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/modal/data-type-create-options-modal.element.js +4 -4
  29. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/modal/index.d.ts +1 -1
  30. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/create/modal/index.js +1 -1
  31. package/dist-cms/packages/core/data-type/entity-actions/manifests.d.ts +1 -0
  32. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/manifests.js +6 -5
  33. package/dist-cms/packages/core/data-type/entity-actions/move/manifests.d.ts +2 -0
  34. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/move/manifests.js +2 -2
  35. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/move/move.action.d.ts +3 -3
  36. package/dist-cms/packages/{settings/data-types → core/data-type}/entity-actions/move/move.action.js +2 -2
  37. package/dist-cms/packages/core/data-type/manifests.d.ts +1 -0
  38. package/dist-cms/packages/core/data-type/menu-item/manifests.d.ts +1 -0
  39. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.d.ts +1 -1
  40. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/data-type-picker-flow/data-type-picker-flow-data-type-picker-modal.element.js +7 -5
  41. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/data-type-picker-flow/data-type-picker-flow-modal.element.d.ts +1 -1
  42. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/data-type-picker-flow/data-type-picker-flow-modal.element.js +6 -6
  43. package/dist-cms/packages/core/data-type/modals/manifests.d.ts +2 -0
  44. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.d.ts +1 -1
  45. package/dist-cms/packages/{settings/data-types → core/data-type}/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.js +1 -1
  46. package/dist-cms/packages/core/data-type/repository/copy/data-type-copy.repository.d.ts +14 -0
  47. package/dist-cms/packages/core/data-type/repository/copy/data-type-copy.repository.js +32 -0
  48. package/dist-cms/packages/{settings/data-types/repository/sources/data-type-copy.server.data.d.ts → core/data-type/repository/copy/data-type-copy.server.data-source.d.ts} +2 -2
  49. package/dist-cms/packages/core/data-type/repository/copy/index.d.ts +2 -0
  50. package/dist-cms/packages/core/data-type/repository/copy/index.js +2 -0
  51. package/dist-cms/packages/core/data-type/repository/copy/manifests.d.ts +3 -0
  52. package/dist-cms/packages/core/data-type/repository/copy/manifests.js +9 -0
  53. package/dist-cms/packages/core/data-type/repository/data-type-repository-base.d.ts +14 -0
  54. package/dist-cms/packages/core/data-type/repository/data-type-repository-base.js +24 -0
  55. package/dist-cms/packages/core/data-type/repository/detail/data-type-detail.repository.d.ts +25 -0
  56. package/dist-cms/packages/core/data-type/repository/detail/data-type-detail.repository.js +94 -0
  57. package/dist-cms/packages/{settings/data-types/repository/sources/data-type.server.data.d.ts → core/data-type/repository/detail/data-type-detail.server.data-source.d.ts} +5 -5
  58. package/dist-cms/packages/{settings/data-types/repository/sources/data-type.server.data.js → core/data-type/repository/detail/data-type-detail.server.data-source.js} +1 -1
  59. package/dist-cms/packages/core/data-type/repository/detail/data-type-detail.store.d.ts +26 -0
  60. package/dist-cms/packages/core/data-type/repository/detail/data-type-detail.store.js +32 -0
  61. package/dist-cms/packages/core/data-type/repository/detail/index.d.ts +2 -0
  62. package/dist-cms/packages/core/data-type/repository/detail/index.js +2 -0
  63. package/dist-cms/packages/core/data-type/repository/detail/manifests.d.ts +4 -0
  64. package/dist-cms/packages/core/data-type/repository/detail/manifests.js +17 -0
  65. package/dist-cms/packages/core/data-type/repository/folder/data-type-folder.repository.d.ts +21 -0
  66. package/dist-cms/packages/core/data-type/repository/folder/data-type-folder.repository.js +57 -0
  67. package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/repository/folder}/data-type-folder.server.data.d.ts +5 -5
  68. package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/repository/folder}/data-type-folder.server.data.js +1 -1
  69. package/dist-cms/packages/core/data-type/repository/folder/index.d.ts +2 -0
  70. package/dist-cms/packages/core/data-type/repository/folder/index.js +2 -0
  71. package/dist-cms/packages/core/data-type/repository/folder/manifests.d.ts +3 -0
  72. package/dist-cms/packages/core/data-type/repository/folder/manifests.js +9 -0
  73. package/dist-cms/packages/core/data-type/repository/index.d.ts +5 -0
  74. package/dist-cms/packages/core/data-type/repository/index.js +5 -0
  75. package/dist-cms/packages/core/data-type/repository/item/data-type-item.repository.d.ts +26 -0
  76. package/dist-cms/packages/core/data-type/repository/item/data-type-item.repository.js +35 -0
  77. package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/repository/item}/data-type-item.server.data.d.ts +2 -2
  78. package/dist-cms/packages/core/data-type/repository/item/data-type-item.store.d.ts +19 -0
  79. package/dist-cms/packages/core/data-type/repository/item/data-type-item.store.js +19 -0
  80. package/dist-cms/packages/core/data-type/repository/item/index.d.ts +2 -0
  81. package/dist-cms/packages/core/data-type/repository/item/index.js +2 -0
  82. package/dist-cms/packages/core/data-type/repository/item/manifests.d.ts +4 -0
  83. package/dist-cms/packages/core/data-type/repository/item/manifests.js +17 -0
  84. package/dist-cms/packages/core/data-type/repository/manifests.d.ts +1 -0
  85. package/dist-cms/packages/core/data-type/repository/manifests.js +6 -0
  86. package/dist-cms/packages/core/data-type/repository/move/data-type-move.repository.d.ts +10 -0
  87. package/dist-cms/packages/core/data-type/repository/move/data-type-move.repository.js +24 -0
  88. package/dist-cms/packages/{settings/data-types/repository/sources/data-type-move.server.data.d.ts → core/data-type/repository/move/data-type-move.server.data-source.d.ts} +2 -2
  89. package/dist-cms/packages/core/data-type/repository/move/index.d.ts +2 -0
  90. package/dist-cms/packages/core/data-type/repository/move/index.js +2 -0
  91. package/dist-cms/packages/core/data-type/repository/move/manifests.d.ts +3 -0
  92. package/dist-cms/packages/core/data-type/repository/move/manifests.js +9 -0
  93. package/dist-cms/packages/core/data-type/repository/utils.d.ts +3 -0
  94. package/dist-cms/packages/core/data-type/repository/utils.js +25 -0
  95. package/dist-cms/packages/core/data-type/tree/data-type-tree.repository.d.ts +30 -0
  96. package/dist-cms/packages/core/data-type/tree/data-type-tree.repository.js +49 -0
  97. package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/tree}/data-type.tree.server.data.d.ts +5 -5
  98. package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/tree}/data-type.tree.server.data.js +2 -2
  99. package/dist-cms/packages/{settings/data-types/repository → core/data-type/tree}/data-type.tree.store.d.ts +3 -3
  100. package/dist-cms/packages/{settings/data-types/repository → core/data-type/tree}/data-type.tree.store.js +4 -5
  101. package/dist-cms/packages/core/data-type/tree/manifests.d.ts +4 -0
  102. package/dist-cms/packages/core/data-type/tree/manifests.js +34 -0
  103. package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/data-type-variant-context.d.ts +2 -2
  104. package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/data-type-variant-context.js +1 -1
  105. package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/data-type-variant-context.token.d.ts +1 -1
  106. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace-editor.element.d.ts +1 -1
  107. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace.context.d.ts +4 -4
  108. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace.context.js +5 -5
  109. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace.element.js +1 -1
  110. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/manifests.d.ts +1 -1
  111. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/manifests.js +1 -1
  112. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/views/details/data-type-details-workspace-view.element.d.ts +1 -1
  113. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/views/details/data-type-details-workspace-view.element.js +1 -1
  114. package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/views/info/workspace-view-data-type-info.element.d.ts +1 -1
  115. package/dist-cms/packages/core/debug/context-debug.controller.d.ts +7 -0
  116. package/dist-cms/packages/core/debug/context-debug.controller.js +36 -0
  117. package/dist-cms/packages/core/debug/index.d.ts +1 -0
  118. package/dist-cms/packages/core/debug/index.js +1 -0
  119. package/dist-cms/packages/core/entity-action/common/delete/delete.action.js +10 -12
  120. package/dist-cms/packages/core/index.js +2 -0
  121. package/dist-cms/packages/core/property-editor/uis/tiny-mce/plugins/tiny-mce-mediapicker.plugin.js +5 -5
  122. package/dist-cms/packages/core/store/entity-item.store.d.ts +18 -0
  123. package/dist-cms/packages/core/store/entity-item.store.js +21 -0
  124. package/dist-cms/packages/core/store/index.d.ts +1 -0
  125. package/dist-cms/packages/core/store/index.js +1 -0
  126. package/dist-cms/packages/documents/document-types/workspace/views/design/document-type-workspace-view-edit-property.element.js +4 -4
  127. package/dist-cms/packages/settings/manifests.js +0 -2
  128. package/dist-cms/packages/umbraco-news/umbraco-news-dashboard.element.js +6 -6
  129. package/dist-cms/packages/user/current-user/current-user-header-app.element.d.ts +1 -2
  130. package/dist-cms/packages/user/current-user/current-user-header-app.element.js +9 -7
  131. package/dist-cms/packages/user/current-user/current-user.context.d.ts +21 -0
  132. package/dist-cms/packages/user/current-user/current-user.context.js +58 -0
  133. package/dist-cms/packages/user/current-user/index.d.ts +2 -0
  134. package/dist-cms/packages/user/current-user/index.js +2 -0
  135. package/dist-cms/packages/user/current-user/manifests.js +7 -0
  136. package/dist-cms/packages/user/current-user/modals/current-user/current-user-modal.element.js +11 -6
  137. package/dist-cms/packages/user/current-user/types.d.ts +1 -0
  138. package/dist-cms/packages/user/current-user/user-profile-apps/user-profile-app-profile.element.d.ts +1 -2
  139. package/dist-cms/packages/user/current-user/user-profile-apps/user-profile-app-profile.element.js +10 -8
  140. package/dist-cms/packages/user/current-user/utils/is-current-user.function.js +5 -5
  141. package/dist-cms/packages/user/modals/change-password/change-password-modal.element.js +7 -7
  142. package/dist-cms/packages/user/user/workspace/components/user-workspace-profile-settings/user-workspace-profile-settings.element.js +6 -6
  143. package/dist-cms/packages/user/user/workspace/user-workspace.context.js +7 -7
  144. package/dist-cms/packages/user/user-permission/conditions/user-permission.condition.js +2 -2
  145. package/dist-cms/shared/auth/auth.context.d.ts +15 -17
  146. package/dist-cms/shared/auth/{auth.interface.d.ts → auth.context.interface.d.ts} +4 -20
  147. package/dist-cms/shared/auth/auth.context.js +35 -38
  148. package/dist-cms/shared/auth/auth.context.token.d.ts +3 -0
  149. package/dist-cms/shared/auth/index.d.ts +2 -3
  150. package/dist-cms/shared/auth/index.js +2 -3
  151. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  152. package/dist-cms/vscode-html-custom-data.json +124 -128
  153. package/package.json +2 -2
  154. package/dist-cms/packages/settings/data-types/entity-actions/copy/manifests.d.ts +0 -2
  155. package/dist-cms/packages/settings/data-types/entity-actions/create/manifests.d.ts +0 -2
  156. package/dist-cms/packages/settings/data-types/entity-actions/manifests.d.ts +0 -1
  157. package/dist-cms/packages/settings/data-types/entity-actions/move/manifests.d.ts +0 -2
  158. package/dist-cms/packages/settings/data-types/manifests.d.ts +0 -1
  159. package/dist-cms/packages/settings/data-types/menu-item/manifests.d.ts +0 -1
  160. package/dist-cms/packages/settings/data-types/modals/manifests.d.ts +0 -2
  161. package/dist-cms/packages/settings/data-types/repository/data-type-item.store.d.ts +0 -20
  162. package/dist-cms/packages/settings/data-types/repository/data-type-item.store.js +0 -23
  163. package/dist-cms/packages/settings/data-types/repository/data-type.repository.d.ts +0 -77
  164. package/dist-cms/packages/settings/data-types/repository/data-type.repository.js +0 -299
  165. package/dist-cms/packages/settings/data-types/repository/data-type.store.d.ts +0 -38
  166. package/dist-cms/packages/settings/data-types/repository/data-type.store.js +0 -48
  167. package/dist-cms/packages/settings/data-types/repository/index.d.ts +0 -1
  168. package/dist-cms/packages/settings/data-types/repository/index.js +0 -1
  169. package/dist-cms/packages/settings/data-types/repository/manifests.d.ts +0 -6
  170. package/dist-cms/packages/settings/data-types/repository/manifests.js +0 -33
  171. package/dist-cms/packages/settings/data-types/tree/manifests.d.ts +0 -2
  172. package/dist-cms/packages/settings/data-types/tree/manifests.js +0 -19
  173. package/dist-cms/shared/auth/auth.token.d.ts +0 -3
  174. package/dist-cms/shared/auth/types.d.ts +0 -1
  175. /package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-flow-input/data-type-flow-input.element.d.ts +0 -0
  176. /package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-input/data-type-input.element.d.ts +0 -0
  177. /package/dist-cms/packages/{settings/data-types → core/data-type}/components/data-type-input/data-type-input.element.js +0 -0
  178. /package/dist-cms/packages/{settings/data-types → core/data-type}/components/index.d.ts +0 -0
  179. /package/dist-cms/packages/{settings/data-types → core/data-type}/components/index.js +0 -0
  180. /package/dist-cms/packages/{settings/data-types → core/data-type}/entities.d.ts +0 -0
  181. /package/dist-cms/packages/{settings/data-types → core/data-type}/entities.js +0 -0
  182. /package/dist-cms/packages/{settings/data-types → core/data-type}/index.d.ts +0 -0
  183. /package/dist-cms/packages/{settings/data-types → core/data-type}/index.js +0 -0
  184. /package/dist-cms/packages/{settings/data-types → core/data-type}/manifests.js +0 -0
  185. /package/dist-cms/packages/{settings/data-types → core/data-type}/menu-item/manifests.js +0 -0
  186. /package/dist-cms/packages/{settings/data-types → core/data-type}/modals/manifests.js +0 -0
  187. /package/dist-cms/packages/{settings/data-types → core/data-type}/models.d.ts +0 -0
  188. /package/dist-cms/packages/{settings/data-types → core/data-type}/models.js +0 -0
  189. /package/dist-cms/packages/{settings/data-types/repository/sources/data-type-copy.server.data.js → core/data-type/repository/copy/data-type-copy.server.data-source.js} +0 -0
  190. /package/dist-cms/packages/{settings/data-types/repository/sources → core/data-type/repository/item}/data-type-item.server.data.js +0 -0
  191. /package/dist-cms/packages/{settings/data-types/repository/sources/data-type-move.server.data.js → core/data-type/repository/move/data-type-move.server.data-source.js} +0 -0
  192. /package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/data-type-variant-context.token.js +0 -0
  193. /package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/index.d.ts +0 -0
  194. /package/dist-cms/packages/{settings/data-types → core/data-type}/variant-context/index.js +0 -0
  195. /package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace-editor.element.js +0 -0
  196. /package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/data-type-workspace.element.d.ts +0 -0
  197. /package/dist-cms/packages/{settings/data-types → core/data-type}/workspace/views/info/workspace-view-data-type-info.element.js +0 -0
  198. /package/dist-cms/{shared/auth → packages/user/current-user}/types.js +0 -0
  199. /package/dist-cms/shared/auth/{auth.interface.js → auth.context.interface.js} +0 -0
  200. /package/dist-cms/shared/auth/{auth.token.js → auth.context.token.js} +0 -0
@@ -1,9 +1,10 @@
1
- import { UmbAppContextConfig } from '../../apps/app/app-context-config.interface.js';
1
+ import { UmbAppContextConfig } from './app-context-config.interface.js';
2
+ import { UmbBaseController, UmbControllerHost } from '../../libs/controller-api/index.js';
2
3
  import { UmbContextToken } from '../../libs/context-api/index.js';
3
- export declare class UmbAppContext {
4
+ export declare class UmbAppContext extends UmbBaseController {
4
5
  #private;
5
- constructor(config: UmbAppContextConfig);
6
+ constructor(host: UmbControllerHost, config: UmbAppContextConfig);
6
7
  getBackofficePath(): string;
7
8
  getServerUrl(): string;
8
9
  }
9
- export declare const UMB_APP: UmbContextToken<UmbAppContext, UmbAppContext>;
10
+ export declare const UMB_APP_CONTEXT: UmbContextToken<UmbAppContext, UmbAppContext>;
@@ -1,10 +1,13 @@
1
+ import { UmbBaseController } from '../../libs/controller-api/index.js';
1
2
  import { UmbContextToken } from '../../libs/context-api/index.js';
2
- export class UmbAppContext {
3
+ export class UmbAppContext extends UmbBaseController {
3
4
  #serverUrl;
4
5
  #backofficePath;
5
- constructor(config) {
6
+ constructor(host, config) {
7
+ super(host);
6
8
  this.#serverUrl = config.serverUrl;
7
9
  this.#backofficePath = config.backofficePath;
10
+ this.provideContext(UMB_APP_CONTEXT, this);
8
11
  }
9
12
  getBackofficePath() {
10
13
  return this.#backofficePath;
@@ -13,4 +16,4 @@ export class UmbAppContext {
13
16
  return this.#serverUrl;
14
17
  }
15
18
  }
16
- export const UMB_APP = new UmbContextToken('UMB_APP');
19
+ export const UMB_APP_CONTEXT = new UmbContextToken('UMB_APP');
@@ -4,22 +4,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  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;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { UMB_APP, UmbAppContext } from './app.context.js';
8
- import { umbLocalizationRegistry } from '../../packages/core/localization/index.js';
9
- import { UMB_AUTH_CONTEXT, UmbAuthContext } from '../../shared/auth/index.js';
7
+ import { UmbAppContext } from './app.context.js';
8
+ import { UmbServerConnection } from './server-connection.js';
9
+ import { UmbAuthContext } from '../../shared/auth/index.js';
10
10
  import { css, html, customElement, property } from '../../external/lit/index.js';
11
11
  import { UUIIconRegistryEssential } from '../../external/uui/index.js';
12
12
  import { UmbIconRegistry } from '../../shared/icon-registry/index.js';
13
13
  import { UmbLitElement } from '../../shared/lit-element/index.js';
14
14
  import { pathWithoutBasePath } from '../../shared/router/index.js';
15
- import { tryExecute } from '../../shared/resources/index.js';
16
- import { OpenAPI, RuntimeLevelModel, ServerResource } from '../../external/backend-api/index.js';
17
- import { contextData, umbDebugContextEventType } from '../../libs/context-api/index.js';
15
+ import { OpenAPI, RuntimeLevelModel } from '../../external/backend-api/index.js';
16
+ import { UmbContextDebugController } from '../../packages/core/debug/index.js';
18
17
  export let UmbAppElement = class UmbAppElement extends UmbLitElement {
19
18
  #authContext;
20
19
  #umbIconRegistry;
21
20
  #uuiIconRegistry;
22
- #runtimeLevel;
21
+ #serverConnection;
23
22
  constructor() {
24
23
  super();
25
24
  /**
@@ -58,51 +57,30 @@ export let UmbAppElement = class UmbAppElement extends UmbLitElement {
58
57
  ];
59
58
  this.#umbIconRegistry = new UmbIconRegistry();
60
59
  this.#uuiIconRegistry = new UUIIconRegistryEssential();
61
- this.#runtimeLevel = RuntimeLevelModel.UNKNOWN;
60
+ new UmbContextDebugController(this);
62
61
  this.#umbIconRegistry.attach(this);
63
62
  this.#uuiIconRegistry.attach(this);
64
63
  }
65
64
  connectedCallback() {
66
65
  super.connectedCallback();
67
- this.#setLanguage();
68
66
  this.#setup();
69
67
  }
70
- #setLanguage() {
71
- if (this.lang) {
72
- umbLocalizationRegistry.loadLanguage(this.lang);
73
- }
74
- }
75
- #listenForLanguageChange() {
76
- // This will wait for the default language to be loaded before attempting to load the current user language
77
- // just in case the user language is not the default language.
78
- // We **need** to do this because the default language (typically en-us) holds all the fallback keys for all the other languages.
79
- // This way we can ensure that the document language is always loaded first and subsequently registered as the fallback language.
80
- this.observe(umbLocalizationRegistry.isDefaultLoaded, (isDefaultLoaded) => {
81
- if (!this.#authContext) {
82
- throw new Error('[Fatal] AuthContext requested before it was initialized');
83
- }
84
- if (!isDefaultLoaded)
85
- return;
86
- this.observe(this.#authContext.languageIsoCode, (currentLanguageIsoCode) => {
87
- umbLocalizationRegistry.loadLanguage(currentLanguageIsoCode);
88
- }, 'languageIsoCode');
89
- });
90
- }
91
68
  async #setup() {
92
69
  if (this.serverUrl === undefined)
93
70
  throw new Error('No serverUrl provided');
71
+ /* All requests to the server requires the base URL to be set.
72
+ We make sure it happens before we get the server status.
73
+ TODO: find the right place to set this
74
+ */
94
75
  OpenAPI.BASE = this.serverUrl;
95
- const redirectUrl = `${window.location.origin}${this.backofficePath}`;
96
- this.#authContext = new UmbAuthContext(this, this.serverUrl, redirectUrl);
97
- this.provideContext(UMB_AUTH_CONTEXT, this.#authContext);
98
- this.provideContext(UMB_APP, new UmbAppContext({ backofficePath: this.backofficePath, serverUrl: this.serverUrl }));
76
+ this.#serverConnection = await new UmbServerConnection(this.serverUrl).connect();
77
+ this.#authContext = new UmbAuthContext(this, this.serverUrl, this.backofficePath, this.bypassAuth);
78
+ new UmbAppContext(this, { backofficePath: this.backofficePath, serverUrl: this.serverUrl });
99
79
  // Try to initialise the auth flow and get the runtime status
100
80
  try {
101
- // Get the current runtime level
102
- await this.#setInitStatus();
103
81
  // If the runtime level is "install" we should clear any cached tokens
104
82
  // else we should try and set the auth status
105
- if (this.#runtimeLevel === RuntimeLevelModel.INSTALL) {
83
+ if (this.#serverConnection.getStatus() === RuntimeLevelModel.INSTALL) {
106
84
  await this.#authContext.signOut();
107
85
  }
108
86
  else {
@@ -127,54 +105,22 @@ export let UmbAppElement = class UmbAppElement extends UmbLitElement {
127
105
  // Redirect to the error page
128
106
  this.#errorPage(errorMsg, error);
129
107
  }
130
- // TODO: wrap all debugging logic in a separate class. Maybe this could be part of the context-api? When we create a new root, we could attach the debugger to it?
131
- // Listen for the debug event from the <umb-debug> component
132
- this.addEventListener(umbDebugContextEventType, (event) => {
133
- // Once we got to the outter most component <umb-app>
134
- // we can send the event containing all the contexts
135
- // we have collected whilst coming up through the DOM
136
- // and pass it back down to the callback in
137
- // the <umb-debug> component that originally fired the event
138
- if (event.callback) {
139
- event.callback(event.instances);
140
- }
141
- // Massage the data into a simplier format
142
- // Why? Can't send contexts data directly - browser seems to not serialize it and says its null
143
- // But a simple object works fine for browser extension to consume
144
- const data = {
145
- contexts: contextData(event.instances),
146
- };
147
- // Emit this new event for the browser extension to listen for
148
- this.dispatchEvent(new CustomEvent('umb:debug-contexts:data', { detail: data, bubbles: true }));
149
- });
150
- }
151
- async #setInitStatus() {
152
- const { data, error } = await tryExecute(ServerResource.getServerStatus());
153
- if (error) {
154
- throw error;
155
- }
156
- this.#runtimeLevel = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN;
157
108
  }
109
+ // TODO: move set initial auth state into auth context
158
110
  async #setAuthStatus() {
159
- if (this.bypassAuth === false) {
160
- if (!this.#authContext) {
161
- throw new Error('[Fatal] AuthContext requested before it was initialized');
162
- }
163
- // Get service configuration from authentication server
164
- await this.#authContext.setInitialState();
165
- // Instruct all requests to use the auth flow to get and use the access_token for all subsequent requests
166
- OpenAPI.TOKEN = () => this.#authContext.getLatestToken();
167
- }
168
- this.#listenForLanguageChange();
169
- if (this.#authContext?.isAuthorized()) {
170
- this.#authContext?.setLoggedIn(true);
171
- }
172
- else {
173
- this.#authContext?.setLoggedIn(false);
111
+ if (this.bypassAuth)
112
+ return;
113
+ if (!this.#authContext) {
114
+ throw new Error('[Fatal] AuthContext requested before it was initialized');
174
115
  }
116
+ // Get service configuration from authentication server
117
+ await this.#authContext?.setInitialState();
118
+ // Instruct all requests to use the auth flow to get and use the access_token for all subsequent requests
119
+ OpenAPI.TOKEN = () => this.#authContext.getLatestToken();
120
+ OpenAPI.WITH_CREDENTIALS = true;
175
121
  }
176
122
  #redirect() {
177
- switch (this.#runtimeLevel) {
123
+ switch (this.#serverConnection?.getStatus()) {
178
124
  case RuntimeLevelModel.INSTALL:
179
125
  history.replaceState(null, '', 'install');
180
126
  break;
@@ -200,22 +146,21 @@ export let UmbAppElement = class UmbAppElement extends UmbLitElement {
200
146
  }
201
147
  default:
202
148
  // Redirect to the error page
203
- this.#errorPage(`Unsupported runtime level: ${this.#runtimeLevel}`);
149
+ this.#errorPage(`Unsupported runtime level: ${this.#serverConnection?.getStatus()}`);
204
150
  }
205
151
  }
206
- #isAuthorized() {
207
- if (!this.#authContext)
208
- return false;
209
- return this.bypassAuth ? true : this.#authContext.isAuthorized();
210
- }
211
152
  #isAuthorizedGuard() {
212
153
  return () => {
213
- if (this.#isAuthorized()) {
154
+ if (!this.#authContext) {
155
+ throw new Error('[Fatal] AuthContext requested before it was initialized');
156
+ }
157
+ if (this.#authContext.getIsAuthorized()) {
214
158
  return true;
215
159
  }
216
160
  // Save location.href so we can redirect to it after login
217
161
  window.sessionStorage.setItem('umb:auth:redirect', location.href);
218
162
  // Make a request to the auth server to start the auth flow
163
+ // TODO: find better name for this method
219
164
  this.#authContext.login();
220
165
  // Return false to prevent the route from being rendered
221
166
  return false;
@@ -0,0 +1,29 @@
1
+ import { RuntimeLevelModel } from '../../external/backend-api/index.js';
2
+ export declare class UmbServerConnection {
3
+ #private;
4
+ isConnected: import("rxjs").Observable<boolean>;
5
+ constructor(serverUrl: string);
6
+ /**
7
+ * Connects to the server.
8
+ * @memberof UmbServerConnection
9
+ */
10
+ connect(): Promise<this>;
11
+ /**
12
+ * Gets the URL of the server.
13
+ * @return {*}
14
+ * @memberof UmbServerConnection
15
+ */
16
+ getUrl(): string;
17
+ /**
18
+ * Gets the status of the server.
19
+ * @return {string}
20
+ * @memberof UmbServerConnection
21
+ */
22
+ getStatus(): RuntimeLevelModel;
23
+ /**
24
+ * Checks if the server is connected.
25
+ * @return {boolean}
26
+ * @memberof UmbServerConnection
27
+ */
28
+ getIsConnected(): boolean;
29
+ }
@@ -0,0 +1,56 @@
1
+ import { RuntimeLevelModel, ServerResource } from '../../external/backend-api/index.js';
2
+ import { UmbBooleanState } from '../../libs/observable-api/index.js';
3
+ import { tryExecute } from '../../shared/resources/index.js';
4
+ export class UmbServerConnection {
5
+ #url;
6
+ #status;
7
+ #isConnected;
8
+ constructor(serverUrl) {
9
+ this.#status = RuntimeLevelModel.UNKNOWN;
10
+ this.#isConnected = new UmbBooleanState(false);
11
+ this.isConnected = this.#isConnected.asObservable();
12
+ this.#url = serverUrl;
13
+ }
14
+ /**
15
+ * Connects to the server.
16
+ * @memberof UmbServerConnection
17
+ */
18
+ async connect() {
19
+ await this.#setStatus();
20
+ return this;
21
+ }
22
+ /**
23
+ * Gets the URL of the server.
24
+ * @return {*}
25
+ * @memberof UmbServerConnection
26
+ */
27
+ getUrl() {
28
+ return this.#url;
29
+ }
30
+ /**
31
+ * Gets the status of the server.
32
+ * @return {string}
33
+ * @memberof UmbServerConnection
34
+ */
35
+ getStatus() {
36
+ if (!this.getIsConnected())
37
+ throw new Error('Server is not connected. Remember to await connect()');
38
+ return this.#status;
39
+ }
40
+ /**
41
+ * Checks if the server is connected.
42
+ * @return {boolean}
43
+ * @memberof UmbServerConnection
44
+ */
45
+ getIsConnected() {
46
+ return this.#isConnected.getValue();
47
+ }
48
+ async #setStatus() {
49
+ const { data, error } = await tryExecute(ServerResource.getServerStatus());
50
+ if (error) {
51
+ throw error;
52
+ }
53
+ this.#isConnected.next(true);
54
+ this.#status = data?.serverStatus ?? RuntimeLevelModel.UNKNOWN;
55
+ }
56
+ }