base-idp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/vite.d.ts CHANGED
@@ -1,6 +1,50 @@
1
- import type { ReactBaseIdpAuth } from "./react.js";
2
- import type { BaseIdPConfig } from "./types.js";
1
+ /**
2
+ * Vite integration for the Base IdP SDK.
3
+ *
4
+ * Returns a full BrowserBaseIdpClient so Vite/browser apps get the complete
5
+ * auth flow: PKCE, callback handling, session management, and token refresh.
6
+ *
7
+ * PKCE public clients only — if the discovered client is confidential
8
+ * (requires a client_secret), loginWithRedirect() will throw and direct the
9
+ * app to use a backend callback route instead.
10
+ */
11
+ import { BrowserBaseIdpClient } from "./browser.js";
12
+ import type { BrowserBaseIdpConfig } from "./types.js";
3
13
  export type ViteBaseIdpEnv = Record<string, string | boolean | undefined>;
4
- export declare function baseIdpConfigFromViteEnv(env: ViteBaseIdpEnv, overrides?: Partial<BaseIdPConfig>): BaseIdPConfig;
5
- export declare function createViteBaseIdpAuth(env: ViteBaseIdpEnv, overrides?: Partial<BaseIdPConfig>): ReactBaseIdpAuth;
14
+ /**
15
+ * Build a BrowserBaseIdpConfig from Vite's import.meta.env (or a plain
16
+ * Record). Reads VITE_BASE_IDP_* first, falls back to BASE_IDP_*.
17
+ *
18
+ * Never reads BASE_IDP_CLIENT_SECRET — secrets must never appear in
19
+ * browser bundles.
20
+ */
21
+ export declare function baseIdpConfigFromViteEnv(env: ViteBaseIdpEnv, overrides?: Partial<BrowserBaseIdpConfig>): BrowserBaseIdpConfig;
22
+ /**
23
+ * Create a full-featured browser auth client from Vite's import.meta.env.
24
+ *
25
+ * Returns a BrowserBaseIdpClient — the same object used by
26
+ * createBrowserBaseIdpAuth() — so the app gets PKCE, callback handling,
27
+ * session management, auto-refresh, and onSessionChange events.
28
+ *
29
+ * @example
30
+ * // src/auth.ts
31
+ * import { createViteBaseIdpAuth } from "base-idp/vite";
32
+ * export const auth = createViteBaseIdpAuth(import.meta.env);
33
+ *
34
+ * // main.tsx — on app load
35
+ * await auth.init();
36
+ *
37
+ * // If this page is the OAuth callback
38
+ * if (window.location.search.includes("code=")) {
39
+ * const { principal, returnTo } = await auth.handleRedirectCallback();
40
+ * window.history.replaceState({}, "", returnTo ?? "/");
41
+ * }
42
+ *
43
+ * // Start login
44
+ * await auth.loginWithRedirect({ returnTo: "/dashboard" });
45
+ *
46
+ * // Get the current user synchronously
47
+ * const user = auth.getUser();
48
+ */
49
+ export declare function createViteBaseIdpAuth(env: ViteBaseIdpEnv, overrides?: Partial<BrowserBaseIdpConfig>): BrowserBaseIdpClient;
6
50
  //# sourceMappingURL=vite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAE1E,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,cAAc,EACnB,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GACrC,aAAa,CAOf;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,cAAc,EACnB,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GACrC,gBAAgB,CAElB"}
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAA4B,MAAM,cAAc,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,cAAc,EACnB,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,oBAAoB,CAetB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,cAAc,EACnB,SAAS,GAAE,OAAO,CAAC,oBAAoB,CAAM,GAC5C,oBAAoB,CAEtB"}
package/dist/vite.js CHANGED
@@ -1,20 +1,73 @@
1
- import { BaseIdPClient } from "./client.js";
2
- import { createReactBaseIdpAuth } from "./react.js";
1
+ /**
2
+ * Vite integration for the Base IdP SDK.
3
+ *
4
+ * Returns a full BrowserBaseIdpClient so Vite/browser apps get the complete
5
+ * auth flow: PKCE, callback handling, session management, and token refresh.
6
+ *
7
+ * PKCE public clients only — if the discovered client is confidential
8
+ * (requires a client_secret), loginWithRedirect() will throw and direct the
9
+ * app to use a backend callback route instead.
10
+ */
11
+ import { BrowserBaseIdpClient, createBrowserBaseIdpAuth } from "./browser.js";
12
+ /**
13
+ * Build a BrowserBaseIdpConfig from Vite's import.meta.env (or a plain
14
+ * Record). Reads VITE_BASE_IDP_* first, falls back to BASE_IDP_*.
15
+ *
16
+ * Never reads BASE_IDP_CLIENT_SECRET — secrets must never appear in
17
+ * browser bundles.
18
+ */
3
19
  export function baseIdpConfigFromViteEnv(env, overrides = {}) {
4
20
  return {
5
21
  key: stringEnv(env, "VITE_BASE_IDP_KEY", "BASE_IDP_KEY", overrides.key),
6
22
  issuer: stringEnv(env, "VITE_BASE_IDP_ISSUER", "BASE_IDP_ISSUER", overrides.issuer),
7
- secret: overrides.secret ?? optionalStringEnv(env, "VITE_BASE_IDP_SECRET", "BASE_IDP_SECRET"),
23
+ // Never read a client secret browser clients are always public
24
+ redirectUri: overrides.redirectUri ??
25
+ optionalStringEnv(env, "VITE_BASE_IDP_REDIRECT_URI", "BASE_IDP_REDIRECT_URI"),
26
+ scopes: overrides.scopes ??
27
+ optionalStringEnv(env, "VITE_BASE_IDP_SCOPES", "BASE_IDP_SCOPES"),
28
+ audience: overrides.audience ??
29
+ optionalStringEnv(env, "VITE_BASE_IDP_AUDIENCE", "BASE_IDP_AUDIENCE"),
30
+ persistSession: overrides.persistSession ?? false,
31
+ storagePrefix: overrides.storagePrefix,
8
32
  fetch: overrides.fetch,
9
33
  };
10
34
  }
