@acorex-platform/framework-client 0.0.18 → 0.0.20

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 (108) hide show
  1. package/fesm2022/acorex-platform-framework-client-auth.mjs +872 -314
  2. package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
  3. package/fesm2022/{acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs → acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs} +88 -5
  4. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-CLm2BVk-.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-framework-client-common.mjs +2666 -693
  6. package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
  7. package/fesm2022/acorex-platform-framework-client-core.mjs +685 -721
  8. package/fesm2022/acorex-platform-framework-client-core.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-framework-client-domain.mjs +16 -16
  10. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs +124 -72
  11. package/fesm2022/acorex-platform-framework-client-layout-builder.mjs.map +1 -1
  12. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs} +8 -6
  13. package/fesm2022/{acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-CjnQ9hAJ.mjs.map → acorex-platform-framework-client-layout-components-binding-expression-editor-popup.component-oE8CeLE8.mjs.map} +1 -1
  14. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs} +4 -4
  15. package/fesm2022/{acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-fFen8w8M.mjs.map → acorex-platform-framework-client-layout-components-file-provider-picker.popup.component-BtLEUWAA.mjs.map} +1 -1
  16. package/fesm2022/acorex-platform-framework-client-layout-components.mjs +2988 -857
  17. package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +277 -185
  19. package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs +29184 -0
  21. package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-BXOMs6oD.mjs.map +1 -0
  22. package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs} +34 -20
  23. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-DCK-qb-F.mjs.map +1 -0
  24. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs +162 -0
  25. package/fesm2022/acorex-platform-framework-client-layout-entity-bulk-entity.command-Cs3agnpF.mjs.map +1 -0
  26. package/fesm2022/{acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs → acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs} +31 -19
  27. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-p0hxDb0W.mjs.map +1 -0
  28. package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs} +30 -18
  29. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DYV9YPyw.mjs.map +1 -0
  30. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +2 -27090
  31. package/fesm2022/acorex-platform-framework-client-layout-entity.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-framework-client-layout-views.mjs +382 -154
  33. package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
  34. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +646 -280
  35. package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
  36. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs} +16 -10
  37. package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-CIwpAXbL.mjs.map → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BiWerYcu.mjs.map} +1 -1
  38. package/fesm2022/{acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs → acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs} +9 -8
  39. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-BOrrMm3U.mjs.map +1 -0
  40. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs} +20 -12
  41. package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-DKkJi40s.mjs.map → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-WzIiwnGC.mjs.map} +1 -1
  42. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs} +32 -18
  43. package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-DtYZfA79.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-3CO4xJB3.mjs.map} +1 -1
  44. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs} +8 -7
  45. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-nMUtxAyy.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-CRST84ou.mjs.map} +1 -1
  46. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs} +4 -4
  47. package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DvUSZ4hJ.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-FjtSRxIX.mjs.map} +1 -1
  48. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs} +10 -8
  49. package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BihIfkZW.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-D6HFPmGC.mjs.map} +1 -1
  50. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +4868 -2548
  51. package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs.map +1 -1
  52. package/fesm2022/acorex-platform-framework-client-native.mjs +7 -7
  53. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs +29 -0
  54. package/fesm2022/acorex-platform-framework-client-realtime-set-presence-availability.command-CetlUjnM.mjs.map +1 -0
  55. package/fesm2022/acorex-platform-framework-client-realtime.mjs +463 -26
  56. package/fesm2022/acorex-platform-framework-client-realtime.mjs.map +1 -1
  57. package/fesm2022/acorex-platform-framework-client-runtime.mjs +300 -137
  58. package/fesm2022/acorex-platform-framework-client-runtime.mjs.map +1 -1
  59. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs} +10 -7
  60. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-QIFX11dh.mjs.map → acorex-platform-framework-client-themes-default-entity-master-create-view.component-yeftgJ_K.mjs.map} +1 -1
  61. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs} +10 -7
  62. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BBdellyL.mjs.map → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-DWE3OWGm.mjs.map} +1 -1
  63. package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs} +21 -19
  64. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-C2Abf7Lb.mjs.map +1 -0
  65. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs} +5 -5
  66. package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-C_czT_JC.mjs.map → acorex-platform-framework-client-themes-default-error-401.component-BrTotLx1.mjs.map} +1 -1
  67. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs} +5 -5
  68. package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-C2Wu0YtF.mjs.map → acorex-platform-framework-client-themes-default-error-404.component-DsC7_s59.mjs.map} +1 -1
  69. package/fesm2022/{acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs → acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs} +6 -6
  70. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-CngiQycG.mjs.map +1 -0
  71. package/fesm2022/acorex-platform-framework-client-themes-default.mjs +421 -265
  72. package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
  73. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs} +8 -6
  74. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-column.component-Ci_oH7NE.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-column.component-CbZALjB5.mjs.map} +1 -1
  75. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs} +8 -6
  76. package/fesm2022/{acorex-platform-framework-client-themes-shared-icon-chooser-view.component-Lb1G2Xz7.mjs.map → acorex-platform-framework-client-themes-shared-icon-chooser-view.component-BRrNT6x2.mjs.map} +1 -1
  77. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs} +4 -4
  78. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-D4ubvFYf.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-column.component-BIsQTr6B.mjs.map} +1 -1
  79. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs} +16 -10
  80. package/fesm2022/{acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-Br8j_BF_.mjs.map → acorex-platform-framework-client-themes-shared-theme-color-chooser-view.component-ZclmSbt9.mjs.map} +1 -1
  81. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +538 -133
  82. package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
  83. package/fesm2022/acorex-platform-framework-client-workflow.mjs +26 -66
  84. package/fesm2022/acorex-platform-framework-client-workflow.mjs.map +1 -1
  85. package/package.json +10 -10
  86. package/realtime/README.md +16 -0
  87. package/runtime/README.md +14 -0
  88. package/types/acorex-platform-framework-client-auth.d.ts +291 -52
  89. package/types/acorex-platform-framework-client-common.d.ts +613 -87
  90. package/types/acorex-platform-framework-client-core.d.ts +213 -206
  91. package/types/acorex-platform-framework-client-layout-builder.d.ts +14 -8
  92. package/types/acorex-platform-framework-client-layout-components.d.ts +392 -28
  93. package/types/acorex-platform-framework-client-layout-entity.d.ts +667 -417
  94. package/types/acorex-platform-framework-client-layout-views.d.ts +31 -11
  95. package/types/acorex-platform-framework-client-layout-widget-core.d.ts +66 -17
  96. package/types/acorex-platform-framework-client-layout-widgets.d.ts +294 -67
  97. package/types/acorex-platform-framework-client-realtime.d.ts +183 -6
  98. package/types/acorex-platform-framework-client-runtime.d.ts +134 -28
  99. package/types/acorex-platform-framework-client-themes-default.d.ts +9 -1
  100. package/types/acorex-platform-framework-client-themes-shared.d.ts +8 -2
  101. package/types/acorex-platform-framework-client-workflow.d.ts +11 -35
  102. package/fesm2022/acorex-platform-framework-client-common-common-settings.provider-Euotv9l0.mjs.map +0 -1
  103. package/fesm2022/acorex-platform-framework-client-layout-entity-attachments-page.component-BzUM-JMC.mjs.map +0 -1
  104. package/fesm2022/acorex-platform-framework-client-layout-entity-file-list-popup.component-Ci_CTFtq.mjs.map +0 -1
  105. package/fesm2022/acorex-platform-framework-client-layout-entity-gallery-page.component-DmiB__JR.mjs.map +0 -1
  106. package/fesm2022/acorex-platform-framework-client-layout-widgets-image-preview.popup-CazpERbX.mjs.map +0 -1
  107. package/fesm2022/acorex-platform-framework-client-themes-default-entity-master-single-view.component-CIf1VWNW.mjs.map +0 -1
  108. package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-DRz-kVsT.mjs.map +0 -1
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@acorex-platform/framework-client",
3
- "version": "0.0.18",
3
+ "version": "0.0.20",
4
4
  "peerDependencies": {
5
- "@acorex/cdk": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.0.0-next.0",
6
- "@acorex/core": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.0.0-next.0",
7
- "@acorex/charts": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.0.0-next.0",
8
- "@acorex/styles": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.0.0-next.0",
9
- "@acorex/components": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.0.0-next.0",
10
- "@acorex-platform/framework-shared": "0.0.18",
5
+ "@acorex-platform/framework-shared": "0.0.20",
6
+ "@acorex/cdk": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.1.0-next.0 || ^22.1.0-next.0",
7
+ "@acorex/charts": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.1.0-next.0 || ^22.1.0-next.0",
8
+ "@acorex/components": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.1.0-next.0 || ^22.1.0-next.0",
9
+ "@acorex/core": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.1.0-next.0 || ^22.1.0-next.0",
10
+ "@acorex/styles": "^19.0.0 || ^20.0.0 || ^22.0.0-next.0 || ^22.1.0-next.0 || ^22.1.0-next.0",
11
11
  "@angular/animations": "^21.0.0",
12
12
  "@ngrx/signals": "^21.0.0",
13
- "socket.io-client": "^4.0.0",
14
- "tailwindcss-animate": "^1.0.0",
15
13
  "dom-to-image": "^2.6.0",
16
14
  "micromark": "^4.0.2",
17
- "micromark-extension-gfm": "^3.0.0"
15
+ "micromark-extension-gfm": "^3.0.0",
16
+ "socket.io-client": "^4.0.0",
17
+ "tailwindcss-animate": "^1.0.0"
18
18
  },
