@gaballahtech/seba 0.2.1 → 0.5.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.
Files changed (76) hide show
  1. package/ARCHITECTURE.md +4 -2
  2. package/CHANGELOG.md +130 -0
  3. package/MIGRATION.md +60 -0
  4. package/README.md +174 -8
  5. package/SECURITY.md +1 -1
  6. package/assets/seba-icon-favicon.png +0 -0
  7. package/assets/seba-icon-solid.png +0 -0
  8. package/assets/seba-logo-inverse.png +0 -0
  9. package/assets/seba-logo-monochrome.png +0 -0
  10. package/assets/seba-logo-primary.png +0 -0
  11. package/dist/assets/icons.d.ts +32 -0
  12. package/dist/assets/icons.d.ts.map +1 -0
  13. package/dist/assets/icons.js +30 -0
  14. package/dist/assets/icons.js.map +1 -0
  15. package/dist/assets/png-data.d.ts +8 -0
  16. package/dist/assets/png-data.d.ts.map +1 -0
  17. package/dist/assets/png-data.js +13 -0
  18. package/dist/assets/png-data.js.map +1 -0
  19. package/dist/browser/platform.d.ts +6 -0
  20. package/dist/browser/platform.d.ts.map +1 -1
  21. package/dist/browser/platform.js +17 -0
  22. package/dist/browser/platform.js.map +1 -1
  23. package/dist/browser/storage.d.ts +3 -2
  24. package/dist/browser/storage.d.ts.map +1 -1
  25. package/dist/browser/storage.js +26 -14
  26. package/dist/browser/storage.js.map +1 -1
  27. package/dist/cli.d.ts +61 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +223 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/core/client.d.ts +18 -8
  32. package/dist/core/client.d.ts.map +1 -1
  33. package/dist/core/client.js +130 -6
  34. package/dist/core/client.js.map +1 -1
  35. package/dist/core/errors.d.ts +10 -1
  36. package/dist/core/errors.d.ts.map +1 -1
  37. package/dist/core/errors.js +7 -2
  38. package/dist/core/errors.js.map +1 -1
  39. package/dist/core/events.d.ts +27 -0
  40. package/dist/core/events.d.ts.map +1 -0
  41. package/dist/core/events.js +45 -0
  42. package/dist/core/events.js.map +1 -0
  43. package/dist/core/http.d.ts.map +1 -1
  44. package/dist/core/http.js +6 -1
  45. package/dist/core/http.js.map +1 -1
  46. package/dist/core/oidc.d.ts +17 -7
  47. package/dist/core/oidc.d.ts.map +1 -1
  48. package/dist/core/oidc.js +76 -27
  49. package/dist/core/oidc.js.map +1 -1
  50. package/dist/core/session.d.ts +10 -3
  51. package/dist/core/session.d.ts.map +1 -1
  52. package/dist/core/session.js +131 -20
  53. package/dist/core/session.js.map +1 -1
  54. package/dist/element.d.ts +43 -0
  55. package/dist/element.d.ts.map +1 -0
  56. package/dist/element.js +416 -0
  57. package/dist/element.js.map +1 -0
  58. package/dist/index.d.ts +6 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +3 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/pod.d.ts +50 -0
  63. package/dist/pod.d.ts.map +1 -0
  64. package/dist/pod.js +264 -0
  65. package/dist/pod.js.map +1 -0
  66. package/dist/react/index.d.ts +52 -0
  67. package/dist/react/index.d.ts.map +1 -0
  68. package/dist/react/index.js +87 -0
  69. package/dist/react/index.js.map +1 -0
  70. package/dist/seba.d.ts +40 -1
  71. package/dist/seba.d.ts.map +1 -1
  72. package/dist/seba.js +90 -2
  73. package/dist/seba.js.map +1 -1
  74. package/dist/types.d.ts +140 -6
  75. package/dist/types.d.ts.map +1 -1
  76. package/package.json +27 -1
