@pristy/pristy-libvue 1.19.2 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/pristy-libvue.es.js +3999 -3675
  2. package/dist/pristy-libvue.es.js.map +1 -1
  3. package/dist/pristy-libvue.umd.js +11 -11
  4. package/dist/pristy-libvue.umd.js.map +1 -1
  5. package/dist/src/AlfrescoApi.d.ts.map +1 -1
  6. package/dist/src/components/auth/OidcCallback.vue.d.ts +4 -0
  7. package/dist/src/components/auth/OidcCallback.vue.d.ts.map +1 -0
  8. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts +14 -10
  9. package/dist/src/components/search/AdvancedSearchPanel.vue.d.ts.map +1 -1
  10. package/dist/src/components/search/AdvancedViewPanel.vue.d.ts +14 -10
  11. package/dist/src/components/search/AdvancedViewPanel.vue.d.ts.map +1 -1
  12. package/dist/src/components/search/ExactSearch.vue.d.ts.map +1 -1
  13. package/dist/src/components/search/SaveViewPopup.vue.d.ts +7 -5
  14. package/dist/src/components/search/SaveViewPopup.vue.d.ts.map +1 -1
  15. package/dist/src/httpClientPatch.d.ts +29 -0
  16. package/dist/src/httpClientPatch.d.ts.map +1 -0
  17. package/dist/src/i18n/index.d.ts +10 -0
  18. package/dist/src/i18n/index.d.ts.map +1 -1
  19. package/dist/src/index.d.ts +1 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/plugins/KeycloakPlugin.d.ts +1 -1
  22. package/dist/src/plugins/KeycloakPlugin.d.ts.map +1 -1
  23. package/dist/src/services/LibVueActionService.d.ts.map +1 -1
  24. package/dist/src/services/auth/KeycloakAuthProvider.d.ts +44 -0
  25. package/dist/src/services/auth/KeycloakAuthProvider.d.ts.map +1 -0
  26. package/dist/src/services/auth/OidcAuthProvider.d.ts +38 -0
  27. package/dist/src/services/auth/OidcAuthProvider.d.ts.map +1 -0
  28. package/dist/src/services/auth/__tests__/FakeAuthProvider.d.ts +32 -0
  29. package/dist/src/services/auth/__tests__/FakeAuthProvider.d.ts.map +1 -0
  30. package/dist/src/services/auth/authProvider.d.ts +57 -0
  31. package/dist/src/services/auth/authProvider.d.ts.map +1 -0
  32. package/dist/src/services/auth/buildOidcSettings.d.ts +29 -0
  33. package/dist/src/services/auth/buildOidcSettings.d.ts.map +1 -0
  34. package/dist/src/stores/config.d.ts +21 -0
  35. package/dist/src/stores/config.d.ts.map +1 -1
  36. package/dist/src/stores/user.d.ts +49 -22
  37. package/dist/src/stores/user.d.ts.map +1 -1
  38. package/package.json +9 -7
@@ -11,17 +11,18 @@ import { StoreDefinition, PiniaCustomStateProperties } from 'pinia';
11
11
  * - `isAdmin` {boolean} - Indicates whether the current user is an administrator.
12
12
  * - `isLoggedIn` {boolean} - Tracks whether the user is currently logged in.
13
13
  * - `person` {object|null} - Stores the person details of the logged-in user.
14
- * - `keycloak` {object|null} - Represents Keycloak authentication configuration.
15
14
  * - `homeFolder` {string|null} - Stores the user's home folder path.
16
15
  *
17
16
  * Getters:
18
17
  * - `displayName` {string} - Returns the display name of the logged-in user, or an empty string if no user is logged in.
19
18
  *
20
19
  * Actions:
