@civic/auth 0.0.1-beta.2 → 0.0.1-beta.20

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 (84) hide show
  1. package/README.md +26 -0
  2. package/dist/AuthProvider-Bj_Prt1x.d.ts +21 -0
  3. package/dist/AuthProvider-DUAoX4G9.d.mts +21 -0
  4. package/dist/UserProvider-CMLaYOUD.d.ts +16 -0
  5. package/dist/UserProvider-Cbm8MZkJ.d.mts +16 -0
  6. package/dist/chunk-5UQQYXCX.js +1 -0
  7. package/dist/chunk-5UQQYXCX.js.map +1 -0
  8. package/dist/chunk-BFESCRFK.mjs +118 -0
  9. package/dist/chunk-BFESCRFK.mjs.map +1 -0
  10. package/dist/chunk-CBQ3HKRV.mjs +599 -0
  11. package/dist/chunk-CBQ3HKRV.mjs.map +1 -0
  12. package/dist/chunk-CRTRMMJ7.js.map +1 -1
  13. package/dist/chunk-CZ3AVCKD.js +171 -0
  14. package/dist/chunk-CZ3AVCKD.js.map +1 -0
  15. package/dist/chunk-DJFTZS4P.js +118 -0
  16. package/dist/chunk-DJFTZS4P.js.map +1 -0
  17. package/dist/chunk-HTTTZ2BP.mjs +223 -0
  18. package/dist/chunk-HTTTZ2BP.mjs.map +1 -0
  19. package/dist/chunk-O2SODTR3.js +599 -0
  20. package/dist/chunk-O2SODTR3.js.map +1 -0
  21. package/dist/chunk-O6DPCPRH.js +223 -0
  22. package/dist/chunk-O6DPCPRH.js.map +1 -0
  23. package/dist/chunk-PMJAV4JJ.mjs +1 -0
  24. package/dist/chunk-PMJAV4JJ.mjs.map +1 -0
  25. package/dist/chunk-UADVRCHY.mjs +710 -0
  26. package/dist/chunk-UADVRCHY.mjs.map +1 -0
  27. package/dist/chunk-VJVRFKDH.js +710 -0
  28. package/dist/chunk-VJVRFKDH.js.map +1 -0
  29. package/dist/chunk-X3FQBE22.mjs +171 -0
  30. package/dist/chunk-X3FQBE22.mjs.map +1 -0
  31. package/dist/index.css +63 -70
  32. package/dist/index.css.map +1 -1
  33. package/dist/index.d.mts +3 -1
  34. package/dist/index.d.ts +3 -1
  35. package/dist/index.js +2 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/index.mjs +1 -0
  38. package/dist/nextjs/client.css +335 -0
  39. package/dist/nextjs/client.css.map +1 -0
  40. package/dist/nextjs/client.d.mts +12 -0
  41. package/dist/nextjs/client.d.ts +12 -0
  42. package/dist/nextjs/client.js +179 -0
  43. package/dist/nextjs/client.js.map +1 -0
  44. package/dist/nextjs/client.mjs +179 -0
  45. package/dist/nextjs/client.mjs.map +1 -0
  46. package/dist/nextjs.d.mts +67 -15
  47. package/dist/nextjs.d.ts +67 -15
  48. package/dist/nextjs.js +158 -180
  49. package/dist/nextjs.js.map +1 -1
  50. package/dist/nextjs.mjs +155 -177
  51. package/dist/nextjs.mjs.map +1 -1
  52. package/dist/react.d.mts +31 -81
  53. package/dist/react.d.ts +31 -81
  54. package/dist/react.js +35 -634
  55. package/dist/react.js.map +1 -1
  56. package/dist/react.mjs +65 -664
  57. package/dist/react.mjs.map +1 -1
  58. package/dist/server.d.mts +14 -34
  59. package/dist/server.d.ts +14 -34
  60. package/dist/server.js +4 -185
  61. package/dist/server.js.map +1 -1
  62. package/dist/server.mjs +10 -191
  63. package/dist/server.mjs.map +1 -1
  64. package/dist/storage-B2eAQNdv.d.ts +25 -0
  65. package/dist/storage-BJPUpxhm.d.mts +25 -0
  66. package/dist/types-Bqm9OCZN.d.mts +22 -0
  67. package/dist/types-Bqm9OCZN.d.ts +22 -0
  68. package/dist/types-HdCjGldB.d.mts +58 -0
  69. package/dist/types-HdCjGldB.d.ts +58 -0
  70. package/package.json +26 -17
  71. package/dist/chunk-5NUJ7LFF.mjs +0 -17
  72. package/dist/chunk-5NUJ7LFF.mjs.map +0 -1
  73. package/dist/chunk-KS7ERXGZ.js +0 -481
  74. package/dist/chunk-KS7ERXGZ.js.map +0 -1
  75. package/dist/chunk-NINRO7GS.js +0 -209
  76. package/dist/chunk-NINRO7GS.js.map +0 -1
  77. package/dist/chunk-NXBKSUKI.mjs +0 -481
  78. package/dist/chunk-NXBKSUKI.mjs.map +0 -1
  79. package/dist/chunk-T7HUHQ3J.mjs +0 -209
  80. package/dist/chunk-T7HUHQ3J.mjs.map +0 -1
  81. package/dist/chunk-WZLC5B4C.js +0 -17
  82. package/dist/chunk-WZLC5B4C.js.map +0 -1
  83. package/dist/index-DoDoIY_K.d.mts +0 -79
  84. package/dist/index-DoDoIY_K.d.ts +0 -79