package/dist/types.d.ts CHANGED
@@ -33,8 +33,10 @@ export interface SebaConfig {
33
33
  * Session storage backend. Defaults to `"indexeddb"` in browsers and
34
34
  * `"memory"` in Node.js.
35
35
  *
36
- * `"indexeddb"` persists only the refresh token, the DPoP private key and
37
- * non-secret session metadata. Access tokens are never persisted.
36
+ * `"indexeddb"` persists the refresh token, the DPoP private key and non-secret
37
+ * session metadata. If the provider issues no refresh token, the access token is
38
+ * persisted as well (soft-persist) so a reload can resume the session until it
39
+ * expires; refresh-token sessions never persist an access token.
38
40
  */
39
41
  storage?: StorageKind;
40
42
  /**
@@ -52,6 +54,90 @@ export interface SebaConfig {
52
54
  * {@link Seba.login} throws a `SebaNoUIError`.
53
55
  */
54
56
  openAuthorizationUrl?: (url: string) => void | Promise<void>;
57
+ /**
58
+ * Opt-in escape hatch for non-compliant Solid providers (see Security guide).
59
+ *
60
+ * Solid-OIDC §8.1 requires `"solid"` in the ID token `aud` claim when the provider
61
+ * advertises the `webid` scope. Some real-world providers (e.g. `solidcommunity.net`)
62
+ * issue `aud` as a plain string without `"solid"`. When `true`, Seba accepts such
63
+ * tokens, but only the `"solid"` audience requirement is relaxed — signature
64
+ * verification, `iss`, `exp`/`iat`, `nonce`, `cnf.jkt` and the `client_id` audience
65
+ * check are all still enforced.
66
+ *
67
+ * @default false
68
+ * @example
69
+ * ```ts
70
+ * const seba = new Seba({
71
+ * clientId: "...",
72
+ * redirectUri: "...",
73
+ * allowNonCompliantAudience: true, // only for known-broken providers
74
+ * });
75
+ * ```
76
+ */
77
+ allowNonCompliantAudience?: boolean;
78
+ /**
79
+ * Opt-in escape hatch for non-compliant Solid providers (see Security guide).
80
+ *
81
+ * Solid-OIDC §8.1 requires the ID token to carry a `cnf` claim with a `jkt` member
82
+ * binding it to the DPoP key when the provider advertises the `webid` scope. Some
83
+ * real-world providers (e.g. `solidcommunity.net`) omit `cnf.jkt` from the ID token
84
+ * while still issuing DPoP-bound access tokens. When `true`, the `cnf.jkt` presence
85
+ * requirement is relaxed for such ID tokens — everything else stays enforced: DPoP
86
+ * proofs are still signed and required on every request, an ID token that DOES carry
87
+ * `cnf.jkt` is still checked against the session key, and signature verification,
88
+ * `iss`, `exp`/`iat`, `nonce`, `azp` and the `client_id` audience check all remain on.
89
+ *
90
+ * @default false
91
+ */
92
+ allowNonCompliantCnf?: boolean;
93
+ /**
94
+ * Compliance relaxations keyed by provider issuer URL, applied only when the login
95
+ * targets that exact issuer (compared after normalizing an optional trailing slash).
96
+ * Entries override the global boolean flags for that provider, and providers NOT
97
+ * listed keep full strict validation — prefer this over the global flags whenever
98
+ * the application talks to more than one provider.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * tolerances: {
103
+ * "https://solidcommunity.net/": { allowNonCompliantAudience: true, allowNonCompliantCnf: true },
104
+ * }
105
+ * ```
106
+ */
107
+ tolerances?: Record<string, ComplianceTolerances>;
108
+ /**
109
+ * How many `use_dpop_nonce` challenges the token endpoint may issue before SEBA
110
+ * gives up. Each retry signs a brand-new DPoP proof with the fresh nonce. The
111
+ * resource-fetch path applies the same count. Providers that rotate nonces on
112
+ * every request benefit from 2–3.
113
+ *
114
+ * @defaultValue 1
115
+ */
116
+ maxDpopNonceRetries?: number;
117
+ /**
118
+ * Storage namespace enabling more than one concurrent session in the same browser
119
+ * profile (multi-account). Each distinct account value gets its own IndexedDB
120
+ * database (`seba:<account>`) and sessionStorage transaction key, so two `Seba`
121
+ * instances with different accounts do not overwrite each other. Node.js sessions
122
+ * are already per-instance in memory.
123
+ *
124
+ * @defaultValue undefined (single unnamed session, as in earlier releases)
125
+ */
126
+ account?: string;
127
+ }
128
+ /** Relaxations for a single provider, used by {@link SebaConfig.tolerances}. */
129
+ export interface ComplianceTolerances {
130
+ /** Relax the `"solid"` ID-token audience requirement for this provider. */
131
+ allowNonCompliantAudience?: boolean;
132
+ /** Relax the `cnf.jkt` presence requirement on this provider's ID tokens. */
133
+ allowNonCompliantCnf?: boolean;
134
+ }
135
+ /** Token-free snapshot of session state, safe to render or log. */
136
+ export interface SessionInfo {
137
+ webId: string;
138
+ provider: string;
139
+ /** Access token expiry (epoch milliseconds), or `null` when unknown. */
140
+ accessTokenExpiresAt: number | null;
55
141
  }