19
19
  "dependencies": {
20
20
  "tslib": "^2.3.0"
@@ -0,0 +1,16 @@
1
+ # Framework Client Realtime
2
+
3
+ Always-on app signaling over the **built-in** Socket.IO connection. Topic handlers receive envelopes published by the server realtime module.
4
+
5
+ ## Built-in vs RTC
6
+
7
+ - **This package:** inbox, chat messages, typing, entity mutations (lightweight, always on).
8
+ - **`extensions/rtc`:** call ring plus voice/video media when an RTC provider (e.g. LiveKit) is configured. Not a replacement for this connection.
9
+
10
+ ```ts
11
+ import { provideRealtime } from '@acorex-platform/framework-client/realtime';
12
+
13
+ provideRealtime({ apiBaseUrl: environment.baseUrl, backend: 'builtin' });
14
+ ```
15
+
16
+ Inject `AXPRealtimeConnectionPort` (or `AXPRealtimeConnectionService`) for connect/subscribe; register handlers on `AXPRealtimeDispatcherService`.
package/runtime/README.md CHANGED
@@ -1,3 +1,17 @@
1
1
  # @acorex-platform/framework-client/runtime
2
2
 
3
3
  Secondary entry point of `@acorex-platform/framework-client/platform`. It can be used by importing from `@acorex-platform/framework-client/runtime`.
4
+
5
+ ## External bulk transport (other API stacks)
6
+
7
+ When the host app uses only this client library and implements the API elsewhere, override bulk with:
8
+
9
+ ```typescript
10
+ import { provideExternalRuntimeBulkTransport } from '@acorex-platform/framework-client/runtime';
11
+
12
+ providers: [
13
+ ...provideExternalRuntimeBulkTransport((request) => myApi.bulk(request)),
14
+ ]
15
+ ```
16
+
17
+ See [`src/lib/RUNTIME_REMOTE_BULK_TRANSPORT.md`](./src/lib/RUNTIME_REMOTE_BULK_TRANSPORT.md).
@@ -1,30 +1,29 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, TemplateRef, ViewContainerRef, ModuleWithProviders, Injector, Type } from '@angular/core';
3
+ import { AXPMultiLanguageString, AXPOptionsData, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';
3
4
  import { CanActivateFn } from '@angular/router';
4
- import { AXPDataSourceDefinitionProvider, AXPDataSourceDefinition } from '@acorex-platform/framework-client/core';
5
- import { AXPOptionsData, AXPExpressionEvaluatorScopeProvider, AXPExpressionEvaluatorScopeProviderContext } from '@acorex-platform/framework-shared/core';
6
5
  import { Observable } from 'rxjs';
7
6
 
8
7
  interface AXPEdition {
9
8
  id: string;
10
- title: string;
11
- description?: string;
9
+ title: AXPMultiLanguageString;
10
+ description?: AXPMultiLanguageString;
12
11
  }
13
12
  interface AXPApplication {
14
13
  id: string;
15
14
  name: string;
16
- title?: string;
15
+ title?: AXPMultiLanguageString;
17
16
  version?: string;
18
17
  edition?: AXPEdition;
19
- description?: string;
18
+ description?: AXPMultiLanguageString;
20
19
  logoUrl?: string;
21
20
  }
22
21
 
23
22
  interface AXPTenant {
24
23
  id: string;
25
24
  name: string;
26
- title: string;
27
- description?: string;
25
+ title: AXPMultiLanguageString;
26
+ description?: AXPMultiLanguageString;
28
27
  logo?: string;
29
28
  }
30
29
 
@@ -32,7 +31,8 @@ interface AXPUser {
32
31
  id: string;
33
32
  name: string;
34
33
  title: string;
35
- avatar?: string;
34
+ /** File-storage id / ref; `null` when known empty (from SignIn/Refresh). */
35
+ avatar?: string | null;
36
36
  }
37
37
 
38
38
  declare class AXPSessionContext {
@@ -62,11 +62,6 @@ interface AXPApplicationLoader {
62
62
  }
63
63
  declare const AXP_APPLICATION_LOADER: InjectionToken<AXPApplicationLoader>;
64
64
 
65
- /** Platform auth datasource registry names. */
66
- declare const AXPPlatformAuthDataSourceKeys: {
67
- readonly PermissionDefinitions: "platform-permission-definitions";
68
- };
69
-
70
65
  declare class AXPUnauthorizedError extends Error {
71
66
  data?: {
72
67
  redirectUrl?: string;
@@ -110,6 +105,13 @@ interface AXPPermissionGroupDefinition {
110
105
  name: string;
111
106
  title: string;
112
107
  description?: string;
108
+ /**
109
+ * Optional parent group name. When set, this group is a **section** under the parent
110
+ * in the Permissions Editor right panel (not a left-nav root).
111
+ */
112
+ parent?: string;
113
+ /** Optional sort order among sibling sections (lower first). */
114
+ order?: number;
113
115
  permissions: AXPPermissionDefinition[];
114
116
  }
115
117
  type AXPPermissionDefinition = {
@@ -123,6 +125,12 @@ type AXPPermissionDefinition = {
123
125
  * If any required feature is not enabled, this permission will be filtered out.
124
126
  */
125
127
  requiredFeatures?: string[];
128
+ /**
129
+ * Edition / Nx module names this permission belongs to.
130
+ * Session and role-editor filtering keep the permission when ANY listed module is enabled
131
+ * (Access/Setup typically list all domain contributors; unique caps list the owner module).
132
+ */
133
+ modules?: string[];
126
134
  };
127
135
 
128
136
  interface AXPPermissionLoader {
@@ -130,17 +138,24 @@ interface AXPPermissionLoader {
130
138
  }
131
139
  declare const AXP_PERMISSION_LOADER: InjectionToken<AXPPermissionLoader>;
132
140
 
133
- /**
134
- * Data source definition for leaf permissions from {@link AXPPermissionDefinitionService#getGroups}.
135
- */
136
- declare class AXPPermissionDefinitionsDataSourceDefinition implements AXPDataSourceDefinitionProvider {
137
- private readonly permissionDefinitionService;
138
- items(): Promise<AXPDataSourceDefinition[]>;
139
- }
140
-
141
+ type AXPPermissionGroupAddOptions = {
142
+ /** Parent group name — makes this group a right-panel section under that root. */
143
+ parent?: string;
144
+ /** Sort order among sibling sections (lower first). */
145
+ order?: number;
146
+ };
147
+ type AXPPermissionAddOptions = {
148
+ /** Required feature flags for this permission to appear. */
149
+ requiredFeatures?: string[];
150
+ /**
151
+ * Edition module names this permission belongs to.
152
+ * Availability uses ANY-match against the tenant application edition modules.
153
+ */
154
+ modules?: string[];
155
+ };
141
156
  declare class AXPPermissionDefinitionProviderContext {
142
157
  private builders;
143
- addGroup(name: string, title: string, description?: string): AXPPermissionDefinitionGroupBuilder;
158
+ addGroup(name: string, title: string, description?: string, options?: AXPPermissionGroupAddOptions): AXPPermissionDefinitionGroupBuilder;
144
159
  getGroupDefinitions(): AXPPermissionGroupDefinition[];
145
160
  findGroup(name: string): AXPPermissionDefinitionGroupBuilder | undefined;
146
161
  isGroupDefined(name: string): boolean;
@@ -150,47 +165,59 @@ declare class AXPPermissionDefinitionGroupBuilder {
150
165
  private _group;
151
166
  get group(): AXPPermissionGroupDefinition;
152
167
  constructor(context: AXPPermissionDefinitionProviderContext, group: AXPPermissionGroupDefinition);
153
- addPermission(name: string, title: string, description?: string, requiredFeatures?: string[]): AXPPermissionDefinitionBuilder;
168
+ addPermission(name: string, title: string, description?: string, options?: AXPPermissionAddOptions | string[]): AXPPermissionDefinitionBuilder;
154
169
  endGroup(): AXPPermissionDefinitionProviderContext;
155
- findPermission(path: string): AXPPermissionDefinition | undefined;
156
- findGroup(name: string): AXPPermissionDefinitionGroupBuilder | undefined;
170
+ findPermission(_path: string): AXPPermissionDefinition | undefined;
171
+ findGroup(_name: string): AXPPermissionDefinitionGroupBuilder | undefined;
157
172
  }
158
173
  declare class AXPPermissionDefinitionBuilder {
159
174
  private groupBuilder;
160
175
  private permission;
161
176
  constructor(groupBuilder: AXPPermissionDefinitionGroupBuilder, permission: AXPPermissionDefinition);
162
- addChild(name: string, title: string, description?: string, requiredFeatures?: string[]): AXPPermissionDefinitionBuilder;
177
+ addChild(name: string, title: string, description?: string, options?: AXPPermissionAddOptions | string[]): AXPPermissionDefinitionBuilder;
163
178
  /**
164
179
  * Set required features for this permission.
165
180
  * @param features - Array of feature names (e.g., ['PlatformManagement.menu-customization'])
166
181
  */
167
182
  requireFeatures(...features: string[]): AXPPermissionDefinitionBuilder;
183
+ /**
184
+ * Set edition module ownership for this permission (ANY-match for availability).
185
+ */
186
+ modules(...moduleNames: string[]): AXPPermissionDefinitionBuilder;
168
187
  endPermission(): AXPPermissionDefinitionGroupBuilder;
169
188
  }
170
189
 
171
190
  interface AXPPermissionDefinitionProvider {
172
191
  define(context: AXPPermissionDefinitionProviderContext): Promise<void>;
173
192
  }
193
+ /** Resolves edition module names for a permission key (product map). */
194
+ type AXPPermissionModulesResolver = (permissionKey: string) => readonly string[];
174
195
  declare const AXP_PERMISSION_DEFINITION_PROVIDER: InjectionToken<AXPPermissionDefinitionProvider[]>;
196
+ declare const AXP_PERMISSION_MODULES_RESOLVER: InjectionToken<AXPPermissionModulesResolver>;
175
197
  declare class AXPPermissionDefinitionService {
176
198
  private providers;
199
+ private modulesResolver;
177
200
  private sessionService;
178
201
  private cache;
202
+ /** Invalidates cache when the session edition modules/features change (e.g. app switch). */
203
+ private cacheAvailabilityKey;
204
+ private buildAvailabilityKey;
179
205
  private load;
206
+ /** Attach modules[] from the product resolver when providers omitted them. */
207
+ private enrichGroupModules;
208
+ private enrichPermissionModules;
180
209
  /**
181
- * Filter permissions based on required features.
182
- * Removes permissions that have required features that are not enabled.
183
- */
184
- private filterByFeatures;
185
- /**
186
- * Recursively filter permissions and their children based on required features.
210
+ * Filter permissions by edition modules (ANY-match) and required features.
211
+ * Keeps parent groups that still have at least one child section with permissions.
187
212
  */
213
+ private filterUnavailablePermissions;
188
214
  private filterPermissions;
189
215
  reload(): Promise<void>;
190
216
  getGroups(): Promise<AXPPermissionGroupDefinition[]>;
191
217
  getPermissions(): Promise<AXPPermissionDefinition[]>;
192
218
  getGroup(name: string): Promise<AXPPermissionGroupDefinition | null>;
193
219
  getPermission(name: string): Promise<AXPPermissionDefinition | null>;
220
+ private findPermissionRecursive;
194
221
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPPermissionDefinitionService, never>;
195
222
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPPermissionDefinitionService>;
196
223
  }
@@ -200,7 +227,8 @@ interface AXPBaseCredentials {
200
227
  [key: string]: string;
201
228
  }
202
229
  interface AXPTokenResult {
203
- accessToken: string;
230
+ /** Present only for non-browser clients; SPA uses HttpOnly cookies. */
231
+ accessToken?: string;
204
232
  expiresIn?: string | null;
205
233
  refreshToken?: string;
206
234
  idToken?: string;
@@ -210,10 +238,11 @@ interface AXPTokenResult {
210
238
  interface AXPSignInResult {
211
239
  succeed: boolean;
212
240
  data?: {
213
- accessToken: string;
241
+ /** Present only for non-browser clients; SPA uses HttpOnly cookies. */
242
+ accessToken?: string;
214
243
  idToken?: string | null;
215
244
  expiresIn?: string | null;
216
- refreshToken: string;
245
+ refreshToken?: string;
217
246
  user: AXPUser;
218
247
  tenant?: AXPTenant | null;
219
248
  application?: AXPApplication | null;
@@ -228,10 +257,10 @@ declare abstract class AXPAuthStrategy {
228
257
  [key: string]: any;
229
258
  }): Promise<AXPSignInResult | void>;
230
259
  }
260
+ /**
261
+ * Client-persisted session metadata. Tokens are never stored here — they live in HttpOnly cookies.
262
+ */
231
263
  interface AXPSessionData {
232
- accessToken: string;
233
- refreshToken: string;
234
- idToken: string | null;
235
264
  strategy: string;
236
265
  user?: AXPUser | null;
237
266
  tenant?: AXPTenant | null;
@@ -239,6 +268,8 @@ interface AXPSessionData {
239
268
  expiresIn?: string | null;
240
269
  /** When true, the client lock overlay stays active until PIN/password unlock or sign-out. */
241
270
  locked?: boolean;
271
+ /** True when the server issued HttpOnly auth cookies for this session. */
272
+ cookieSession?: boolean;
242
273
  }
243
274
 
244
275
  interface AXPFeature {
@@ -296,6 +327,15 @@ interface AXPFeatureChecker {
296
327
  */
297
328
  declare const AXP_FEATURE_CHECKER: InjectionToken<AXPFeatureChecker>;
298
329
 
330
+ /**
331
+ * Exposes `feature.check(...)` / `feature.checkAny(...)` for entity expressions
332
+ * (e.g. `schema.visible: '{{ feature.check("Module:Feature:X") }}'`).
333
+ */
334
+ declare class AXPFeatureEvaluatorScopeProvider implements AXPExpressionEvaluatorScopeProvider {
335
+ protected sessionService: AXPSessionService;
336
+ provide(context: AXPExpressionEvaluatorScopeProviderContext): Promise<void>;
337
+ }
338
+
299
339
  declare class AXPSessionService {
300
340
  private eventService;
301
341
  private authStrategyRegistry;
@@ -308,6 +348,9 @@ declare class AXPSessionService {
308
348
  private readonly permissionChecker;
309
349
  private readonly featureChecker;
310
350
  private readonly accessPolicyCache;
351
+ /** In-memory catalog caches — shared by guards and chooser UI (one List* per bind). */
352
+ private tenantsListCache;
353
+ private applicationsListCache;
311
354
  private status;
312
355
  readonly status$: Observable<AXPSessionStatus>;
313
356
  private isLoading;
@@ -318,11 +361,9 @@ declare class AXPSessionService {
318
361
  private currentTenantSubject;
319
362
  readonly tenant$: Observable<AXPTenant | null>;
320
363
  get tenant(): AXPTenant | null;
321
- get tenants$(): Observable<AXPTenant[]>;
322
364
  private currentApplicationSubject;
323
365
  readonly application$: Observable<AXPApplication | null>;
324
366
  get application(): AXPApplication | null;
325
- get applications$(): Observable<AXPApplication[]>;
326
367
  private permissionsSubject;
327
368
  readonly permissions$: Observable<never[] | string[]>;
328
369
  get permissions(): AXPPermission[];
@@ -330,21 +371,50 @@ declare class AXPSessionService {
330
371
  readonly features$: Observable<never[] | AXPFeature[]>;
331
372
  get features(): AXPFeature[];
332
373
  readonly isAuthenticated$: Observable<boolean>;
374
+ /** Synchronous counterpart to {@link isAuthenticated$}. */
375
+ get isAuthenticated(): boolean;
333
376
  readonly isAuthenticatedWithLoading$: Observable<boolean>;
334
377
  readonly isAuthorized$: Observable<boolean>;
378
+ /** Synchronous counterpart to {@link isAuthorized$}. */
379
+ get isAuthorized(): boolean;
380
+ /**
381
+ * Tenant and application are selected and permissions are loaded.
382
+ * Gate app-scoped runtime work (entity queries, inbox, activity).
383
+ */
384
+ get isReadyForAppScopedApi(): boolean;
385
+ readonly isReadyForAppScopedApi$: Observable<boolean>;
386
+ /** Tenant list for the signed-in user; skips the API when there is no cookie session. */
387
+ readonly tenants$: Observable<AXPTenant[]>;
388
+ /** Application list for the current tenant; skips the API when there is no cookie session. */
389
+ readonly applications$: Observable<AXPApplication[]>;
335
390
  /** Waits for session restore to finish, then emits whether the session is fully authorized. */
336
391
  readonly isAuthorizedWithLoading$: Observable<boolean>;
337
392
  restoreSession(): Promise<void>;
338
393
  signin(credentials: AXPBaseCredentials): Promise<void>;
339
394
  register(credentials: AXPBaseCredentials): Promise<void>;
340
395
  private applySignInResult;
396
+ /**
397
+ * Clears the selected application so the user must pick one (app chooser).
398
+ * Keeps tenant/user/token intact and demotes status to Authenticated.
399
+ */
400
+ clearApplicationSelection(): void;
341
401
  updateToken(params?: {
342
402
  [key: string]: any;
343
403
  }): Promise<void>;
344
404
  signout(): Promise<void>;
345
- refreshToken(): Promise<any>;
405
+ refreshToken(): Promise<boolean>;
406
+ /**
407
+ * Auth:GetAccessPolicy is only meaningful with tenant + application bound.
408
+ * Skipping incomplete contexts cuts 2 redundant calls on the common login path.
409
+ */
410
+ private reloadAccessPolicyIfReady;
346
411
  private loadPermissions;
347
412
  private loadFeatures;
413
+ /** Shared ListTenants — used by guards and {@link tenants$}. */
414
+ getTenantsList(): Promise<AXPTenant[]>;
415
+ /** Shared ListApplications — used by guards and {@link applications$}. */
416
+ getApplicationsList(): Promise<AXPApplication[]>;
417
+ private clearCatalogCaches;
348
418
  signInComplete(): Promise<void>;
349
419
  /** Tenant + application must be bound before menu, permissions, and features are fully valid. */
350
420
  private hasCompleteSessionContext;
@@ -353,12 +423,14 @@ declare class AXPSessionService {
353
423
  * Authorized only once tenant and application are selected and loaders have finished.
354
424
  */
355
425
  private syncSessionAuthorization;
356
- setSession(tokens: Partial<AXPSessionData>): void;
426
+ setSession(partial: Partial<AXPSessionData>): void;
357
427
  /** Whether the client lock overlay should remain active after reload. */
358
428
  isLocked(): boolean;
359
429
  /** Persists client lock state inside {@link AXPSessionService.SESSION_KEY}. */
360
430
  setLocked(locked: boolean): void;
361
431
  setStrategy(strategy: string): void;
432
+ /** Session strategy, or pending OAuth strategy left for the callback page. */
433
+ private resolveStrategyName;
362
434
  getSessionData(): AXPSessionData | null;
363
435
  private clearSession;
364
436
  /** Keeps in-memory subjects aligned with persisted session (e.g. after user switch). */
@@ -371,9 +443,19 @@ declare class AXPSessionService {
371
443
  * Module names can be provided in PascalCase (e.g., 'SecurityManagement') or kebab-case (e.g., 'security-management').
372
444
  */
373
445
  isModuleEnabled(moduleName: string): boolean;
446
+ /**
447
+ * Access tokens are HttpOnly and not readable from JS.
448
+ * Use {@link hasSessionCredentials} for auth gating.
449
+ */
374
450
  getToken(): string | undefined;
451
+ /** True when the SPA has an active cookie-backed session. */
452
+ hasSessionCredentials(): boolean;
375
453
  getContext(): AXPSessionContext;
376
454
  private invalidateAccessPolicyCache;
455
+ private isApplicationContextUpdate;
456
+ private isTenantContextUpdate;
457
+ private resolveApplicationAfterUpdate;
458
+ private isAuthenticatedStatus;
377
459
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPSessionService, never>;
378
460
  static ɵprov: i0.ɵɵInjectableDeclaration<AXPSessionService>;
379
461
  }
@@ -411,7 +493,6 @@ declare const AXPAuthGuard: CanActivateFn;
411
493
  interface AXPAuthModuleConfigs {
412
494
  strategies: (new () => AXPAuthStrategy)[];
413
495
  }
414
- declare function initializeAppState(service: AXPSessionService): () => Promise<void>;
415
496
  declare class AXPAuthModule {
416
497
  static forRoot(configs?: AXPAuthModuleConfigs): ModuleWithProviders<AXPAuthModule>;
417
498
  static forChild(configs?: AXPAuthModuleConfigs): ModuleWithProviders<AXPAuthModule>;
@@ -483,12 +564,12 @@ interface PlatformAuthTokenResponseDto {
483
564
  tenant?: {
484
565
  id: string;
485
566
  name?: string;
486
- title?: string;
567
+ title?: AXPMultiLanguageString;
487
568
  } | null;
488
569
  application?: {
489
570
  id: string;
490
571
  name?: string;
491
- title?: string;
572
+ title?: AXPMultiLanguageString;
492
573
  } | null;
493
574
  }
494
575
  declare function platformOAuthSessionUpdateParams(params: {
@@ -499,14 +580,121 @@ declare function platformOAuthSessionUpdateParams(params: {
499
580
  tenantId?: string;
500
581
  applicationId?: string;
501
582
  };
502
- declare function shouldPlatformOAuthBindSession(accessToken: string | undefined, params: {
583
+ declare function shouldPlatformOAuthBindSession(hasCredentials: boolean, params: {
503
584
  [key: string]: unknown;
504
585
  }): boolean;
505
- declare function postPlatformOAuthSessionUpdate(baseUrl: string, accessToken: string, params: {
506
- [key: string]: unknown;
507
- }): Promise<AXPSignInResult>;
508
586
  declare function toPlatformOAuthSignInResult(result: PlatformAuthTokenResponseDto, context?: Partial<AXPSessionContext>): AXPSignInResult;
509
587
 
588
+ interface AXPPlatformOAuthDiscoveryDocument {
589
+ issuer?: string;
590
+ authorization_endpoint?: string;
591
+ token_endpoint?: string;
592
+ jwks_uri?: string;
593
+ }
594
+ interface AXPPlatformOAuthClientConfig {
595
+ clientId: string;
596
+ redirectUri: string;
597
+ scope: string;
598
+ }
599
+ declare const AXP_DEFAULT_PLATFORM_OAUTH_CLIENT_ID = "acorex";
600
+ declare const AXP_DEFAULT_PLATFORM_OAUTH_SCOPE = "openid profile email offline_access";
601
+ declare function resolvePlatformOAuthIssuer(baseUrl?: string): string;
602
+ declare function resolvePlatformOAuthRedirectUri(): string;
603
+ declare function resolvePlatformOAuthClientConfig(authConfig?: {
604
+ clientId?: string;
605
+ client_id?: string;
606
+ redirectUri?: string;
607
+ scope?: string;
608
+ } | null): AXPPlatformOAuthClientConfig;
609
+ declare function fetchPlatformOAuthDiscoveryDocument(issuer: string): Promise<AXPPlatformOAuthDiscoveryDocument>;
610
+ declare function resolvePlatformOAuthAuthorizeEndpoint(issuer: string, discovery?: AXPPlatformOAuthDiscoveryDocument | null): string;
611
+ declare function resolvePlatformOAuthTokenEndpoint(issuer: string, discovery?: AXPPlatformOAuthDiscoveryDocument | null): string;
612
+
613
+ interface AXPAuthLocalSignInMethod {
614
+ id: string;
615
+ title: string;
616
+ protocol: 'password' | 'otp' | 'custom';
617
+ enabled: boolean;
618
+ }
619
+ /** Public IdP row — never includes secrets. `id` is used as OAuth `acr_values`. */
620
+ interface AXPAuthIdentityProvider {
621
+ id: string;
622
+ title: string;
623
+ icon?: string;
624
+ priority: number;
625
+ }
626
+ interface AXPAuthListProvidersResponse {
627
+ localMethods: AXPAuthLocalSignInMethod[];
628
+ identityProviders: AXPAuthIdentityProvider[];
629
+ }
630
+ declare function asAuthListProvidersResponse(payload: unknown): AXPAuthListProvidersResponse;
631
+ declare function findIdentityProvider(payload: unknown, id: string): AXPAuthIdentityProvider | undefined;
632
+
633
+ interface PlatformAuthUpdateSessionInput {
634
+ tenantId?: string;
635
+ applicationId?: string;
636
+ tenant?: AXPTenant;
637
+ application?: AXPApplication;
638
+ }
639
+ declare class AXPPlatformAuthRuntimeService {
640
+ private readonly commandService;
641
+ private readonly queryService;
642
+ private readonly sessionService;
643
+ private listProvidersCache;
644
+ private listProvidersInFlight;
645
+ logout(_refreshToken?: string | null): Promise<void>;
646
+ refresh(_refreshToken?: string): Promise<PlatformAuthTokenResponseDto>;
647
+ updateSession(input: PlatformAuthUpdateSessionInput): Promise<PlatformAuthTokenResponseDto>;
648
+ listProviders(): Promise<AXPAuthListProvidersResponse>;
649
+ clearListProvidersCache(): void;
650
+ private executeCommand;
651
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPPlatformAuthRuntimeService, never>;
652
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPPlatformAuthRuntimeService>;
653
+ }
654
+
655
+ /**
656
+ * Best-effort plain string for thrown {@link Error} messages from command results (no i18n lookup).
657
+ */
658
+ declare function commandMessageTextForError(value: AXPMultiLanguageString | undefined | null): string;
659
+
660
+ /**
661
+ * Persisted while an authorization-code redirect is in flight.
662
+ * `restoreSession` clears partial `AXP_SESSION` (no user / no cookies) — this key
663
+ * must survive so `/auth/oauth-callback` can resolve the strategy.
664
+ */
665
+ declare const AXP_OAUTH_PENDING_STRATEGY_KEY = "axp_oauth_pending_strategy";
666
+ /** Set by platform OAuth strategies before redirect (PKCE). */
667
+ declare const AXP_OAUTH_PKCE_VERIFIER_KEY = "pkce_code_verifier";
668
+ declare function setOAuthPendingStrategy(strategy: string): void;
669
+ declare function getOAuthPendingStrategy(): string | null;
670
+ declare function clearOAuthPendingStrategy(): void;
671
+ declare function isOAuthRedirectInFlight(): boolean;
672
+
673
+ /** Debug namespace for auth session diagnostics. Filter console with `[AXP:AUTH-SESSION]`. */
674
+ declare const AUTH_SESSION_TRACE_NS = "AUTH-SESSION";
675
+ declare const AUTH_SESSION_TRACE_TITLE: {
676
+ /** Sign-in / register / sign-out lifecycle. */
677
+ readonly Lifecycle: "Lifecycle";
678
+ /** Cookie session restore + refresh. */
679
+ readonly Restore: "Restore";
680
+ /** Tenant / application bind via UpdateSession. */
681
+ readonly Workspace: "Workspace";
682
+ /** Auth:GetAccessPolicy load (permissions + features). */
683
+ readonly AccessPolicy: "AccessPolicy";
684
+ /** ListTenants / ListApplications. */
685
+ readonly Catalog: "Catalog";
686
+ /** Route guards (login, tenant-chooser, app-chooser). */
687
+ readonly Guard: "Guard";
688
+ };
689
+
690
+ declare function traceAuthLifecycle(message: string, data?: () => Record<string, unknown>): void;
691
+ declare function traceAuthLifecycleError(message: string, data?: () => Record<string, unknown>): void;
692
+ declare function traceAuthRestore(message: string, data?: () => Record<string, unknown>): void;
693
+ declare function traceAuthWorkspace(message: string, data?: () => Record<string, unknown>): void;
694
+ declare function traceAuthAccessPolicy(message: string, data?: () => Record<string, unknown>): void;
695
+ declare function traceAuthCatalog(message: string, data?: () => Record<string, unknown>): void;
696
+ declare function traceAuthGuard(message: string, data?: () => Record<string, unknown>): void;
697
+
510
698
  /**
511
699
  * Narrow API for refreshing cached user avatar display data.
512
700
  * Implemented via auth-gateway; keeps auth free of layout/components imports (avoids circular deps).
@@ -757,5 +945,56 @@ declare abstract class AXPLoginChallengeProvider {
757
945
  */
758
946
  declare const AXP_LOGIN_CHALLENGE_PROVIDER: InjectionToken<AXPLoginChallengeProvider>;
759
947
 
760
- export { AXPAuthGuard, AXPAuthModule, AXPAuthStrategy, AXPAuthStrategyRegistryService, AXPFeatureDirective, AXPFeatureGuard, AXPLoginChallengeComponentBase, AXPLoginChallengeProvider, AXPPermissionDefinitionBuilder, AXPPermissionDefinitionGroupBuilder, AXPPermissionDefinitionProviderContext, AXPPermissionDefinitionService, AXPPermissionDefinitionsDataSourceDefinition, AXPPermissionDirective, AXPPermissionEvaluatorScopeProvider, AXPPermissionGuard, AXPPlatformAuthDataSourceKeys, AXPSessionContext, AXPSessionService, AXPSessionStatus, AXPUnauthenticatedError, AXPUnauthorizedError, AXPUserProfileIdentityService, AXP_ACCESS_POLICY_CACHE_PORT, AXP_APPLICATION_LOADER, AXP_FEATURE_CHECKER, AXP_FEATURE_LOADER, AXP_LOGIN_CHALLENGE_PROVIDER, AXP_PERMISSION_CHECKER, AXP_PERMISSION_DEFINITION_PROVIDER, AXP_PERMISSION_LOADER, AXP_TENANT_LOADER, AXP_USER_AVATAR_CACHE_PORT, JwtUtil, PkceUtil, TimeUtil, initializeAppState, platformOAuthSessionUpdateParams, postPlatformOAuthSessionUpdate, shouldPlatformOAuthBindSession, toPlatformOAuthSignInResult };
761
- export type { AXPAccessPolicyCachePort, AXPApplication, AXPApplicationLoader, AXPAuthModuleConfigs, AXPBaseCredentials, AXPChallengeCheckResult, AXPChallengeContentType, AXPEdition, AXPFeature, AXPFeatureChecker, AXPFeatureLoader, AXPLoginChallengeData, AXPPermission, AXPPermissionChecker, AXPPermissionDefinition, AXPPermissionDefinitionProvider, AXPPermissionGroupDefinition, AXPPermissionLoader, AXPSessionData, AXPSignInResult, AXPTenant, AXPTenantLoader, AXPTokenResult, AXPUser, AXPUserAvatarCachePort, PlatformAuthTokenResponseDto };
948
+ /** Protocol family for a sign-in method. */
949
+ type AXPSignInMethodProtocol = 'password' | 'otp' | 'oidc' | 'saml' | 'ldap' | 'custom';
950
+ /** One interactive step in a multi-factor / challenge flow. */
951
+ type AXPSignInMethodStepKind = 'credentials' | 'otp' | 'captcha' | 'external-redirect' | 'complete';
952
+ interface AXPSignInMethodDescriptor {
953
+ /** Stable id, e.g. `password`, `oidc:google`, `saml:okta-hr`. */
954
+ readonly id: string;
955
+ readonly title: string;
956
+ readonly protocol: AXPSignInMethodProtocol;
957
+ readonly enabled: boolean;
958
+ /** Lower = higher on the login page. */
959
+ readonly priority?: number;
960
+ readonly icon?: string;
961
+ }
962
+ interface AXPSignInMethodStep {
963
+ readonly kind: AXPSignInMethodStepKind;
964
+ readonly challengeId?: string;
965
+ readonly message?: string;
966
+ readonly redirectUrl?: string;
967
+ }
968
+ interface AXPSignInMethodStartResult {
969
+ readonly status: 'completed' | 'continue' | 'redirect';
970
+ readonly step?: AXPSignInMethodStep;
971
+ /** When status is completed, session cookies are already set by the server. */
972
+ readonly userId?: string;
973
+ }
974
+ /**
975
+ * Pluggable sign-in method. Multiple methods can be registered and offered at once.
976
+ * Session remember/refresh live in {@link AXPSessionService}; methods only prove identity.
977
+ */
978
+ declare abstract class AXPSignInMethod {
979
+ abstract get descriptor(): AXPSignInMethodDescriptor;
980
+ /** Begin or continue the method flow. */
981
+ abstract start(input: Record<string, unknown>): Promise<AXPSignInMethodStartResult>;
982
+ /** Submit a challenge / OTP / captcha step. */
983
+ abstract continue(step: AXPSignInMethodStep, input: Record<string, unknown>): Promise<AXPSignInMethodStartResult>;
984
+ }
985
+
986
+ /**
987
+ * Registry of enabled sign-in methods for the login UI.
988
+ * Methods are independent of session refresh/remember (owned by session service).
989
+ */
990
+ declare class AXPSignInMethodRegistry {
991
+ private readonly methods;
992
+ register(...methods: AXPSignInMethod[]): void;
993
+ get(id: string): AXPSignInMethod | undefined;
994
+ listEnabled(): AXPSignInMethodDescriptor[];
995
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXPSignInMethodRegistry, never>;
996
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXPSignInMethodRegistry>;
997
+ }
998
+
999
+ export { AUTH_SESSION_TRACE_NS, AUTH_SESSION_TRACE_TITLE, AXPAuthGuard, AXPAuthModule, AXPAuthStrategy, AXPAuthStrategyRegistryService, AXPFeatureDirective, AXPFeatureEvaluatorScopeProvider, AXPFeatureGuard, AXPLoginChallengeComponentBase, AXPLoginChallengeProvider, AXPPermissionDefinitionBuilder, AXPPermissionDefinitionGroupBuilder, AXPPermissionDefinitionProviderContext, AXPPermissionDefinitionService, AXPPermissionDirective, AXPPermissionEvaluatorScopeProvider, AXPPermissionGuard, AXPPlatformAuthRuntimeService, AXPSessionContext, AXPSessionService, AXPSessionStatus, AXPSignInMethod, AXPSignInMethodRegistry, AXPUnauthenticatedError, AXPUnauthorizedError, AXPUserProfileIdentityService, AXP_ACCESS_POLICY_CACHE_PORT, AXP_APPLICATION_LOADER, AXP_DEFAULT_PLATFORM_OAUTH_CLIENT_ID, AXP_DEFAULT_PLATFORM_OAUTH_SCOPE, AXP_FEATURE_CHECKER, AXP_FEATURE_LOADER, AXP_LOGIN_CHALLENGE_PROVIDER, AXP_OAUTH_PENDING_STRATEGY_KEY, AXP_OAUTH_PKCE_VERIFIER_KEY, AXP_PERMISSION_CHECKER, AXP_PERMISSION_DEFINITION_PROVIDER, AXP_PERMISSION_LOADER, AXP_PERMISSION_MODULES_RESOLVER, AXP_TENANT_LOADER, AXP_USER_AVATAR_CACHE_PORT, JwtUtil, PkceUtil, TimeUtil, asAuthListProvidersResponse, clearOAuthPendingStrategy, commandMessageTextForError, fetchPlatformOAuthDiscoveryDocument, findIdentityProvider, getOAuthPendingStrategy, isOAuthRedirectInFlight, platformOAuthSessionUpdateParams, resolvePlatformOAuthAuthorizeEndpoint, resolvePlatformOAuthClientConfig, resolvePlatformOAuthIssuer, resolvePlatformOAuthRedirectUri, resolvePlatformOAuthTokenEndpoint, setOAuthPendingStrategy, shouldPlatformOAuthBindSession, toPlatformOAuthSignInResult, traceAuthAccessPolicy, traceAuthCatalog, traceAuthGuard, traceAuthLifecycle, traceAuthLifecycleError, traceAuthRestore, traceAuthWorkspace };
1000
+ export type { AXPAccessPolicyCachePort, AXPApplication, AXPApplicationLoader, AXPAuthIdentityProvider, AXPAuthListProvidersResponse, AXPAuthLocalSignInMethod, AXPAuthModuleConfigs, AXPBaseCredentials, AXPChallengeCheckResult, AXPChallengeContentType, AXPEdition, AXPFeature, AXPFeatureChecker, AXPFeatureLoader, AXPLoginChallengeData, AXPPermission, AXPPermissionAddOptions, AXPPermissionChecker, AXPPermissionDefinition, AXPPermissionDefinitionProvider, AXPPermissionGroupAddOptions, AXPPermissionGroupDefinition, AXPPermissionLoader, AXPPermissionModulesResolver, AXPPlatformOAuthClientConfig, AXPPlatformOAuthDiscoveryDocument, AXPSessionData, AXPSignInMethodDescriptor, AXPSignInMethodProtocol, AXPSignInMethodStartResult, AXPSignInMethodStep, AXPSignInMethodStepKind, AXPSignInResult, AXPTenant, AXPTenantLoader, AXPTokenResult, AXPUser, AXPUserAvatarCachePort, PlatformAuthTokenResponseDto, PlatformAuthUpdateSessionInput };