@growth-labs/auth 0.2.2 → 0.2.3

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 (44) hide show
  1. package/README.md +37 -131
  2. package/dist/client/login-page.d.ts +1 -16
  3. package/dist/client/login-page.d.ts.map +1 -1
  4. package/dist/client/login-page.js +1 -16
  5. package/dist/client/login-page.js.map +1 -1
  6. package/dist/middleware/auth.js +2 -2
  7. package/dist/middleware/auth.js.map +1 -1
  8. package/dist/routes/callback.d.ts.map +1 -1
  9. package/dist/routes/callback.js +8 -28
  10. package/dist/routes/callback.js.map +1 -1
  11. package/dist/routes/forgot-password.d.ts +1 -12
  12. package/dist/routes/forgot-password.d.ts.map +1 -1
  13. package/dist/routes/forgot-password.js +4 -14
  14. package/dist/routes/forgot-password.js.map +1 -1
  15. package/dist/routes/login.d.ts.map +1 -1
  16. package/dist/routes/login.js +37 -62
  17. package/dist/routes/login.js.map +1 -1
  18. package/dist/routes/reset-password.d.ts +0 -10
  19. package/dist/routes/reset-password.d.ts.map +1 -1
  20. package/dist/routes/reset-password.js +3 -16
  21. package/dist/routes/reset-password.js.map +1 -1
  22. package/dist/types.d.ts +14 -18
  23. package/dist/types.d.ts.map +1 -1
  24. package/dist/utils/cookies.d.ts +1 -19
  25. package/dist/utils/cookies.d.ts.map +1 -1
  26. package/dist/utils/cookies.js +4 -27
  27. package/dist/utils/cookies.js.map +1 -1
  28. package/dist/utils/index.d.ts +2 -4
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/dist/utils/index.js +1 -3
  31. package/dist/utils/index.js.map +1 -1
  32. package/dist/utils/openauth.d.ts +6 -51
  33. package/dist/utils/openauth.d.ts.map +1 -1
  34. package/dist/utils/openauth.js +20 -72
  35. package/dist/utils/openauth.js.map +1 -1
  36. package/dist/utils/tokens.d.ts +12 -5
  37. package/dist/utils/tokens.d.ts.map +1 -1
  38. package/dist/utils/tokens.js +34 -51
  39. package/dist/utils/tokens.js.map +1 -1
  40. package/dist/vite-plugin.d.ts +4 -0
  41. package/dist/vite-plugin.d.ts.map +1 -0
  42. package/dist/vite-plugin.js +18 -0
  43. package/dist/vite-plugin.js.map +1 -0
  44. package/package.json +7 -21
@@ -1,49 +1,39 @@
1
- import { createRemoteJWKSet, jwtVerify } from 'jose';
1
+ import { createLocalJWKSet, jwtVerify } from 'jose';
2
2
  const jwksCache = new Map();