35
+ /**
36
+ * Create a full-featured browser auth client from Vite's import.meta.env.
37
+ *
38
+ * Returns a BrowserBaseIdpClient — the same object used by
39
+ * createBrowserBaseIdpAuth() — so the app gets PKCE, callback handling,
40
+ * session management, auto-refresh, and onSessionChange events.
41
+ *
42
+ * @example
43
+ * // src/auth.ts
44
+ * import { createViteBaseIdpAuth } from "base-idp/vite";
45
+ * export const auth = createViteBaseIdpAuth(import.meta.env);
46
+ *
47
+ * // main.tsx — on app load
48
+ * await auth.init();
49
+ *
50
+ * // If this page is the OAuth callback
51
+ * if (window.location.search.includes("code=")) {
52
+ * const { principal, returnTo } = await auth.handleRedirectCallback();
53
+ * window.history.replaceState({}, "", returnTo ?? "/");
54
+ * }
55
+ *
56
+ * // Start login
57
+ * await auth.loginWithRedirect({ returnTo: "/dashboard" });
58
+ *
59
+ * // Get the current user synchronously
60
+ * const user = auth.getUser();
61
+ */
11
62
  export function createViteBaseIdpAuth(env, overrides = {}) {
12
- return createReactBaseIdpAuth(new BaseIdPClient(baseIdpConfigFromViteEnv(env, overrides)));
63
+ return createBrowserBaseIdpAuth(baseIdpConfigFromViteEnv(env, overrides));
13
64
  }