56
142
  /** Optional identity hints for {@link Seba.login}. */
57
143
  export interface LoginOptions {
@@ -73,11 +159,30 @@ export interface Session {
73
159
  /** Identity provider issuer URL that was validated for this session. */
74
160
  provider: string;
75
161
  }
162
+ /** Why a session changed. */
163
+ export type SessionChangeReason = "login" | "logout" | "restore" | "expired";
164
+ /**
165
+ * Emitted after every session transition.
166
+ *
167
+ * `expired` fires at most once per session, the first time SEBA determines that the
168
+ * session cannot continue (revoked grant, expired stored token with no refresh token,
169
+ * or an access token rejected with no way to renew it). It is also emitted with
170
+ * `session: null`.
171
+ */
172
+ export interface SessionChangeEvent {
173
+ /** Transition that just happened. */
174
+ readonly reason: SessionChangeReason;
175
+ /** Session after the transition, or `null` after logout/expiry. */
176
+ readonly session: Session | null;
177
+ }
178
+ /** Listener accepted by `onSessionChange`. */
179
+ export type SessionChangeListener = (event: SessionChangeEvent) => void;
76
180
  /**
77
181
  * A token response that passed validation.
78
182
  *
79
- * Access tokens are held in memory only — never persisted or exposed by the
80
- * public API.
183
+ * Access tokens are never exposed by the public API. They stay in memory, except
184
+ * when the provider issues no refresh token: then the access token is persisted so
185
+ * a reload can resume the session until it expires.
81
186
  */
82
187
  export interface TokenSet {
83
188
  /** DPoP-bound access token. In memory only. */
@@ -139,6 +244,26 @@ export interface OIDCConfiguration {
139
244
  scopesSupported?: string[];
140
245
  /** Grant types advertised by the provider, when present. */
141
246
  grantTypesSupported?: string[];
247
+ /**
248
+ * Opt-in escape hatch for non-compliant Solid providers (see SECURITY.md).
249
+ *
250
+ * When `true`, the `"solid"` requirement in the ID token `aud` claim is relaxed for
251
+ * providers that violate Solid-OIDC §8.1 (e.g. `solidcommunity.net`). Everything else
252
+ * stays enforced: signature, `iss`, `exp`/`iat`, `nonce`, `cnf.jkt`, and the
253
+ * `client_id` audience check. Default `false`.
254
+ */
255
+ allowNonCompliantAudience?: boolean;
256
+ /**
257
+ * Opt-in escape hatch for non-compliant Solid providers (see SECURITY.md).
258
+ *
259
+ * When `true`, the `cnf.jkt` presence requirement on the ID token is relaxed for
260
+ * providers whose ID tokens carry no DPoP binding while the provider still issues
261
+ * DPoP-bound access tokens (e.g. `solidcommunity.net`). DPoP proofs remain mandatory
262
+ * on every request, an ID token that DOES carry `cnf.jkt` is still checked against
263
+ * the session key, and signature, `iss`, `exp`/`iat`, `nonce` and the `client_id`
264
+ * audience check all stay enforced. Default `false`.
265
+ */
266
+ allowNonCompliantCnf?: boolean;
142
267
  }
143
268
  /** A validated Solid Client ID Document. */
144
269
  export interface ClientIDDocument {
@@ -182,8 +307,17 @@ export interface PersistedSession {
182
307
  provider: string;
183
308
  /** Client identifier the session was created for. */
184
309
  clientId: string;
185
- /** Refresh token. Never an access token. */
186
- refreshToken: string;
310
+ /** Refresh token, when the provider issued one. */
311
+ refreshToken?: string;
312
+ /**
313
+ * Access token, stored only when the provider issued no refresh token so that
314
+ * {@link Seba.restoreSession} can resume the session until it expires.
315
+ */
316
+ accessToken?: string;
317
+ /** Expiry of the stored access token (epoch ms), or `null` when unknown. */
318
+ accessTokenExpiresAt?: number | null;
319
+ /** `sub` claim, when known. */
320
+ subject?: string;
187
321
  /** DPoP private key bound to the refresh token. */
188
322
  key: PersistedKey;
189
323
  /** Granted scopes, when known. */
@@ -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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaballahtech/seba",
3
- "version": "0.2.1",
3
+ "version": "0.5.0",
4
4
  "description": "Developer-friendly Solid-OIDC authentication: login, session restoration and DPoP-signed fetch in four methods.",
5
5
  "license": "MIT",
6
6
  "author": "gaballahtech",
@@ -17,26 +17,41 @@
17
17
  "module": "./dist/index.js",
18
18
  "types": "./dist/index.d.ts",
19
19
  "sideEffects": false,
20
+ "browser": {
21
+ "./dist/node/index.js": false,
22
+ "./dist/node/platform.js": false
23
+ },
20
24
  "exports": {
21
25
  ".": {
22
26
  "types": "./dist/index.d.ts",
27
+ "browser": "./dist/browser/index.js",
23
28
  "default": "./dist/index.js"
24
29
  },
25
30
  "./browser": {
26
31
  "types": "./dist/browser/index.d.ts",
32
+ "browser": "./dist/browser/index.js",
27
33
  "default": "./dist/browser/index.js"
28
34
  },
29
35
  "./node": {
30
36
  "types": "./dist/node/index.d.ts",
37
+ "node": "./dist/node/index.js",
31
38
  "default": "./dist/node/index.js"
32
39
  },
40
+ "./react": {
41
+ "types": "./dist/react/index.d.ts",
42
+ "import": "./dist/react/index.js",
43
+ "default": "./dist/react/index.js"
44
+ },
45
+ "./assets/*": "./assets/*",
33
46
  "./package.json": "./package.json"
34
47
  },
35
48
  "files": [
36
49
  "dist",
50
+ "assets",
37
51
  "examples",
38
52
  "README.md",
39
53
  "CHANGELOG.md",
54
+ "MIGRATION.md",
40
55
  "BUILD_REPORT.md",
41
56
  "VALIDATION_REPORT.md",
42
57
  "LICENSE",
@@ -70,6 +85,14 @@
70
85
  "idb": "^8.0.3",
71
86
  "jose": "^6.1.0"
72
87
  },
88
+ "peerDependencies": {
89
+ "react": ">=18"
90
+ },
91
+ "peerDependenciesMeta": {
92
+ "react": {
93
+ "optional": true
94
+ }
95
+ },
73
96
  "devDependencies": {
74
97
  "@types/node": "^24.7.0",
75
98
  "@types/react": "^19.3.0",
@@ -81,5 +104,8 @@
81
104
  "typescript": "^5.9.3",
82
105
  "vite": "^8.3.6",
83
106
  "vitest": "^5.1.0"
107
+ },
108
+ "bin": {
109
+ "seba": "./dist/cli.js"
84
110
  }
85
111
  }