@ttt-productions/auth-core 1.6.15 → 1.6.17

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 (88) hide show
  1. package/dist/acceptance.d.ts +0 -20
  2. package/dist/acceptance.d.ts.map +1 -1
  3. package/dist/acceptance.js +6 -26
  4. package/dist/acceptance.js.map +1 -1
  5. package/dist/{auth.d.ts → client/auth.d.ts} +1 -6
  6. package/dist/client/auth.d.ts.map +1 -0
  7. package/dist/client/auth.js +8 -0
  8. package/dist/client/auth.js.map +1 -0
  9. package/dist/client/claims.d.ts +11 -0
  10. package/dist/client/claims.d.ts.map +1 -0
  11. package/dist/client/claims.js +30 -0
  12. package/dist/client/claims.js.map +1 -0
  13. package/dist/client/index.d.ts +3 -0
  14. package/dist/client/index.d.ts.map +1 -0
  15. package/dist/client/index.js +3 -0
  16. package/dist/client/index.js.map +1 -0
  17. package/dist/email-verification.d.ts +0 -13
  18. package/dist/email-verification.d.ts.map +1 -1
  19. package/dist/email-verification.js +3 -19
  20. package/dist/email-verification.js.map +1 -1
  21. package/dist/env.d.ts +1 -1
  22. package/dist/env.js +5 -5
  23. package/dist/env.js.map +1 -1
  24. package/dist/errors.d.ts +1 -3
  25. package/dist/errors.d.ts.map +1 -1
  26. package/dist/errors.js +79 -86
  27. package/dist/errors.js.map +1 -1
  28. package/dist/index.d.ts +4 -5
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +4 -12
  31. package/dist/index.js.map +1 -1
  32. package/dist/react/AuthProvider.d.ts +3 -3
  33. package/dist/react/AuthProvider.d.ts.map +1 -1
  34. package/dist/react/AuthProvider.js +18 -36
  35. package/dist/react/AuthProvider.js.map +1 -1
  36. package/dist/react/index.d.ts +8 -8
  37. package/dist/react/index.js +6 -6
  38. package/dist/react/index.js.map +1 -1
  39. package/dist/react/redirect-storage.d.ts.map +1 -1
  40. package/dist/react/redirect-storage.js +5 -14
  41. package/dist/react/redirect-storage.js.map +1 -1
  42. package/dist/react/types.d.ts +1 -22
  43. package/dist/react/types.d.ts.map +1 -1
  44. package/dist/react/types.js.map +1 -1
  45. package/dist/react/useAuth.d.ts +1 -5
  46. package/dist/react/useAuth.d.ts.map +1 -1
  47. package/dist/react/useAuth.js +4 -8
  48. package/dist/react/useAuth.js.map +1 -1
  49. package/dist/react/useAuthGuard.d.ts +0 -33
  50. package/dist/react/useAuthGuard.d.ts.map +1 -1
  51. package/dist/react/useAuthGuard.js +7 -37
  52. package/dist/react/useAuthGuard.js.map +1 -1
  53. package/dist/react/useAuthState.d.ts +1 -1
  54. package/dist/react/useAuthState.d.ts.map +1 -1
  55. package/dist/react/useAuthState.js +2 -6
  56. package/dist/react/useAuthState.js.map +1 -1
  57. package/dist/refusal.d.ts +0 -6
  58. package/dist/refusal.d.ts.map +1 -1
  59. package/dist/refusal.js +6 -16
  60. package/dist/refusal.js.map +1 -1
  61. package/dist/server/assertAuth.d.ts +2 -2
  62. package/dist/server/assertAuth.d.ts.map +1 -1
  63. package/dist/server/assertAuth.js +13 -38
  64. package/dist/server/assertAuth.js.map +1 -1
  65. package/dist/server/authError.d.ts +3 -51
  66. package/dist/server/authError.d.ts.map +1 -1
  67. package/dist/server/authError.js +1 -1
  68. package/dist/server/authError.js.map +1 -1
  69. package/dist/server/index.d.ts +4 -4
  70. package/dist/server/index.d.ts.map +1 -1
  71. package/dist/server/index.js +2 -3
  72. package/dist/server/index.js.map +1 -1
  73. package/dist/server/types.d.ts +9 -109
  74. package/dist/server/types.d.ts.map +1 -1
  75. package/dist/server/types.js +0 -2
  76. package/dist/server/types.js.map +1 -1
  77. package/package.json +3 -3
  78. package/dist/auth.d.ts.map +0 -1
  79. package/dist/auth.js +0 -13
  80. package/dist/auth.js.map +0 -1
  81. package/dist/claims.d.ts +0 -38
  82. package/dist/claims.d.ts.map +0 -1
  83. package/dist/claims.js +0 -55
  84. package/dist/claims.js.map +0 -1
  85. package/dist/client.d.ts +0 -2
  86. package/dist/client.d.ts.map +0 -1
  87. package/dist/client.js +0 -5
  88. package/dist/client.js.map +0 -1
