@ogcio/sag-client 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/auth.d.ts +7 -1
  2. package/dist/auth.d.ts.map +1 -1
  3. package/dist/auth.js +17 -2
  4. package/dist/auth.js.map +1 -1
  5. package/dist/client.d.ts +1 -1
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +2 -2
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/onboarding.d.ts +6 -1
  14. package/dist/onboarding.d.ts.map +1 -1
  15. package/dist/onboarding.js +12 -0
  16. package/dist/onboarding.js.map +1 -1
  17. package/dist/presets.d.ts +82 -0
  18. package/dist/presets.d.ts.map +1 -0
  19. package/dist/presets.js +87 -0
  20. package/dist/presets.js.map +1 -0
  21. package/dist/react/index.d.ts +1 -0
  22. package/dist/react/index.d.ts.map +1 -1
  23. package/dist/react/index.js +2 -0
  24. package/dist/react/index.js.map +1 -1
  25. package/dist/react/use-gateway-fetch.d.ts +1 -0
  26. package/dist/react/use-gateway-fetch.d.ts.map +1 -1
  27. package/dist/react/use-gateway-fetch.js +2 -1
  28. package/dist/react/use-gateway-fetch.js.map +1 -1
  29. package/dist/react/use-onboarding-guard.d.ts +7 -6
  30. package/dist/react/use-onboarding-guard.d.ts.map +1 -1
  31. package/dist/react/use-onboarding-guard.js +22 -7
  32. package/dist/react/use-onboarding-guard.js.map +1 -1
  33. package/dist/react/use-public-servant-guard.d.ts.map +1 -1
  34. package/dist/react/use-public-servant-guard.js +4 -0
  35. package/dist/react/use-public-servant-guard.js.map +1 -1
  36. package/dist/types.d.ts +27 -0
  37. package/dist/types.d.ts.map +1 -1
  38. package/dist/types.js.map +1 -1
  39. package/package.json +11 -11
package/dist/auth.d.ts CHANGED
@@ -8,8 +8,14 @@
8
8
  import type { AuthStatus, OrganizationInfo, SignInOptions } from "./types";
9
9
  /**
10
10
  * Check if the user is authenticated against the gateway.
11
+ *
12
+ * When `appName` is provided the request includes `?app=<appName>` so the
13
+ * gateway can verify the session actually belongs to this application.
14
+ * Without it, the gateway returns "authenticated" for *any* valid session,
15
+ * which causes cross-app flicker (e.g. a messaging session satisfying the
16
+ * profile app's auth check while the proxy correctly rejects it).
11
17
  */
12
- export declare function checkAuth(gatewayUrl: string): Promise<AuthStatus>;
18
+ export declare function checkAuth(gatewayUrl: string, appName?: string): Promise<AuthStatus>;
13
19
  /**
14
20
  * Check if the authentication service (Logto) is reachable.
15
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE1E;;GAEG;AACH,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAUvE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUjC;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAiBD;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,GACtB,IAAI,CAKN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7D"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE1E;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC,CAarB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAUjC;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAW7B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAiBD;;;;;;GAMG;AACH,wBAAgB,MAAM,CACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,aAAa,GACtB,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7D"}
package/dist/auth.js CHANGED
@@ -7,10 +7,19 @@
7
7
  */
8
8
  /**
9
9
  * Check if the user is authenticated against the gateway.
10
+ *
11
+ * When `appName` is provided the request includes `?app=<appName>` so the
12
+ * gateway can verify the session actually belongs to this application.
13
+ * Without it, the gateway returns "authenticated" for *any* valid session,
14
+ * which causes cross-app flicker (e.g. a messaging session satisfying the
15
+ * profile app's auth check while the proxy correctly rejects it).
10
16
  */