65
+ // ── Private helpers ─────────────────────────────────────────────────────────
14
66
  function stringEnv(env, publicKey, fallbackKey, fallback) {
15
67
  const value = optionalStringEnv(env, publicKey, fallbackKey) ?? fallback;
16
- if (!value)
17
- throw new Error(`Missing ${publicKey}`);
68
+ if (!value) {
69
+ throw new Error(`Base IdP: ${publicKey} is required. Set it in your .env file or pass it as an override.`);
70
+ }
18
71
  return value;
19
72
  }
20
73
  function optionalStringEnv(env, publicKey, fallbackKey) {
package/dist/vite.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMpD,MAAM,UAAU,wBAAwB,CACtC,GAAmB,EACnB,YAAoC,EAAE;IAEtC,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC;QACvE,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC;QACnF,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;QAC7F,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAmB,EACnB,YAAoC,EAAE;IAEtC,OAAO,sBAAsB,CAAC,IAAI,aAAa,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,SAAS,CAAC,GAAmB,EAAE,SAAiB,EAAE,WAAmB,EAAE,QAAiB;IAC/F,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC;IACzE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAmB,EAAE,SAAiB,EAAE,WAAmB;IACpF,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC"}
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAK9E;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAmB,EACnB,YAA2C,EAAE;IAE7C,OAAO;QACL,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,mBAAmB,EAAE,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC;QACvE,MAAM,EAAE,SAAS,CAAC,GAAG,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC;QACnF,iEAAiE;QACjE,WAAW,EAAE,SAAS,CAAC,WAAW;YAChC,iBAAiB,CAAC,GAAG,EAAE,4BAA4B,EAAE,uBAAuB,CAAC;QAC/E,MAAM,EAAE,SAAS,CAAC,MAAM;YACtB,iBAAiB,CAAC,GAAG,EAAE,sBAAsB,EAAE,iBAAiB,CAAC;QACnE,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC1B,iBAAiB,CAAC,GAAG,EAAE,wBAAwB,EAAE,mBAAmB,CAAC;QACvE,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,KAAK;QACjD,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAmB,EACnB,YAA2C,EAAE;IAE7C,OAAO,wBAAwB,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,+EAA+E;AAE/E,SAAS,SAAS,CAChB,GAAmB,EACnB,SAAiB,EACjB,WAAmB,EACnB,QAAiB;IAEjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,IAAI,QAAQ,CAAC;IACzE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,aAAa,SAAS,mEAAmE,CAC1F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAmB,EACnB,SAAiB,EACjB,WAAmB;IAEnB,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "base-idp",
3
- "version": "1.0.0",
4
- "description": "Base IdP SDK for React, Next.js, SvelteKit, Vite, and server-side TypeScript.",
3
+ "version": "1.1.0",
4
+ "description": "Base IdP SDK — browser Client SDK and server SDK for React, Next.js, SvelteKit, Vite, Express, NestJS, and raw Node.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
7
7
  "publishConfig": {
@@ -13,13 +13,17 @@
13
13
  "README.md"
14
14
  ],
15
15
  "bin": {
16
- "base-idp": "./dist/cli.js"
16
+ "base-idp": "dist/cli.js"
17
17
  },
18
18
  "exports": {
19
19
  ".": {
20
20
  "types": "./dist/index.d.ts",
21
21
  "import": "./dist/index.js"
22
22
  },
23
+ "./browser": {
24
+ "types": "./dist/browser.d.ts",
25
+ "import": "./dist/browser.js"
26
+ },
23
27
  "./server": {
24
28
  "types": "./dist/server.d.ts",
25
29
  "import": "./dist/server.js"
@@ -53,8 +57,17 @@
53
57
  "engines": {
54
58
  "node": ">=20"
55
59
  },
60
+ "peerDependencies": {
61
+ "react": ">=18"
62
+ },
63
+ "peerDependenciesMeta": {
64
+ "react": {
65
+ "optional": true
66
+ }
67
+ },
56
68
  "devDependencies": {
57
69
  "@types/node": "^22.13.10",
70
+ "@types/react": "^18.3.0",
58
71
  "typescript": "^5.8.2"
59
72
  }
60
73
  }