21
- * - `logout` - Logs out the current user and stops the auto-renew for the OIDC connection.
22
- * - `validateSession` - Checks if the client is logged in and retrieves the Alfresco ticket using the Keycloak Bearer Token.
23
- * - `connectKeycloak` - Handles the redirection and connection to Keycloak for unauthenticated users.
24
- * - `keycloakReady` - Stores the Keycloak object and retrieves the Alfresco ticket using the Keycloak Bearer Token.
20
+ * - `logout` - Logs out the current user and delegates to the auth provider.
21
+ * - `validateSession` - Checks if the client is logged in and retrieves the Alfresco ticket using the OIDC Bearer Token.
22
+ * - `connectKeycloak` - Redirects to the IdP for unauthenticated users, otherwise loads the current Person.
23
+ * - `keycloakReady` - Subscribes to the auth provider and retrieves the Alfresco ticket using the OIDC Bearer Token.
24
+ * - `completeLogin` - Consumes the IdP redirect and opens the Alfresco session.
25
+ * - `accountConsoleUrl` - Returns the IdP account console URL for a given section, when available.
25
26
  * - `getAlfTicket` - Logs into Alfresco with the Bearer token and retrieves the Alfresco ticket.
26
27
  * - `getPerson` - Retrieves the person details for the currently authenticated user.
27
28
  * - `login` - Attempts to log in a user with a username and password.