11
- export async function checkAuth(gatewayUrl) {
17
+ export async function checkAuth(gatewayUrl, appName) {
12
18
  try {
13
- const res = await fetch(`${gatewayUrl}/auth/status`, {
19
+ const url = appName
20
+ ? `${gatewayUrl}/auth/status?app=${encodeURIComponent(appName)}`
21
+ : `${gatewayUrl}/auth/status`;
22
+ const res = await fetch(url, {
14
23
  credentials: "include",
15
24
  });
16
25
  return (await res.json());
@@ -141,6 +150,12 @@ export function signIn(gatewayUrl, app, options) {
141
150
  const params = new URLSearchParams({ app });
142
151
  if (options === null || options === void 0 ? void 0 : options.connector)
143
152
  params.set("connector", options.connector);
153
+ if (options === null || options === void 0 ? void 0 : options.firstScreen)
154
+ params.set("firstScreen", options.firstScreen);
155
+ if (options === null || options === void 0 ? void 0 : options.identifiers)
156
+ params.set("identifiers", options.identifiers);
157
+ if (options === null || options === void 0 ? void 0 : options.loginHint)
158
+ params.set("loginHint", options.loginHint);
144
159
  if (options === null || options === void 0 ? void 0 : options.redirectUrl)
145
160
  params.set("redirectUrl", options.redirectUrl);
146
161
  postNavigate(`${gatewayUrl}/auth/sign-in?${params.toString()}`);
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -16,7 +16,7 @@ export declare class SagClient {
16
16
  readonly appName: string;
17
17
  private readonly onSessionExpired?;
18
18
  constructor(config: SagClientConfig);
19
- /** Check if the user is authenticated. */
19
+ /** Check if the user is authenticated for this application. */
20
20
  checkAuth(): Promise<AuthStatus>;
21
21
  /** Check if the authentication service (Logto) is reachable. */
22
22
  checkHealth(): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,qBAAa,SAAS;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAY;gBAElC,MAAM,EAAE,eAAe;IAQnC,0CAA0C;IAC1C,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAIhC,gEAAgE;IAChE,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9C;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrC,0DAA0D;IAC1D,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIjD,sDAAsD;IACtD,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,yDAAyD;IACzD,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7C;;;;;OAKG;IACG,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAMvB;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAWxC;;;;;;;OAOG;IACG,MAAM,CAAC,CAAC,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAMvB;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CACD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CAQ1B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAcH,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACd,MAAM,SAAS,CAAA;AAEhB,qBAAa,SAAS;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAY;gBAElC,MAAM,EAAE,eAAe;IAQnC,+DAA+D;IAC/D,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAIhC,gEAAgE;IAChE,WAAW,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAI9C;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;IAIrC,0DAA0D;IAC1D,OAAO,IAAI,IAAI;IAIf;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;OAGG;IACH,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIjD,sDAAsD;IACtD,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,yDAAyD;IACzD,uBAAuB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIjD,+CAA+C;IAC/C,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7C;;;;;OAKG;IACG,KAAK,CAAC,CAAC,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAMvB;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAWxC;;;;;;;OAOG;IACG,MAAM,CAAC,CAAC,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IAMvB;;;;;;;OAOG;IACH,aAAa,CAAC,CAAC,EACb,OAAO,CAAC,EAAE,mBAAmB,GAC5B,CACD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,cAAc,EACtB,IAAI,CAAC,EAAE,OAAO,KACX,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;CAQ1B"}
package/dist/client.js CHANGED
@@ -19,9 +19,9 @@ export class SagClient {
19
19
  this.onSessionExpired = config.onSessionExpired;
20
20
  }
21
21
  // ── Auth ─────────────────────────────────────────────────
22
- /** Check if the user is authenticated. */
22
+ /** Check if the user is authenticated for this application. */
23
23
  checkAuth() {
24
- return checkAuthFn(this.gatewayUrl);
24
+ return checkAuthFn(this.gatewayUrl, this.appName);
25
25
  }
26
26
  /** Check if the authentication service (Logto) is reachable. */
27
27
  checkHealth() {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ export { SagClient } from "./client";
3
3
  export { createGatewayFetcher, createGatewayMutator } from "./fetcher";
4
4
  export type { OnboardingRedirectParams, WrongLoginMethodParams, } from "./onboarding";
5
5
  export { buildOnboardingRedirectUrl, buildWrongLoginMethodRedirect, CLEAR_SESSION_PATH, ONBOARDING_PATH, ONBOARDING_SOURCE_PARAM, WRONG_LOGIN_METHOD_PATH, WRONG_LOGIN_RETURN_URL_PARAM, } from "./onboarding";
6
+ export { withEntraID, withMyGovId, withOtp } from "./presets";
6
7
  export { ALLOWED_SIGNIN_METHODS, CONNECTOR_ENTRAID, CONNECTOR_MYGOVID, DEFAULT_PUBLIC_SERVANT_ROLES, INACTIVE_PS_ORG_ROLE, isCitizen, isCitizenOnboarded, isInactivePublicServant, isPublicServant, ORG_ROLE_ADMIN, ORG_ROLE_MEMBER, ROLE_NAME_ONBOARDED_CITIZEN, } from "./roles";
7
8
  export type { ActorType, AuthClaims, AuthStatus, AuthUser, GatewayFetchOptions, GatewayMutationOptions, MutationMethod, OrganizationInfo, SagClientConfig, SignInOptions, UseAuthResult, } from "./types";
8
9
  export { ACTOR_TYPE_HEADER, ORGANIZATION_ID_HEADER, SagFetchError, } from "./types";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,OAAO,GACR,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACtE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,2BAA2B,GAC5B,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,OAAO,GACR,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AACtE,YAAY,EACV,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAG7D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,2BAA2B,GAC5B,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,aAAa,GACd,MAAM,SAAS,CAAA;AAChB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ export { SagClient } from "./client";
6
6
  export { createGatewayFetcher, createGatewayMutator } from "./fetcher";
7
7
  // ── Onboarding helpers ──────────────────────────────────────
8
8
  export { buildOnboardingRedirectUrl, buildWrongLoginMethodRedirect, CLEAR_SESSION_PATH, ONBOARDING_PATH, ONBOARDING_SOURCE_PARAM, WRONG_LOGIN_METHOD_PATH, WRONG_LOGIN_RETURN_URL_PARAM, } from "./onboarding";
9
+ // ── Sign-in presets ─────────────────────────────────────────
10
+ export { withEntraID, withMyGovId, withOtp } from "./presets";
9
11
  // ── Role detection utilities ────────────────────────────────
10
12
  export { ALLOWED_SIGNIN_METHODS, CONNECTOR_ENTRAID, CONNECTOR_MYGOVID, DEFAULT_PUBLIC_SERVANT_ROLES, INACTIVE_PS_ORG_ROLE, isCitizen, isCitizenOnboarded, isInactivePublicServant, isPublicServant, ORG_ROLE_ADMIN, ORG_ROLE_MEMBER, ROLE_NAME_ONBOARDED_CITIZEN, } from "./roles";
11
13
  export { ACTOR_TYPE_HEADER, ORGANIZATION_ID_HEADER, SagFetchError, } from "./types";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,gEAAgE;AAChE,OAAO,EACL,SAAS,EACT,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,OAAO,GACR,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMtE,+DAA+D;AAC/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,cAAc,CAAA;AACrB,+DAA+D;AAC/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,2BAA2B,GAC5B,MAAM,SAAS,CAAA;AAgBhB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,gEAAgE;AAChE,OAAO,EACL,SAAS,EACT,WAAW,EACX,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,OAAO,GACR,MAAM,QAAQ,CAAA;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAMtE,+DAA+D;AAC/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,cAAc,CAAA;AACrB,+DAA+D;AAC/D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE7D,+DAA+D;AAC/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,oBAAoB,EACpB,SAAS,EACT,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,2BAA2B,GAC5B,MAAM,SAAS,CAAA;AAgBhB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,SAAS,CAAA"}
@@ -22,7 +22,12 @@ export declare const WRONG_LOGIN_RETURN_URL_PARAM = "returnUrl";
22
22
  export interface OnboardingRedirectParams {
23
23
  /** Profile service base URL (e.g. "https://profile.example.com") */
24
24
  profileUrl: string;
25
- /** Current page path in the consuming app (e.g. "/en/messages") */
25
+ /**
26
+ * Current page path in the consuming app, including any query string
27
+ * and fragment (e.g. `/en/messages?id=<uuid>`). The full path is
28
+ * preserved through the onboarding → sign-in → callback round-trip,
29
+ * so deep links continue to resolve after the user is sent back.
30
+ */
26
31
  currentPath: string;
27
32
  /** Secure API Gateway base URL (e.g. "http://localhost:3333") */
28
33
  gatewayUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,mEAAmE;AACnE,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;;yBAGyB;AACzB,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,WAAW,CAAA;AAE/C,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8BAA8B,CAAA;AAElE,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,cAAc,CAAA;AAIvD,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CA+BR;AAID,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAIR"}
1
+ {"version":3,"file":"onboarding.d.ts","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,mEAAmE;AACnE,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C;;;yBAGyB;AACzB,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,WAAW,CAAA;AAE/C,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8BAA8B,CAAA;AAElE,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B,cAAc,CAAA;AAIvD,MAAM,WAAW,wBAAwB;IACvC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAA;IAClB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CA2CR;AAID,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAA;IAClB,2FAA2F;IAC3F,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAIR"}
@@ -46,6 +46,18 @@ export function buildOnboardingRedirectUrl(params) {
46
46
  // Build the onboarding URL with the source param pointing back to sign-in
47
47
  const onboardingUrl = new URL(ONBOARDING_PATH, profileUrl);
48
48
  onboardingUrl.searchParams.set(ONBOARDING_SOURCE_PARAM, signInUrl.toString());
49
+ // When the consuming app is the profile service itself, skip clear-session.
50
+ // profile-next is statically exported: its /api/clear-session page only
51
+ // redirects and cannot delete httpOnly Logto cookies (unlike the legacy
52
+ // server route). useOnboardingGuard already calls invalidateSession().
53
+ try {
54
+ if (new URL(appBaseUrl).origin === new URL(profileUrl).origin) {
55
+ return onboardingUrl.toString();
56
+ }
57
+ }
58
+ catch (_a) {
59
+ // Malformed URL — fall through to clear-session.
60
+ }
49
61
  // Route through the clear-session endpoint first. This deletes any
50
62
  // stale Logto cookies on the profile-service domain so the onboarding
51
63
  // page re-authenticates as the *current* user (not a previous one).
@@ -1 +1 @@
1
- {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+DAA+D;AAE/D,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAA;AAE5C;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAA;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAA;AAElE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAA;AA0BvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAgC;IAEhC,MAAM,EACJ,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,GACV,GAAG,MAAM,CAAA;IAEV,4DAA4D;IAC5D,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,eAAe,CAAC,CAAA;IACvD,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1C,sEAAsE;IACtE,iEAAiE;IACjE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC,CAAA;IACxE,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;IAED,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IAC1D,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE7E,oEAAoE;IACpE,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAC/D,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtE,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAA;AACnC,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACvE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC7E,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"onboarding.js","sourceRoot":"","sources":["../src/onboarding.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+DAA+D;AAE/D,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAA;AAE5C;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAA;AAE/C,yEAAyE;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAA;AAElE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAA;AA+BvD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAgC;IAEhC,MAAM,EACJ,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,GACV,GAAG,MAAM,CAAA;IAEV,4DAA4D;IAC5D,yEAAyE;IACzE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,eAAe,CAAC,CAAA;IACvD,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC1C,sEAAsE;IACtE,iEAAiE;IACjE,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC,CAAA;IACxE,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACpD,CAAC;IAED,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IAC1D,aAAa,CAAC,YAAY,CAAC,GAAG,CAAC,uBAAuB,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE7E,4EAA4E;IAC5E,wEAAwE;IACxE,wEAAwE;IACxE,uEAAuE;IACvE,IAAI,CAAC;QACH,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9D,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,WAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,oEAAoE;IACpE,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAA;IAC/D,eAAe,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;IACtE,OAAO,eAAe,CAAC,QAAQ,EAAE,CAAA;AACnC,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAA8B;IAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACvE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IAC7E,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Sign-in presets for the most common identity flows.
3
+ *
4
+ * Each preset takes an optional `SignInOptions` bag and returns a **new**
5
+ * object with the flow-specific fields added. This keeps all available
6
+ * options explicit while eliminating boilerplate for the common cases.
7
+ *
8
+ * @example — basic usage
9
+ * signIn(withOtp())
10
+ * signIn(withMyGovId())
11
+ * signIn(withEntraID())
12
+ *
13
+ * @example — composing with extra options
14
+ * signIn(withOtp({ loginHint: user.email, redirectUrl: "/dashboard" }))
15
+ * signIn(withMyGovId({ redirectUrl: "/citizen-home" }))
16
+ * signIn(withEntraID({ redirectUrl: "/admin-portal" }))
17
+ */
18
+ import type { SignInOptions } from "./types";
19
+ /**
20
+ * Preset for Email OTP sign-in.
21
+ *
22
+ * Sets `firstScreen` to `"identifier:sign_in"` and `identifiers` to `"email"`.
23
+ * Logto skips the connector chooser and goes directly to the email
24
+ * identifier page with one-time-password verification.
25
+ *
26
+ * Useful for citizen Journey / Payment flows, progressive onboarding,
27
+ * and any context where you already have (or want to collect) an email
28
+ * address without requiring a full social-account registration.
29
+ *
30
+ * Preset keys (`firstScreen`, `identifiers`) **always win** over any
31
+ * same-named keys supplied in `options`.
32
+ *
33
+ * @param options - Optional base options merged into the result first.
34
+ *
35
+ * @example
36
+ * signIn(withOtp())
37
+ * signIn(withOtp({ loginHint: "alice@example.com" }))
38
+ * signIn(withOtp({ redirectUrl: window.location.origin }))
39
+ */
40
+ export declare function withOtp(options?: SignInOptions): SignInOptions;
41
+ /**
42
+ * Preset for MyGovID direct sign-in.
43
+ *
44
+ * Sets `connector` to `"social:mygovid"`, bypassing the Logto sign-in
45
+ * page entirely and redirecting the browser straight to the national
46
+ * MyGovID identity provider.
47
+ *
48
+ * Intended for citizen-facing services where MyGovID is the only
49
+ * supported identity method.
50
+ *
51
+ * The preset key (`connector`) **always wins** over any `connector`
52
+ * value supplied in `options`.
53
+ *
54
+ * @param options - Optional base options merged into the result first.
55
+ *
56
+ * @example
57
+ * signIn(withMyGovId())
58
+ * signIn(withMyGovId({ redirectUrl: "/citizen-dashboard" }))
59
+ */
60
+ export declare function withMyGovId(options?: SignInOptions): SignInOptions;
61
+ /**
62
+ * Preset for Microsoft EntraID direct sign-in.
63
+ *
64
+ * Sets `connector` to `"social:ogcio-entraid"`, bypassing the Logto
65
+ * sign-in page and redirecting the browser directly to the organisation's
66
+ * Microsoft 365 / EntraID tenant.
67
+ *
68
+ * Intended for public-servant-facing tools (admin portals, backoffice
69
+ * applications) where the user must have an `@ogcio.gov.ie` or
70
+ * organisation AD account.
71
+ *
72
+ * The preset key (`connector`) **always wins** over any `connector`
73
+ * value supplied in `options`.
74
+ *
75
+ * @param options - Optional base options merged into the result first.
76
+ *
77
+ * @example
78
+ * signIn(withEntraID())
79
+ * signIn(withEntraID({ redirectUrl: "/admin-portal" }))
80
+ */
81
+ export declare function withEntraID(options?: SignInOptions): SignInOptions;
82
+ //# sourceMappingURL=presets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,OAAO,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAM9D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAKlE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CAKlE"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Sign-in presets for the most common identity flows.
3
+ *
4
+ * Each preset takes an optional `SignInOptions` bag and returns a **new**
5
+ * object with the flow-specific fields added. This keeps all available
6
+ * options explicit while eliminating boilerplate for the common cases.
7
+ *
8
+ * @example — basic usage
9
+ * signIn(withOtp())
10
+ * signIn(withMyGovId())
11
+ * signIn(withEntraID())
12
+ *
13
+ * @example — composing with extra options
14
+ * signIn(withOtp({ loginHint: user.email, redirectUrl: "/dashboard" }))
15
+ * signIn(withMyGovId({ redirectUrl: "/citizen-home" }))
16
+ * signIn(withEntraID({ redirectUrl: "/admin-portal" }))
17
+ */
18
+ /**
19
+ * Preset for Email OTP sign-in.
20
+ *
21
+ * Sets `firstScreen` to `"identifier:sign_in"` and `identifiers` to `"email"`.
22
+ * Logto skips the connector chooser and goes directly to the email
23
+ * identifier page with one-time-password verification.
24
+ *
25
+ * Useful for citizen Journey / Payment flows, progressive onboarding,
26
+ * and any context where you already have (or want to collect) an email
27
+ * address without requiring a full social-account registration.
28
+ *
29
+ * Preset keys (`firstScreen`, `identifiers`) **always win** over any
30
+ * same-named keys supplied in `options`.
31
+ *
32
+ * @param options - Optional base options merged into the result first.
33
+ *
34
+ * @example
35
+ * signIn(withOtp())
36
+ * signIn(withOtp({ loginHint: "alice@example.com" }))
37
+ * signIn(withOtp({ redirectUrl: window.location.origin }))
38
+ */
39
+ export function withOtp(options) {
40
+ return Object.assign(Object.assign({}, options), { firstScreen: "identifier:sign_in", identifiers: "email" });
41
+ }
42
+ /**
43
+ * Preset for MyGovID direct sign-in.
44
+ *
45
+ * Sets `connector` to `"social:mygovid"`, bypassing the Logto sign-in
46
+ * page entirely and redirecting the browser straight to the national
47
+ * MyGovID identity provider.
48
+ *
49
+ * Intended for citizen-facing services where MyGovID is the only
50
+ * supported identity method.
51
+ *
52
+ * The preset key (`connector`) **always wins** over any `connector`
53
+ * value supplied in `options`.
54
+ *
55
+ * @param options - Optional base options merged into the result first.
56
+ *
57
+ * @example
58
+ * signIn(withMyGovId())
59
+ * signIn(withMyGovId({ redirectUrl: "/citizen-dashboard" }))
60
+ */
61
+ export function withMyGovId(options) {
62
+ return Object.assign(Object.assign({}, options), { connector: "social:mygovid" });
63
+ }
64
+ /**
65
+ * Preset for Microsoft EntraID direct sign-in.
66
+ *
67
+ * Sets `connector` to `"social:ogcio-entraid"`, bypassing the Logto
68
+ * sign-in page and redirecting the browser directly to the organisation's
69
+ * Microsoft 365 / EntraID tenant.
70
+ *
71
+ * Intended for public-servant-facing tools (admin portals, backoffice
72
+ * applications) where the user must have an `@ogcio.gov.ie` or
73
+ * organisation AD account.
74
+ *
75
+ * The preset key (`connector`) **always wins** over any `connector`
76
+ * value supplied in `options`.
77
+ *
78
+ * @param options - Optional base options merged into the result first.
79
+ *
80
+ * @example
81
+ * signIn(withEntraID())
82
+ * signIn(withEntraID({ redirectUrl: "/admin-portal" }))
83
+ */
84
+ export function withEntraID(options) {
85
+ return Object.assign(Object.assign({}, options), { connector: "social:ogcio-entraid" });
86
+ }
87
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,OAAO,CAAC,OAAuB;IAC7C,uCACK,OAAO,KACV,WAAW,EAAE,oBAAoB,EACjC,WAAW,EAAE,OAAO,IACrB;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuB;IACjD,uCACK,OAAO,KACV,SAAS,EAAE,gBAAgB,IAC5B;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuB;IACjD,uCACK,OAAO,KACV,SAAS,EAAE,sBAAsB,IAClC;AACH,CAAC"}
@@ -3,6 +3,7 @@ export { ALLOWED_SIGNIN_METHODS, CONNECTOR_ENTRAID, CONNECTOR_MYGOVID, DEFAULT_P
3
3
  export type { ActorType, AuthClaims, GatewayFetchOptions, GatewayMutationOptions, MutationMethod, OrganizationInfo, SignInOptions, UseAuthResult, } from "../types";
4
4
  export { ACTOR_TYPE_HEADER, ORGANIZATION_ID_HEADER, SagFetchError, } from "../types";
5
5
  export { SagClientProvider, useSagClient } from "./provider";
6
+ export { withEntraID, withMyGovId, withOtp } from "../presets";
6
7
  export { useAuth } from "./use-auth";
7
8
  export type { UseGatewayFetchOptions } from "./use-gateway-fetch";
8
9
  export { useGatewayFetch } from "./use-gateway-fetch";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AAEjB,YAAY,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AAEjB,YAAY,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE5D,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAE9D,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,YAAY,EACV,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -5,6 +5,8 @@ export { buildOnboardingRedirectUrl, buildWrongLoginMethodRedirect, CLEAR_SESSIO
5
5
  export { ALLOWED_SIGNIN_METHODS, CONNECTOR_ENTRAID, CONNECTOR_MYGOVID, DEFAULT_PUBLIC_SERVANT_ROLES, isCitizen, isCitizenByRole, isCitizenOnboarded, isInactivePublicServant, isPublicServant, ORG_ROLE_ADMIN, ORG_ROLE_MEMBER, ROLE_NAME_CITIZEN, ROLE_NAME_ONBOARDED_CITIZEN, } from "../roles";
6
6
  export { ACTOR_TYPE_HEADER, ORGANIZATION_ID_HEADER, SagFetchError, } from "../types";
7
7
  export { SagClientProvider, useSagClient } from "./provider";
8
+ // ── Sign-in presets ──────────────────────────────────────────
9
+ export { withEntraID, withMyGovId, withOtp } from "../presets";
8
10
  // ── Hooks ────────────────────────────────────────────────────
9
11
  export { useAuth } from "./use-auth";
10
12
  export { useGatewayFetch } from "./use-gateway-fetch";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,+DAA+D;AAC/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,eAAe,CAAA;AACtB,+DAA+D;AAC/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AAYjB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,gEAAgE;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAK3D,gEAAgE;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAK3D,gEAAgE;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAEhE,+DAA+D;AAC/D,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,eAAe,CAAA;AACtB,+DAA+D;AAC/D,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,UAAU,CAAA;AAYjB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC5D,gEAAgE;AAChE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAC9D,gEAAgE;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAK3D,gEAAgE;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAK3D,gEAAgE;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA"}
@@ -33,6 +33,7 @@ export declare function useGatewayFetch<T, M = undefined>(path: string | null, o
33
33
  metadata: M | undefined;
34
34
  error: any;
35
35
  isLoading: boolean;
36
+ isValidating: boolean;
36
37
  refresh: import("swr").KeyedMutator<{
37
38
  data: T;
38
39
  metadata?: M;
@@ -1 +1 @@
1
- {"version":3,"file":"use-gateway-fetch.d.ts","sourceRoot":"","sources":["../../src/react/use-gateway-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC,8CAA8C;AAC9C,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,sBAAsB;;;;;;cAmC0B,CAAC;mBAAa,CAAC;;EAY1E"}
1
+ {"version":3,"file":"use-gateway-fetch.d.ts","sourceRoot":"","sources":["../../src/react/use-gateway-fetch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC,8CAA8C;AAC9C,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,EAC9C,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,sBAAsB;;;;;;;cAoCxB,CAAC;mBACI,CAAC;;EAWf"}
@@ -48,12 +48,13 @@ export function useGatewayFetch(path, options) {
48
48
  }, [fetcher]);
49
49
  // The SWR value type is the full API response shape. `metadata` is optional
50
50
  // so the fetcher's `{ data: T }` return is assignable to `{ data: T; metadata?: M }`.
51
- const { data, error, isLoading, mutate } = useSWR(swrKey, wrappedFetcher);
51
+ const { data, error, isLoading, isValidating, mutate } = useSWR(swrKey, wrappedFetcher);
52
52
  return {
53
53
  data: data === null || data === void 0 ? void 0 : data.data,
54
54
  metadata: data === null || data === void 0 ? void 0 : data.metadata,
55
55
  error,
56
56
  isLoading,
57
+ isValidating,
57
58
  refresh: mutate,
58
59
  };
59
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-gateway-fetch.js","sourceRoot":"","sources":["../../src/react/use-gateway-fetch.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAczC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAmB,EACnB,OAAgC;;IAEhC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,IAAI,CAAA;IACxC,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE,CAAA;IACtC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAEtC,sEAAsE;IACtE,iEAAiE;IACjE,mEAAmE;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAC7B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC3D,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;IAE5B,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAI,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACpE,CAAC,MAAM,EAAE,SAAS,CAAC,CACpB,CAAA;IAED,iEAAiE;IACjE,mEAAmE;IACnE,oEAAoE;IACpE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,OAAO,CAAA;QACrB,OAAO,CAAC,QAAyC,EAAE,EAAE,CACnD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,4EAA4E;IAC5E,sFAAsF;IACtF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,CAC/C,MAAM,EACN,cAAc,CACf,CAAA;IAED,OAAO;QACL,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;QAChB,QAAQ,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ;QACxB,KAAK;QACL,SAAS;QACT,OAAO,EAAE,MAAM;KAChB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"use-gateway-fetch.js","sourceRoot":"","sources":["../../src/react/use-gateway-fetch.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,MAAM,MAAM,KAAK,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAczC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAmB,EACnB,OAAgC;;IAEhC,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAC7B,MAAM,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,IAAI,CAAA;IACxC,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,CAAA;IAEpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QAClC,OAAO,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,EAAE,CAAA;IACtC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IAEtC,sEAAsE;IACtE,iEAAiE;IACjE,mEAAmE;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QAC7B,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAC3D,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;IAE5B,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAI,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EACpE,CAAC,MAAM,EAAE,SAAS,CAAC,CACpB,CAAA;IAED,iEAAiE;IACjE,mEAAmE;IACnE,oEAAoE;IACpE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,KAAK,GAAG,OAAO,CAAA;QACrB,OAAO,CAAC,QAAyC,EAAE,EAAE,CACnD,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,4EAA4E;IAC5E,sFAAsF;IACtF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAG5D,MAAM,EAAE,cAAc,CAAC,CAAA;IAE1B,OAAO;QACL,IAAI,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI;QAChB,QAAQ,EAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ;QACxB,KAAK;QACL,SAAS;QACT,YAAY;QACZ,OAAO,EAAE,MAAM;KAChB,CAAA;AACH,CAAC"}
@@ -37,11 +37,11 @@ export interface UseOnboardingGuardOptions {
37
37
  export interface UseOnboardingGuardResult {
38
38
  /**
39
39
  * `true` once the onboarding check has resolved — meaning the user
40
- * is onboarded, is not a citizen, is unauthenticated, or the
41
- * debounce window is active.
40
+ * is onboarded, is not a citizen, is unauthenticated, or auth is
41
+ * still loading / a redirect is in progress.
42
42
  *
43
- * `false` while auth is loading or the user is being redirected to
44
- * the onboarding page.
43
+ * `false` while auth is loading, during the debounce window before a
44
+ * retry redirect, or while the user is being sent to onboarding.
45
45
  *
46
46
  * **Do not render data-fetching children until this is `true`** to
47
47
  * prevent `useGatewayFetch` requests from racing with session
@@ -66,8 +66,9 @@ export interface UseOnboardingGuardResult {
66
66
  * 4. If the user signed in with a wrong method → redirect to the
67
67
  * profile service's error page.
68
68
  * 5. If the user is onboarded → resolved.
69
- * 6. If a redirect happened less than `debounceMs` ago → resolved
70
- * (prevents infinite loops).
69
+ * 6. If a redirect happened less than `debounceMs` ago → stay unresolved
70
+ * and retry after the window (prevents infinite loops without exposing
71
+ * protected content).
71
72
  * 7. If the user is a citizen who has not completed onboarding →
72
73
  * invalidate the server session and redirect to the profile
73
74
  * service's onboarding page.
@@ -1 +1 @@
1
- {"version":3,"file":"use-onboarding-guard.d.ts","sourceRoot":"","sources":["../../src/react/use-onboarding-guard.ts"],"names":[],"mappings":"AAkBA,iDAAiD;AACjD,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;;;;;;;;OASG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAEjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAuG1B"}
1
+ {"version":3,"file":"use-onboarding-guard.d.ts","sourceRoot":"","sources":["../../src/react/use-onboarding-guard.ts"],"names":[],"mappings":"AAkBA,iDAAiD;AACjD,MAAM,WAAW,yBAAyB;IACxC,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAElB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;;;;;;;;OASG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAEjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;OAWG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,wBAAwB,CAsH1B"}
@@ -25,8 +25,9 @@ const DEFAULT_DEBOUNCE_MS = 30000; // 30 seconds
25
25
  * 4. If the user signed in with a wrong method → redirect to the
26
26
  * profile service's error page.
27
27
  * 5. If the user is onboarded → resolved.
28
- * 6. If a redirect happened less than `debounceMs` ago → resolved
29
- * (prevents infinite loops).
28
+ * 6. If a redirect happened less than `debounceMs` ago → stay unresolved
29
+ * and retry after the window (prevents infinite loops without exposing
30
+ * protected content).
30
31
  * 7. If the user is a citizen who has not completed onboarding →
31
32
  * invalidate the server session and redirect to the profile
32
33
  * service's onboarding page.
@@ -65,8 +66,11 @@ export function useOnboardingGuard(options) {
65
66
  const client = useSagClient();
66
67
  const { user, claims, loading, invalidateSession } = useAuth();
67
68
  const [resolved, setResolved] = useState(false);
69
+ const [debounceRetryTick, setDebounceRetryTick] = useState(0);
68
70
  const redirectingRef = useRef(false);
69
71
  useEffect(() => {
72
+ // Re-run after debounce timer fires (see setDebounceRetryTick below).
73
+ void debounceRetryTick;
70
74
  if (loading)
71
75
  return;
72
76
  if (redirectingRef.current)
@@ -109,18 +113,28 @@ export function useOnboardingGuard(options) {
109
113
  setResolved(true);
110
114
  return;
111
115
  }
112
- // 5. Debounce — if we recently redirected, don't loop
116
+ // 5. Debounce — delay a re-redirect without rendering protected content.
117
+ // Previously this set resolved=true, which let non-onboarded citizens
118
+ // through to the app after a failed onboarding redirect chain.
113
119
  const lastTs = Number(sessionStorage.getItem(ONBOARDING_STORAGE_KEY) || "0");
114
- if (Date.now() - lastTs < debounceMs) {
115
- setResolved(true);
116
- return;
120
+ const elapsed = Date.now() - lastTs;
121
+ if (elapsed < debounceMs) {
122
+ setResolved(false);
123
+ const timer = setTimeout(() => {
124
+ redirectingRef.current = false;
125
+ setDebounceRetryTick((tick) => tick + 1);
126
+ }, debounceMs - elapsed);
127
+ return () => clearTimeout(timer);
117
128
  }
118
129
  // 6. Citizen not onboarded — invalidate session and redirect.
119
130
  redirectingRef.current = true;
120
131
  sessionStorage.setItem(ONBOARDING_STORAGE_KEY, String(Date.now()));
132
+ // Preserve the current location's query string and fragment so deep links
133
+ // (e.g. /en/secure-messages?id=<uuid>) still resolve after the
134
+ // onboarding → sign-in → callback round-trip.
121
135
  const url = buildOnboardingRedirectUrl({
122
136
  profileUrl,
123
- currentPath: window.location.pathname,
137
+ currentPath: `${window.location.pathname}${window.location.search}${window.location.hash}`,
124
138
  gatewayUrl: client.gatewayUrl,
125
139
  appName: client.appName,
126
140
  appBaseUrl,
@@ -141,6 +155,7 @@ export function useOnboardingGuard(options) {
141
155
  debounceMs,
142
156
  client.gatewayUrl,
143
157
  client.appName,
158
+ debounceRetryTick,
144
159
  ]);
145
160
  return { resolved };
146
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-onboarding-guard.js","sourceRoot":"","sources":["../../src/react/use-onboarding-guard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-onboarding-guard.js","sourceRoot":"","sources":["../../src/react/use-onboarding-guard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-public-servant-guard.d.ts","sourceRoot":"","sources":["../../src/react/use-public-servant-guard.ts"],"names":[],"mappings":"AAYA,oDAAoD;AACpD,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,4BAAiC,GACzC,2BAA2B,CAuD7B"}
1
+ {"version":3,"file":"use-public-servant-guard.d.ts","sourceRoot":"","sources":["../../src/react/use-public-servant-guard.ts"],"names":[],"mappings":"AAYA,oDAAoD;AACpD,MAAM,WAAW,4BAA4B;IAC3C;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAE5B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,+CAA+C;AAC/C,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,4BAAiC,GACzC,2BAA2B,CA2D7B"}
@@ -42,6 +42,10 @@ export function usePublicServantGuard(options = {}) {
42
42
  if (loading)
43
43
  return;
44
44
  if (!user || !claims) {
45
+ if (unauthorizedRedirectUrl) {
46
+ window.location.href = unauthorizedRedirectUrl;
47
+ return;
48
+ }
45
49
  setResolved(true);
46
50
  return;
47
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-public-servant-guard.js","sourceRoot":"","sources":["../../src/react/use-public-servant-guard.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,eAAe,GAChB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAkDpC,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAwC,EAAE;IAE1C,MAAM,EACJ,kBAAkB,GAAG,CAAC,GAAG,4BAA4B,CAAC,EACtD,mBAAmB,EACnB,uBAAuB,GACxB,GAAG,OAAO,CAAA;IAEX,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;IAE3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,OAAO;YAAE,OAAM;QAEnB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,kBAAkB,mCAAI,EAAE,CAAA;QAEhD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,mBAAmB,CAAA;gBAC1C,OAAM;YACR,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,iDAAiD;QACjD,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAA;YAC9C,OAAM;QACR,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC,EAAE;QACD,OAAO;QACP,IAAI;QACJ,MAAM;QACN,kBAAkB;QAClB,mBAAmB;QACnB,uBAAuB;KACxB,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;AAC7C,CAAC"}
1
+ {"version":3,"file":"use-public-servant-guard.js","sourceRoot":"","sources":["../../src/react/use-public-servant-guard.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,eAAe,GAChB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAkDpC,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,qBAAqB,CACnC,UAAwC,EAAE;IAE1C,MAAM,EACJ,kBAAkB,GAAG,CAAC,GAAG,4BAA4B,CAAC,EACtD,mBAAmB,EACnB,uBAAuB,GACxB,GAAG,OAAO,CAAA;IAEX,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAA;IAE3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,OAAO;YAAE,OAAM;QAEnB,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAA;gBAC9C,OAAM;YACR,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,MAAM,QAAQ,GAAG,MAAA,MAAM,CAAC,kBAAkB,mCAAI,EAAE,CAAA;QAEhD,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,IAAI,mBAAmB,EAAE,CAAC;gBACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,mBAAmB,CAAA;gBAC1C,OAAM;YACR,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,IAAI,eAAe,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAClD,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,WAAW,CAAC,IAAI,CAAC,CAAA;YACjB,OAAM;QACR,CAAC;QAED,iDAAiD;QACjD,IAAI,uBAAuB,EAAE,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,uBAAuB,CAAA;YAC9C,OAAM;QACR,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAA;IACnB,CAAC,EAAE;QACD,OAAO;QACP,IAAI;QACJ,MAAM;QACN,kBAAkB;QAClB,mBAAmB;QACnB,uBAAuB;KACxB,CAAC,CAAA;IAEF,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;AAC7C,CAAC"}
package/dist/types.d.ts CHANGED
@@ -38,6 +38,33 @@ export interface SignInOptions {
38
38
  * @example "sso:connector-id"
39
39
  */
40
40
  connector?: string;
41
+ /**
42
+ * Logto `firstScreen` — controls which screen is shown first.
43
+ * Use with `identifiers` to restrict to specific methods (e.g. email OTP).
44
+ *
45
+ * @example "identifier:sign_in"
46
+ * @example "identifier:register"
47
+ * @example "sign_in"
48
+ * @example "register"
49
+ * @example "single_sign_on"
50
+ * @example "reset_password"
51
+ */
52
+ firstScreen?: string;
53
+ /**
54
+ * Logto `identifier` — restrict which identifier methods are shown.
55
+ * Only applies when `firstScreen` is `identifier:sign_in` or `identifier:register`.
56
+ * Space-separated list of: "email", "phone", "username".
57
+ *
58
+ * @example "email"
59
+ * @example "email phone"
60
+ */
61
+ identifiers?: string;
62
+ /**
63
+ * Logto `loginHint` — pre-fill the identifier field on the first screen.
64
+ *
65
+ * @example "user@example.com"
66
+ */
67
+ loginHint?: string;
41
68
  /**
42
69
  * Explicit post-login redirect URL.
43
70
  * Validated against the gateway's allowed-origin patterns.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gEAAgE;AA6DhE,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAItC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAwFhE,gEAAgE;AAEhE;;;;GAIG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAItC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AAED,gEAAgE;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ogcio/sag-client",
3
- "version": "0.5.0",
3
+ "version": "0.6.1",
4
4
  "description": "Framework-agnostic client for the Secure API Gateway — authentication, health checks, and authenticated fetching",
5
5
  "type": "module",
6
6
  "private": false,
@@ -52,20 +52,20 @@
52
52
  }
53
53
  },
54
54
  "devDependencies": {
55
- "@testing-library/react": "^16.3.2",
56
- "@types/react": "^19",
57
- "@types/react-dom": "^19.2.3",
58
- "jsdom": "^26.1.0",
59
- "react": "^19.2.4",
60
- "react-dom": "^19.2.4",
61
- "swr": "^2.4.0",
62
- "typescript": "^5"
55
+ "@testing-library/react": "16.3.2",
56
+ "@types/react": "19.2.14",
57
+ "@types/react-dom": "19.2.3",
58
+ "jsdom": "29.1.1",
59
+ "react": "19.2.4",
60
+ "react-dom": "19.2.4",
61
+ "swr": "2.4.1",
62
+ "typescript": "6.0.3"
63
63
  },
64
64
  "engines": {
65
- "node": ">=20.0.0"
65
+ "node": ">=22.0.0"
66
66
  },
67
67
  "scripts": {
68
- "test": "vitest run",
68
+ "test": "vitest run --coverage --reporter=junit --outputFile=results.xml || exit 0",
69
69
  "test:watch": "vitest",
70
70
  "test:coverage": "vitest run --coverage",
71
71
  "format:check": "biome format",