@@ -0,0 +1,223 @@
1
+ import {
2
+ AUTH_SERVER,
3
+ DEFAULT_SCOPES,
4
+ GenericAuthenticationInitiator,
5
+ GenericPublicClientPKCEProducer,
6
+ exchangeTokens,
7
+ getEndpointsWithOverrides,
8
+ retrieveTokens,
9
+ storeTokens
10
+ } from "./chunk-CBQ3HKRV.mjs";
11
+ import {
12
+ __async,
13
+ __spreadProps,
14
+ __spreadValues
15
+ } from "./chunk-RGHW4PYM.mjs";
16
+
17
+ // src/shared/storage.ts
18
+ var DEFAULT_COOKIE_DURATION = 60 * 15;
19
+ var CookieStorage = class {
20
+ constructor(settings = {}) {
21
+ var _a, _b, _c, _d, _e;
22
+ this.settings = {
23
+ httpOnly: (_a = settings.httpOnly) != null ? _a : true,
24
+ secure: (_b = settings.secure) != null ? _b : true,
25
+ // the callback request comes the auth server
26
+ // 'lax' ensures the code_verifier cookie is sent with the request
27
+ sameSite: (_c = settings.sameSite) != null ? _c : "lax",
28
+ expires: (_d = settings.expires) != null ? _d : new Date(Date.now() + 1e3 * DEFAULT_COOKIE_DURATION),
29
+ path: (_e = settings.path) != null ? _e : "/"
30
+ };
31
+ }
32
+ };
33
+
34
+ // src/server/ServerAuthenticationResolver.ts
35
+ import { OAuth2Client } from "oslo/oauth2";
36
+ var ServerAuthenticationResolver = class _ServerAuthenticationResolver {
37
+ constructor(authConfig, storage, endpointOverrides) {
38
+ this.authConfig = authConfig;
39
+ this.storage = storage;
40
+ this.endpointOverrides = endpointOverrides;
41
+ console.log("ServerAuthenticationResolver constructor", {
42
+ authConfig,
43
+ storage,
44
+ endpointOverrides
45
+ });
46
+ this.pkceProducer = new GenericPublicClientPKCEProducer(storage);
47
+ }
48
+ validateExistingSession() {
49
+ throw new Error("Method not implemented.");
50
+ }
51
+ init() {
52
+ return __async(this, null, function* () {
53
+ this.endpoints = yield getEndpointsWithOverrides(
54
+ this.authConfig.oauthServer,
55
+ this.endpointOverrides
56
+ );
57
+ this.oauth2client = new OAuth2Client(
58
+ this.authConfig.clientId,
59
+ this.endpoints.auth,
60
+ this.endpoints.token,
61
+ {
62
+ redirectURI: this.authConfig.redirectUrl
63
+ }
64
+ );
65
+ return this;
66
+ });
67
+ }
68
+ tokenExchange(code, state) {
69
+ return __async(this, null, function* () {
70
+ if (!this.oauth2client) yield this.init();
71
+ const codeVerifier = yield this.pkceProducer.getCodeVerifier();
72
+ if (!codeVerifier) throw new Error("Code verifier not found in storage");
73
+ const tokens = yield exchangeTokens(
74
+ code,
75
+ state,
76
+ this.pkceProducer,
77
+ this.oauth2client,
78
+ // clean up types here to avoid the ! operator
79
+ this.authConfig.oauthServer,
80
+ this.endpoints
81
+ // clean up types here to avoid the ! operator
82
+ );
83
+ storeTokens(this.storage, tokens);
84
+ return tokens;
85
+ });
86
+ }
87
+ getSessionData() {
88
+ return __async(this, null, function* () {
89
+ const storageData = retrieveTokens(this.storage);
90
+ if (!storageData) return null;
91
+ return {
92
+ authenticated: !!storageData.id_token,
93
+ idToken: storageData.id_token,
94
+ accessToken: storageData.access_token,
95
+ refreshToken: storageData.refresh_token
96
+ };
97
+ });
98
+ }
99
+ static build(authConfig, storage, endpointOverrides) {
100
+ return __async(this, null, function* () {
101
+ const resolver = new _ServerAuthenticationResolver(
102
+ authConfig,
103
+ storage,
104
+ endpointOverrides
105
+ );
106
+ yield resolver.init();
107
+ return resolver;
108
+ });
109
+ }
110
+ };
111
+
112
+ // src/server/login.ts
113
+ function resolveOAuthAccessCode(code, state, storage, config) {
114
+ return __async(this, null, function* () {
115
+ var _a;
116
+ const authSessionService = yield ServerAuthenticationResolver.build(
117
+ __spreadProps(__spreadValues({}, config), {
118
+ oauthServer: (_a = config.oauthServer) != null ? _a : AUTH_SERVER
119
+ }),
120
+ storage,
121
+ config.endpointOverrides
122
+ );
123
+ return authSessionService.tokenExchange(code, state);
124
+ });
125
+ }
126
+ function isLoggedIn(storage) {
127
+ return !!storage.get("id_token");
128
+ }
129
+ function buildLoginUrl(config, storage) {
130
+ return __async(this, null, function* () {
131
+ var _a, _b, _c;
132
+ const state = (_a = config.state) != null ? _a : Math.random().toString(36).substring(2);
133
+ const scopes = (_b = config.scopes) != null ? _b : DEFAULT_SCOPES;
134
+ const pkceProducer = new GenericPublicClientPKCEProducer(storage);
135
+ const authInitiator = new GenericAuthenticationInitiator(__spreadProps(__spreadValues({}, config), {
136
+ state,
137
+ scopes,
138
+ oauthServer: (_c = config.oauthServer) != null ? _c : AUTH_SERVER,
139
+ // When retrieving the PKCE challenge on the server-side, we produce it and store it in the session
140
+ pkceConsumer: pkceProducer
141
+ }));
142
+ return authInitiator.signIn();
143
+ });
144
+ }
145
+
146
+ // src/shared/GenericAuthenticationRefresher.ts
147
+ import { OAuth2Client as OAuth2Client2 } from "oslo/oauth2";
148
+ var GenericAuthenticationRefresher = class _GenericAuthenticationRefresher {
149
+ constructor(authConfig, storage, endpointOverrides) {
150
+ this.authConfig = authConfig;
151
+ this.storage = storage;
152
+ this.endpointOverrides = endpointOverrides;
153
+ console.log("GenericAuthenticationRefresher constructor", {
154
+ authConfig,
155
+ endpointOverrides
156
+ });
157
+ }
158
+ init() {
159
+ return __async(this, null, function* () {
160
+ this.endpoints = yield getEndpointsWithOverrides(
161
+ this.authConfig.oauthServer,
162
+ this.endpointOverrides
163
+ );
164
+ this.oauth2client = new OAuth2Client2(
165
+ this.authConfig.clientId,
166
+ this.endpoints.auth,
167
+ this.endpoints.token,
168
+ {
169
+ redirectURI: this.authConfig.redirectUrl
170
+ }
171
+ );
172
+ return this;
173
+ });
174
+ }
175
+ static build(authConfig, storage, endpointOverrides) {
176
+ return __async(this, null, function* () {
177
+ const refresher = new _GenericAuthenticationRefresher(
178
+ authConfig,
179
+ storage,
180
+ endpointOverrides
181
+ );
182
+ yield refresher.init();
183
+ return refresher;
184
+ });
185
+ }
186
+ refreshTokens() {
187
+ return __async(this, null, function* () {
188
+ if (!this.oauth2client) yield this.init();
189
+ const tokens = retrieveTokens(this.storage);
190
+ if (!(tokens == null ? void 0 : tokens.refresh_token)) throw new Error("No refresh token available");
191
+ const oauth2Client = this.oauth2client;
192
+ const refreshedTokens = yield oauth2Client.refreshAccessToken(
193
+ tokens.refresh_token
194
+ );
195
+ storeTokens(this.storage, refreshedTokens);
196
+ return tokens;
197
+ });
198
+ }
199
+ };
200
+
201
+ // src/server/refresh.ts
202
+ function refreshTokens(storage, config) {
203
+ return __async(this, null, function* () {
204
+ var _a;
205
+ const refresher = yield GenericAuthenticationRefresher.build(
206
+ __spreadProps(__spreadValues({}, config), {
207
+ oauthServer: (_a = config.oauthServer) != null ? _a : AUTH_SERVER
208
+ }),
209
+ storage,
210
+ config.endpointOverrides
211
+ );
212
+ return refresher.refreshTokens();
213
+ });
214
+ }
215
+
216
+ export {
217
+ CookieStorage,
218
+ resolveOAuthAccessCode,
219
+ isLoggedIn,
220
+ buildLoginUrl,
221
+ refreshTokens
222
+ };
223
+ //# sourceMappingURL=chunk-HTTTZ2BP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/storage.ts","../src/server/ServerAuthenticationResolver.ts","../src/server/login.ts","../src/shared/GenericAuthenticationRefresher.ts","../src/server/refresh.ts"],"sourcesContent":["import { AuthStorage, SessionData, UnknownObject, User } from \"@/types.js\";\n\ntype SameSiteOption = \"strict\" | \"lax\" | \"none\";\n\nexport interface SessionStorage {\n get(): SessionData;\n getUser(): User<UnknownObject> | null;\n set(data: Partial<SessionData>): void;\n setUser(data: User<UnknownObject> | null): void;\n clear(): void;\n}\n\nexport type CookieStorageSettings = {\n httpOnly: boolean;\n secure: boolean;\n sameSite: SameSiteOption;\n expires: Date;\n path: string;\n};\n\nexport const DEFAULT_COOKIE_DURATION = 60 * 15; // 15 minutes\n\nexport abstract class CookieStorage implements AuthStorage {\n protected settings: CookieStorageSettings;\n protected constructor(settings: Partial<CookieStorageSettings> = {}) {\n this.settings = {\n httpOnly: settings.httpOnly ?? true,\n secure: settings.secure ?? true,\n // the callback request comes the auth server\n // 'lax' ensures the code_verifier cookie is sent with the request\n sameSite: settings.sameSite ?? \"lax\",\n expires:\n settings.expires ??\n new Date(Date.now() + 1000 * DEFAULT_COOKIE_DURATION),\n path: settings.path ?? \"/\",\n };\n }\n abstract get(key: string): string | null;\n abstract set(key: string, value: string): void;\n}\n","import { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { OAuth2Client } from \"oslo/oauth2\";\nimport {\n AuthStorage,\n Endpoints,\n OIDCTokenResponseBody,\n SessionData,\n} from \"@/types.js\";\nimport { AuthConfig } from \"@/server/config.js\";\nimport {\n exchangeTokens,\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/util.js\";\nimport { AuthenticationResolver, PKCEProducer } from \"@/services/types.ts\";\n\nexport class ServerAuthenticationResolver implements AuthenticationResolver {\n private pkceProducer: PKCEProducer;\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n readonly authConfig: AuthConfig,\n readonly storage: AuthStorage,\n readonly endpointOverrides?: Partial<Endpoints>,\n ) {\n console.log(\"ServerAuthenticationResolver constructor\", {\n authConfig,\n storage,\n endpointOverrides,\n });\n this.pkceProducer = new GenericPublicClientPKCEProducer(storage);\n }\n validateExistingSession(): Promise<SessionData> {\n throw new Error(\"Method not implemented.\");\n }\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.authConfig.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n async tokenExchange(\n code: string,\n state: string,\n ): Promise<OIDCTokenResponseBody> {\n if (!this.oauth2client) await this.init();\n const codeVerifier = await this.pkceProducer.getCodeVerifier();\n if (!codeVerifier) throw new Error(\"Code verifier not found in storage\");\n\n // exchange auth code for tokens\n const tokens = await exchangeTokens(\n code,\n state,\n this.pkceProducer,\n this.oauth2client!, // clean up types here to avoid the ! operator\n this.authConfig.oauthServer,\n this.endpoints!, // clean up types here to avoid the ! operator\n );\n\n storeTokens(this.storage, tokens);\n\n return tokens;\n }\n\n async getSessionData(): Promise<SessionData | null> {\n const storageData = retrieveTokens(this.storage);\n\n if (!storageData) return null;\n\n return {\n authenticated: !!storageData.id_token,\n idToken: storageData.id_token,\n accessToken: storageData.access_token,\n refreshToken: storageData.refresh_token,\n };\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<AuthenticationResolver> {\n const resolver = new ServerAuthenticationResolver(\n authConfig,\n storage,\n endpointOverrides,\n );\n await resolver.init();\n\n return resolver;\n }\n}\n","import { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { AUTH_SERVER, DEFAULT_SCOPES } from \"@/constants.js\";\nimport { GenericAuthenticationInitiator } from \"@/services/AuthenticationService.js\";\nimport { GenericPublicClientPKCEProducer } from \"@/services/PKCE.js\";\nimport { ServerAuthenticationResolver } from \"@/server/ServerAuthenticationResolver.js\";\nimport { AuthConfig } from \"@/server/config.ts\";\n/**\n * Resolve an OAuth access code to a set of OIDC tokens\n * @param code The access code, typically from a query parameter in the redirect url\n * @param state The oauth random state string, used to distinguish between requests. Typically also passed in the redirect url\n * @param storage The place that this server uses to store session data (e.g. a cookie store)\n * @param config Oauth Server configuration\n */\nexport async function resolveOAuthAccessCode(\n code: string,\n state: string,\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const authSessionService = await ServerAuthenticationResolver.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return authSessionService.tokenExchange(code, state);\n}\n\nexport function isLoggedIn(storage: AuthStorage): boolean {\n return !!storage.get(\"id_token\");\n}\n\nexport async function buildLoginUrl(\n config: Pick<AuthConfig, \"oauthServer\" | \"clientId\" | \"redirectUrl\"> & {\n scopes?: string[];\n state?: string;\n nonce?: string;\n },\n storage: AuthStorage,\n): Promise<URL> {\n // generate a random state if not provided\n const state = config.state ?? Math.random().toString(36).substring(2);\n const scopes = config.scopes ?? DEFAULT_SCOPES;\n const pkceProducer = new GenericPublicClientPKCEProducer(storage);\n const authInitiator = new GenericAuthenticationInitiator({\n ...config,\n state,\n scopes,\n oauthServer: config.oauthServer ?? AUTH_SERVER,\n // When retrieving the PKCE challenge on the server-side, we produce it and store it in the session\n pkceConsumer: pkceProducer,\n });\n\n return authInitiator.signIn();\n}\n","import { AuthenticationRefresher } from \"@/services/types.ts\";\nimport { AuthStorage, Endpoints, OIDCTokenResponseBody } from \"@/types\";\nimport {\n getEndpointsWithOverrides,\n retrieveTokens,\n storeTokens,\n} from \"@/shared/util.ts\";\nimport { AuthConfig } from \"@/server/config.ts\";\nimport { OAuth2Client } from \"oslo/oauth2\";\n\nexport class GenericAuthenticationRefresher implements AuthenticationRefresher {\n private oauth2client: OAuth2Client | undefined;\n private endpoints: Endpoints | undefined;\n\n private constructor(\n private authConfig: AuthConfig,\n private storage: AuthStorage,\n private endpointOverrides?: Partial<Endpoints>,\n ) {\n console.log(\"GenericAuthenticationRefresher constructor\", {\n authConfig,\n endpointOverrides,\n });\n }\n\n async init(): Promise<this> {\n // resolve oauth config\n this.endpoints = await getEndpointsWithOverrides(\n this.authConfig.oauthServer,\n this.endpointOverrides,\n );\n this.oauth2client = new OAuth2Client(\n this.authConfig.clientId,\n this.endpoints.auth,\n this.endpoints.token,\n {\n redirectURI: this.authConfig.redirectUrl,\n },\n );\n\n return this;\n }\n\n static async build(\n authConfig: AuthConfig,\n storage: AuthStorage,\n endpointOverrides?: Partial<Endpoints>,\n ): Promise<GenericAuthenticationRefresher> {\n const refresher = new GenericAuthenticationRefresher(\n authConfig,\n storage,\n endpointOverrides,\n );\n await refresher.init();\n\n return refresher;\n }\n\n async refreshTokens() {\n if (!this.oauth2client) await this.init();\n\n const tokens = retrieveTokens(this.storage);\n if (!tokens?.refresh_token) throw new Error(\"No refresh token available\");\n\n const oauth2Client = this.oauth2client!;\n const refreshedTokens =\n await oauth2Client.refreshAccessToken<OIDCTokenResponseBody>(\n tokens.refresh_token,\n );\n\n storeTokens(this.storage, refreshedTokens);\n\n return tokens;\n }\n}\n","import { AuthStorage, OIDCTokenResponseBody } from \"@/types.js\";\nimport { AUTH_SERVER } from \"@/constants.js\";\nimport { GenericAuthenticationRefresher } from \"@/shared/GenericAuthenticationRefresher.ts\";\nimport { AuthConfig } from \"@/server/config.ts\";\n\n/**\n * Refresh the current set of OIDC tokens\n */\nexport async function refreshTokens(\n storage: AuthStorage,\n config: AuthConfig,\n): Promise<OIDCTokenResponseBody> {\n const refresher = await GenericAuthenticationRefresher.build(\n {\n ...config,\n oauthServer: config.oauthServer ?? AUTH_SERVER,\n },\n storage,\n config.endpointOverrides,\n );\n\n return refresher.refreshTokens();\n}\n"],"mappings":"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","names":["OAuth2Client","OAuth2Client"]}