@@ -34,7 +35,6 @@ export const useUserStore: StoreDefinition<"UserStore", {
34
35
  isAdmin: boolean;
35
36
  isLoggedIn: boolean;
36
37
  person: any;
37
- keycloak: any;
38
38
  homeFolder: any;
39
39
  isPristyAdmin: any;
40
40
  }, {
@@ -43,7 +43,6 @@ export const useUserStore: StoreDefinition<"UserStore", {
43
43
  isAdmin: boolean;
44
44
  isLoggedIn: boolean;
45
45
  person: any;
46
- keycloak: any;
47
46
  homeFolder: any;
48
47
  isPristyAdmin: any;
49
48
  } & PiniaCustomStateProperties<{
@@ -51,7 +50,6 @@ export const useUserStore: StoreDefinition<"UserStore", {
51
50
  isAdmin: boolean;
52
51
  isLoggedIn: boolean;
53
52
  person: any;
54
- keycloak: any;
55
53
  homeFolder: any;
56
54
  isPristyAdmin: any;
57
55
  }>): any;
@@ -62,32 +60,61 @@ export const useUserStore: StoreDefinition<"UserStore", {
62
60
  */
63
61
  logout(): Promise<axios.AxiosResponse<any>>;
64
62
  /**
65
- * Check if the client is logged and get alf_ticket using Keycloak Bearer Token
66
- * @return {Promise<{id:string}>} Current alf_token
63
+ * Check whether the client is logged in and, when authentication is
64
+ * delegated to an OIDC provider via the AuthProvider façade, refresh the
65
+ * Alfresco ticket using its Bearer token.
66
+ * @return {Promise<{id:string}|undefined>} Current alf_token, or
67
+ * undefined when the session cannot be validated
67
68
  */
68
69
  validateSession(): Promise<{
69
70
  id: string;
70
- }>;
71
+ } | undefined>;
71
72
  /**
72
- * Redirect to Keycloak if unauthent, else retrieve current Person
73
- * form Alfresco.
73
+ * Ensure the user is authenticated. Redirects to the IdP when they are not,
74
+ * otherwise loads their Person from Alfresco.
75
+ * @param {string} [returnTo] in-app path to return to after login
74
76
  * @return {Promise<void>}
75
77
  */
76
- connectKeycloak: () => Promise<void>;
78
+ connectKeycloak: (returnTo?: string) => Promise<void>;
79
+ /**
80
+ * Consume the IdP redirect and open the Alfresco session.
81
+ * @return {Promise<string>} the in-app path to navigate to
82
+ */
83
+ completeLogin: () => Promise<string>;
77
84
  /**
78
- * Store Keycloak object and get alf_ticket using Keycloak Bearer Token.
79
- * We will ask alf_ticket every ALF_TOKEN_TTL_MS (60s)
80
- * @param {any} _keycloak Keycloak object yet authenticate
81
- * @return {Promise<{id: string}>}
85
+ * @param {string} section "profile" or "password"
86
+ * @return {string|null} the IdP account console URL, when one is available
82
87
  */
83
- keycloakReady(_keycloak: any): Promise<{
88
+ accountConsoleUrl(section: string): string | null;
89
+ /**
90
+ * Subscribe to the provider and open the Alfresco session. The Alfresco
91
+ * ticket is refreshed when the OIDC token is renewed, replacing the former
92
+ * unconditional 60 s poll.
93
+ *
94
+ * Does nothing beyond registering the two subscriptions when the provider
95
+ * has no session yet: `OidcAuthProvider.init()` resolves happily for an
96
+ * anonymous browser (unlike keycloak-js's `onLoad: "login-required"`), so
97
+ * requesting a ticket here would send `Authorization: Bearer null` and
98
+ * surface a misleading initialization error. A later login still
99
+ * refreshes the ticket via the `onTokenRenewed` subscription.
100
+ * @param {Object} provider the auth provider, already initialised
101
+ * @return {Promise<{id: string}|undefined>}
102
+ */
103
+ keycloakReady(provider: any): Promise<{
84
104
  id: string;
85
- }>;
105
+ } | undefined>;
86
106
  /**
87
- * Log to Alfresco with Bearer token and set alf_token
107
+ * Log to Alfresco with Bearer token and set alf_token.
108
+ *
109
+ * Retries exactly once on an HTTP 401, per the design spec ("single retry
110
+ * on 401 on `/tickets/-me-`"): this replaces the 60 s poller the migration
111
+ * deleted, since under an OIDC IdP (e.g. Entra) the token and the
112
+ * Alfresco ticket can have comparable lifetimes, so an idle tab may lose
113
+ * its ticket with nothing else scheduled to refresh it.
114
+ * @param {boolean} [isRetry] internal guard, never pass this explicitly
88
115
  * @return {Promise<{id:string} | undefined>} Current alf_token or undefined if not using OIDC
89
116
  */
90
- getAlfTicket(): Promise<{
117
+ getAlfTicket(isRetry?: boolean): Promise<{
91
118
  id: string;
92
119
  } | undefined>;
93
120
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/stores/user.js"],"names":[],"mappings":";AAsCA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBI;;;OAGG;cADS,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAqC7C;;;OAGG;uBADS,OAAO,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,CAAC;IA0BhC;;;;OAIG;2BADS,OAAO,CAAC,IAAI,CAAC;IA0BzB;;;;;OAKG;6BAFQ,GAAG,GACF,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,CAAC;IASjC;;;OAGG;oBADS,OAAO,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,GAAG,SAAS,CAAC;IAwC5C;;;OAGG;iBADS,OAAO,CAAC,MAAM,CAAC;IAyC3B;;;OAGG;;IAoBH;;;;;OAKG;gBAHQ,MAAM,YACN,MAAM,GACL,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IASnC;;;;;OAKG;gBAHQ,MAAM,KACN,MAAM,GACL,OAAO,CAAC,GAAG,CAAC;IAcxB;;;OAGG;oBADS,OAAO,CAAC,IAAI,CAAC;IAUzB;;;;OAIG;2BAFQ,MAAM,GACL,OAAO,CAAC,MAAM,CAAC;GAwB5B"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/stores/user.js"],"names":[],"mappings":";AAiDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;;;;;;;;;;;;;;;;;;;;;;;;IAgBI;;;OAGG;cADS,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IA+B7C;;;;;;OAMG;uBAFS,OAAO,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,GAAC,SAAS,CAAC;IAsB1C;;;;;OAKG;iCAFQ,MAAM,KACL,OAAO,CAAC,IAAI,CAAC;IAmBzB;;;OAGG;yBADS,OAAO,CAAC,MAAM,CAAC;IAU3B;;;OAGG;+BAFQ,MAAM,GACL,MAAM,GAAC,IAAI;IAMvB;;;;;;;;;;;;;OAaG;kCADS,OAAO,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,GAAC,SAAS,CAAC;IAkB3C;;;;;;;;;;OAUG;2BAFQ,OAAO,GACN,OAAO,CAAC;QAAC,EAAE,EAAC,MAAM,CAAA;KAAC,GAAG,SAAS,CAAC;IAqC5C;;;OAGG;iBADS,OAAO,CAAC,MAAM,CAAC;IAyC3B;;;OAGG;;IAoBH;;;;;OAKG;gBAHQ,MAAM,YACN,MAAM,GACL,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IASnC;;;;;OAKG;gBAHQ,MAAM,KACN,MAAM,GACL,OAAO,CAAC,GAAG,CAAC;IAcxB;;;OAGG;oBADS,OAAO,CAAC,IAAI,CAAC;IAUzB;;;;OAIG;2BAFQ,MAAM,GACL,OAAO,CAAC,MAAM,CAAC;GAwB5B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pristy/pristy-libvue",
3
- "version": "1.19.2",
3
+ "version": "1.20.0",
4
4
  "description": "Core library used by all Pristy applications",
5
5
  "homepage": "https://pristy.fr/en/",
6
6
  "author": "JECI SARL",
@@ -64,7 +64,7 @@
64
64
  "@codemirror/state": "6.5.2"
65
65
  },
