@hanzo/iam 0.9.0 → 0.9.2
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.
- package/dist/auth.cjs +111 -0
- package/dist/auth.cjs.map +1 -0
- package/dist/auth.d.cts +19 -0
- package/dist/auth.d.ts +7 -4
- package/dist/auth.js +94 -121
- package/dist/auth.js.map +1 -1
- package/dist/betterauth.cjs +34 -0
- package/dist/betterauth.cjs.map +1 -0
- package/dist/betterauth.d.cts +64 -0
- package/dist/betterauth.d.ts +8 -11
- package/dist/betterauth.js +28 -62
- package/dist/betterauth.js.map +1 -1
- package/dist/billing.cjs +8 -0
- package/dist/billing.cjs.map +1 -0
- package/dist/billing.d.cts +2 -0
- package/dist/billing.d.ts +2 -16
- package/dist/billing.js +5 -17
- package/dist/billing.js.map +1 -1
- package/dist/browser.cjs +680 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +217 -0
- package/dist/browser.d.ts +10 -7
- package/dist/browser.js +645 -663
- package/dist/browser.js.map +1 -1
- package/dist/index.cjs +1087 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{client.d.ts → index.d.cts} +23 -4
- package/dist/index.d.ts +86 -23
- package/dist/index.js +1077 -29
- package/dist/index.js.map +1 -1
- package/dist/nextauth.cjs +35 -0
- package/dist/nextauth.cjs.map +1 -0
- package/dist/nextauth.d.cts +55 -0
- package/dist/nextauth.d.ts +5 -8
- package/dist/nextauth.js +30 -66
- package/dist/nextauth.js.map +1 -1
- package/dist/passport.cjs +47 -0
- package/dist/passport.cjs.map +1 -0
- package/dist/passport.d.cts +50 -0
- package/dist/passport.d.ts +13 -7
- package/dist/passport.js +39 -65
- package/dist/passport.js.map +1 -1
- package/dist/react.cjs +1434 -0
- package/dist/react.cjs.map +1 -0
- package/dist/react.d.cts +133 -0
- package/dist/react.d.ts +18 -50
- package/dist/react.js +1399 -494
- package/dist/react.js.map +1 -1
- package/dist/types.cjs +4 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +219 -0
- package/dist/types.d.ts +25 -24
- package/dist/types.js +2 -5
- package/dist/types.js.map +1 -1
- package/package.json +28 -15
- package/src/betterauth.ts +1 -1
- package/src/nextauth.ts +1 -1
- package/src/passport.ts +7 -10
- package/dist/auth.d.ts.map +0 -1
- package/dist/betterauth.d.ts.map +0 -1
- package/dist/billing.d.ts.map +0 -1
- package/dist/browser.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -292
- package/dist/client.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/nextauth.d.ts.map +0 -1
- package/dist/passport.d.ts.map +0 -1
- package/dist/pkce.d.ts +0 -13
- package/dist/pkce.d.ts.map +0 -1
- package/dist/pkce.js +0 -36
- package/dist/pkce.js.map +0 -1
- package/dist/react.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/dist/passport.js
CHANGED
|
@@ -1,67 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// passReqToCallback=true: (req, accessToken, refreshToken, profile, done)
|
|
38
|
-
const accessToken = args[1];
|
|
39
|
-
const refreshToken = args[2];
|
|
40
|
-
const done = args[4];
|
|
41
|
-
try {
|
|
42
|
-
const res = await fetch(`${baseUrl}/oauth/userinfo`, {
|
|
43
|
-
headers: { Authorization: `Bearer ${accessToken}` },
|
|
44
|
-
});
|
|
45
|
-
if (!res.ok) {
|
|
46
|
-
return done(new Error(`IAM userinfo failed: ${res.status}`));
|
|
47
|
-
}
|
|
48
|
-
const userinfo = (await res.json());
|
|
49
|
-
done(null, { accessToken, refreshToken, userinfo });
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
done(err instanceof Error ? err : new Error(String(err)));
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
return new OAuth2Strategy({
|
|
56
|
-
authorizationURL: `${baseUrl}/oauth/authorize`,
|
|
57
|
-
tokenURL: `${baseUrl}/oauth/token`,
|
|
58
|
-
clientID: config.clientId,
|
|
59
|
-
clientSecret: config.clientSecret ?? "",
|
|
60
|
-
callbackURL: config.callbackUrl,
|
|
61
|
-
scope: config.scope ?? "openid profile email",
|
|
62
|
-
state: true,
|
|
63
|
-
pkce: true,
|
|
64
|
-
passReqToCallback: true,
|
|
65
|
-
}, verify);
|
|
1
|
+
import OAuth2Strategy from 'passport-oauth2';
|
|
2
|
+
|
|
3
|
+
// src/passport.ts
|
|
4
|
+
function createIamPassportStrategy(config) {
|
|
5
|
+
const baseUrl = config.serverUrl.replace(/\/+$/, "");
|
|
6
|
+
const verify = async (...args) => {
|
|
7
|
+
const accessToken = args[1];
|
|
8
|
+
const refreshToken = args[2];
|
|
9
|
+
const done = args[4];
|
|
10
|
+
try {
|
|
11
|
+
const res = await fetch(`${baseUrl}/oauth/userinfo`, {
|
|
12
|
+
headers: { Authorization: `Bearer ${accessToken}` }
|
|
13
|
+
});
|
|
14
|
+
if (!res.ok) {
|
|
15
|
+
return done(new Error(`IAM userinfo failed: ${res.status}`));
|
|
16
|
+
}
|
|
17
|
+
const userinfo = await res.json();
|
|
18
|
+
done(null, { accessToken, refreshToken, userinfo });
|
|
19
|
+
} catch (err) {
|
|
20
|
+
done(err instanceof Error ? err : new Error(String(err)));
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
return new OAuth2Strategy(
|
|
24
|
+
{
|
|
25
|
+
authorizationURL: `${baseUrl}/oauth/authorize`,
|
|
26
|
+
tokenURL: `${baseUrl}/oauth/token`,
|
|
27
|
+
clientID: config.clientId,
|
|
28
|
+
clientSecret: config.clientSecret ?? "",
|
|
29
|
+
callbackURL: config.callbackUrl,
|
|
30
|
+
scope: config.scope ?? "openid profile email",
|
|
31
|
+
state: true,
|
|
32
|
+
pkce: true,
|
|
33
|
+
passReqToCallback: true
|
|
34
|
+
},
|
|
35
|
+
verify
|
|
36
|
+
);
|
|
66
37
|
}
|
|
38
|
+
|
|
39
|
+
export { createIamPassportStrategy };
|
|
40
|
+
//# sourceMappingURL=passport.js.map
|
|
67
41
|
//# sourceMappingURL=passport.js.map
|
package/dist/passport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/passport.ts"],"names":[],"mappings":";;;AAmDO,SAAS,0BACd,MAAA,EACS;AAET,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,SAAA,CAAU,OAAA,CAAQ,QAAQ,EAAE,CAAA;AAEnD,EAAA,MAAM,MAAA,GAAS,UACV,IAAA,KACe;AAElB,IAAA,MAAM,WAAA,GAAc,KAAK,CAAC,CAAA;AAC1B,IAAA,MAAM,YAAA,GAAe,KAAK,CAAC,CAAA;AAC3B,IAAA,MAAM,IAAA,GAAO,KAAK,CAAC,CAAA;AAEnB,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,eAAA,CAAA,EAAmB;AAAA,QACnD,OAAA,EAAS,EAAE,aAAA,EAAe,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA;AAAG,OACnD,CAAA;AACD,MAAA,IAAI,CAAC,IAAI,EAAA,EAAI;AACX,QAAA,OAAO,KAAK,IAAI,KAAA,CAAM,wBAAwB,GAAA,CAAI,MAAM,EAAE,CAAC,CAAA;AAAA,MAC7D;AACA,MAAA,MAAM,QAAA,GAAY,MAAM,GAAA,CAAI,IAAA,EAAK;AACjC,MAAA,IAAA,CAAK,IAAA,EAAM,EAAE,WAAA,EAAa,YAAA,EAAc,UAAU,CAAA;AAAA,IACpD,SAAS,GAAA,EAAK;AACZ,MAAA,IAAA,CAAK,GAAA,YAAe,QAAQ,GAAA,GAAM,IAAI,MAAM,MAAA,CAAO,GAAG,CAAC,CAAC,CAAA;AAAA,IAC1D;AAAA,EACF,CAAA;AAEA,EAAA,OAAO,IAAI,cAAA;AAAA,IACT;AAAA,MACE,gBAAA,EAAkB,GAAG,OAAO,CAAA,gBAAA,CAAA;AAAA,MAC5B,QAAA,EAAU,GAAG,OAAO,CAAA,YAAA,CAAA;AAAA,MACpB,UAAU,MAAA,CAAO,QAAA;AAAA,MACjB,YAAA,EAAc,OAAO,YAAA,IAAgB,EAAA;AAAA,MACrC,aAAa,MAAA,CAAO,WAAA;AAAA,MACpB,KAAA,EAAO,OAAO,KAAA,IAAS,sBAAA;AAAA,MACvB,KAAA,EAAO,IAAA;AAAA,MACP,IAAA,EAAM,IAAA;AAAA,MACN,iBAAA,EAAmB;AAAA,KACrB;AAAA,IACA;AAAA,GACF;AACF","file":"passport.js","sourcesContent":["/**\n * Passport.js OAuth2 strategy factory for Hanzo IAM.\n *\n * Creates a pre-configured passport-oauth2 strategy that authenticates\n * against hanzo.id with PKCE and fetches user info on callback.\n *\n * @example\n * ```ts\n * import passport from \"passport\";\n * import { createIamPassportStrategy } from \"@hanzo/iam/passport\";\n *\n * passport.use(\"iam\", createIamPassportStrategy({\n * serverUrl: \"https://hanzo.id\",\n * clientId: \"hanzo-kms-client-id\",\n * clientSecret: process.env.IAM_CLIENT_SECRET!,\n * callbackUrl: \"https://kms.hanzo.ai/api/v1/sso/oidc/callback\",\n * }));\n * ```\n *\n * @packageDocumentation\n */\n\nimport OAuth2Strategy from \"passport-oauth2\";\n\nimport type { IamConfig } from \"./types.js\";\n\nexport interface IamPassportConfig extends IamConfig {\n /** Full callback URL for OAuth2 redirect. */\n callbackUrl: string;\n /** OAuth2 scopes. Default: \"openid profile email\". */\n scope?: string;\n}\n\nexport interface IamPassportUser {\n accessToken: string;\n refreshToken?: string;\n userinfo: Record<string, unknown>;\n}\n\n/**\n * Create a Passport OAuth2 strategy for Hanzo IAM.\n *\n * Returns an OAuth2Strategy instance ready to pass to `passport.use()`.\n * The verify callback fetches userinfo from the IAM server and passes\n * `{ accessToken, refreshToken, userinfo }` as the user object.\n *\n * `passport-oauth2` is a runtime dependency of this entry — using a\n * static import lets downstream bundlers (esbuild, webpack, etc.)\n * statically resolve and bundle it. Consumers who don't need passport\n * can import from `@hanzo/iam` directly to avoid pulling it in.\n */\nexport function createIamPassportStrategy(\n config: IamPassportConfig,\n): unknown {\n\n const baseUrl = config.serverUrl.replace(/\\/+$/, \"\");\n\n const verify = async (\n ...args: unknown[]\n ): Promise<void> => {\n // passReqToCallback=true: (req, accessToken, refreshToken, profile, done)\n const accessToken = args[1] as string;\n const refreshToken = args[2] as string | undefined;\n const done = args[4] as (err: Error | null, user?: IamPassportUser) => void;\n\n try {\n const res = await fetch(`${baseUrl}/oauth/userinfo`, {\n headers: { Authorization: `Bearer ${accessToken}` },\n });\n if (!res.ok) {\n return done(new Error(`IAM userinfo failed: ${res.status}`));\n }\n const userinfo = (await res.json()) as Record<string, unknown>;\n done(null, { accessToken, refreshToken, userinfo });\n } catch (err) {\n done(err instanceof Error ? err : new Error(String(err)));\n }\n };\n\n return new OAuth2Strategy(\n {\n authorizationURL: `${baseUrl}/oauth/authorize`,\n tokenURL: `${baseUrl}/oauth/token`,\n clientID: config.clientId,\n clientSecret: config.clientSecret ?? \"\",\n callbackURL: config.callbackUrl,\n scope: config.scope ?? \"openid profile email\",\n state: true,\n pkce: true,\n passReqToCallback: true,\n },\n verify,\n );\n}\n"]}
|