gemi 0.112.1 → 0.113.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/index.js +2 -2
- package/dist/ai/index.js.map +1 -1
- package/dist/app/index.js +1 -1
- package/dist/auth/AuthController.d.ts +19 -2
- package/dist/auth/AuthController.d.ts.map +1 -1
- package/dist/auth/config.d.ts +9 -0
- package/dist/auth/config.d.ts.map +1 -1
- package/dist/auth/oauth/GoogleOAuthProvider.d.ts +16 -17
- package/dist/auth/oauth/GoogleOAuthProvider.d.ts.map +1 -1
- package/dist/auth/oauth/OAuthProvider.d.ts +56 -7
- package/dist/auth/oauth/OAuthProvider.d.ts.map +1 -1
- package/dist/auth/oauth/XOAuthProvider.d.ts +10 -9
- package/dist/auth/oauth/XOAuthProvider.d.ts.map +1 -1
- package/dist/auth/oauth/oauthState.d.ts +70 -0
- package/dist/auth/oauth/oauthState.d.ts.map +1 -0
- package/dist/auth/routes.d.ts +3 -2
- package/dist/auth/routes.d.ts.map +1 -1
- package/dist/bun/plugin.js +1 -1
- package/dist/bun/preload.js +1 -1
- package/dist/{chunk-jdtn0zk2.js → chunk-01qd6xx3.js} +3 -3
- package/dist/{chunk-jdtn0zk2.js.map → chunk-01qd6xx3.js.map} +1 -1
- package/dist/{chunk-15a1mrdv.js → chunk-1p85fdrk.js} +2 -2
- package/dist/{chunk-15a1mrdv.js.map → chunk-1p85fdrk.js.map} +1 -1
- package/dist/{chunk-qyp652jz.js → chunk-1se4t9rg.js} +3 -3
- package/dist/{chunk-qyp652jz.js.map → chunk-1se4t9rg.js.map} +1 -1
- package/dist/{chunk-b7cqwcbm.js → chunk-3f1kq32g.js} +2 -2
- package/dist/{chunk-b7cqwcbm.js.map → chunk-3f1kq32g.js.map} +1 -1
- package/dist/{chunk-57edag57.js → chunk-4t1pbt9p.js} +3 -3
- package/dist/{chunk-57edag57.js.map → chunk-4t1pbt9p.js.map} +1 -1
- package/dist/{chunk-851k0b26.js → chunk-4tp2cr02.js} +2 -2
- package/dist/{chunk-851k0b26.js.map → chunk-4tp2cr02.js.map} +1 -1
- package/dist/{chunk-a9q2cr4w.js → chunk-571rvxe6.js} +2 -2
- package/dist/{chunk-a9q2cr4w.js.map → chunk-571rvxe6.js.map} +1 -1
- package/dist/{chunk-mx9y9mtx.js → chunk-5nqkwa2w.js} +1 -1
- package/dist/{chunk-d0trs736.js → chunk-5q4a7yqf.js} +2 -2
- package/dist/{chunk-d0trs736.js.map → chunk-5q4a7yqf.js.map} +1 -1
- package/dist/{chunk-dan79jab.js → chunk-5x0aacrn.js} +2 -2
- package/dist/{chunk-dan79jab.js.map → chunk-5x0aacrn.js.map} +1 -1
- package/dist/{chunk-bf1ets45.js → chunk-5zzhypmt.js} +2 -2
- package/dist/{chunk-bf1ets45.js.map → chunk-5zzhypmt.js.map} +1 -1
- package/dist/{chunk-18c3y8m3.js → chunk-68s1f5d5.js} +2 -2
- package/dist/{chunk-18c3y8m3.js.map → chunk-68s1f5d5.js.map} +1 -1
- package/dist/chunk-6g20zec2.js +46 -0
- package/dist/{chunk-4sb1484x.js.map → chunk-6g20zec2.js.map} +7 -5
- package/dist/{chunk-csbc1fxa.js → chunk-6wymbbes.js} +3 -3
- package/dist/{chunk-csbc1fxa.js.map → chunk-6wymbbes.js.map} +1 -1
- package/dist/{chunk-b7qjp7r1.js → chunk-7jnpnjth.js} +2 -2
- package/dist/{chunk-b7qjp7r1.js.map → chunk-7jnpnjth.js.map} +1 -1
- package/dist/{chunk-ddad3902.js → chunk-8mbyyh8j.js} +2 -2
- package/dist/{chunk-ddad3902.js.map → chunk-8mbyyh8j.js.map} +1 -1
- package/dist/{chunk-dx7wpz5b.js → chunk-9tpx9ag3.js} +2 -2
- package/dist/{chunk-dx7wpz5b.js.map → chunk-9tpx9ag3.js.map} +1 -1
- package/dist/{chunk-beks65me.js → chunk-9vsj0ksk.js} +2 -2
- package/dist/{chunk-beks65me.js.map → chunk-9vsj0ksk.js.map} +1 -1
- package/dist/{chunk-rx2shb3t.js → chunk-agw3anaf.js} +1 -1
- package/dist/{chunk-jn8hh25v.js → chunk-atmzm0z3.js} +2 -2
- package/dist/{chunk-jn8hh25v.js.map → chunk-atmzm0z3.js.map} +1 -1
- package/dist/{chunk-es487acc.js → chunk-bq5nqqeq.js} +1 -1
- package/dist/{chunk-b1mk12xg.js → chunk-c7mp2kyp.js} +2 -2
- package/dist/{chunk-b1mk12xg.js.map → chunk-c7mp2kyp.js.map} +1 -1
- package/dist/{chunk-j0sncgxc.js → chunk-cqnfp0n9.js} +3 -3
- package/dist/{chunk-j0sncgxc.js.map → chunk-cqnfp0n9.js.map} +1 -1
- package/dist/{chunk-kk502yk2.js → chunk-d04r0hdf.js} +2 -2
- package/dist/{chunk-kk502yk2.js.map → chunk-d04r0hdf.js.map} +1 -1
- package/dist/{chunk-2taa0brj.js → chunk-dbwhgyg3.js} +2 -2
- package/dist/{chunk-2taa0brj.js.map → chunk-dbwhgyg3.js.map} +1 -1
- package/dist/{chunk-k7rbkhhw.js → chunk-de03dewf.js} +2 -2
- package/dist/{chunk-k7rbkhhw.js.map → chunk-de03dewf.js.map} +1 -1
- package/dist/{chunk-qtbf3w6w.js → chunk-essqp1ek.js} +2 -2
- package/dist/{chunk-qtbf3w6w.js.map → chunk-essqp1ek.js.map} +1 -1
- package/dist/{chunk-5waxjsvv.js → chunk-fnkjmq94.js} +2 -2
- package/dist/{chunk-5waxjsvv.js.map → chunk-fnkjmq94.js.map} +1 -1
- package/dist/{chunk-8reepafh.js → chunk-fr0arqdj.js} +2 -2
- package/dist/{chunk-8reepafh.js.map → chunk-fr0arqdj.js.map} +1 -1
- package/dist/chunk-fsfbyg5e.js +5 -0
- package/dist/{chunk-d9an2nra.js.map → chunk-fsfbyg5e.js.map} +1 -1
- package/dist/{chunk-ga7c7tq0.js → chunk-g8kx549d.js} +2 -2
- package/dist/{chunk-ga7c7tq0.js.map → chunk-g8kx549d.js.map} +1 -1
- package/dist/{chunk-xs4c2nvz.js → chunk-g8sc6scv.js} +2 -2
- package/dist/{chunk-xs4c2nvz.js.map → chunk-g8sc6scv.js.map} +1 -1
- package/dist/{chunk-75ptmewf.js → chunk-k2fh4r0p.js} +2 -2
- package/dist/{chunk-75ptmewf.js.map → chunk-k2fh4r0p.js.map} +1 -1
- package/dist/{chunk-wexs11yy.js → chunk-kexsfyjj.js} +2 -2
- package/dist/{chunk-wexs11yy.js.map → chunk-kexsfyjj.js.map} +1 -1
- package/dist/{chunk-ryzcfxq7.js → chunk-kp7k4s5c.js} +2 -2
- package/dist/{chunk-ryzcfxq7.js.map → chunk-kp7k4s5c.js.map} +1 -1
- package/dist/{chunk-tmrmwthr.js → chunk-kz4yp5n7.js} +2 -2
- package/dist/{chunk-tmrmwthr.js.map → chunk-kz4yp5n7.js.map} +1 -1
- package/dist/{chunk-j9jqxv1d.js → chunk-mepaedy5.js} +2 -2
- package/dist/{chunk-j9jqxv1d.js.map → chunk-mepaedy5.js.map} +1 -1
- package/dist/{chunk-scbvv2e4.js → chunk-mk0rtgd1.js} +2 -2
- package/dist/{chunk-scbvv2e4.js.map → chunk-mk0rtgd1.js.map} +1 -1
- package/dist/{chunk-mvtgx1mr.js → chunk-nksn6xcd.js} +2 -2
- package/dist/{chunk-mvtgx1mr.js.map → chunk-nksn6xcd.js.map} +1 -1
- package/dist/{chunk-s9rfgxj5.js → chunk-nysqgzp1.js} +2 -2
- package/dist/{chunk-s9rfgxj5.js.map → chunk-nysqgzp1.js.map} +1 -1
- package/dist/{chunk-5az0mq4p.js → chunk-p3zmc8k8.js} +2 -2
- package/dist/{chunk-5az0mq4p.js.map → chunk-p3zmc8k8.js.map} +1 -1
- package/dist/{chunk-9hr0bcfy.js → chunk-qpttgn4k.js} +3 -3
- package/dist/{chunk-9hr0bcfy.js.map → chunk-qpttgn4k.js.map} +1 -1
- package/dist/{chunk-bhw7k8vp.js → chunk-qt8nvpqp.js} +2 -2
- package/dist/{chunk-bhw7k8vp.js.map → chunk-qt8nvpqp.js.map} +1 -1
- package/dist/{chunk-teny6xkw.js → chunk-r7b12dmm.js} +2 -2
- package/dist/{chunk-teny6xkw.js.map → chunk-r7b12dmm.js.map} +1 -1
- package/dist/{chunk-amvy4r59.js → chunk-rg4hhxj3.js} +2 -2
- package/dist/{chunk-amvy4r59.js.map → chunk-rg4hhxj3.js.map} +1 -1
- package/dist/{chunk-53bek7sp.js → chunk-rh2fad7n.js} +1 -1
- package/dist/{chunk-xv74rhay.js → chunk-sr18y2ck.js} +2 -2
- package/dist/{chunk-xv74rhay.js.map → chunk-sr18y2ck.js.map} +1 -1
- package/dist/{chunk-vgdcz7tk.js → chunk-szr1k584.js} +2 -2
- package/dist/{chunk-vgdcz7tk.js.map → chunk-szr1k584.js.map} +1 -1
- package/dist/{chunk-dm59ze55.js → chunk-v4gwmhtf.js} +2 -2
- package/dist/{chunk-dm59ze55.js.map → chunk-v4gwmhtf.js.map} +1 -1
- package/dist/{chunk-et3vhkbf.js → chunk-vc9phr57.js} +2 -2
- package/dist/{chunk-et3vhkbf.js.map → chunk-vc9phr57.js.map} +1 -1
- package/dist/{chunk-30yg31sz.js → chunk-vdwagp7y.js} +2 -2
- package/dist/{chunk-30yg31sz.js.map → chunk-vdwagp7y.js.map} +1 -1
- package/dist/{chunk-6w79zajj.js → chunk-vqa3agzw.js} +3 -3
- package/dist/{chunk-6w79zajj.js.map → chunk-vqa3agzw.js.map} +1 -1
- package/dist/{chunk-jn59bsww.js → chunk-vwprq300.js} +2 -2
- package/dist/{chunk-jn59bsww.js.map → chunk-vwprq300.js.map} +1 -1
- package/dist/{chunk-0z2h35d7.js → chunk-vzf5pbx3.js} +2 -2
- package/dist/{chunk-0z2h35d7.js.map → chunk-vzf5pbx3.js.map} +1 -1
- package/dist/{chunk-1pvkw2pq.js → chunk-w45agtch.js} +2 -2
- package/dist/{chunk-1pvkw2pq.js.map → chunk-w45agtch.js.map} +1 -1
- package/dist/{chunk-ck0v2kzw.js → chunk-wr3e4sez.js} +2 -2
- package/dist/{chunk-ck0v2kzw.js.map → chunk-wr3e4sez.js.map} +1 -1
- package/dist/{chunk-mrdarm2q.js → chunk-x5sert1k.js} +2 -2
- package/dist/{chunk-mrdarm2q.js.map → chunk-x5sert1k.js.map} +1 -1
- package/dist/{chunk-d8ekyng4.js → chunk-x5yq097b.js} +2 -2
- package/dist/{chunk-d8ekyng4.js.map → chunk-x5yq097b.js.map} +1 -1
- package/dist/{chunk-p2fhtf5r.js → chunk-xqwdn9kb.js} +3 -3
- package/dist/{chunk-p2fhtf5r.js.map → chunk-xqwdn9kb.js.map} +1 -1
- package/dist/{chunk-yv1psptb.js → chunk-y596ghpz.js} +2 -2
- package/dist/{chunk-yv1psptb.js.map → chunk-y596ghpz.js.map} +1 -1
- package/dist/{chunk-rend2sbk.js → chunk-y6frz1vm.js} +1 -1
- package/dist/{chunk-hfyxvdjj.js → chunk-y6v0x869.js} +2 -2
- package/dist/{chunk-hfyxvdjj.js.map → chunk-y6v0x869.js.map} +1 -1
- package/dist/{chunk-gcs9ydjv.js → chunk-yyzexrnb.js} +2 -2
- package/dist/{chunk-gcs9ydjv.js.map → chunk-yyzexrnb.js.map} +1 -1
- package/dist/{chunk-eazqda9z.js → chunk-z5hrymvn.js} +3 -3
- package/dist/{chunk-eazqda9z.js.map → chunk-z5hrymvn.js.map} +1 -1
- package/dist/{chunk-tb126j80.js → chunk-zng3qexn.js} +2 -2
- package/dist/{chunk-tb126j80.js.map → chunk-zng3qexn.js.map} +1 -1
- package/dist/{chunk-zfter1x0.js → chunk-zyer1g7k.js} +4 -4
- package/dist/{chunk-zfter1x0.js.map → chunk-zyer1g7k.js.map} +1 -1
- package/dist/config/index.js +1 -1
- package/dist/console/run.js +2 -2
- package/dist/console/run.js.map +1 -1
- package/dist/container/index.js +2 -2
- package/dist/container/index.js.map +1 -1
- package/dist/database/index.js +2 -2
- package/dist/database/index.js.map +1 -1
- package/dist/email/index.js +2 -2
- package/dist/email/index.js.map +1 -1
- package/dist/facades/index.js +2 -2
- package/dist/facades/index.js.map +1 -1
- package/dist/foundation/index.js +2 -2
- package/dist/foundation/index.js.map +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/i18n/dictionaryRuntime.js +2 -2
- package/dist/i18n/dictionaryRuntime.js.map +1 -1
- package/dist/i18n/index.js +2 -2
- package/dist/i18n/index.js.map +1 -1
- package/dist/kernel/index.js +2 -2
- package/dist/kernel/index.js.map +1 -1
- package/dist/orm/index.js +2 -2
- package/dist/orm/index.js.map +1 -1
- package/dist/server/index.js +2 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/index.d.ts +2 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +8 -8
- package/dist/services/index.js.map +5 -6
- package/dist/services/queue/work.js +2 -2
- package/dist/services/queue/work.js.map +1 -1
- package/dist/stats/route-table.js +1 -1
- package/dist/support/index.js +2 -2
- package/dist/support/index.js.map +1 -1
- package/dist/vitest/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-4sb1484x.js +0 -46
- package/dist/chunk-d9an2nra.js +0 -5
- /package/dist/{chunk-mx9y9mtx.js.map → chunk-5nqkwa2w.js.map} +0 -0
- /package/dist/{chunk-rx2shb3t.js.map → chunk-agw3anaf.js.map} +0 -0
- /package/dist/{chunk-es487acc.js.map → chunk-bq5nqqeq.js.map} +0 -0
- /package/dist/{chunk-53bek7sp.js.map → chunk-rh2fad7n.js.map} +0 -0
- /package/dist/{chunk-rend2sbk.js.map → chunk-y6frz1vm.js.map} +0 -0
package/dist/app/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{Ha as a}from"../chunk-
|
|
2
|
+
import{Ha as a}from"../chunk-kp7k4s5c.js";import"../chunk-fnkjmq94.js";import"../chunk-8mbyyh8j.js";export{a as App};
|
|
3
3
|
|
|
4
4
|
//# debugId=288F3EAB17F12DE464756E2164756E21
|
|
@@ -109,12 +109,26 @@ export declare class AuthController extends Controller {
|
|
|
109
109
|
destination: string;
|
|
110
110
|
}>;
|
|
111
111
|
oauthCallback(req?: HttpRequest<Record<string, never>, Record<string, never>>): Promise<{
|
|
112
|
-
session:
|
|
113
|
-
|
|
112
|
+
session: null;
|
|
113
|
+
error: string;
|
|
114
|
+
redirectTo: string | null;
|
|
114
115
|
} | {
|
|
115
116
|
session: import("./types").SessionWithUser;
|
|
116
117
|
redirectTo: string;
|
|
117
118
|
}>;
|
|
119
|
+
/**
|
|
120
|
+
* A refused OAuth callback: the reason code and the page the sign-in was
|
|
121
|
+
* meant to return to. With `auth.oauthFailurePath` set, the browser is
|
|
122
|
+
* redirected there as `?error=<code>&redirect=<page>`; otherwise the
|
|
123
|
+
* callback view renders with `{ session: null, error, redirectTo }`.
|
|
124
|
+
*
|
|
125
|
+
* Not a route — `protected` keeps it off the controller's public surface.
|
|
126
|
+
*/
|
|
127
|
+
protected oauthFailure(req: HttpRequest<any, any>, error: string): {
|
|
128
|
+
session: null;
|
|
129
|
+
error: string;
|
|
130
|
+
redirectTo: string | null;
|
|
131
|
+
};
|
|
118
132
|
/**
|
|
119
133
|
* Step 2 of `oauthCallback`: an identity that resolved to nobody, matched by
|
|
120
134
|
* email. Returns null when the callback must be refused.
|
|
@@ -124,7 +138,10 @@ export declare class AuthController extends Controller {
|
|
|
124
138
|
protected linkOAuthAccount(args: {
|
|
125
139
|
provider: string;
|
|
126
140
|
providerId?: string;
|
|
141
|
+
/** Normalised: trimmed and lower-cased. */
|
|
127
142
|
email: string;
|
|
143
|
+
/** As the provider returned it, for users stored before emails were normalised. */
|
|
144
|
+
rawEmail?: string;
|
|
128
145
|
name?: string;
|
|
129
146
|
username?: string;
|
|
130
147
|
locale: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthController.d.ts","sourceRoot":"","sources":["../../auth/AuthController.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASlD,OAAO,KAAK,EAAc,IAAI,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"AuthController.d.ts","sourceRoot":"","sources":["../../auth/AuthController.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/config.d.ts
CHANGED
|
@@ -152,6 +152,15 @@ export interface AuthConfig {
|
|
|
152
152
|
migrateLegacySession?: LegacySessionMigrator | null;
|
|
153
153
|
signUpRequest?: new () => HttpRequest<any, any>;
|
|
154
154
|
oauthProviders?: Record<string, OAuthProvider>;
|
|
155
|
+
/**
|
|
156
|
+
* Where a failed OAuth callback sends the browser, with the reason as
|
|
157
|
+
* `?error=` (`access_denied`, `invalid_state`, `email_not_verified`, …) and
|
|
158
|
+
* the page the sign-in was meant to return to as `?redirect=`, when there was
|
|
159
|
+
* one. A same-origin path, typically the sign-in page. `null`, the default,
|
|
160
|
+
* renders the callback view with `{ session: null, error, redirectTo }`
|
|
161
|
+
* instead.
|
|
162
|
+
*/
|
|
163
|
+
oauthFailurePath?: string | null;
|
|
155
164
|
verifyPassword?: (password: string, hash: string) => Promise<boolean>;
|
|
156
165
|
hashPassword?: (password: string) => Promise<string>;
|
|
157
166
|
generateForgotPasswordToken?: (user: User) => Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../auth/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,uCAAuC;AACvC,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,iGAAiG;IACjG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;;;OAMG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC1D;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,GAAG,CAAC;IACb,mFAAmF;IACnF,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;IAC3D,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAClC,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE;IACH,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB,KACE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAGhC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAEpD,aAAa,CAAC,EAAE,UAAU,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../auth/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
import type { HttpRequest } from "../../http/HttpRequest";
|
|
2
|
-
import { OAuthProvider } from "./OAuthProvider";
|
|
2
|
+
import { type OAuthAuthorizationContext, type OAuthCallbackContext, OAuthProvider, type OAuthProfile } from "./OAuthProvider";
|
|
3
3
|
type Config = {
|
|
4
4
|
clientId: string;
|
|
5
5
|
scope: string;
|
|
6
6
|
clientSecret: string;
|
|
7
|
+
/**
|
|
8
|
+
* The callback path, on `HOST_NAME`. Used for the `redirect_uri` of both the
|
|
9
|
+
* authorization URL and the token exchange, which Google requires to match.
|
|
10
|
+
*/
|
|
7
11
|
redirectPath: string;
|
|
12
|
+
/**
|
|
13
|
+
* Extra parameters for Google's authorization URL, such as
|
|
14
|
+
* `{ prompt: "select_account" }` or `{ hd: "example.com" }`. They cannot
|
|
15
|
+
* replace `state`, the PKCE challenge, `redirect_uri` or `client_id`.
|
|
16
|
+
*/
|
|
17
|
+
authorizationParams: Record<string, string>;
|
|
8
18
|
};
|
|
9
19
|
export declare class GoogleOAuthProvider extends OAuthProvider {
|
|
10
|
-
config:
|
|
11
|
-
clientId: string;
|
|
12
|
-
clientSecret: string;
|
|
13
|
-
redirectPath: string;
|
|
14
|
-
scope: string;
|
|
15
|
-
};
|
|
20
|
+
config: Config;
|
|
16
21
|
constructor(config?: Partial<Config>);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
email?: undefined;
|
|
22
|
-
} | {
|
|
23
|
-
providerId: any;
|
|
24
|
-
name: any;
|
|
25
|
-
email: any;
|
|
26
|
-
}>;
|
|
22
|
+
/** `HOST_NAME` + `redirectPath`, the same for the authorization and the exchange. */
|
|
23
|
+
redirectUri(): string;
|
|
24
|
+
getRedirectUrl(_req?: HttpRequest, ctx?: OAuthAuthorizationContext): string;
|
|
25
|
+
onCallback(req: HttpRequest, ctx?: OAuthCallbackContext): Promise<OAuthProfile>;
|
|
27
26
|
}
|
|
28
27
|
export {};
|
|
29
28
|
//# sourceMappingURL=GoogleOAuthProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleOAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/GoogleOAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"GoogleOAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/GoogleOAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAEzB,aAAa,EACb,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C,CAAC;AAgBF,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,MAAM,EAAE,MAAM,CAAC;gBACH,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM;IAKxC,qFAAqF;IACrF,WAAW;IAIX,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,yBAAyB;IAuB5D,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;CAwDtF"}
|
|
@@ -1,6 +1,56 @@
|
|
|
1
1
|
import { HttpRequest } from "../../http/HttpRequest";
|
|
2
|
+
/**
|
|
3
|
+
* What `oauthRedirect` hands `getRedirectUrl`: the round trip's `state` and
|
|
4
|
+
* PKCE challenge, which gemi has already stored for the callback to check.
|
|
5
|
+
*
|
|
6
|
+
* A provider puts `state` on the authorization URL **as is** — the callback is
|
|
7
|
+
* refused unless the provider echoes it back. `codeChallenge` goes on the URL
|
|
8
|
+
* too (with `code_challenge_method=S256`) for a provider that supports PKCE.
|
|
9
|
+
*/
|
|
10
|
+
export interface OAuthAuthorizationContext {
|
|
11
|
+
state: string;
|
|
12
|
+
codeChallenge: string;
|
|
13
|
+
codeChallengeMethod: "S256";
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* What `oauthCallback` hands `onCallback`, once the `state` has been checked:
|
|
17
|
+
* the PKCE verifier to send with the token exchange.
|
|
18
|
+
*/
|
|
19
|
+
export interface OAuthCallbackContext {
|
|
20
|
+
state: string;
|
|
21
|
+
codeVerifier: string;
|
|
22
|
+
}
|
|
23
|
+
export interface OAuthProfile {
|
|
24
|
+
email?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the provider says it has verified `email`. `false` refuses a
|
|
27
|
+
* callback that would sign in or create a user by that email; a provider that
|
|
28
|
+
* cannot tell leaves it undefined. Report it whenever the provider exposes it
|
|
29
|
+
* (Google's `email_verified`).
|
|
30
|
+
*/
|
|
31
|
+
emailVerified?: boolean;
|
|
32
|
+
name?: string;
|
|
33
|
+
username?: string;
|
|
34
|
+
providerId?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A failed callback, carrying the reason code the app is given (`?error=` on
|
|
38
|
+
* `auth.oauthFailurePath`, and `error` in the callback view's props). Throw it
|
|
39
|
+
* from `onCallback` for a failure with a known reason — `invalid_grant` from a
|
|
40
|
+
* token exchange, say. Any other error thrown there is reported as
|
|
41
|
+
* `provider_error`.
|
|
42
|
+
*/
|
|
43
|
+
export declare class OAuthCallbackError extends Error {
|
|
44
|
+
code: string;
|
|
45
|
+
constructor(code: string, message?: string);
|
|
46
|
+
}
|
|
2
47
|
export declare abstract class OAuthProvider {
|
|
3
|
-
|
|
48
|
+
/**
|
|
49
|
+
* The provider's authorization URL. Put `ctx.state` on it unchanged — a
|
|
50
|
+
* callback whose `state` does not match is refused — and `ctx.codeChallenge`
|
|
51
|
+
* when the provider supports PKCE.
|
|
52
|
+
*/
|
|
53
|
+
abstract getRedirectUrl(req: HttpRequest, ctx?: OAuthAuthorizationContext): string | Promise<string>;
|
|
4
54
|
/**
|
|
5
55
|
* `providerId` is the provider's stable account identifier (Google's `sub`,
|
|
6
56
|
* X's user id) — the value the callback recognises a returning account by.
|
|
@@ -8,12 +58,11 @@ export declare abstract class OAuthProvider {
|
|
|
8
58
|
* email: those change, and a matching one is not the same account. A provider
|
|
9
59
|
* that returns none falls back to matching by `email`, and no `SocialAccount`
|
|
10
60
|
* is written for it.
|
|
61
|
+
*
|
|
62
|
+
* Called only once the round trip's `state` has been verified, and never for
|
|
63
|
+
* a callback carrying `?error=`. Send `ctx.codeVerifier` with the token
|
|
64
|
+
* exchange when the authorization URL carried a challenge.
|
|
11
65
|
*/
|
|
12
|
-
abstract onCallback(req: HttpRequest): Promise<
|
|
13
|
-
email?: string;
|
|
14
|
-
name?: string;
|
|
15
|
-
username?: string;
|
|
16
|
-
providerId?: string;
|
|
17
|
-
}>;
|
|
66
|
+
abstract onCallback(req: HttpRequest, ctx?: OAuthCallbackContext): Promise<OAuthProfile>;
|
|
18
67
|
}
|
|
19
68
|
//# sourceMappingURL=OAuthProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/OAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"OAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/OAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,IAAI,EAAE,MAAM,CAAC;gBACD,IAAI,EAAE,MAAM,EAAE,OAAO,SAAmC;CAKrE;AAED,8BAAsB,aAAa;IACjC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CACrB,GAAG,EAAE,WAAW,EAChB,GAAG,CAAC,EAAE,yBAAyB,GAC9B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC3B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;CACzF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type TOAuth2Scope, TwitterApi } from "twitter-api-v2";
|
|
2
2
|
import { HttpRequest } from "../../http/HttpRequest";
|
|
3
|
-
import { OAuthProvider } from "./OAuthProvider";
|
|
3
|
+
import { type OAuthAuthorizationContext, type OAuthCallbackContext, OAuthProvider, type OAuthProfile } from "./OAuthProvider";
|
|
4
4
|
type Config = {
|
|
5
5
|
clientId: string;
|
|
6
6
|
scope: TOAuth2Scope[];
|
|
@@ -10,15 +10,16 @@ type Config = {
|
|
|
10
10
|
export declare class XOAuthProvider extends OAuthProvider {
|
|
11
11
|
config: Config;
|
|
12
12
|
client: TwitterApi;
|
|
13
|
-
private oauthStates;
|
|
14
13
|
constructor(config?: Partial<Config>);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
redirectUri(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Built here rather than with `generateOAuth2AuthLink`, which mints its own
|
|
17
|
+
* state and verifier: the round trip's are gemi's, kept in a cookie so that
|
|
18
|
+
* any process can finish it. They used to be kept in a `Map` on this
|
|
19
|
+
* instance, which a callback reaching another process could not find.
|
|
20
|
+
*/
|
|
21
|
+
getRedirectUrl(_req?: HttpRequest, ctx?: OAuthAuthorizationContext): string;
|
|
22
|
+
onCallback(req: HttpRequest, ctx?: OAuthCallbackContext): Promise<OAuthProfile>;
|
|
22
23
|
}
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=XOAuthProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XOAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/XOAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"XOAuthProvider.d.ts","sourceRoot":"","sources":["../../../auth/oauth/XOAuthProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EAEzB,aAAa,EACb,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AASF,qBAAa,cAAe,SAAQ,aAAa;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;gBAEP,MAAM,GAAE,OAAO,CAAC,MAAM,CAAM;IASxC,WAAW;IAIX;;;;;OAKG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,yBAAyB;IAoB5D,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;CAwBtF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `state` and PKCE verifier of one OAuth round trip, kept in the browser
|
|
3
|
+
* that started it.
|
|
4
|
+
*
|
|
5
|
+
* `oauthRedirect` mints a random `state` and a PKCE `code_verifier`, sends the
|
|
6
|
+
* provider `state` and the verifier's S256 challenge, and writes both into a
|
|
7
|
+
* short-lived cookie. `oauthCallback` reads the cookie back, deletes it, and
|
|
8
|
+
* refuses the callback unless the `state` the provider echoed is the one in the
|
|
9
|
+
* cookie. That is what ties a callback to the browser that asked for it: a
|
|
10
|
+
* callback URL carrying someone else's `code` arrives without a matching cookie,
|
|
11
|
+
* and is refused instead of signing this browser into their account.
|
|
12
|
+
*
|
|
13
|
+
* The cookie, and not process memory: any process can finish a round trip any
|
|
14
|
+
* other process started.
|
|
15
|
+
*
|
|
16
|
+
* - **Signed** with the app's `SECRET` (HMAC-SHA256, domain-separated from the
|
|
17
|
+
* other uses of that secret), so a tampered or hand-written cookie is refused.
|
|
18
|
+
* - **`HttpOnly`**, so page script never sees the verifier.
|
|
19
|
+
* - **`SameSite=Lax`**: the callback is a top-level navigation from the
|
|
20
|
+
* provider's site, on which a `Strict` cookie is not sent.
|
|
21
|
+
* - **`__Host-` prefixed on https**: a browser accepts such a cookie only from
|
|
22
|
+
* this exact host, `Secure`, `Path=/` and without `Domain`, so a sibling
|
|
23
|
+
* subdomain cannot plant one of its own (cookie tossing).
|
|
24
|
+
* - **Ten minutes**, in the cookie's `Max-Age` and again in the signed payload.
|
|
25
|
+
* - **Single use**: the callback deletes it whatever the outcome, and a state
|
|
26
|
+
* that has been consumed is also remembered by this process until it would
|
|
27
|
+
* have expired.
|
|
28
|
+
*/
|
|
29
|
+
export declare const OAUTH_STATE_TTL_SECONDS: number;
|
|
30
|
+
export declare function oauthStateCookieName(secure: boolean): string;
|
|
31
|
+
export interface OAuthStatePayload {
|
|
32
|
+
/** The provider key the round trip was started for. */
|
|
33
|
+
provider: string;
|
|
34
|
+
state: string;
|
|
35
|
+
codeVerifier: string;
|
|
36
|
+
/** Epoch milliseconds after which the round trip is refused. */
|
|
37
|
+
expiresAt: number;
|
|
38
|
+
}
|
|
39
|
+
/** A fresh `state` and PKCE pair. */
|
|
40
|
+
export declare function createOAuthState(provider: string, now?: number): {
|
|
41
|
+
state: string;
|
|
42
|
+
codeVerifier: string;
|
|
43
|
+
codeChallenge: string;
|
|
44
|
+
cookieValue: string;
|
|
45
|
+
};
|
|
46
|
+
/** RFC 7636 S256: base64url(sha256(verifier)). */
|
|
47
|
+
export declare function pkceChallenge(codeVerifier: string): string;
|
|
48
|
+
export declare function sealOAuthState(payload: OAuthStatePayload): string;
|
|
49
|
+
/** The payload of a cookie this app signed, or `null` for anything else. */
|
|
50
|
+
export declare function openOAuthState(value: string | null | undefined): OAuthStatePayload | null;
|
|
51
|
+
/** For tests. */
|
|
52
|
+
export declare function clearConsumedOAuthStates(): void;
|
|
53
|
+
export type OAuthStateCheck = {
|
|
54
|
+
ok: true;
|
|
55
|
+
payload: OAuthStatePayload;
|
|
56
|
+
} | {
|
|
57
|
+
ok: false;
|
|
58
|
+
reason: "missing_state" | "invalid_state" | "expired_state";
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Whether `returnedState` (the callback's `?state=`) completes the round trip
|
|
62
|
+
* recorded in `cookieValue` for `provider`. A successful check consumes it.
|
|
63
|
+
*/
|
|
64
|
+
export declare function verifyOAuthState(args: {
|
|
65
|
+
provider: string;
|
|
66
|
+
cookieValue: string | null | undefined;
|
|
67
|
+
returnedState: string | null | undefined;
|
|
68
|
+
now?: number;
|
|
69
|
+
}): OAuthStateCheck;
|
|
70
|
+
//# sourceMappingURL=oauthState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauthState.d.ts","sourceRoot":"","sources":["../../../auth/oauth/oauthState.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,eAAO,MAAM,uBAAuB,QAAU,CAAC;AAK/C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD,qCAAqC;AACrC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAa;;;;;EAYlE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAGjE;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAwBzF;AAyBD,iBAAiB;AACjB,wBAAgB,wBAAwB,SAEvC;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GACxC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,eAAe,CAAA;CAAE,CAAC;AAE/E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,eAAe,CAgBlB"}
|
package/dist/auth/routes.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ declare class OAuthViewRouter extends ViewRouter {
|
|
|
8
8
|
destination: string;
|
|
9
9
|
}>, Record<string, never>>;
|
|
10
10
|
"/:provider/callback": import("../http/ViewRouter").ViewRoute<Record<string, never>, Promise<{
|
|
11
|
-
session:
|
|
12
|
-
|
|
11
|
+
session: null;
|
|
12
|
+
error: string;
|
|
13
|
+
redirectTo: string | null;
|
|
13
14
|
} | {
|
|
14
15
|
session: import("./types").SessionWithUser;
|
|
15
16
|
redirectTo: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../auth/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAM,eAAgB,SAAQ,UAAU;IACtC,WAAW,WAAqB;IAChC,MAAM
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../auth/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAM,eAAgB,SAAQ,UAAU;IACtC,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;;;;MAMJ;CACH;AAED,qBAAa,cAAe,SAAQ,UAAU;IAC5C,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;MAMJ;CACH;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,WAAW,WAAqB;IAChC,MAAM;;;;;;;;;;;;;;;MAiBJ;CACH"}
|
package/dist/bun/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{da as a}from"../chunk-
|
|
2
|
+
import{da as a}from"../chunk-bq5nqqeq.js";import"../chunk-6wymbbes.js";import"../chunk-rg4hhxj3.js";import"../chunk-571rvxe6.js";import"../chunk-8mbyyh8j.js";export{a as gemiPlugin};
|
|
3
3
|
|
|
4
4
|
//# debugId=255F25075168278464756E2164756E21
|
package/dist/bun/preload.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import{da as k}from"../chunk-
|
|
2
|
+
import{da as k}from"../chunk-bq5nqqeq.js";import"../chunk-6wymbbes.js";import"../chunk-rg4hhxj3.js";import"../chunk-571rvxe6.js";import{xa as j}from"../chunk-303mprnv.js";import"../chunk-8mbyyh8j.js";var{plugin:q}=globalThis.Bun;q(k());var y=await j(process.cwd());for(let x of y.bun?.plugins??[])q(x);
|
|
3
3
|
|
|
4
4
|
//# debugId=E7ABFC04ABC989B264756E2164756E21
|