66
66
  "overrides": {
67
- "minimatch@>=10.0.0 <10.2.3": "10.2.4"
67
+ "minimatch": "^10.2.6"
68
68
  },
69
69
  "dependencies": {
70
70
  "@alfresco/js-api": "^9.5.0",
@@ -79,6 +79,7 @@
79
79
  "keycloak-js": "^26.2.4",
80
80
  "marked": "^16.4.2",
81
81
  "marked-highlight": "^2.2.4",
82
+ "oidc-client-ts": "^3.5.0",
82
83
  "p-limit": "^6.2.0",
83
84
  "pdf-lib": "^1.17.1",
84
85
  "pinia": "^2.3.1",
@@ -90,23 +91,24 @@
90
91
  },
91
92
  "devDependencies": {
92
93
  "@codemirror/collab": "^6.1.1",
93
- "@eslint/js": "^9.37.0",
94
+ "@eslint/js": "^10.0.1",
94
95
  "@vitejs/plugin-legacy": "^7.2.1",
95
96
  "@vitejs/plugin-vue": "^6.0.7",
96
97
  "@vitest/coverage-v8": "^3.2.6",
97
- "eslint": "^9.39.4",
98
+ "@vue/test-utils": "^2.4.11",
99
+ "eslint": "^10.8.0",
98
100
  "eslint-config-prettier": "^10.1.8",
99
- "eslint-plugin-import": "^2.32.0",
100
101
  "eslint-plugin-n": "^17.24.0",
101
102
  "eslint-plugin-prettier": "^5.5.6",
102
103
  "eslint-plugin-promise": "^7.3.0",
103
- "eslint-plugin-vue": "^9.33.0",
104
+ "eslint-plugin-vue": "^10.10.0",
105
+ "globals": "^17.8.0",
104
106
  "jsdom": "^27.4.0",
105
107
  "prettier": "^3.8.4",
106
108
  "rollup-plugin-visualizer": "^6.0.11",
107
109
  "sass": "^1.101.0",
108
110
  "svgo": "^4.0.1",
109
- "vite": "^7.3.5",
111
+ "vite": "^7.3.6",
110
112
  "vite-plugin-dts": "^4.5.4",
111
113
  "vitest": "^3.2.4"
112
114
  },