package/dist/claims.d.ts DELETED
@@ -1,38 +0,0 @@
1
- import type { Auth, User, IdTokenResult } from "firebase/auth";
2
- export type IdTokenClaims = IdTokenResult["claims"];
3
- export type ParsedClaims = {
4
- roles: string[];
5
- raw: IdTokenClaims;
6
- };
7
- /**
8
- * Get the current user's ID token claims.
9
- * Returns null if no current user.
10
- *
11
- * STALE-VERIFICATION RECONCILIATION: when the ACCOUNT says the email is
12
- * verified but the cached token claim still says it is not, force-mint a fresh
13
- * token and return ITS claims. Firebase ID tokens live for up to an hour and a
14
- * backend-side `emailVerified` flip (verification link applied elsewhere, or an
15
- * Admin SDK update) never invalidates them — without this, the UI (account
16
- * state) believes the user is verified while every backend call (token claim)
17
- * rejects with "Email must be verified" until the token happens to rotate.
18
- * One forced mint converges the two (the fresh token carries
19
- * `email_verified: true`); the check is directional, so an already-consistent
20
- * user never pays a forced refresh.
21
- */
22
- export declare function getIdTokenClaims(user: User | null): Promise<IdTokenClaims | null>;
23
- /**
24
- * Forces refresh of ID token + claims.
25
- * Returns null if no current user.
26
- */
27
- export declare function refreshClaims(user: User | null): Promise<IdTokenClaims | null>;
28
- /**
29
- * Convenience helper when you only have Auth.
30
- */
31
- export declare function refreshClaimsFromAuth(auth: Auth): Promise<IdTokenClaims | null>;
32
- /**
33
- * Keep parsing intentionally minimal and generic:
34
- * - normalize "roles" into string[]
35
- * - keep raw claims attached
36
- */
37
- export declare function parseClaims(claims: IdTokenClaims | null | undefined): ParsedClaims;
38
- //# sourceMappingURL=claims.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAEpD,MAAM,MAAM,YAAY,GAAG;IAEzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,GAAG,EAAE,aAAa,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAQvF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAIpF;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAErF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,YAAY,CAUlF"}
package/dist/claims.js DELETED
@@ -1,55 +0,0 @@
1
- /**
2
- * Get the current user's ID token claims.
3
- * Returns null if no current user.
4
- *
5
- * STALE-VERIFICATION RECONCILIATION: when the ACCOUNT says the email is
6
- * verified but the cached token claim still says it is not, force-mint a fresh
7
- * token and return ITS claims. Firebase ID tokens live for up to an hour and a
8
- * backend-side `emailVerified` flip (verification link applied elsewhere, or an
9
- * Admin SDK update) never invalidates them — without this, the UI (account
10
- * state) believes the user is verified while every backend call (token claim)
11
- * rejects with "Email must be verified" until the token happens to rotate.
12
- * One forced mint converges the two (the fresh token carries
13
- * `email_verified: true`); the check is directional, so an already-consistent
14
- * user never pays a forced refresh.
15
- */
16
- export async function getIdTokenClaims(user) {
17
- if (!user)
18
- return null;
19
- const res = await user.getIdTokenResult(false);
20
- if (user.emailVerified === true && res.claims.email_verified !== true) {
21
- const fresh = await user.getIdTokenResult(true);
22
- return fresh.claims;
23
- }
24
- return res.claims;
25
- }
26
- /**
27
- * Forces refresh of ID token + claims.
28
- * Returns null if no current user.
29
- */
30
- export async function refreshClaims(user) {
31
- if (!user)
32
- return null;
33
- const res = await user.getIdTokenResult(true);
34
- return res.claims;
35
- }
36
- /**
37
- * Convenience helper when you only have Auth.
38
- */
39
- export async function refreshClaimsFromAuth(auth) {
40
- return refreshClaims(auth.currentUser);
41
- }
42
- /**
43
- * Keep parsing intentionally minimal and generic:
44
- * - normalize "roles" into string[]
45
- * - keep raw claims attached
46
- */
47
- export function parseClaims(claims) {
48
- const raw = (claims ?? {});
49
- const rolesValue = raw.roles;
50
- const roles = Array.isArray(rolesValue) ? rolesValue.filter((x) => typeof x === "string") :
51
- typeof rolesValue === "string" ? [rolesValue] :
52
- [];
53
- return { roles, raw };
54
- }
55
- //# sourceMappingURL=claims.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAiB;IACtD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAiB;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAU;IACpD,OAAO,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAwC;IAClE,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAkB,CAAC;IAE5C,MAAM,UAAU,GAAI,GAAW,CAAC,KAAK,CAAC;IACtC,MAAM,KAAK,GACT,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC;QAC7E,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YAC/C,EAAE,CAAC;IAEL,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import type { Auth, User, IdTokenResult } from \"firebase/auth\";\n\nexport type IdTokenClaims = IdTokenResult[\"claims\"];\n\nexport type ParsedClaims = {\n // common defaults (kept generic)\n roles: string[];\n // raw claims for app-level decisions\n raw: IdTokenClaims;\n};\n\n/**\n * Get the current user's ID token claims.\n * Returns null if no current user.\n *\n * STALE-VERIFICATION RECONCILIATION: when the ACCOUNT says the email is\n * verified but the cached token claim still says it is not, force-mint a fresh\n * token and return ITS claims. Firebase ID tokens live for up to an hour and a\n * backend-side `emailVerified` flip (verification link applied elsewhere, or an\n * Admin SDK update) never invalidates them — without this, the UI (account\n * state) believes the user is verified while every backend call (token claim)\n * rejects with \"Email must be verified\" until the token happens to rotate.\n * One forced mint converges the two (the fresh token carries\n * `email_verified: true`); the check is directional, so an already-consistent\n * user never pays a forced refresh.\n */\nexport async function getIdTokenClaims(user: User | null): Promise<IdTokenClaims | null> {\n if (!user) return null;\n const res = await user.getIdTokenResult(false);\n if (user.emailVerified === true && res.claims.email_verified !== true) {\n const fresh = await user.getIdTokenResult(true);\n return fresh.claims;\n }\n return res.claims;\n}\n\n/**\n * Forces refresh of ID token + claims.\n * Returns null if no current user.\n */\nexport async function refreshClaims(user: User | null): Promise<IdTokenClaims | null> {\n if (!user) return null;\n const res = await user.getIdTokenResult(true);\n return res.claims;\n}\n\n/**\n * Convenience helper when you only have Auth.\n */\nexport async function refreshClaimsFromAuth(auth: Auth): Promise<IdTokenClaims | null> {\n return refreshClaims(auth.currentUser);\n}\n\n/**\n * Keep parsing intentionally minimal and generic:\n * - normalize \"roles\" into string[]\n * - keep raw claims attached\n */\nexport function parseClaims(claims: IdTokenClaims | null | undefined): ParsedClaims {\n const raw = (claims ?? {}) as IdTokenClaims;\n\n const rolesValue = (raw as any).roles;\n const roles =\n Array.isArray(rolesValue) ? rolesValue.filter((x) => typeof x === \"string\") :\n typeof rolesValue === \"string\" ? [rolesValue] :\n [];\n\n return { roles, raw };\n}\n"]}
package/dist/client.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "./auth.js";
2
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAGA,cAAc,WAAW,CAAC"}
package/dist/client.js DELETED
@@ -1,5 +0,0 @@
1
- // Firebase *client* auth runtime. Importing this subpath pulls firebase/auth
2
- // at runtime (e.g. onAuthStateChanged), so it is intentionally kept off the
3
- // pure root. The pure root exposes only contracts/config/errors.
4
- export * from "./auth.js";
5
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,iEAAiE;AACjE,cAAc,WAAW,CAAC","sourcesContent":["// Firebase *client* auth runtime. Importing this subpath pulls firebase/auth\n// at runtime (e.g. onAuthStateChanged), so it is intentionally kept off the\n// pure root. The pure root exposes only contracts/config/errors.\nexport * from \"./auth.js\";\n"]}