3
- function getJWKS(issuer) {
3
+ async function getJWKS(issuer) {
4
4
  let jwks = jwksCache.get(issuer);
5
5
  if (jwks)
6
6
  return jwks;
7
- const jwksUrl = new URL('/.well-known/jwks.json', issuer);
8
- jwks = createRemoteJWKSet(jwksUrl);
7
+ const response = await fetch(`${issuer}/.well-known/jwks.json`);
8
+ if (!response.ok)
9
+ throw new Error(`JWKS fetch failed: ${response.status}`);
10
+ const data = (await response.json());
11
+ jwks = createLocalJWKSet(data);
9
12
  jwksCache.set(issuer, jwks);
10
13
  return jwks;
11
14
  }
12
- /**
13
- * Extract subject claims from an OpenAuth-issued JWT payload.
14
- *
15
- * OpenAuth places the subject payload (defined by the issuer's `subjects`
16
- * schema) under `properties` in the access token. The standalone
17
- * identity-platform issuer's subject contains:
18
- * - userId, email, name, image, isNewUser
19
- *
20
- * The JWT's top-level `sub` is `{type}:{sha1-prefix}` (an OpenAuth-internal
21
- * subject hash, NOT the user ID). Always read the user ID from
22
- * `properties.userId`.
23
- */
24
- function extractClaims(payload) {
25
- const propsCandidate = payload.properties;
26
- const props = propsCandidate && typeof propsCandidate === 'object'
27
- ? propsCandidate
28
- : {};
29
- const userId = typeof props.userId === 'string' ? props.userId : null;
30
- const email = typeof props.email === 'string' ? props.email : null;
31
- if (!userId || !email) {
32
- return null;
33
- }
15
+ export function extractTokenClaims(payload) {
16
+ const properties = (payload.properties ?? {});
17
+ const topLevelIsNewUser = payload.isNewUser;
34
18
  return {
35
- userId,
36
- email,
37
- name: typeof props.name === 'string' ? props.name : undefined,
38
- image: typeof props.image === 'string' ? props.image : undefined,
39
- isNewUser: typeof props.isNewUser === 'boolean' ? props.isNewUser : undefined,
19
+ sub: payload.sub,
20
+ email: (properties.email ?? payload.email),
21
+ name: (properties.name ?? payload.name),
22
+ image: (properties.image ?? payload.image),
23
+ isNewUser: Boolean(properties.isNewUser ?? topLevelIsNewUser),
40
24
  };
41
25
  }
42
26
  export async function verifyAccessToken(issuer, token) {
43
27
  try {
44
- const jwks = getJWKS(issuer);
28
+ const jwks = await getJWKS(issuer);
45
29
  const { payload } = await jwtVerify(token, jwks, { issuer });
46
- return extractClaims(payload);
30
+ const claims = extractTokenClaims(payload);
31
+ return {
32
+ sub: claims.sub,
33
+ email: claims.email,
34
+ name: claims.name,
35
+ image: claims.image,
36
+ };
47
37
  }
48
38
  catch (err) {
49
39
  console.error('verifyAccessToken error:', err);
@@ -58,8 +48,7 @@ export async function refreshTokens(issuer, refreshToken, clientId) {
58
48
  });
59
49
  if (clientId)
60
50
  params.set('client_id', clientId);
61
- const tokenUrl = new URL('/token', issuer).toString();
62
- const response = await fetch(tokenUrl, {
51
+ const response = await fetch(`${issuer}/token`, {
63
52
  method: 'POST',
64
53
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
65
54
  body: params.toString(),
@@ -67,15 +56,16 @@ export async function refreshTokens(issuer, refreshToken, clientId) {
67
56
  if (!response.ok)
68
57
  return null;
69
58
  const data = (await response.json());
70
- if (!data.access_token || !data.refresh_token)
71
- return null;
72
- const claims = extractClaims(decodeJwtPayload(data.access_token));
73
- if (!claims)
74
- return null;
59
+ const claims = extractTokenClaims(decodeJwtPayload(data.access_token));
75
60
  return {
76
61
  accessToken: data.access_token,
77
62
  refreshToken: data.refresh_token,
78
- claims,
63
+ claims: {
64
+ sub: claims.sub,
65
+ email: claims.email,
66
+ name: claims.name,
67
+ image: claims.image,
68
+ },
79
69
  };
80
70
  }
81
71
  catch {
@@ -86,17 +76,10 @@ export function decodeJwtPayload(jwt) {
86
76
  const parts = jwt.split('.');
87
77
  if (parts.length !== 3)
88
78
  return {};
89
- const padded = parts[1].replace(/-/g, '+').replace(/_/g, '/');
90
- try {
91
- return JSON.parse(atob(padded));
92
- }
93
- catch {
94
- return {};
95
- }
79
+ const payload = parts[1].replace(/-/g, '+').replace(/_/g, '/');
80
+ const padded = payload.padEnd(payload.length + ((4 - (payload.length % 4)) % 4), '=');
81
+ return JSON.parse(atob(padded));
96
82
  }
97
- /**
98
- * Exposed for tests so cached JWKS sets can be reset between cases.
99
- */
100
83
  export function _resetJwksCache() {
101
84
  jwksCache.clear();
102
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAKnD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAA;AAEjD,KAAK,UAAU,OAAO,CAAC,MAAc;IACpC,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IAErB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,wBAAwB,CAAC,CAAA;IAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA2B,CAAA;IAC9D,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC9B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACZ,CAAC;AAaD,MAAM,UAAU,kBAAkB,CAAC,OAAgC;IAClE,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAA4B,CAAA;IACxE,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAA;IAE3C,OAAO;QACN,GAAG,EAAE,OAAO,CAAC,GAAa;QAC1B,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAW;QACpD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAuB;QAC7D,KAAK,EAAE,CAAC,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAuB;QAChE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,iBAAiB,CAAC;KAC7D,CAAA;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,MAAc,EACd,KAAa;IAEb,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QAClC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5D,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAkC,CAAC,CAAA;QACrE,OAAO;YACN,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;SACnB,CAAA;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;QAC9C,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,MAAc,EACd,YAAoB,EACpB,QAAiB;IAEjB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YAClC,UAAU,EAAE,eAAe;YAC3B,aAAa,EAAE,YAAY;SAC3B,CAAC,CAAA;QACF,IAAI,QAAQ;YAAE,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,QAAQ,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;SACvB,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QAE7B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAGlC,CAAA;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;QAEtE,OAAO;YACN,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,MAAM,EAAE;gBACP,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;aACnB;SACD,CAAA;IACF,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAA;IACZ,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC3C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACrF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe;IAC9B,SAAS,CAAC,KAAK,EAAE,CAAA;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { ResolvedAuthOptions } from './options.js';
3
+ export declare function growthLabsAuthPlugin(config: ResolvedAuthOptions): Plugin;
4
+ //# sourceMappingURL=vite-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAKvD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAcxE"}
@@ -0,0 +1,18 @@
1
+ const VIRTUAL_MODULE_ID = 'virtual:growth-labs/auth/config';
2
+ const RESOLVED_VIRTUAL_MODULE_ID = `\0${VIRTUAL_MODULE_ID}`;
3
+ export function growthLabsAuthPlugin(config) {
4
+ return {
5
+ name: 'growth-labs-auth-config',
6
+ resolveId(id) {
7
+ if (id === VIRTUAL_MODULE_ID) {
8
+ return RESOLVED_VIRTUAL_MODULE_ID;
9
+ }
10
+ },
11
+ load(id) {
12
+ if (id === RESOLVED_VIRTUAL_MODULE_ID) {
13
+ return `export const config = ${JSON.stringify(config)};`;
14
+ }
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=vite-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../src/vite-plugin.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAG,iCAAiC,CAAA;AAC3D,MAAM,0BAA0B,GAAG,KAAK,iBAAiB,EAAE,CAAA;AAE3D,MAAM,UAAU,oBAAoB,CAAC,MAA2B;IAC/D,OAAO;QACN,IAAI,EAAE,yBAAyB;QAC/B,SAAS,CAAC,EAAE;YACX,IAAI,EAAE,KAAK,iBAAiB,EAAE,CAAC;gBAC9B,OAAO,0BAA0B,CAAA;YAClC,CAAC;QACF,CAAC;QACD,IAAI,CAAC,EAAE;YACN,IAAI,EAAE,KAAK,0BAA0B,EAAE,CAAC;gBACvC,OAAO,yBAAyB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAA;YAC1D,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC"}
package/package.json CHANGED
@@ -1,27 +1,8 @@
1
1
  {
2
2
  "name": "@growth-labs/auth",
3
- "version": "0.2.2",
4
- "description": "OpenAuth client package for Astro + Cloudflare. Verifies JWTs, manages session cookies, gates protected paths, and injects login/logout/callback routes.",
5
- "keywords": [
6
- "astro",
7
- "astro-integration",
8
- "openauth",
9
- "oauth",
10
- "cloudflare-workers",
11
- "auth"
12
- ],
13
- "license": "MIT",
14
- "repository": {
15
- "type": "git",
16
- "url": "git+https://github.com/growth-labs/platform.git",
17
- "directory": "packages/auth"
18
- },
19
- "homepage": "https://github.com/growth-labs/platform/tree/main/packages/auth#readme",
20
- "publishConfig": {
21
- "access": "public",
22
- "registry": "https://registry.npmjs.org/"
23
- },
3
+ "version": "0.2.3",
24
4
  "type": "module",
5
+ "types": "./dist/index.d.ts",
25
6
  "exports": {
26
7
  ".": {
27
8
  "types": "./dist/index.d.ts",
@@ -50,6 +31,10 @@
50
31
  "dist",
51
32
  "README.md"
52
33
  ],
34
+ "publishConfig": {
35
+ "access": "public",
36
+ "registry": "https://registry.npmjs.org/"
37
+ },
53
38
  "peerDependencies": {
54
39
  "astro": "^6.0.0",
55
40
  "@growth-labs/analytics": "^0.1.0"
@@ -71,6 +56,7 @@
71
56
  },
72
57
  "scripts": {
73
58
  "build": "tsc",
59
+ "check": "biome check src/",
74
60
  "test": "vitest run",
75
61
  "test:watch": "vitest"
76
62
  }