@logto/remix 1.0.0-beta.15 → 1.0.0-rc.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/lib/index.js +78 -78
- package/lib/index.js.map +1 -1
- package/lib/module.mjs +4 -4
- package/lib/module.mjs.map +1 -1
- package/package.json +8 -8
package/lib/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var $
|
|
2
|
-
var $
|
|
1
|
+
var $1UY29$logtonode = require("@logto/node");
|
|
2
|
+
var $1UY29$remixrunnode = require("@remix-run/node");
|
|
3
3
|
|
|
4
4
|
function $parcel$export(e, n, v, s) {
|
|
5
5
|
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
|
|
@@ -8,22 +8,22 @@ function $parcel$interopDefault(a) {
|
|
|
8
8
|
return a && a.__esModule ? a.default : a;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
$parcel$export(module.exports, "makeLogtoRemix", () => $
|
|
11
|
+
$parcel$export(module.exports, "makeLogtoRemix", () => $d280ab1184950f89$export$502a4d54d411a9fd);
|
|
12
12
|
|
|
13
|
-
const $
|
|
13
|
+
const $432ba72d919a1e72$export$60d790dda55ffee6 = (config, storage)=>// Have to deactivate the eslint rule here as the `LogtoClient`
|
|
14
14
|
// awaits a `navigate` function.
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
16
16
|
(navigate = ()=>{})=>{
|
|
17
|
-
return new (0, ($parcel$interopDefault($
|
|
17
|
+
return new (0, ($parcel$interopDefault($1UY29$logtonode)))(config, {
|
|
18
18
|
storage: storage,
|
|
19
19
|
navigate: navigate
|
|
20
20
|
});
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
|
|
24
|
-
class $
|
|
24
|
+
class $0039633e49290279$var$LogtoStorage {
|
|
25
25
|
static fromSession = (session)=>{
|
|
26
|
-
return new $
|
|
26
|
+
return new $0039633e49290279$var$LogtoStorage({
|
|
27
27
|
session: session
|
|
28
28
|
});
|
|
29
29
|
};
|
|
@@ -46,10 +46,10 @@ class $827429ca01feafa0$var$LogtoStorage {
|
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
const $
|
|
49
|
+
const $0039633e49290279$export$d184a47a971dd4b9 = (session)=>$0039633e49290279$var$LogtoStorage.fromSession(session);
|
|
50
50
|
|
|
51
51
|
|
|
52
|
-
const $
|
|
52
|
+
const $9d7cd9eac4864785$export$f4d9bb4cf5d2b40c = (deps)=>async (request)=>{
|
|
53
53
|
const { storage: storage , createClient: createClient } = deps;
|
|
54
54
|
const client = createClient();
|
|
55
55
|
const context = await client.getContext(request);
|
|
@@ -59,8 +59,8 @@ const $929a552c463d8b64$export$f4d9bb4cf5d2b40c = (deps)=>async (request)=>{
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
class $
|
|
63
|
-
static fromDependencies = (dependencies)=>new $
|
|
62
|
+
class $b6b640b5dde7b3d1$var$HandleSignInCommand {
|
|
63
|
+
static fromDependencies = (dependencies)=>new $b6b640b5dde7b3d1$var$HandleSignInCommand({
|
|
64
64
|
createClient: dependencies.createClient
|
|
65
65
|
});
|
|
66
66
|
constructor(properties){
|
|
@@ -78,9 +78,9 @@ class $57de529bd46d1977$var$HandleSignInCommand {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
-
const $
|
|
81
|
+
const $b6b640b5dde7b3d1$export$3c00ad1b716e9134 = (deps)=>async (request)=>{
|
|
82
82
|
const { storage: storage , createClient: createClient } = deps;
|
|
83
|
-
const command = $
|
|
83
|
+
const command = $b6b640b5dde7b3d1$var$HandleSignInCommand.fromDependencies({
|
|
84
84
|
createClient: createClient
|
|
85
85
|
});
|
|
86
86
|
const { navigateToUrl: navigateToUrl } = await command.execute(request);
|
|
@@ -91,7 +91,7 @@ const $57de529bd46d1977$export$3c00ad1b716e9134 = (deps)=>async (request)=>{
|
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
|
|
94
|
-
const $
|
|
94
|
+
const $ba5c5a17c0470429$export$9c07365b51e93ba3 = (deps)=>async (request)=>{
|
|
95
95
|
const { storage: storage , createClient: createClient } = deps;
|
|
96
96
|
const client = createClient();
|
|
97
97
|
await client.handleSignInCallback(request.callbackUri);
|
|
@@ -101,8 +101,8 @@ const $a5a397d32fbbf55b$export$9c07365b51e93ba3 = (deps)=>async (request)=>{
|
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
class $
|
|
105
|
-
static fromDependencies = (dependencies)=>new $
|
|
104
|
+
class $56983c96c6292b7b$var$HandleSignOutCommand {
|
|
105
|
+
static fromDependencies = (dependencies)=>new $56983c96c6292b7b$var$HandleSignOutCommand({
|
|
106
106
|
createClient: dependencies.createClient
|
|
107
107
|
});
|
|
108
108
|
constructor(properties){
|
|
@@ -120,31 +120,31 @@ class $43687e20c64eb0a9$var$HandleSignOutCommand {
|
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
|
-
const $
|
|
123
|
+
const $56983c96c6292b7b$export$89f18ff1488dade0 = (deps)=>async (request)=>{
|
|
124
124
|
const { createClient: createClient } = deps;
|
|
125
|
-
const command = $
|
|
125
|
+
const command = $56983c96c6292b7b$var$HandleSignOutCommand.fromDependencies({
|
|
126
126
|
createClient: createClient
|
|
127
127
|
});
|
|
128
128
|
return command.execute(request);
|
|
129
129
|
};
|
|
130
130
|
|
|
131
131
|
|
|
132
|
-
const $
|
|
133
|
-
const storage = (0, $
|
|
134
|
-
const createClient = (0, $
|
|
132
|
+
const $a4e270a96c0fa97a$export$5e1ab578feca185a = (config)=>(session)=>{
|
|
133
|
+
const storage = (0, $0039633e49290279$export$d184a47a971dd4b9)(session);
|
|
134
|
+
const createClient = (0, $432ba72d919a1e72$export$60d790dda55ffee6)(config, storage);
|
|
135
135
|
return {
|
|
136
|
-
handleSignIn: (0, $
|
|
136
|
+
handleSignIn: (0, $b6b640b5dde7b3d1$export$3c00ad1b716e9134)({
|
|
137
137
|
storage: storage,
|
|
138
138
|
createClient: createClient
|
|
139
139
|
}),
|
|
140
|
-
handleSignInCallback: (0, $
|
|
140
|
+
handleSignInCallback: (0, $ba5c5a17c0470429$export$9c07365b51e93ba3)({
|
|
141
141
|
storage: storage,
|
|
142
142
|
createClient: createClient
|
|
143
143
|
}),
|
|
144
|
-
handleSignOut: (0, $
|
|
144
|
+
handleSignOut: (0, $56983c96c6292b7b$export$89f18ff1488dade0)({
|
|
145
145
|
createClient: createClient
|
|
146
146
|
}),
|
|
147
|
-
getContext: (0, $
|
|
147
|
+
getContext: (0, $9d7cd9eac4864785$export$f4d9bb4cf5d2b40c)({
|
|
148
148
|
storage: storage,
|
|
149
149
|
createClient: createClient
|
|
150
150
|
})
|
|
@@ -152,16 +152,16 @@ const $be51f08b006ed125$export$5e1ab578feca185a = (config)=>(session)=>{
|
|
|
152
152
|
};
|
|
153
153
|
|
|
154
154
|
|
|
155
|
-
const $
|
|
155
|
+
const $a8afe3841584871e$export$5c6fae4c79d686e4 = (request)=>request.headers.get("Cookie");
|
|
156
156
|
|
|
157
157
|
|
|
158
|
-
class $
|
|
159
|
-
static fromDto = (dto)=>new $
|
|
158
|
+
class $5ea2bffde4379db3$export$32386402b3f0a45 {
|
|
159
|
+
static fromDto = (dto)=>new $5ea2bffde4379db3$export$32386402b3f0a45(dto);
|
|
160
160
|
constructor(properties){
|
|
161
161
|
this.properties = properties;
|
|
162
162
|
this.useCase = this.properties.useCase;
|
|
163
163
|
this.execute = async (request)=>{
|
|
164
|
-
const cookieHeader = (0, $
|
|
164
|
+
const cookieHeader = (0, $a8afe3841584871e$export$5c6fae4c79d686e4)(request);
|
|
165
165
|
const result = await this.useCase({
|
|
166
166
|
cookieHeader: cookieHeader ?? undefined,
|
|
167
167
|
...this.properties
|
|
@@ -172,7 +172,7 @@ class $9d799c5e2ef306d6$export$32386402b3f0a45 {
|
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
|
|
175
|
-
const $
|
|
175
|
+
const $b710f2274063a387$export$53ae38c062671653 = (deps)=>async (request)=>{
|
|
176
176
|
const { sessionStorage: sessionStorage , createLogtoAdapter: createLogtoAdapter } = deps;
|
|
177
177
|
const session = await sessionStorage.getSession(request.cookieHeader);
|
|
178
178
|
const logto = createLogtoAdapter(session);
|
|
@@ -183,13 +183,13 @@ const $407324a9de7811e9$export$53ae38c062671653 = (deps)=>async (request)=>{
|
|
|
183
183
|
};
|
|
184
184
|
|
|
185
185
|
|
|
186
|
-
const $
|
|
186
|
+
const $10ac017bdfe3e60c$export$f4d9bb4cf5d2b40c = (dto, deps)=>async (request)=>{
|
|
187
187
|
const { createLogtoAdapter: createLogtoAdapter , sessionStorage: sessionStorage } = deps;
|
|
188
|
-
const useCase = (0, $
|
|
188
|
+
const useCase = (0, $b710f2274063a387$export$53ae38c062671653)({
|
|
189
189
|
createLogtoAdapter: createLogtoAdapter,
|
|
190
190
|
sessionStorage: sessionStorage
|
|
191
191
|
});
|
|
192
|
-
const controller = (0, $
|
|
192
|
+
const controller = (0, $5ea2bffde4379db3$export$32386402b3f0a45).fromDto({
|
|
193
193
|
useCase: useCase,
|
|
194
194
|
...dto
|
|
195
195
|
});
|
|
@@ -199,8 +199,8 @@ const $7b69d37f648a005c$export$f4d9bb4cf5d2b40c = (dto, deps)=>async (request)=>
|
|
|
199
199
|
|
|
200
200
|
|
|
201
201
|
|
|
202
|
-
class $
|
|
203
|
-
static fromDto = (dto)=>new $
|
|
202
|
+
class $29dab4b4aca0abe0$export$8bb8370a824a554b {
|
|
203
|
+
static fromDto = (dto)=>new $29dab4b4aca0abe0$export$8bb8370a824a554b({
|
|
204
204
|
useCase: dto.useCase,
|
|
205
205
|
redirectUri: dto.redirectUri
|
|
206
206
|
});
|
|
@@ -209,13 +209,13 @@ class $6ca04f2e8ce3f248$export$8bb8370a824a554b {
|
|
|
209
209
|
this.useCase = this.properties.useCase;
|
|
210
210
|
this.redirectUri = this.properties.redirectUri;
|
|
211
211
|
this.execute = async (request)=>{
|
|
212
|
-
const cookieHeader = (0, $
|
|
212
|
+
const cookieHeader = (0, $a8afe3841584871e$export$5c6fae4c79d686e4)(request);
|
|
213
213
|
const { redirectUri: redirectUri } = this;
|
|
214
214
|
const result = await this.useCase({
|
|
215
215
|
cookieHeader: cookieHeader ?? undefined,
|
|
216
216
|
redirectUri: redirectUri
|
|
217
217
|
});
|
|
218
|
-
return (0, $
|
|
218
|
+
return (0, $1UY29$remixrunnode.redirect)(result.navigateToUrl, {
|
|
219
219
|
headers: {
|
|
220
220
|
"Set-Cookie": result.cookieHeader
|
|
221
221
|
}
|
|
@@ -225,7 +225,7 @@ class $6ca04f2e8ce3f248$export$8bb8370a824a554b {
|
|
|
225
225
|
}
|
|
226
226
|
|
|
227
227
|
|
|
228
|
-
const $
|
|
228
|
+
const $c230f3a04bd8ec78$export$463099392e1e6404 = (deps)=>async (request)=>{
|
|
229
229
|
const { sessionStorage: sessionStorage , createLogtoAdapter: createLogtoAdapter } = deps;
|
|
230
230
|
const session = await sessionStorage.getSession(request.cookieHeader);
|
|
231
231
|
const logto = createLogtoAdapter(session);
|
|
@@ -240,13 +240,13 @@ const $b3adef7963962600$export$463099392e1e6404 = (deps)=>async (request)=>{
|
|
|
240
240
|
};
|
|
241
241
|
|
|
242
242
|
|
|
243
|
-
const $
|
|
243
|
+
const $7d87cb1bafa09779$export$3c00ad1b716e9134 = (dto, deps)=>async (request)=>{
|
|
244
244
|
const { createLogtoAdapter: createLogtoAdapter , sessionStorage: sessionStorage } = deps;
|
|
245
|
-
const useCase = (0, $
|
|
245
|
+
const useCase = (0, $c230f3a04bd8ec78$export$463099392e1e6404)({
|
|
246
246
|
createLogtoAdapter: createLogtoAdapter,
|
|
247
247
|
sessionStorage: sessionStorage
|
|
248
248
|
});
|
|
249
|
-
const controller = (0, $
|
|
249
|
+
const controller = (0, $29dab4b4aca0abe0$export$8bb8370a824a554b).fromDto({
|
|
250
250
|
useCase: useCase,
|
|
251
251
|
redirectUri: dto.redirectBackTo
|
|
252
252
|
});
|
|
@@ -256,8 +256,8 @@ const $4e85595756955e84$export$3c00ad1b716e9134 = (dto, deps)=>async (request)=>
|
|
|
256
256
|
|
|
257
257
|
|
|
258
258
|
|
|
259
|
-
class $
|
|
260
|
-
static becauseNoCookieHeaderPresent = ()=>new $
|
|
259
|
+
class $bacebc5f40652238$export$144a9ac3253d5e56 extends Error {
|
|
260
|
+
static becauseNoCookieHeaderPresent = ()=>new $bacebc5f40652238$export$144a9ac3253d5e56({
|
|
261
261
|
code: 1665388541,
|
|
262
262
|
message: `The authentication sign-in callback route can't be accessed without a valid cookie.`
|
|
263
263
|
});
|
|
@@ -271,8 +271,8 @@ class $21e03cfddf6418cf$export$144a9ac3253d5e56 extends Error {
|
|
|
271
271
|
}
|
|
272
272
|
|
|
273
273
|
|
|
274
|
-
class $
|
|
275
|
-
static fromDto = (dto)=>new $
|
|
274
|
+
class $c35099547b1a0858$export$c8d670afaf17c618 {
|
|
275
|
+
static fromDto = (dto)=>new $c35099547b1a0858$export$c8d670afaf17c618({
|
|
276
276
|
useCase: dto.useCase,
|
|
277
277
|
redirectUri: dto.redirectUri
|
|
278
278
|
});
|
|
@@ -281,8 +281,8 @@ class $f663abe9edb298e3$export$c8d670afaf17c618 {
|
|
|
281
281
|
this.useCase = this.properties.useCase;
|
|
282
282
|
this.redirectUri = this.properties.redirectUri;
|
|
283
283
|
this.execute = async (request)=>{
|
|
284
|
-
const cookieHeader = (0, $
|
|
285
|
-
if (!cookieHeader) throw (0, $
|
|
284
|
+
const cookieHeader = (0, $a8afe3841584871e$export$5c6fae4c79d686e4)(request);
|
|
285
|
+
if (!cookieHeader) throw (0, $bacebc5f40652238$export$144a9ac3253d5e56).becauseNoCookieHeaderPresent();
|
|
286
286
|
// In some scenarios, like performing the sign-in callback within a Gitpod
|
|
287
287
|
// environment, the load balancer rewrites the URL and uses `http` as the
|
|
288
288
|
// protocol. Here, we make sure that when the `x-forwarded-proto` HTTP header
|
|
@@ -293,7 +293,7 @@ class $f663abe9edb298e3$export$c8d670afaf17c618 {
|
|
|
293
293
|
cookieHeader: cookieHeader,
|
|
294
294
|
callbackUri: callbackUri
|
|
295
295
|
});
|
|
296
|
-
return (0, $
|
|
296
|
+
return (0, $1UY29$remixrunnode.redirect)(this.redirectUri, {
|
|
297
297
|
headers: {
|
|
298
298
|
"Set-Cookie": result.cookieHeader
|
|
299
299
|
}
|
|
@@ -303,7 +303,7 @@ class $f663abe9edb298e3$export$c8d670afaf17c618 {
|
|
|
303
303
|
}
|
|
304
304
|
|
|
305
305
|
|
|
306
|
-
const $
|
|
306
|
+
const $3ae3cea103e3f353$export$22e357c661ee13a4 = (deps)=>async (request)=>{
|
|
307
307
|
const { sessionStorage: sessionStorage , createLogtoAdapter: createLogtoAdapter } = deps;
|
|
308
308
|
const session = await sessionStorage.getSession(request.cookieHeader);
|
|
309
309
|
const logto = createLogtoAdapter(session);
|
|
@@ -317,13 +317,13 @@ const $ff5498b695abf304$export$22e357c661ee13a4 = (deps)=>async (request)=>{
|
|
|
317
317
|
};
|
|
318
318
|
|
|
319
319
|
|
|
320
|
-
const $
|
|
320
|
+
const $4df2ab785be2e3b0$export$9c07365b51e93ba3 = (dto, deps)=>async (request)=>{
|
|
321
321
|
const { createLogtoAdapter: createLogtoAdapter , sessionStorage: sessionStorage } = deps;
|
|
322
|
-
const useCase = (0, $
|
|
322
|
+
const useCase = (0, $3ae3cea103e3f353$export$22e357c661ee13a4)({
|
|
323
323
|
createLogtoAdapter: createLogtoAdapter,
|
|
324
324
|
sessionStorage: sessionStorage
|
|
325
325
|
});
|
|
326
|
-
const controller = (0, $
|
|
326
|
+
const controller = (0, $c35099547b1a0858$export$c8d670afaf17c618).fromDto({
|
|
327
327
|
useCase: useCase,
|
|
328
328
|
redirectUri: dto.redirectBackTo
|
|
329
329
|
});
|
|
@@ -333,8 +333,8 @@ const $7a39fdd186e8afdc$export$9c07365b51e93ba3 = (dto, deps)=>async (request)=>
|
|
|
333
333
|
|
|
334
334
|
|
|
335
335
|
|
|
336
|
-
class $
|
|
337
|
-
static becauseNoCookieHeaderPresent = ()=>new $
|
|
336
|
+
class $b7dcd894e0be6905$export$e01614cfebe90908 extends Error {
|
|
337
|
+
static becauseNoCookieHeaderPresent = ()=>new $b7dcd894e0be6905$export$e01614cfebe90908({
|
|
338
338
|
code: 1665388713,
|
|
339
339
|
message: `The authentication sign-out route can't be accessed without a valid cookie.`
|
|
340
340
|
});
|
|
@@ -348,8 +348,8 @@ class $311025c6b993527d$export$e01614cfebe90908 extends Error {
|
|
|
348
348
|
}
|
|
349
349
|
|
|
350
350
|
|
|
351
|
-
class $
|
|
352
|
-
static fromDto = (dto)=>new $
|
|
351
|
+
class $1791a93b2ba8efd2$export$543cea0b68ca8887 {
|
|
352
|
+
static fromDto = (dto)=>new $1791a93b2ba8efd2$export$543cea0b68ca8887({
|
|
353
353
|
useCase: dto.useCase,
|
|
354
354
|
redirectUri: dto.redirectUri
|
|
355
355
|
});
|
|
@@ -358,13 +358,13 @@ class $dbef723619a85b93$export$543cea0b68ca8887 {
|
|
|
358
358
|
this.useCase = this.properties.useCase;
|
|
359
359
|
this.redirectUri = this.properties.redirectUri;
|
|
360
360
|
this.execute = async (request)=>{
|
|
361
|
-
const cookieHeader = (0, $
|
|
362
|
-
if (!cookieHeader) throw (0, $
|
|
361
|
+
const cookieHeader = (0, $a8afe3841584871e$export$5c6fae4c79d686e4)(request);
|
|
362
|
+
if (!cookieHeader) throw (0, $b7dcd894e0be6905$export$e01614cfebe90908).becauseNoCookieHeaderPresent();
|
|
363
363
|
const result = await this.useCase({
|
|
364
364
|
cookieHeader: cookieHeader,
|
|
365
365
|
redirectUri: this.redirectUri
|
|
366
366
|
});
|
|
367
|
-
return (0, $
|
|
367
|
+
return (0, $1UY29$remixrunnode.redirect)(result.navigateToUrl, {
|
|
368
368
|
headers: {
|
|
369
369
|
"Set-Cookie": result.cookieHeader
|
|
370
370
|
}
|
|
@@ -374,7 +374,7 @@ class $dbef723619a85b93$export$543cea0b68ca8887 {
|
|
|
374
374
|
}
|
|
375
375
|
|
|
376
376
|
|
|
377
|
-
const $
|
|
377
|
+
const $fb309dcd4b062524$export$8ccb0e4b7ccc1fc4 = (deps)=>async (request)=>{
|
|
378
378
|
const { sessionStorage: sessionStorage , createLogtoAdapter: createLogtoAdapter } = deps;
|
|
379
379
|
const session = await sessionStorage.getSession(request.cookieHeader);
|
|
380
380
|
const logto = createLogtoAdapter(session);
|
|
@@ -389,13 +389,13 @@ const $2453e8ad28193ffe$export$8ccb0e4b7ccc1fc4 = (deps)=>async (request)=>{
|
|
|
389
389
|
};
|
|
390
390
|
|
|
391
391
|
|
|
392
|
-
const $
|
|
392
|
+
const $af9527187f2d8283$export$89f18ff1488dade0 = (dto, deps)=>async (request)=>{
|
|
393
393
|
const { createLogtoAdapter: createLogtoAdapter , sessionStorage: sessionStorage } = deps;
|
|
394
|
-
const useCase = (0, $
|
|
394
|
+
const useCase = (0, $fb309dcd4b062524$export$8ccb0e4b7ccc1fc4)({
|
|
395
395
|
createLogtoAdapter: createLogtoAdapter,
|
|
396
396
|
sessionStorage: sessionStorage
|
|
397
397
|
});
|
|
398
|
-
const controller = (0, $
|
|
398
|
+
const controller = (0, $1791a93b2ba8efd2$export$543cea0b68ca8887).fromDto({
|
|
399
399
|
useCase: useCase,
|
|
400
400
|
redirectUri: dto.redirectBackTo
|
|
401
401
|
});
|
|
@@ -403,12 +403,12 @@ const $380e7b1772b43f91$export$89f18ff1488dade0 = (dto, deps)=>async (request)=>
|
|
|
403
403
|
};
|
|
404
404
|
|
|
405
405
|
|
|
406
|
-
class $
|
|
407
|
-
static becauseNoConfigForPath = (anticipatedPath)=>new $
|
|
406
|
+
class $39dd7d8d62a3df87$export$fcbf49abe9908796 extends Error {
|
|
407
|
+
static becauseNoConfigForPath = (anticipatedPath)=>new $39dd7d8d62a3df87$export$fcbf49abe9908796({
|
|
408
408
|
code: 1665388277,
|
|
409
409
|
message: `No configuration available for path "${anticipatedPath}".`
|
|
410
410
|
});
|
|
411
|
-
static becauseOfUnknownRoute = (anticipatedConfigKey)=>new $
|
|
411
|
+
static becauseOfUnknownRoute = (anticipatedConfigKey)=>new $39dd7d8d62a3df87$export$fcbf49abe9908796({
|
|
412
412
|
code: 1665388278,
|
|
413
413
|
message: `The config key "${anticipatedConfigKey}" is invalid.`
|
|
414
414
|
});
|
|
@@ -422,17 +422,17 @@ class $1a27034d0b6c1fa0$export$fcbf49abe9908796 extends Error {
|
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
|
|
425
|
-
const $
|
|
425
|
+
const $85c2f13c6554a877$export$d6e32a8c2b1ad7f3 = (deps)=>(dto)=>async ({ request: request })=>{
|
|
426
426
|
const anticipatedPath = new URL(request.url).pathname;
|
|
427
427
|
/* eslint-disable no-restricted-syntax */ const configKey = Object.keys(dto).find((type)=>dto[type].path === anticipatedPath);
|
|
428
428
|
const configExists = Boolean(configKey);
|
|
429
|
-
/* eslint-enable no-restricted-syntax */ if (!configExists) throw (0, $
|
|
429
|
+
/* eslint-enable no-restricted-syntax */ if (!configExists) throw (0, $39dd7d8d62a3df87$export$fcbf49abe9908796).becauseNoConfigForPath(anticipatedPath);
|
|
430
430
|
const { sessionStorage: sessionStorage , createLogtoAdapter: createLogtoAdapter , baseUrl: baseUrl } = deps;
|
|
431
431
|
const config = dto[configKey];
|
|
432
432
|
switch(configKey){
|
|
433
433
|
case "sign-in":
|
|
434
434
|
{
|
|
435
|
-
const handler = (0, $
|
|
435
|
+
const handler = (0, $7d87cb1bafa09779$export$3c00ad1b716e9134)({
|
|
436
436
|
redirectBackTo: `${baseUrl}${config.redirectBackTo}`
|
|
437
437
|
}, {
|
|
438
438
|
sessionStorage: sessionStorage,
|
|
@@ -442,41 +442,41 @@ const $4726b3ba230d3664$export$d6e32a8c2b1ad7f3 = (deps)=>(dto)=>async ({ reques
|
|
|
442
442
|
}
|
|
443
443
|
case "sign-in-callback":
|
|
444
444
|
{
|
|
445
|
-
const
|
|
445
|
+
const handler = (0, $4df2ab785be2e3b0$export$9c07365b51e93ba3)({
|
|
446
446
|
redirectBackTo: `${baseUrl}${config.redirectBackTo}`
|
|
447
447
|
}, {
|
|
448
448
|
sessionStorage: sessionStorage,
|
|
449
449
|
createLogtoAdapter: createLogtoAdapter
|
|
450
450
|
});
|
|
451
|
-
return
|
|
451
|
+
return handler(request);
|
|
452
452
|
}
|
|
453
453
|
case "sign-out":
|
|
454
454
|
{
|
|
455
|
-
const
|
|
455
|
+
const handler = (0, $af9527187f2d8283$export$89f18ff1488dade0)({
|
|
456
456
|
redirectBackTo: `${baseUrl}${config.redirectBackTo}`
|
|
457
457
|
}, {
|
|
458
458
|
sessionStorage: sessionStorage,
|
|
459
459
|
createLogtoAdapter: createLogtoAdapter
|
|
460
460
|
});
|
|
461
|
-
return
|
|
461
|
+
return handler(request);
|
|
462
462
|
}
|
|
463
463
|
default:
|
|
464
|
-
throw (0, $
|
|
464
|
+
throw (0, $39dd7d8d62a3df87$export$fcbf49abe9908796).becauseOfUnknownRoute(configKey);
|
|
465
465
|
}
|
|
466
466
|
};
|
|
467
467
|
|
|
468
468
|
|
|
469
|
-
const $
|
|
469
|
+
const $d280ab1184950f89$export$502a4d54d411a9fd = (config, deps)=>{
|
|
470
470
|
const { sessionStorage: sessionStorage } = deps;
|
|
471
471
|
const { baseUrl: baseUrl } = config;
|
|
472
|
-
const createLogtoAdapter = (0, $
|
|
472
|
+
const createLogtoAdapter = (0, $a4e270a96c0fa97a$export$5e1ab578feca185a)(config);
|
|
473
473
|
return Object.freeze({
|
|
474
|
-
handleAuthRoutes: (0, $
|
|
474
|
+
handleAuthRoutes: (0, $85c2f13c6554a877$export$d6e32a8c2b1ad7f3)({
|
|
475
475
|
baseUrl: baseUrl,
|
|
476
476
|
createLogtoAdapter: createLogtoAdapter,
|
|
477
477
|
sessionStorage: sessionStorage
|
|
478
478
|
}),
|
|
479
|
-
getContext: (dto)=>(0, $
|
|
479
|
+
getContext: (dto)=>(0, $10ac017bdfe3e60c$export$f4d9bb4cf5d2b40c)(dto, {
|
|
480
480
|
createLogtoAdapter: createLogtoAdapter,
|
|
481
481
|
sessionStorage: sessionStorage
|
|
482
482
|
})
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/remix/src/index.ts","packages/remix/src/infrastructure/logto/index.ts","packages/remix/src/infrastructure/logto/create-client.ts","packages/remix/src/infrastructure/logto/create-storage.ts","packages/remix/src/infrastructure/logto/get-context.ts","packages/remix/src/infrastructure/logto/handle-sign-in.ts","packages/remix/src/infrastructure/logto/handle-sign-in-callback.ts","packages/remix/src/infrastructure/logto/handle-sign-out.ts","packages/remix/src/useCases/getContext/index.ts","packages/remix/src/useCases/getContext/GetContextController.ts","packages/remix/src/framework/get-cookie-header-from-request.ts","packages/remix/src/useCases/getContext/GetContextUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/index.ts","packages/remix/src/useCases/handleSignIn/index.ts","packages/remix/src/useCases/handleSignIn/HandleSignInController.ts","packages/remix/src/useCases/handleSignIn/HandleSignInUseCase.ts","packages/remix/src/useCases/handleSignInCallback/index.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackController.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackError.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackUseCase.ts","packages/remix/src/useCases/handleSignOut/index.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutController.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutError.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/HandleAuthRoutesError.ts"],"sourcesContent":["import { GetContextParameters, LogtoConfig } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { makeLogtoAdapter } from './infrastructure/logto';\nimport { makeGetContext } from './useCases/getContext';\nimport { makeHandleAuthRoutes } from './useCases/handleAuthRoutes';\n\ntype Config = Readonly<LogtoConfig> & {\n readonly baseUrl: string;\n};\n\nexport const makeLogtoRemix = (\n config: Config,\n deps: {\n sessionStorage: SessionStorage;\n }\n) => {\n const { sessionStorage } = deps;\n\n const { baseUrl } = config;\n\n const createLogtoAdapter = makeLogtoAdapter(config);\n\n return Object.freeze({\n handleAuthRoutes: makeHandleAuthRoutes({\n baseUrl,\n createLogtoAdapter,\n sessionStorage,\n }),\n\n getContext: (dto: GetContextParameters) =>\n makeGetContext(dto, {\n createLogtoAdapter,\n sessionStorage,\n }),\n });\n};\n\nexport { type LogtoContext } from '@logto/node';\n","import type { LogtoConfig } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nimport { makeLogtoClient } from './create-client';\nimport { createStorage } from './create-storage';\nimport { makeGetContext } from './get-context';\nimport { makeHandleSignIn } from './handle-sign-in';\nimport { makeHandleSignInCallback } from './handle-sign-in-callback';\nimport { makeHandleSignOut } from './handle-sign-out';\n\ntype MakeLogtoAdapterConfiguration = LogtoConfig;\n\nexport const makeLogtoAdapter = (config: MakeLogtoAdapterConfiguration) => (session: Session) => {\n const storage = createStorage(session);\n const createClient = makeLogtoClient(config, storage);\n\n return {\n handleSignIn: makeHandleSignIn({ storage, createClient }),\n handleSignInCallback: makeHandleSignInCallback({ storage, createClient }),\n handleSignOut: makeHandleSignOut({ createClient }),\n getContext: makeGetContext({ storage, createClient }),\n };\n};\n\nexport type CreateLogtoAdapter = ReturnType<typeof makeLogtoAdapter>;\n\nexport { type LogtoContext } from '@logto/node';\n","import LogtoClient, { LogtoConfig } from '@logto/node';\n\nimport { LogtoStorage } from './create-storage';\n\nexport const makeLogtoClient =\n (config: LogtoConfig, storage: LogtoStorage) =>\n // Have to deactivate the eslint rule here as the `LogtoClient`\n // awaits a `navigate` function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n (navigate: (url: string) => void = () => {}) => {\n return new LogtoClient(config, { storage, navigate });\n };\n\nexport type CreateLogtoClient = ReturnType<typeof makeLogtoClient>;\n\nexport { type LogtoConfig } from '@logto/node';\n","import { Storage, StorageKey } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nclass LogtoStorage implements Storage {\n public static readonly fromSession = (session: Session) => {\n return new LogtoStorage({ session });\n };\n\n public readonly session = this.properties.session;\n\n private constructor(\n private readonly properties: {\n session: Session;\n }\n ) {}\n\n public readonly setItem = async (key: StorageKey, value: string) => {\n this.session.set(key, value);\n };\n\n public readonly getItem = async (key: StorageKey) => {\n const itemExists = this.session.has(key);\n\n if (!itemExists) {\n return null;\n }\n\n return String(this.session.get(key));\n };\n\n public readonly removeItem = async (key: StorageKey) => {\n this.session.unset(key);\n };\n\n public readonly save = async () => {\n // Not required as the persistence happens in the integration layer\n };\n}\n\nexport const createStorage = (session: Session) => LogtoStorage.fromSession(session);\n\nexport type { LogtoStorage };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype GetContextResponse = {\n readonly context: LogtoContext;\n};\n\nexport const makeGetContext =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: GetContextParameters): Promise<GetContextResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n const context = await client.getContext(request);\n\n return {\n context,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignInResponse = {\n readonly session: Session;\n readonly navigateToUrl: string;\n};\n\nclass HandleSignInCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignInCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignInRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signIn(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignIn =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInRequest): Promise<HandleSignInResponse> => {\n const { storage, createClient } = deps;\n\n const command = HandleSignInCommand.fromDependencies({ createClient });\n\n const { navigateToUrl } = await command.execute(request);\n\n return {\n session: storage.session,\n navigateToUrl,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInCallbackRequest = {\n callbackUri: string;\n};\n\ntype HandleSignInCallbackResponse = {\n readonly session: Session;\n};\n\nexport const makeHandleSignInCallback =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInCallbackRequest): Promise<HandleSignInCallbackResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n await client.handleSignInCallback(request.callbackUri);\n\n return {\n session: storage.session,\n };\n };\n","import { CreateLogtoClient } from './create-client';\n\ntype HandleSignOutRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignOutResponse = {\n readonly navigateToUrl: string;\n};\n\nclass HandleSignOutCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignOutCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignOutRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signOut(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignOut =\n (deps: { createClient: CreateLogtoClient }) =>\n async (request: HandleSignOutRequest): Promise<HandleSignOutResponse> => {\n const { createClient } = deps;\n\n const command = HandleSignOutCommand.fromDependencies({ createClient });\n\n return command.execute(request);\n };\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { GetContextController } from './GetContextController';\nimport { makeGetContextUseCase } from './GetContextUseCase';\n\ntype HandleGetContextDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeGetContext =\n (dto: GetContextParameters, deps: HandleGetContextDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeGetContextUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = GetContextController.fromDto({\n useCase,\n ...dto,\n });\n\n return controller.execute(request);\n };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { GetContextUseCase } from './GetContextUseCase';\n\ntype GetContextControllerDto = GetContextParameters & {\n readonly useCase: GetContextUseCase;\n};\n\nexport class GetContextController {\n public static readonly fromDto = (dto: GetContextControllerDto) => new GetContextController(dto);\n\n private readonly useCase = this.properties.useCase;\n private constructor(\n private readonly properties: GetContextParameters & {\n useCase: GetContextUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<LogtoContext> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n ...this.properties,\n });\n\n return result.context;\n };\n}\n","export const getCookieHeaderFromRequest = (request: Request) => request.headers.get('Cookie');\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter, LogtoContext } from '../../infrastructure/logto';\n\ntype GetContextRequest = GetContextParameters & {\n readonly cookieHeader: string | undefined;\n};\n\ntype GetContextResponse = {\n context: Readonly<LogtoContext>;\n};\n\nexport const makeGetContextUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: GetContextRequest): Promise<GetContextResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.getContext(request);\n\n return {\n context: response.context,\n };\n };\n\nexport type GetContextUseCase = ReturnType<typeof makeGetContextUseCase>;\n","import { LoaderFunction, SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { makeHandleSignIn } from '../handleSignIn';\nimport { makeHandleSignInCallback } from '../handleSignInCallback';\nimport { makeHandleSignOut } from '../handleSignOut';\nimport { HandleAuthRoutesError } from './HandleAuthRoutesError';\n\ntype AuthRouteConfig = {\n readonly path: string;\n readonly redirectBackTo: string;\n};\n\ntype PossibleRouteTypes = 'sign-in' | 'sign-in-callback' | 'sign-out';\n\ntype HandleAuthRoutesDto = Record<PossibleRouteTypes, AuthRouteConfig>;\n\ntype MakeHandleAuthRoutesDto = {\n readonly baseUrl: string;\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleAuthRoutes =\n (deps: MakeHandleAuthRoutesDto) =>\n (dto: HandleAuthRoutesDto): LoaderFunction =>\n async ({ request }) => {\n const anticipatedPath = new URL(request.url).pathname;\n\n /* eslint-disable no-restricted-syntax */\n const configKey = Object.keys(dto).find(\n (type) => dto[type as PossibleRouteTypes].path === anticipatedPath\n ) as keyof HandleAuthRoutesDto;\n\n const configExists = Boolean(configKey);\n /* eslint-enable no-restricted-syntax */\n\n if (!configExists) {\n throw HandleAuthRoutesError.becauseNoConfigForPath(anticipatedPath);\n }\n\n const { sessionStorage, createLogtoAdapter, baseUrl } = deps;\n\n const config = dto[configKey];\n\n switch (configKey) {\n case 'sign-in': {\n const handler = makeHandleSignIn(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-in-callback': {\n const handler = makeHandleSignInCallback(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-out': {\n const handler = makeHandleSignOut(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n default: {\n throw HandleAuthRoutesError.becauseOfUnknownRoute(configKey);\n }\n }\n };\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInController } from './HandleSignInController';\nimport { makeHandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignIn =\n (dto: HandleSignInDto, deps: HandleSignInDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { HandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInControllerDto = {\n readonly redirectUri: string;\n readonly useCase: HandleSignInUseCase;\n};\n\nexport class HandleSignInController {\n public static readonly fromDto = (dto: HandleSignInControllerDto) =>\n new HandleSignInController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n private constructor(\n private readonly properties: {\n redirectUri: string;\n useCase: HandleSignInUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n const { redirectUri } = this;\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInRequest = {\n readonly cookieHeader: string | undefined;\n readonly redirectUri: string;\n};\n\ntype SignInResponse = {\n readonly cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignInUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInRequest): Promise<SignInResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignIn({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignInUseCase = ReturnType<typeof makeHandleSignInUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInCallbackController } from './HandleSignInCallbackController';\nimport { makeHandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInCallbackDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignInCallback =\n (dto: HandleSignInCallbackDto, deps: HandleSignInCallbackDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInCallbackUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInCallbackController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignInCallbackError } from './HandleSignInCallbackError';\nimport type { HandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackControllerDto = {\n readonly useCase: HandleSignInCallbackUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignInCallbackController {\n public static readonly fromDto = (dto: HandleSignInCallbackControllerDto) =>\n new HandleSignInCallbackController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignInCallbackUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignInCallbackError.becauseNoCookieHeaderPresent();\n }\n\n // In some scenarios, like performing the sign-in callback within a Gitpod\n // environment, the load balancer rewrites the URL and uses `http` as the\n // protocol. Here, we make sure that when the `x-forwarded-proto` HTTP header\n // is present, we will replace `http` with `https` in the `callbackUri`.\n const isForwardedHttpsTraffic = request.headers.get('x-forwarded-proto') === 'https';\n\n const callbackUri = isForwardedHttpsTraffic\n ? request.url.replace('http', 'https')\n : request.url;\n\n const result = await this.useCase({\n cookieHeader,\n callbackUri,\n });\n\n return redirect(this.redirectUri, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignInCallbackError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignInCallbackError({\n code: 1_665_388_541,\n message: `The authentication sign-in callback route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInCallbackRequest = {\n readonly cookieHeader: string;\n readonly callbackUri: string;\n};\n\ntype SignInCallbackResponse = {\n readonly cookieHeader: string;\n};\n\nexport const makeHandleSignInCallbackUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInCallbackRequest): Promise<SignInCallbackResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignInCallback({\n callbackUri: request.callbackUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n };\n };\n\nexport type HandleSignInCallbackUseCase = ReturnType<typeof makeHandleSignInCallbackUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignOutController } from './HandleSignOutController';\nimport { makeHandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignOutDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignOut =\n (dto: HandleSignOutDto, deps: HandleSignOutDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignOutUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignOutController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignOutError } from './HandleSignOutError';\nimport type { HandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutControllerDto = {\n readonly useCase: HandleSignOutUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignOutController {\n public static readonly fromDto = (dto: HandleSignOutControllerDto) =>\n new HandleSignOutController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignOutUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignOutError.becauseNoCookieHeaderPresent();\n }\n\n const result = await this.useCase({\n cookieHeader,\n redirectUri: this.redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignOutError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignOutError({\n code: 1_665_388_713,\n message: `The authentication sign-out route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignOutRequest = {\n readonly cookieHeader: string | undefined;\n redirectUri: string;\n};\n\ntype SignOutResponse = {\n cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignOutUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignOutRequest): Promise<SignOutResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignOut({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.destroySession(session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignOutUseCase = ReturnType<typeof makeHandleSignOutUseCase>;\n","export class HandleAuthRoutesError extends Error {\n public static readonly becauseNoConfigForPath = (anticipatedPath: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_277,\n message: `No configuration available for path \"${anticipatedPath}\".`,\n });\n\n public static readonly becauseOfUnknownRoute = (anticipatedConfigKey: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_278,\n message: `The config key \"${anticipatedConfigKey}\" is invalid.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"}
|
|
1
|
+
{"mappings":"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","sources":["packages/remix/src/index.ts","packages/remix/src/infrastructure/logto/index.ts","packages/remix/src/infrastructure/logto/create-client.ts","packages/remix/src/infrastructure/logto/create-storage.ts","packages/remix/src/infrastructure/logto/get-context.ts","packages/remix/src/infrastructure/logto/handle-sign-in.ts","packages/remix/src/infrastructure/logto/handle-sign-in-callback.ts","packages/remix/src/infrastructure/logto/handle-sign-out.ts","packages/remix/src/useCases/getContext/index.ts","packages/remix/src/useCases/getContext/GetContextController.ts","packages/remix/src/framework/get-cookie-header-from-request.ts","packages/remix/src/useCases/getContext/GetContextUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/index.ts","packages/remix/src/useCases/handleSignIn/index.ts","packages/remix/src/useCases/handleSignIn/HandleSignInController.ts","packages/remix/src/useCases/handleSignIn/HandleSignInUseCase.ts","packages/remix/src/useCases/handleSignInCallback/index.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackController.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackError.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackUseCase.ts","packages/remix/src/useCases/handleSignOut/index.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutController.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutError.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/HandleAuthRoutesError.ts"],"sourcesContent":["import { GetContextParameters, LogtoConfig } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { makeLogtoAdapter } from './infrastructure/logto';\nimport { makeGetContext } from './useCases/getContext';\nimport { makeHandleAuthRoutes } from './useCases/handleAuthRoutes';\n\ntype Config = Readonly<LogtoConfig> & {\n readonly baseUrl: string;\n};\n\nexport const makeLogtoRemix = (\n config: Config,\n deps: {\n sessionStorage: SessionStorage;\n }\n) => {\n const { sessionStorage } = deps;\n\n const { baseUrl } = config;\n\n const createLogtoAdapter = makeLogtoAdapter(config);\n\n return Object.freeze({\n handleAuthRoutes: makeHandleAuthRoutes({\n baseUrl,\n createLogtoAdapter,\n sessionStorage,\n }),\n\n getContext: (dto: GetContextParameters) =>\n makeGetContext(dto, {\n createLogtoAdapter,\n sessionStorage,\n }),\n });\n};\n\nexport { type LogtoContext } from '@logto/node';\n","import type { LogtoConfig } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nimport { makeLogtoClient } from './create-client';\nimport { createStorage } from './create-storage';\nimport { makeGetContext } from './get-context';\nimport { makeHandleSignIn } from './handle-sign-in';\nimport { makeHandleSignInCallback } from './handle-sign-in-callback';\nimport { makeHandleSignOut } from './handle-sign-out';\n\ntype MakeLogtoAdapterConfiguration = LogtoConfig;\n\nexport const makeLogtoAdapter = (config: MakeLogtoAdapterConfiguration) => (session: Session) => {\n const storage = createStorage(session);\n const createClient = makeLogtoClient(config, storage);\n\n return {\n handleSignIn: makeHandleSignIn({ storage, createClient }),\n handleSignInCallback: makeHandleSignInCallback({ storage, createClient }),\n handleSignOut: makeHandleSignOut({ createClient }),\n getContext: makeGetContext({ storage, createClient }),\n };\n};\n\nexport type CreateLogtoAdapter = ReturnType<typeof makeLogtoAdapter>;\n\nexport { type LogtoContext } from '@logto/node';\n","import LogtoClient, { LogtoConfig } from '@logto/node';\n\nimport { LogtoStorage } from './create-storage';\n\nexport const makeLogtoClient =\n (config: LogtoConfig, storage: LogtoStorage) =>\n // Have to deactivate the eslint rule here as the `LogtoClient`\n // awaits a `navigate` function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n (navigate: (url: string) => void = () => {}) => {\n return new LogtoClient(config, { storage, navigate });\n };\n\nexport type CreateLogtoClient = ReturnType<typeof makeLogtoClient>;\n\nexport { type LogtoConfig } from '@logto/node';\n","import { Storage, StorageKey } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nclass LogtoStorage implements Storage {\n public static readonly fromSession = (session: Session) => {\n return new LogtoStorage({ session });\n };\n\n public readonly session = this.properties.session;\n\n private constructor(\n private readonly properties: {\n session: Session;\n }\n ) {}\n\n public readonly setItem = async (key: StorageKey, value: string) => {\n this.session.set(key, value);\n };\n\n public readonly getItem = async (key: StorageKey) => {\n const itemExists = this.session.has(key);\n\n if (!itemExists) {\n return null;\n }\n\n return String(this.session.get(key));\n };\n\n public readonly removeItem = async (key: StorageKey) => {\n this.session.unset(key);\n };\n\n public readonly save = async () => {\n // Not required as the persistence happens in the integration layer\n };\n}\n\nexport const createStorage = (session: Session) => LogtoStorage.fromSession(session);\n\nexport type { LogtoStorage };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype GetContextResponse = {\n readonly context: LogtoContext;\n};\n\nexport const makeGetContext =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: GetContextParameters): Promise<GetContextResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n const context = await client.getContext(request);\n\n return {\n context,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignInResponse = {\n readonly session: Session;\n readonly navigateToUrl: string;\n};\n\nclass HandleSignInCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignInCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignInRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signIn(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignIn =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInRequest): Promise<HandleSignInResponse> => {\n const { storage, createClient } = deps;\n\n const command = HandleSignInCommand.fromDependencies({ createClient });\n\n const { navigateToUrl } = await command.execute(request);\n\n return {\n session: storage.session,\n navigateToUrl,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInCallbackRequest = {\n callbackUri: string;\n};\n\ntype HandleSignInCallbackResponse = {\n readonly session: Session;\n};\n\nexport const makeHandleSignInCallback =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInCallbackRequest): Promise<HandleSignInCallbackResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n await client.handleSignInCallback(request.callbackUri);\n\n return {\n session: storage.session,\n };\n };\n","import { CreateLogtoClient } from './create-client';\n\ntype HandleSignOutRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignOutResponse = {\n readonly navigateToUrl: string;\n};\n\nclass HandleSignOutCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignOutCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignOutRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signOut(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignOut =\n (deps: { createClient: CreateLogtoClient }) =>\n async (request: HandleSignOutRequest): Promise<HandleSignOutResponse> => {\n const { createClient } = deps;\n\n const command = HandleSignOutCommand.fromDependencies({ createClient });\n\n return command.execute(request);\n };\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { GetContextController } from './GetContextController';\nimport { makeGetContextUseCase } from './GetContextUseCase';\n\ntype HandleGetContextDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeGetContext =\n (dto: GetContextParameters, deps: HandleGetContextDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeGetContextUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = GetContextController.fromDto({\n useCase,\n ...dto,\n });\n\n return controller.execute(request);\n };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { GetContextUseCase } from './GetContextUseCase';\n\ntype GetContextControllerDto = GetContextParameters & {\n readonly useCase: GetContextUseCase;\n};\n\nexport class GetContextController {\n public static readonly fromDto = (dto: GetContextControllerDto) => new GetContextController(dto);\n\n private readonly useCase = this.properties.useCase;\n private constructor(\n private readonly properties: GetContextParameters & {\n useCase: GetContextUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<LogtoContext> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n ...this.properties,\n });\n\n return result.context;\n };\n}\n","export const getCookieHeaderFromRequest = (request: Request) => request.headers.get('Cookie');\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter, LogtoContext } from '../../infrastructure/logto';\n\ntype GetContextRequest = GetContextParameters & {\n readonly cookieHeader: string | undefined;\n};\n\ntype GetContextResponse = {\n context: Readonly<LogtoContext>;\n};\n\nexport const makeGetContextUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: GetContextRequest): Promise<GetContextResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.getContext(request);\n\n return {\n context: response.context,\n };\n };\n\nexport type GetContextUseCase = ReturnType<typeof makeGetContextUseCase>;\n","import { LoaderFunction, SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { makeHandleSignIn } from '../handleSignIn';\nimport { makeHandleSignInCallback } from '../handleSignInCallback';\nimport { makeHandleSignOut } from '../handleSignOut';\nimport { HandleAuthRoutesError } from './HandleAuthRoutesError';\n\ntype AuthRouteConfig = {\n readonly path: string;\n readonly redirectBackTo: string;\n};\n\ntype PossibleRouteTypes = 'sign-in' | 'sign-in-callback' | 'sign-out';\n\ntype HandleAuthRoutesDto = Record<PossibleRouteTypes, AuthRouteConfig>;\n\ntype MakeHandleAuthRoutesDto = {\n readonly baseUrl: string;\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleAuthRoutes =\n (deps: MakeHandleAuthRoutesDto) =>\n (dto: HandleAuthRoutesDto): LoaderFunction =>\n async ({ request }) => {\n const anticipatedPath = new URL(request.url).pathname;\n\n /* eslint-disable no-restricted-syntax */\n const configKey = Object.keys(dto).find(\n (type) => dto[type as PossibleRouteTypes].path === anticipatedPath\n ) as keyof HandleAuthRoutesDto;\n\n const configExists = Boolean(configKey);\n /* eslint-enable no-restricted-syntax */\n\n if (!configExists) {\n throw HandleAuthRoutesError.becauseNoConfigForPath(anticipatedPath);\n }\n\n const { sessionStorage, createLogtoAdapter, baseUrl } = deps;\n\n const config = dto[configKey];\n\n switch (configKey) {\n case 'sign-in': {\n const handler = makeHandleSignIn(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-in-callback': {\n const handler = makeHandleSignInCallback(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-out': {\n const handler = makeHandleSignOut(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n default: {\n throw HandleAuthRoutesError.becauseOfUnknownRoute(configKey);\n }\n }\n };\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInController } from './HandleSignInController';\nimport { makeHandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignIn =\n (dto: HandleSignInDto, deps: HandleSignInDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { HandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInControllerDto = {\n readonly redirectUri: string;\n readonly useCase: HandleSignInUseCase;\n};\n\nexport class HandleSignInController {\n public static readonly fromDto = (dto: HandleSignInControllerDto) =>\n new HandleSignInController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n private constructor(\n private readonly properties: {\n redirectUri: string;\n useCase: HandleSignInUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n const { redirectUri } = this;\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInRequest = {\n readonly cookieHeader: string | undefined;\n readonly redirectUri: string;\n};\n\ntype SignInResponse = {\n readonly cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignInUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInRequest): Promise<SignInResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignIn({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignInUseCase = ReturnType<typeof makeHandleSignInUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInCallbackController } from './HandleSignInCallbackController';\nimport { makeHandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInCallbackDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignInCallback =\n (dto: HandleSignInCallbackDto, deps: HandleSignInCallbackDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInCallbackUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInCallbackController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignInCallbackError } from './HandleSignInCallbackError';\nimport type { HandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackControllerDto = {\n readonly useCase: HandleSignInCallbackUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignInCallbackController {\n public static readonly fromDto = (dto: HandleSignInCallbackControllerDto) =>\n new HandleSignInCallbackController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignInCallbackUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignInCallbackError.becauseNoCookieHeaderPresent();\n }\n\n // In some scenarios, like performing the sign-in callback within a Gitpod\n // environment, the load balancer rewrites the URL and uses `http` as the\n // protocol. Here, we make sure that when the `x-forwarded-proto` HTTP header\n // is present, we will replace `http` with `https` in the `callbackUri`.\n const isForwardedHttpsTraffic = request.headers.get('x-forwarded-proto') === 'https';\n\n const callbackUri = isForwardedHttpsTraffic\n ? request.url.replace('http', 'https')\n : request.url;\n\n const result = await this.useCase({\n cookieHeader,\n callbackUri,\n });\n\n return redirect(this.redirectUri, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignInCallbackError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignInCallbackError({\n code: 1_665_388_541,\n message: `The authentication sign-in callback route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInCallbackRequest = {\n readonly cookieHeader: string;\n readonly callbackUri: string;\n};\n\ntype SignInCallbackResponse = {\n readonly cookieHeader: string;\n};\n\nexport const makeHandleSignInCallbackUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInCallbackRequest): Promise<SignInCallbackResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignInCallback({\n callbackUri: request.callbackUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n };\n };\n\nexport type HandleSignInCallbackUseCase = ReturnType<typeof makeHandleSignInCallbackUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignOutController } from './HandleSignOutController';\nimport { makeHandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignOutDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignOut =\n (dto: HandleSignOutDto, deps: HandleSignOutDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignOutUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignOutController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignOutError } from './HandleSignOutError';\nimport type { HandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutControllerDto = {\n readonly useCase: HandleSignOutUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignOutController {\n public static readonly fromDto = (dto: HandleSignOutControllerDto) =>\n new HandleSignOutController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignOutUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignOutError.becauseNoCookieHeaderPresent();\n }\n\n const result = await this.useCase({\n cookieHeader,\n redirectUri: this.redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignOutError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignOutError({\n code: 1_665_388_713,\n message: `The authentication sign-out route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignOutRequest = {\n readonly cookieHeader: string | undefined;\n redirectUri: string;\n};\n\ntype SignOutResponse = {\n cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignOutUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignOutRequest): Promise<SignOutResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignOut({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.destroySession(session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignOutUseCase = ReturnType<typeof makeHandleSignOutUseCase>;\n","export class HandleAuthRoutesError extends Error {\n public static readonly becauseNoConfigForPath = (anticipatedPath: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_277,\n message: `No configuration available for path \"${anticipatedPath}\".`,\n });\n\n public static readonly becauseOfUnknownRoute = (anticipatedConfigKey: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_278,\n message: `The config key \"${anticipatedConfigKey}\" is invalid.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../"}
|
package/lib/module.mjs
CHANGED
|
@@ -434,23 +434,23 @@ const $1043eb6460a48bdc$export$d6e32a8c2b1ad7f3 = (deps)=>(dto)=>async ({ reques
|
|
|
434
434
|
}
|
|
435
435
|
case "sign-in-callback":
|
|
436
436
|
{
|
|
437
|
-
const
|
|
437
|
+
const handler = (0, $ac2413e7e33dffd6$export$9c07365b51e93ba3)({
|
|
438
438
|
redirectBackTo: `${baseUrl}${config.redirectBackTo}`
|
|
439
439
|
}, {
|
|
440
440
|
sessionStorage: sessionStorage,
|
|
441
441
|
createLogtoAdapter: createLogtoAdapter
|
|
442
442
|
});
|
|
443
|
-
return
|
|
443
|
+
return handler(request);
|
|
444
444
|
}
|
|
445
445
|
case "sign-out":
|
|
446
446
|
{
|
|
447
|
-
const
|
|
447
|
+
const handler = (0, $8b8766e059fbc2db$export$89f18ff1488dade0)({
|
|
448
448
|
redirectBackTo: `${baseUrl}${config.redirectBackTo}`
|
|
449
449
|
}, {
|
|
450
450
|
sessionStorage: sessionStorage,
|
|
451
451
|
createLogtoAdapter: createLogtoAdapter
|
|
452
452
|
});
|
|
453
|
-
return
|
|
453
|
+
return handler(request);
|
|
454
454
|
}
|
|
455
455
|
default:
|
|
456
456
|
throw (0, $2c6f4bda3966e0b7$export$fcbf49abe9908796).becauseOfUnknownRoute(configKey);
|
package/lib/module.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"mappings":"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","sources":["packages/remix/src/index.ts","packages/remix/src/infrastructure/logto/index.ts","packages/remix/src/infrastructure/logto/create-client.ts","packages/remix/src/infrastructure/logto/create-storage.ts","packages/remix/src/infrastructure/logto/get-context.ts","packages/remix/src/infrastructure/logto/handle-sign-in.ts","packages/remix/src/infrastructure/logto/handle-sign-in-callback.ts","packages/remix/src/infrastructure/logto/handle-sign-out.ts","packages/remix/src/useCases/getContext/index.ts","packages/remix/src/useCases/getContext/GetContextController.ts","packages/remix/src/framework/get-cookie-header-from-request.ts","packages/remix/src/useCases/getContext/GetContextUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/index.ts","packages/remix/src/useCases/handleSignIn/index.ts","packages/remix/src/useCases/handleSignIn/HandleSignInController.ts","packages/remix/src/useCases/handleSignIn/HandleSignInUseCase.ts","packages/remix/src/useCases/handleSignInCallback/index.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackController.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackError.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackUseCase.ts","packages/remix/src/useCases/handleSignOut/index.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutController.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutError.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/HandleAuthRoutesError.ts"],"sourcesContent":["import { GetContextParameters, LogtoConfig } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { makeLogtoAdapter } from './infrastructure/logto';\nimport { makeGetContext } from './useCases/getContext';\nimport { makeHandleAuthRoutes } from './useCases/handleAuthRoutes';\n\ntype Config = Readonly<LogtoConfig> & {\n readonly baseUrl: string;\n};\n\nexport const makeLogtoRemix = (\n config: Config,\n deps: {\n sessionStorage: SessionStorage;\n }\n) => {\n const { sessionStorage } = deps;\n\n const { baseUrl } = config;\n\n const createLogtoAdapter = makeLogtoAdapter(config);\n\n return Object.freeze({\n handleAuthRoutes: makeHandleAuthRoutes({\n baseUrl,\n createLogtoAdapter,\n sessionStorage,\n }),\n\n getContext: (dto: GetContextParameters) =>\n makeGetContext(dto, {\n createLogtoAdapter,\n sessionStorage,\n }),\n });\n};\n\nexport { type LogtoContext } from '@logto/node';\n","import type { LogtoConfig } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nimport { makeLogtoClient } from './create-client';\nimport { createStorage } from './create-storage';\nimport { makeGetContext } from './get-context';\nimport { makeHandleSignIn } from './handle-sign-in';\nimport { makeHandleSignInCallback } from './handle-sign-in-callback';\nimport { makeHandleSignOut } from './handle-sign-out';\n\ntype MakeLogtoAdapterConfiguration = LogtoConfig;\n\nexport const makeLogtoAdapter = (config: MakeLogtoAdapterConfiguration) => (session: Session) => {\n const storage = createStorage(session);\n const createClient = makeLogtoClient(config, storage);\n\n return {\n handleSignIn: makeHandleSignIn({ storage, createClient }),\n handleSignInCallback: makeHandleSignInCallback({ storage, createClient }),\n handleSignOut: makeHandleSignOut({ createClient }),\n getContext: makeGetContext({ storage, createClient }),\n };\n};\n\nexport type CreateLogtoAdapter = ReturnType<typeof makeLogtoAdapter>;\n\nexport { type LogtoContext } from '@logto/node';\n","import LogtoClient, { LogtoConfig } from '@logto/node';\n\nimport { LogtoStorage } from './create-storage';\n\nexport const makeLogtoClient =\n (config: LogtoConfig, storage: LogtoStorage) =>\n // Have to deactivate the eslint rule here as the `LogtoClient`\n // awaits a `navigate` function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n (navigate: (url: string) => void = () => {}) => {\n return new LogtoClient(config, { storage, navigate });\n };\n\nexport type CreateLogtoClient = ReturnType<typeof makeLogtoClient>;\n\nexport { type LogtoConfig } from '@logto/node';\n","import { Storage, StorageKey } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nclass LogtoStorage implements Storage {\n public static readonly fromSession = (session: Session) => {\n return new LogtoStorage({ session });\n };\n\n public readonly session = this.properties.session;\n\n private constructor(\n private readonly properties: {\n session: Session;\n }\n ) {}\n\n public readonly setItem = async (key: StorageKey, value: string) => {\n this.session.set(key, value);\n };\n\n public readonly getItem = async (key: StorageKey) => {\n const itemExists = this.session.has(key);\n\n if (!itemExists) {\n return null;\n }\n\n return String(this.session.get(key));\n };\n\n public readonly removeItem = async (key: StorageKey) => {\n this.session.unset(key);\n };\n\n public readonly save = async () => {\n // Not required as the persistence happens in the integration layer\n };\n}\n\nexport const createStorage = (session: Session) => LogtoStorage.fromSession(session);\n\nexport type { LogtoStorage };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype GetContextResponse = {\n readonly context: LogtoContext;\n};\n\nexport const makeGetContext =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: GetContextParameters): Promise<GetContextResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n const context = await client.getContext(request);\n\n return {\n context,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignInResponse = {\n readonly session: Session;\n readonly navigateToUrl: string;\n};\n\nclass HandleSignInCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignInCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignInRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signIn(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignIn =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInRequest): Promise<HandleSignInResponse> => {\n const { storage, createClient } = deps;\n\n const command = HandleSignInCommand.fromDependencies({ createClient });\n\n const { navigateToUrl } = await command.execute(request);\n\n return {\n session: storage.session,\n navigateToUrl,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInCallbackRequest = {\n callbackUri: string;\n};\n\ntype HandleSignInCallbackResponse = {\n readonly session: Session;\n};\n\nexport const makeHandleSignInCallback =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInCallbackRequest): Promise<HandleSignInCallbackResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n await client.handleSignInCallback(request.callbackUri);\n\n return {\n session: storage.session,\n };\n };\n","import { CreateLogtoClient } from './create-client';\n\ntype HandleSignOutRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignOutResponse = {\n readonly navigateToUrl: string;\n};\n\nclass HandleSignOutCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignOutCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignOutRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signOut(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignOut =\n (deps: { createClient: CreateLogtoClient }) =>\n async (request: HandleSignOutRequest): Promise<HandleSignOutResponse> => {\n const { createClient } = deps;\n\n const command = HandleSignOutCommand.fromDependencies({ createClient });\n\n return command.execute(request);\n };\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { GetContextController } from './GetContextController';\nimport { makeGetContextUseCase } from './GetContextUseCase';\n\ntype HandleGetContextDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeGetContext =\n (dto: GetContextParameters, deps: HandleGetContextDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeGetContextUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = GetContextController.fromDto({\n useCase,\n ...dto,\n });\n\n return controller.execute(request);\n };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { GetContextUseCase } from './GetContextUseCase';\n\ntype GetContextControllerDto = GetContextParameters & {\n readonly useCase: GetContextUseCase;\n};\n\nexport class GetContextController {\n public static readonly fromDto = (dto: GetContextControllerDto) => new GetContextController(dto);\n\n private readonly useCase = this.properties.useCase;\n private constructor(\n private readonly properties: GetContextParameters & {\n useCase: GetContextUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<LogtoContext> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n ...this.properties,\n });\n\n return result.context;\n };\n}\n","export const getCookieHeaderFromRequest = (request: Request) => request.headers.get('Cookie');\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter, LogtoContext } from '../../infrastructure/logto';\n\ntype GetContextRequest = GetContextParameters & {\n readonly cookieHeader: string | undefined;\n};\n\ntype GetContextResponse = {\n context: Readonly<LogtoContext>;\n};\n\nexport const makeGetContextUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: GetContextRequest): Promise<GetContextResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.getContext(request);\n\n return {\n context: response.context,\n };\n };\n\nexport type GetContextUseCase = ReturnType<typeof makeGetContextUseCase>;\n","import { LoaderFunction, SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { makeHandleSignIn } from '../handleSignIn';\nimport { makeHandleSignInCallback } from '../handleSignInCallback';\nimport { makeHandleSignOut } from '../handleSignOut';\nimport { HandleAuthRoutesError } from './HandleAuthRoutesError';\n\ntype AuthRouteConfig = {\n readonly path: string;\n readonly redirectBackTo: string;\n};\n\ntype PossibleRouteTypes = 'sign-in' | 'sign-in-callback' | 'sign-out';\n\ntype HandleAuthRoutesDto = Record<PossibleRouteTypes, AuthRouteConfig>;\n\ntype MakeHandleAuthRoutesDto = {\n readonly baseUrl: string;\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleAuthRoutes =\n (deps: MakeHandleAuthRoutesDto) =>\n (dto: HandleAuthRoutesDto): LoaderFunction =>\n async ({ request }) => {\n const anticipatedPath = new URL(request.url).pathname;\n\n /* eslint-disable no-restricted-syntax */\n const configKey = Object.keys(dto).find(\n (type) => dto[type as PossibleRouteTypes].path === anticipatedPath\n ) as keyof HandleAuthRoutesDto;\n\n const configExists = Boolean(configKey);\n /* eslint-enable no-restricted-syntax */\n\n if (!configExists) {\n throw HandleAuthRoutesError.becauseNoConfigForPath(anticipatedPath);\n }\n\n const { sessionStorage, createLogtoAdapter, baseUrl } = deps;\n\n const config = dto[configKey];\n\n switch (configKey) {\n case 'sign-in': {\n const handler = makeHandleSignIn(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-in-callback': {\n const handler = makeHandleSignInCallback(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-out': {\n const handler = makeHandleSignOut(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n default: {\n throw HandleAuthRoutesError.becauseOfUnknownRoute(configKey);\n }\n }\n };\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInController } from './HandleSignInController';\nimport { makeHandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignIn =\n (dto: HandleSignInDto, deps: HandleSignInDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { HandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInControllerDto = {\n readonly redirectUri: string;\n readonly useCase: HandleSignInUseCase;\n};\n\nexport class HandleSignInController {\n public static readonly fromDto = (dto: HandleSignInControllerDto) =>\n new HandleSignInController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n private constructor(\n private readonly properties: {\n redirectUri: string;\n useCase: HandleSignInUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n const { redirectUri } = this;\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInRequest = {\n readonly cookieHeader: string | undefined;\n readonly redirectUri: string;\n};\n\ntype SignInResponse = {\n readonly cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignInUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInRequest): Promise<SignInResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignIn({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignInUseCase = ReturnType<typeof makeHandleSignInUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInCallbackController } from './HandleSignInCallbackController';\nimport { makeHandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInCallbackDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignInCallback =\n (dto: HandleSignInCallbackDto, deps: HandleSignInCallbackDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInCallbackUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInCallbackController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignInCallbackError } from './HandleSignInCallbackError';\nimport type { HandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackControllerDto = {\n readonly useCase: HandleSignInCallbackUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignInCallbackController {\n public static readonly fromDto = (dto: HandleSignInCallbackControllerDto) =>\n new HandleSignInCallbackController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignInCallbackUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignInCallbackError.becauseNoCookieHeaderPresent();\n }\n\n // In some scenarios, like performing the sign-in callback within a Gitpod\n // environment, the load balancer rewrites the URL and uses `http` as the\n // protocol. Here, we make sure that when the `x-forwarded-proto` HTTP header\n // is present, we will replace `http` with `https` in the `callbackUri`.\n const isForwardedHttpsTraffic = request.headers.get('x-forwarded-proto') === 'https';\n\n const callbackUri = isForwardedHttpsTraffic\n ? request.url.replace('http', 'https')\n : request.url;\n\n const result = await this.useCase({\n cookieHeader,\n callbackUri,\n });\n\n return redirect(this.redirectUri, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignInCallbackError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignInCallbackError({\n code: 1_665_388_541,\n message: `The authentication sign-in callback route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInCallbackRequest = {\n readonly cookieHeader: string;\n readonly callbackUri: string;\n};\n\ntype SignInCallbackResponse = {\n readonly cookieHeader: string;\n};\n\nexport const makeHandleSignInCallbackUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInCallbackRequest): Promise<SignInCallbackResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignInCallback({\n callbackUri: request.callbackUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n };\n };\n\nexport type HandleSignInCallbackUseCase = ReturnType<typeof makeHandleSignInCallbackUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignOutController } from './HandleSignOutController';\nimport { makeHandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignOutDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignOut =\n (dto: HandleSignOutDto, deps: HandleSignOutDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignOutUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignOutController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignOutError } from './HandleSignOutError';\nimport type { HandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutControllerDto = {\n readonly useCase: HandleSignOutUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignOutController {\n public static readonly fromDto = (dto: HandleSignOutControllerDto) =>\n new HandleSignOutController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignOutUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignOutError.becauseNoCookieHeaderPresent();\n }\n\n const result = await this.useCase({\n cookieHeader,\n redirectUri: this.redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignOutError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignOutError({\n code: 1_665_388_713,\n message: `The authentication sign-out route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignOutRequest = {\n readonly cookieHeader: string | undefined;\n redirectUri: string;\n};\n\ntype SignOutResponse = {\n cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignOutUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignOutRequest): Promise<SignOutResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignOut({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.destroySession(session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignOutUseCase = ReturnType<typeof makeHandleSignOutUseCase>;\n","export class HandleAuthRoutesError extends Error {\n public static readonly becauseNoConfigForPath = (anticipatedPath: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_277,\n message: `No configuration available for path \"${anticipatedPath}\".`,\n });\n\n public static readonly becauseOfUnknownRoute = (anticipatedConfigKey: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_278,\n message: `The config key \"${anticipatedConfigKey}\" is invalid.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n"],"names":[],"version":3,"file":"module.mjs.map"}
|
|
1
|
+
{"mappings":"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","sources":["packages/remix/src/index.ts","packages/remix/src/infrastructure/logto/index.ts","packages/remix/src/infrastructure/logto/create-client.ts","packages/remix/src/infrastructure/logto/create-storage.ts","packages/remix/src/infrastructure/logto/get-context.ts","packages/remix/src/infrastructure/logto/handle-sign-in.ts","packages/remix/src/infrastructure/logto/handle-sign-in-callback.ts","packages/remix/src/infrastructure/logto/handle-sign-out.ts","packages/remix/src/useCases/getContext/index.ts","packages/remix/src/useCases/getContext/GetContextController.ts","packages/remix/src/framework/get-cookie-header-from-request.ts","packages/remix/src/useCases/getContext/GetContextUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/index.ts","packages/remix/src/useCases/handleSignIn/index.ts","packages/remix/src/useCases/handleSignIn/HandleSignInController.ts","packages/remix/src/useCases/handleSignIn/HandleSignInUseCase.ts","packages/remix/src/useCases/handleSignInCallback/index.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackController.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackError.ts","packages/remix/src/useCases/handleSignInCallback/HandleSignInCallbackUseCase.ts","packages/remix/src/useCases/handleSignOut/index.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutController.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutError.ts","packages/remix/src/useCases/handleSignOut/HandleSignOutUseCase.ts","packages/remix/src/useCases/handleAuthRoutes/HandleAuthRoutesError.ts"],"sourcesContent":["import { GetContextParameters, LogtoConfig } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { makeLogtoAdapter } from './infrastructure/logto';\nimport { makeGetContext } from './useCases/getContext';\nimport { makeHandleAuthRoutes } from './useCases/handleAuthRoutes';\n\ntype Config = Readonly<LogtoConfig> & {\n readonly baseUrl: string;\n};\n\nexport const makeLogtoRemix = (\n config: Config,\n deps: {\n sessionStorage: SessionStorage;\n }\n) => {\n const { sessionStorage } = deps;\n\n const { baseUrl } = config;\n\n const createLogtoAdapter = makeLogtoAdapter(config);\n\n return Object.freeze({\n handleAuthRoutes: makeHandleAuthRoutes({\n baseUrl,\n createLogtoAdapter,\n sessionStorage,\n }),\n\n getContext: (dto: GetContextParameters) =>\n makeGetContext(dto, {\n createLogtoAdapter,\n sessionStorage,\n }),\n });\n};\n\nexport { type LogtoContext } from '@logto/node';\n","import type { LogtoConfig } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nimport { makeLogtoClient } from './create-client';\nimport { createStorage } from './create-storage';\nimport { makeGetContext } from './get-context';\nimport { makeHandleSignIn } from './handle-sign-in';\nimport { makeHandleSignInCallback } from './handle-sign-in-callback';\nimport { makeHandleSignOut } from './handle-sign-out';\n\ntype MakeLogtoAdapterConfiguration = LogtoConfig;\n\nexport const makeLogtoAdapter = (config: MakeLogtoAdapterConfiguration) => (session: Session) => {\n const storage = createStorage(session);\n const createClient = makeLogtoClient(config, storage);\n\n return {\n handleSignIn: makeHandleSignIn({ storage, createClient }),\n handleSignInCallback: makeHandleSignInCallback({ storage, createClient }),\n handleSignOut: makeHandleSignOut({ createClient }),\n getContext: makeGetContext({ storage, createClient }),\n };\n};\n\nexport type CreateLogtoAdapter = ReturnType<typeof makeLogtoAdapter>;\n\nexport { type LogtoContext } from '@logto/node';\n","import LogtoClient, { LogtoConfig } from '@logto/node';\n\nimport { LogtoStorage } from './create-storage';\n\nexport const makeLogtoClient =\n (config: LogtoConfig, storage: LogtoStorage) =>\n // Have to deactivate the eslint rule here as the `LogtoClient`\n // awaits a `navigate` function.\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n (navigate: (url: string) => void = () => {}) => {\n return new LogtoClient(config, { storage, navigate });\n };\n\nexport type CreateLogtoClient = ReturnType<typeof makeLogtoClient>;\n\nexport { type LogtoConfig } from '@logto/node';\n","import { Storage, StorageKey } from '@logto/node';\nimport { Session } from '@remix-run/node';\n\nclass LogtoStorage implements Storage {\n public static readonly fromSession = (session: Session) => {\n return new LogtoStorage({ session });\n };\n\n public readonly session = this.properties.session;\n\n private constructor(\n private readonly properties: {\n session: Session;\n }\n ) {}\n\n public readonly setItem = async (key: StorageKey, value: string) => {\n this.session.set(key, value);\n };\n\n public readonly getItem = async (key: StorageKey) => {\n const itemExists = this.session.has(key);\n\n if (!itemExists) {\n return null;\n }\n\n return String(this.session.get(key));\n };\n\n public readonly removeItem = async (key: StorageKey) => {\n this.session.unset(key);\n };\n\n public readonly save = async () => {\n // Not required as the persistence happens in the integration layer\n };\n}\n\nexport const createStorage = (session: Session) => LogtoStorage.fromSession(session);\n\nexport type { LogtoStorage };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype GetContextResponse = {\n readonly context: LogtoContext;\n};\n\nexport const makeGetContext =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: GetContextParameters): Promise<GetContextResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n const context = await client.getContext(request);\n\n return {\n context,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignInResponse = {\n readonly session: Session;\n readonly navigateToUrl: string;\n};\n\nclass HandleSignInCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignInCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignInRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signIn(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignIn =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInRequest): Promise<HandleSignInResponse> => {\n const { storage, createClient } = deps;\n\n const command = HandleSignInCommand.fromDependencies({ createClient });\n\n const { navigateToUrl } = await command.execute(request);\n\n return {\n session: storage.session,\n navigateToUrl,\n };\n };\n","import { Session } from '@remix-run/node';\n\nimport { CreateLogtoClient } from './create-client';\nimport { LogtoStorage } from './create-storage';\n\ntype HandleSignInCallbackRequest = {\n callbackUri: string;\n};\n\ntype HandleSignInCallbackResponse = {\n readonly session: Session;\n};\n\nexport const makeHandleSignInCallback =\n (deps: { storage: LogtoStorage; createClient: CreateLogtoClient }) =>\n async (request: HandleSignInCallbackRequest): Promise<HandleSignInCallbackResponse> => {\n const { storage, createClient } = deps;\n\n const client = createClient();\n\n await client.handleSignInCallback(request.callbackUri);\n\n return {\n session: storage.session,\n };\n };\n","import { CreateLogtoClient } from './create-client';\n\ntype HandleSignOutRequest = {\n readonly redirectUri: string;\n};\n\ntype HandleSignOutResponse = {\n readonly navigateToUrl: string;\n};\n\nclass HandleSignOutCommand {\n public static readonly fromDependencies = (dependencies: { createClient: CreateLogtoClient }) =>\n new HandleSignOutCommand({ createClient: dependencies.createClient });\n\n private navigateToUrl = '/api/sign-in';\n\n private constructor(\n private readonly properties: {\n readonly createClient: CreateLogtoClient;\n }\n ) {}\n\n public async execute(request: HandleSignOutRequest) {\n const { createClient } = this.properties;\n\n const client = createClient((url) => {\n this.navigateToUrl = url;\n });\n\n await client.signOut(request.redirectUri);\n\n return {\n navigateToUrl: this.navigateToUrl,\n };\n }\n}\n\nexport const makeHandleSignOut =\n (deps: { createClient: CreateLogtoClient }) =>\n async (request: HandleSignOutRequest): Promise<HandleSignOutResponse> => {\n const { createClient } = deps;\n\n const command = HandleSignOutCommand.fromDependencies({ createClient });\n\n return command.execute(request);\n };\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { GetContextController } from './GetContextController';\nimport { makeGetContextUseCase } from './GetContextUseCase';\n\ntype HandleGetContextDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeGetContext =\n (dto: GetContextParameters, deps: HandleGetContextDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeGetContextUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = GetContextController.fromDto({\n useCase,\n ...dto,\n });\n\n return controller.execute(request);\n };\n","import { GetContextParameters, LogtoContext } from '@logto/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { GetContextUseCase } from './GetContextUseCase';\n\ntype GetContextControllerDto = GetContextParameters & {\n readonly useCase: GetContextUseCase;\n};\n\nexport class GetContextController {\n public static readonly fromDto = (dto: GetContextControllerDto) => new GetContextController(dto);\n\n private readonly useCase = this.properties.useCase;\n private constructor(\n private readonly properties: GetContextParameters & {\n useCase: GetContextUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<LogtoContext> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n ...this.properties,\n });\n\n return result.context;\n };\n}\n","export const getCookieHeaderFromRequest = (request: Request) => request.headers.get('Cookie');\n","import { GetContextParameters } from '@logto/node';\nimport { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter, LogtoContext } from '../../infrastructure/logto';\n\ntype GetContextRequest = GetContextParameters & {\n readonly cookieHeader: string | undefined;\n};\n\ntype GetContextResponse = {\n context: Readonly<LogtoContext>;\n};\n\nexport const makeGetContextUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: GetContextRequest): Promise<GetContextResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.getContext(request);\n\n return {\n context: response.context,\n };\n };\n\nexport type GetContextUseCase = ReturnType<typeof makeGetContextUseCase>;\n","import { LoaderFunction, SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { makeHandleSignIn } from '../handleSignIn';\nimport { makeHandleSignInCallback } from '../handleSignInCallback';\nimport { makeHandleSignOut } from '../handleSignOut';\nimport { HandleAuthRoutesError } from './HandleAuthRoutesError';\n\ntype AuthRouteConfig = {\n readonly path: string;\n readonly redirectBackTo: string;\n};\n\ntype PossibleRouteTypes = 'sign-in' | 'sign-in-callback' | 'sign-out';\n\ntype HandleAuthRoutesDto = Record<PossibleRouteTypes, AuthRouteConfig>;\n\ntype MakeHandleAuthRoutesDto = {\n readonly baseUrl: string;\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleAuthRoutes =\n (deps: MakeHandleAuthRoutesDto) =>\n (dto: HandleAuthRoutesDto): LoaderFunction =>\n async ({ request }) => {\n const anticipatedPath = new URL(request.url).pathname;\n\n /* eslint-disable no-restricted-syntax */\n const configKey = Object.keys(dto).find(\n (type) => dto[type as PossibleRouteTypes].path === anticipatedPath\n ) as keyof HandleAuthRoutesDto;\n\n const configExists = Boolean(configKey);\n /* eslint-enable no-restricted-syntax */\n\n if (!configExists) {\n throw HandleAuthRoutesError.becauseNoConfigForPath(anticipatedPath);\n }\n\n const { sessionStorage, createLogtoAdapter, baseUrl } = deps;\n\n const config = dto[configKey];\n\n switch (configKey) {\n case 'sign-in': {\n const handler = makeHandleSignIn(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-in-callback': {\n const handler = makeHandleSignInCallback(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n case 'sign-out': {\n const handler = makeHandleSignOut(\n {\n redirectBackTo: `${baseUrl}${config.redirectBackTo}`,\n },\n { sessionStorage, createLogtoAdapter }\n );\n\n return handler(request);\n }\n\n default: {\n throw HandleAuthRoutesError.becauseOfUnknownRoute(configKey);\n }\n }\n };\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInController } from './HandleSignInController';\nimport { makeHandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignIn =\n (dto: HandleSignInDto, deps: HandleSignInDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport type { HandleSignInUseCase } from './HandleSignInUseCase';\n\ntype HandleSignInControllerDto = {\n readonly redirectUri: string;\n readonly useCase: HandleSignInUseCase;\n};\n\nexport class HandleSignInController {\n public static readonly fromDto = (dto: HandleSignInControllerDto) =>\n new HandleSignInController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n private constructor(\n private readonly properties: {\n redirectUri: string;\n useCase: HandleSignInUseCase;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n const { redirectUri } = this;\n\n const result = await this.useCase({\n cookieHeader: cookieHeader ?? undefined,\n redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInRequest = {\n readonly cookieHeader: string | undefined;\n readonly redirectUri: string;\n};\n\ntype SignInResponse = {\n readonly cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignInUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInRequest): Promise<SignInResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignIn({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignInUseCase = ReturnType<typeof makeHandleSignInUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignInCallbackController } from './HandleSignInCallbackController';\nimport { makeHandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignInCallbackDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignInCallback =\n (dto: HandleSignInCallbackDto, deps: HandleSignInCallbackDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignInCallbackUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignInCallbackController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignInCallbackError } from './HandleSignInCallbackError';\nimport type { HandleSignInCallbackUseCase } from './HandleSignInCallbackUseCase';\n\ntype HandleSignInCallbackControllerDto = {\n readonly useCase: HandleSignInCallbackUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignInCallbackController {\n public static readonly fromDto = (dto: HandleSignInCallbackControllerDto) =>\n new HandleSignInCallbackController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignInCallbackUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignInCallbackError.becauseNoCookieHeaderPresent();\n }\n\n // In some scenarios, like performing the sign-in callback within a Gitpod\n // environment, the load balancer rewrites the URL and uses `http` as the\n // protocol. Here, we make sure that when the `x-forwarded-proto` HTTP header\n // is present, we will replace `http` with `https` in the `callbackUri`.\n const isForwardedHttpsTraffic = request.headers.get('x-forwarded-proto') === 'https';\n\n const callbackUri = isForwardedHttpsTraffic\n ? request.url.replace('http', 'https')\n : request.url;\n\n const result = await this.useCase({\n cookieHeader,\n callbackUri,\n });\n\n return redirect(this.redirectUri, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignInCallbackError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignInCallbackError({\n code: 1_665_388_541,\n message: `The authentication sign-in callback route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignInCallbackRequest = {\n readonly cookieHeader: string;\n readonly callbackUri: string;\n};\n\ntype SignInCallbackResponse = {\n readonly cookieHeader: string;\n};\n\nexport const makeHandleSignInCallbackUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignInCallbackRequest): Promise<SignInCallbackResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignInCallback({\n callbackUri: request.callbackUri,\n });\n\n const cookieHeader = await sessionStorage.commitSession(response.session);\n\n return {\n cookieHeader,\n };\n };\n\nexport type HandleSignInCallbackUseCase = ReturnType<typeof makeHandleSignInCallbackUseCase>;\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\nimport { HandleSignOutController } from './HandleSignOutController';\nimport { makeHandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutDto = {\n readonly redirectBackTo: string;\n};\n\ntype HandleSignOutDeps = {\n readonly createLogtoAdapter: CreateLogtoAdapter;\n readonly sessionStorage: SessionStorage;\n};\n\nexport const makeHandleSignOut =\n (dto: HandleSignOutDto, deps: HandleSignOutDeps) => async (request: Request) => {\n const { createLogtoAdapter, sessionStorage } = deps;\n\n const useCase = makeHandleSignOutUseCase({\n createLogtoAdapter,\n sessionStorage,\n });\n\n const controller = HandleSignOutController.fromDto({\n useCase,\n redirectUri: dto.redirectBackTo,\n });\n\n return controller.execute(request);\n };\n","import { redirect, TypedResponse } from '@remix-run/node';\n\nimport { getCookieHeaderFromRequest } from '../../framework/get-cookie-header-from-request';\nimport { HandleSignOutError } from './HandleSignOutError';\nimport type { HandleSignOutUseCase } from './HandleSignOutUseCase';\n\ntype HandleSignOutControllerDto = {\n readonly useCase: HandleSignOutUseCase;\n readonly redirectUri: string;\n};\n\nexport class HandleSignOutController {\n public static readonly fromDto = (dto: HandleSignOutControllerDto) =>\n new HandleSignOutController({\n useCase: dto.useCase,\n redirectUri: dto.redirectUri,\n });\n\n private readonly useCase = this.properties.useCase;\n private readonly redirectUri = this.properties.redirectUri;\n\n private constructor(\n private readonly properties: {\n useCase: HandleSignOutUseCase;\n redirectUri: string;\n }\n ) {}\n\n public readonly execute = async (request: Request): Promise<TypedResponse<never>> => {\n const cookieHeader = getCookieHeaderFromRequest(request);\n\n if (!cookieHeader) {\n throw HandleSignOutError.becauseNoCookieHeaderPresent();\n }\n\n const result = await this.useCase({\n cookieHeader,\n redirectUri: this.redirectUri,\n });\n\n return redirect(result.navigateToUrl, {\n headers: {\n 'Set-Cookie': result.cookieHeader,\n },\n });\n };\n}\n","export class HandleSignOutError extends Error {\n public static readonly becauseNoCookieHeaderPresent = () =>\n new HandleSignOutError({\n code: 1_665_388_713,\n message: `The authentication sign-out route can't be accessed without a valid cookie.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n","import { SessionStorage } from '@remix-run/node';\n\nimport { CreateLogtoAdapter } from '../../infrastructure/logto';\n\ntype SignOutRequest = {\n readonly cookieHeader: string | undefined;\n redirectUri: string;\n};\n\ntype SignOutResponse = {\n cookieHeader: string;\n readonly navigateToUrl: string;\n};\n\nexport const makeHandleSignOutUseCase =\n (deps: { createLogtoAdapter: CreateLogtoAdapter; sessionStorage: SessionStorage }) =>\n async (request: SignOutRequest): Promise<SignOutResponse> => {\n const { sessionStorage, createLogtoAdapter } = deps;\n\n const session = await sessionStorage.getSession(request.cookieHeader);\n\n const logto = createLogtoAdapter(session);\n\n const response = await logto.handleSignOut({\n redirectUri: request.redirectUri,\n });\n\n const cookieHeader = await sessionStorage.destroySession(session);\n\n return {\n cookieHeader,\n navigateToUrl: response.navigateToUrl,\n };\n };\n\nexport type HandleSignOutUseCase = ReturnType<typeof makeHandleSignOutUseCase>;\n","export class HandleAuthRoutesError extends Error {\n public static readonly becauseNoConfigForPath = (anticipatedPath: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_277,\n message: `No configuration available for path \"${anticipatedPath}\".`,\n });\n\n public static readonly becauseOfUnknownRoute = (anticipatedConfigKey: string) =>\n new HandleAuthRoutesError({\n code: 1_665_388_278,\n message: `The config key \"${anticipatedConfigKey}\" is invalid.`,\n });\n\n public readonly code = this.properties.code;\n public readonly cause = this.properties.cause;\n public readonly plainMessage = this.properties.message;\n\n private constructor(\n private readonly properties: {\n readonly code: number;\n readonly message: string;\n readonly cause?: Error;\n }\n ) {\n super(`#[${properties.code}] ${properties.message}`);\n }\n}\n"],"names":[],"version":3,"file":"module.mjs.map"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logto/remix",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-rc.0",
|
|
4
4
|
"source": "./src/index.ts",
|
|
5
5
|
"main": "./lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -29,15 +29,15 @@
|
|
|
29
29
|
"prepack": "pnpm test"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@logto/node": "^1.0.0-
|
|
32
|
+
"@logto/node": "^1.0.0-rc.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@commitlint/cli": "^17.1.2",
|
|
36
36
|
"@commitlint/config-conventional": "^17.1.0",
|
|
37
37
|
"@jest/types": "^27.5.1",
|
|
38
|
-
"@parcel/core": "^2.
|
|
39
|
-
"@parcel/packager-ts": "^2.
|
|
40
|
-
"@parcel/transformer-typescript-types": "^2.
|
|
38
|
+
"@parcel/core": "^2.8.3",
|
|
39
|
+
"@parcel/packager-ts": "^2.8.3",
|
|
40
|
+
"@parcel/transformer-typescript-types": "^2.8.3",
|
|
41
41
|
"@remix-run/node": "^1.7.2",
|
|
42
42
|
"@silverhand/eslint-config": "^1.0.0",
|
|
43
43
|
"@silverhand/ts-config": "^1.0.0",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"jest-location-mock": "^1.0.9",
|
|
53
53
|
"jest-matcher-specific-error": "^1.0.0",
|
|
54
54
|
"lint-staged": "^13.0.3",
|
|
55
|
-
"parcel": "^2.
|
|
55
|
+
"parcel": "^2.8.3",
|
|
56
56
|
"prettier": "^2.7.1",
|
|
57
57
|
"react": "^17.0.2",
|
|
58
58
|
"react-dom": "^17.0.2",
|
|
@@ -72,9 +72,9 @@
|
|
|
72
72
|
"main": {
|
|
73
73
|
"context": "node",
|
|
74
74
|
"engines": {
|
|
75
|
-
"node": "
|
|
75
|
+
"node": ">=18.12.0"
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "98960287d1016efa9e68b6c4d4407885d6ec9dc6"
|
|
80
80
|
}
|