@supabase/auth-js 2.110.9 → 2.111.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/main/GoTrueClient.d.ts +35 -2
  2. package/dist/main/GoTrueClient.d.ts.map +1 -1
  3. package/dist/main/GoTrueClient.js +129 -47
  4. package/dist/main/GoTrueClient.js.map +1 -1
  5. package/dist/main/lib/constants.d.ts +13 -0
  6. package/dist/main/lib/constants.d.ts.map +1 -1
  7. package/dist/main/lib/constants.js +14 -1
  8. package/dist/main/lib/constants.js.map +1 -1
  9. package/dist/main/lib/helpers.d.ts +50 -1
  10. package/dist/main/lib/helpers.d.ts.map +1 -1
  11. package/dist/main/lib/helpers.js +160 -4
  12. package/dist/main/lib/helpers.js.map +1 -1
  13. package/dist/main/lib/types.d.ts +38 -0
  14. package/dist/main/lib/types.d.ts.map +1 -1
  15. package/dist/main/lib/types.js.map +1 -1
  16. package/dist/main/lib/version.d.ts +1 -1
  17. package/dist/main/lib/version.js +1 -1
  18. package/dist/module/GoTrueClient.d.ts +35 -2
  19. package/dist/module/GoTrueClient.d.ts.map +1 -1
  20. package/dist/module/GoTrueClient.js +131 -49
  21. package/dist/module/GoTrueClient.js.map +1 -1
  22. package/dist/module/lib/constants.d.ts +13 -0
  23. package/dist/module/lib/constants.d.ts.map +1 -1
  24. package/dist/module/lib/constants.js +13 -0
  25. package/dist/module/lib/constants.js.map +1 -1
  26. package/dist/module/lib/helpers.d.ts +50 -1
  27. package/dist/module/lib/helpers.d.ts.map +1 -1
  28. package/dist/module/lib/helpers.js +152 -4
  29. package/dist/module/lib/helpers.js.map +1 -1
  30. package/dist/module/lib/types.d.ts +38 -0
  31. package/dist/module/lib/types.d.ts.map +1 -1
  32. package/dist/module/lib/types.js.map +1 -1
  33. package/dist/module/lib/version.d.ts +1 -1
  34. package/dist/module/lib/version.js +1 -1
  35. package/dist/tsconfig.module.tsbuildinfo +1 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +1 -1
  38. package/src/GoTrueClient.ts +169 -67
  39. package/src/lib/constants.ts +15 -0
  40. package/src/lib/helpers.ts +197 -5
  41. package/src/lib/types.ts +38 -0
  42. package/src/lib/version.ts +1 -1
@@ -609,7 +609,8 @@ export default class GoTrueClient {
609
609
  * {
610
610
  * data: {
611
611
  * provider: 'github',
612
- * url: <PROVIDER_URL_TO_REDIRECT_TO>
612
+ * url: <PROVIDER_URL_TO_REDIRECT_TO>,
613
+ * flowId: <PKCE_FLOW_ID_OR_NULL>
613
614
  * },
614
615
  * error: null
615
616
  * }
@@ -674,12 +675,29 @@ export default class GoTrueClient {
674
675
  *
675
676
  * @remarks
676
677
  * - Used when `flowType` is set to `pkce` in client options.
678
+ * - When several PKCE flows are in flight at once, pass `options.flowId` so
679
+ * the code is exchanged with the verifier created by that specific flow.
680
+ * The flow id is returned by `signInWithOAuth`, and with
681
+ * `experimental.appendPkceFlowIdToRedirects` enabled it also arrives on
682
+ * your callback URL as the reserved `sb_flow_id` query parameter (read
683
+ * automatically in a browser).
684
+ * - When a flow id is present but its stored verifier is gone (evicted,
685
+ * already used, or from another device), the call fails with a verifier
686
+ * missing error instead of trying another flow's verifier — a mismatched
687
+ * verifier would consume the single-use code. Without any flow id the
688
+ * most recently stored verifier is used, as before.
677
689
  *
678
690
  * @example Exchange Auth Code
679
691
  * ```js
680
692
  * supabase.auth.exchangeCodeForSession('34e770dd-9ff9-416c-87fa-43b31d7ef225')
681
693
  * ```
682
694
  *
695
+ * @example Exchange Auth Code for a specific flow (e.g. in a server-side callback handler)
696
+ * ```js
697
+ * const flowId = requestUrl.searchParams.get('sb_flow_id')
698
+ * supabase.auth.exchangeCodeForSession(code, flowId ? { flowId } : undefined)
699
+ * ```
700
+ *
683
701
  * @exampleResponse Exchange Auth Code
684
702
  * ```json
685
703
  * {
@@ -837,7 +855,9 @@ export default class GoTrueClient {
837
855
  * }
838
856
  * ```
839
857
  */
840
- exchangeCodeForSession(authCode: string): Promise<AuthTokenResponse>;
858
+ exchangeCodeForSession(authCode: string, options?: {
859
+ flowId?: string;
860
+ }): Promise<AuthTokenResponse>;
841
861
  /**
842
862
  * Signs in a user by verifying a message signed by the user's private key.
843
863
  * Supports Ethereum (via Sign-In-With-Ethereum) & Solana (Sign-In-With-Solana) standards,
@@ -2382,6 +2402,19 @@ export default class GoTrueClient {
2382
2402
  * @param options.queryParams An object of key-value pairs containing query parameters granted to the OAuth application.
2383
2403
  */
2384
2404
  private _getUrlForProvider;
2405
+ /**
2406
+ * Appends the reserved flow id parameter to a redirect URL so the callback
2407
+ * can be matched to the verifier stored for its flow. Opt-in via
2408
+ * `experimental.appendPkceFlowIdToRedirects`: redirect URLs are validated
2409
+ * against the project's allow list including the query string, so an extra
2410
+ * parameter can stop exact (non-wildcard) entries from matching.
2411
+ */
2412
+ private _maybeAppendFlowIdToRedirect;
2413
+ /**
2414
+ * Generates and stores a PKCE challenge/verifier pair for a new flow,
2415
+ * logging any pending verifier the bounded slot ring evicts.
2416
+ */
2417
+ private _getCodeChallengeAndMethod;
2385
2418
  private _unenroll;
2386
2419
  /**
2387
2420
  * {@link GoTrueMFAApi#enroll}
@@ -1 +1 @@
1
- {"version":3,"file":"GoTrueClient.d.ts","sourceRoot":"","sources":["../../src/GoTrueClient.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAA;AAW7C,OAAO,EACL,SAAS,EAgBV,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,KAAK,EAMN,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,QAAQ,EAgBT,MAAM,eAAe,CAAA;AAOtB,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EAcZ,eAAe,EACf,YAAY,EAEZ,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,EAItB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,UAAU,EACV,QAAQ,EAgBR,aAAa,EACb,kBAAkB,EAOlB,YAAY,EACZ,OAAO,EACP,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,6BAA6B,EAC7B,iCAAiC,EACjC,aAAa,EACb,OAAO,EACP,6BAA6B,EAG7B,WAAW,EAEX,YAAY,EACZ,gBAAgB,EAChB,IAAI,EACJ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,4BAA4B,EAC5B,0BAA0B,EAO1B,qCAAqC,EAErC,uCAAuC,EAIxC,MAAM,aAAa,CAAA;AAmEpB,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAC,cAAc,CAA6B;IAE1D,OAAO,CAAC,UAAU,CAAQ;IAE1B;;;OAGG;IACH,KAAK,EAAE,cAAc,CAAA;IACrB;;OAEG;IACH,GAAG,EAAE,YAAY,CAAA;IACjB;;;;OAIG;IACH,KAAK,EAAE,kBAAkB,CAAA;IACzB;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,CAAA;IAE5B,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAA;IAEhC;;OAEG;IACH,SAAS,KAAK,IAAI,IAIQ;QAAE,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,CAFxC;IAED,SAAS,KAAK,IAAI,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,EAExC;IAED,SAAS,KAAK,cAAc,IAIQ,MAAM,CAFzC;IAED,SAAS,KAAK,cAAc,CAAC,KAAK,EAAE,MAAM,EAEzC;IAED,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAA;IACnC,SAAS,CAAC,cAAc,EAAE,OAAO,CAAA;IACjC,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAA;IACnC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,gBAAgB,GAAG,IAAI,CAAO;IACrD,SAAS,CAAC,aAAa,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAO;IAChE,SAAS,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,YAAY,CAAC,CAAY;IAC7E,SAAS,CAAC,iBAAiB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAO;IACzE,SAAS,CAAC,sBAAsB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAO;IAC7E,SAAS,CAAC,yBAAyB,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAO;IACvE,SAAS,CAAC,kBAAkB,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAO;IAC5E;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,kBAAkB,EAAE;QAC5B,YAAY,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,sBAAsB,CAAA;QAC9B,SAAS,EAAE,MAAM,CAAA;KAClB,GAAG,IAAI,CAAO;IACf;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,SAAI;IAClC;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAO;IACpE;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,yBAAyB,CAIjB;IAChB,SAAS,CAAC,kBAAkB,EACxB,OAAO,GACP,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,CAAO;IAC3E,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KACtB,CAAA;IACD,SAAS,CAAC,4BAA4B,UAAQ;IAC9C,SAAS,CAAC,yBAAyB,UAAQ;IAC3C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;IACtB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAO;IACtC,SAAS,CAAC,YAAY,UAAQ;IAC9B,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAK;IAC5C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAA;IAC/B;;OAEG;IACH,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACpC;;;OAGG;IACH,SAAS,CAAC,YAAY,EAAE,wBAAwB,CAAA;IAEhD;;OAEG;IACH,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAO;IAE1D,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAA;IACnC,SAAS,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAc;IAEzE;;;;;;;;;;;;;;;;;;;;;OAqBG;gBACS,OAAO,EAAE,mBAAmB;IAgJxC;;OAEG;IACI,qBAAqB,IAAI,OAAO;IAIvC;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,MAAM;IAQd;;;;;;;;;;;;;;;;;OAiBG;IACG,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAsC7C;;;;;OAKG;YACW,WAAW;IAiFzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwEG;IACG,iBAAiB,CAAC,WAAW,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgLG;IACG,MAAM,CAAC,WAAW,EAAE,6BAA6B,GAAG,OAAO,CAAC,YAAY,CAAC;IAuE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmIG;IACG,kBAAkB,CACtB,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,yBAAyB,CAAC;IA0DrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8EG;IACG,eAAe,CAAC,WAAW,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAStF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyKG;IACG,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAa1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuFG;IACG,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CACvD;QACE,IAAI,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,IAAI,CAAA;SAAE,CAAA;QACtC,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QAAE,IAAI,EAAE;YAAE,OAAO,EAAE,IAAI,CAAC;YAAC,IAAI,EAAE,IAAI,CAAA;SAAE,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CAC5D;YAaa,kBAAkB;YAyIlB,gBAAgB;YA0LhB,uBAAuB;IA2DrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0EG;IACG,iBAAiB,CAAC,WAAW,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAoC9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4EG;IACG,aAAa,CAAC,WAAW,EAAE,iCAAiC,GAAG,OAAO,CAAC,eAAe,CAAC;IAsD7F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwIG;IACG,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IA+C/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoDG;IACG,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IA0ChE;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC;YAa/B,eAAe;IAwB7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0DG;IACG,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAuDjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoFG;IACG,UAAU;cAqGA;YACJ,OAAO,EAAE,OAAO,CAAA;SACjB;eACM,IAAI;;cAGL;YACJ,OAAO,EAAE,IAAI,CAAA;SACd;eACM,SAAS;;cAGV;YACJ,OAAO,EAAE,IAAI,CAAA;SACd;eACM,IAAI;;IAnGrB;;;;;;OAMG;YACW,YAAY;IAoE1B;;;;OAIG;YACW,WAAW;IAsCzB;;;;OAIG;YACW,aAAa;IAgI3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2EG;IACG,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAwBpC,QAAQ;IA4CtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiHG;IACG,UAAU,CACd,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE;QACP,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAChC,GACL,OAAO,CAAC,YAAY,CAAC;cAaR,WAAW,CACzB,UAAU,EAAE,cAAc,EAC1B,OAAO,GAAE;QACP,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAChC,GACL,OAAO,CAAC,YAAY,CAAC;IAiDxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2HG;IACG,UAAU,CAAC,cAAc,EAAE;QAC/B,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;KACtB,GAAG,OAAO,CAAC,YAAY,CAAC;cAaT,WAAW,CAAC,cAAc,EAAE;QAC1C,YAAY,EAAE,MAAM,CAAA;QACpB,aAAa,EAAE,MAAM,CAAA;KACtB,GAAG,OAAO,CAAC,YAAY,CAAC;IAuDzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4HG;IACG,cAAc,CAAC,cAAc,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;cAavE,eAAe,CAAC,cAAc,CAAC,EAAE;QAC/C,aAAa,EAAE,MAAM,CAAA;KACtB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoCzB;;OAEG;YACW,kBAAkB;IAsIhC;;;;;;OAMG;IACH,OAAO,CAAC,wBAAwB;IAShC;;OAEG;YACW,eAAe;IAS7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACG,OAAO,CAAC,OAAO,GAAE,OAA6B,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE,CAAC;cAa3E,QAAQ,CACtB,EAAE,KAAK,EAAE,GAAE,OAA6B,GACvC,OAAO,CAAC;QAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;KAAE,CAAC;IAqCvC;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,GAAG;QACtF,IAAI,EAAE;YAAE,YAAY,EAAE,YAAY,CAAA;SAAE,CAAA;KACrC;IAED;;;;;;;;;;;;;;OAcG;IACH,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG;QAC/F,IAAI,EAAE;YAAE,YAAY,EAAE,YAAY,CAAA;SAAE,CAAA;KACrC;YAsNa,mBAAmB;IAkCjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkEG;IACG,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,YAAY,CAAC,EAAE,MAAM,CAAA;KACjB,GACL,OAAO,CACN;QACE,IAAI,EAAE,EAAE,CAAA;QACR,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CACnC;IAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAuCG;IACG,iBAAiB,IAAI,OAAO,CAC9B;QACE,IAAI,EAAE;YACJ,UAAU,EAAE,YAAY,EAAE,CAAA;SAC3B,CAAA;QACD,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CACnC;IAaD;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,CAAC;IAEnF;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAqC3E,iBAAiB;YAoCjB,mBAAmB;IAmDjC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CACjD;QACE,IAAI,EAAE,EAAE,CAAA;QACR,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,CACnC;IAyBD;;;OAGG;YACW,mBAAmB;IA+CjC,OAAO,CAAC,eAAe;YAWT,qBAAqB;IAyBnC;;;OAGG;YACW,kBAAkB;YAkIlB,iBAAiB;YAgLjB,qBAAqB;IAkDnC;;;OAGG;YACW,YAAY;YAuCZ,cAAc;IAyB5B;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IAexC;;;OAGG;YACW,iBAAiB;IA0C/B;;;OAGG;YACW,gBAAgB;IAkB9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2CG;IACG,gBAAgB;IAKtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,eAAe;IAKrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;OAEG;YACW,qBAAqB;IAoGnC;;;;OAIG;YACW,uBAAuB;IA+BrC;;OAEG;YACW,oBAAoB;IA6ClC;;;;;OAKG;YACW,kBAAkB;YAwClB,SAAS;IAqBvB;;OAEG;YACW,OAAO;IA4CrB;;OAEG;YACW,OAAO;IAsFrB;;OAEG;YACW,UAAU;IA4FxB;;OAEG;YACW,mBAAmB;IAiBjC;;OAEG;YACW,YAAY;IA8B1B;;OAEG;YACW,+BAA+B;IA8E7C;;;;;;;OAOG;YACW,wBAAwB;IAsCtC;;;OAGG;YACW,qBAAqB;IAiDnC;;;OAGG;YACW,kBAAkB;IAiDhC;;;OAGG;YACW,gBAAgB;IA+B9B;;;OAGG;YACW,iBAAiB;YAmCjB,QAAQ;IAsCtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgEG;IACG,SAAS,CACb,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,GAAE;QACP;;WAEG;QACH,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QAEZ,uFAAuF;QACvF,YAAY,CAAC,EAAE,OAAO,CAAA;QAEtB,+GAA+G;QAC/G,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,GAAG,EAAE,CAAA;SAAE,CAAA;KAClB,GACL,OAAO,CACN;QACE,IAAI,EAAE;YAAE,MAAM,EAAE,UAAU,CAAC;YAAC,MAAM,EAAE,SAAS,CAAC;YAAC,SAAS,EAAE,UAAU,CAAA;SAAE,CAAA;QACtE,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,SAAS,CAAA;KAAE,GAChC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE,CAC9B;IA2FD;;;;;;;;;OASG;IACG,iBAAiB,CACrB,WAAW,CAAC,EAAE,4BAA4B,GACzC,OAAO,CAAC,uCAAuC,CAAC;IA8CnD;;;;;;;;;OASG;IACG,eAAe,CACnB,WAAW,CAAC,EAAE,0BAA0B,GACvC,OAAO,CAAC,qCAAqC,CAAC;IA4CjD;;;OAGG;YACW,yBAAyB;IAqCvC;;;OAGG;YACW,0BAA0B;IA0CxC;;;OAGG;YACW,2BAA2B;IA4BzC;;;OAGG;YACW,4BAA4B;IAkC1C;;OAEG;YACW,aAAa;IAgC3B;;OAEG;YACW,cAAc;IAqC5B;;OAEG;YACW,cAAc;CAoC7B"}
1
+ {"version":3,"file":"GoTrueClient.d.ts","sourceRoot":"","sources":["../../src/GoTrueClient.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import GoTrueAdminApi from './GoTrueAdminApi';
2
- import { AUTO_REFRESH_TICK_DURATION_MS, AUTO_REFRESH_TICK_THRESHOLD, DEFAULT_HEADERS, EXPIRY_MARGIN_MS, GOTRUE_URL, JWKS_TTL, REFRESH_FAILURE_COOLDOWN_MS, STORAGE_KEY, } from './lib/constants';
2
+ import { AUTO_REFRESH_TICK_DURATION_MS, AUTO_REFRESH_TICK_THRESHOLD, DEFAULT_HEADERS, EXPIRY_MARGIN_MS, GOTRUE_URL, JWKS_TTL, PKCE_FLOW_ID_PARAM, REFRESH_FAILURE_COOLDOWN_MS, STORAGE_KEY, } from './lib/constants';
3
3
  import { AuthImplicitGrantRedirectError, AuthInvalidCredentialsError, AuthInvalidJwtError, AuthInvalidTokenResponseError, AuthPKCECodeVerifierMissingError, AuthPKCEGrantCodeExchangeError, AuthRefreshDiscardedError, AuthSessionMissingError, AuthUnknownError, isAuthApiError, isAuthError, isAuthImplicitGrantRedirectError, isAuthRefreshDiscardedError, isAuthRetryableFetchError, isAuthSessionMissingError, } from './lib/errors';
4
4
  import { _request, _sessionResponse, _sessionResponsePassword, _ssoResponse, _userResponse, } from './lib/fetch';
5
- import { assertPasskeyExperimentalEnabled, decodeJWT, deepClone, Deferred, generateCallbackId, getAlgorithm, getCodeChallengeAndMethod, getItemAsync, insecureUserWarningProxy, isBrowser, parseParametersFromURL, removeItemAsync, resolveFetch, retryable, setItemAsync, sleep, supportsLocalStorage, userNotAvailableProxy, validateExp, } from './lib/helpers';
5
+ import { appendFlowIdToRedirectTo, assertPasskeyExperimentalEnabled, decodeJWT, deepClone, Deferred, generateCallbackId, getAlgorithm, getCodeChallengeAndMethod, getItemAsync, insecureUserWarningProxy, isBrowser, parseParametersFromURL, pkceVerifierSlotKey, removeAllPKCEVerifiers, removeItemAsync, removePKCEVerifier, resolveFetch, retrievePKCEVerifier, retryable, setItemAsync, sleep, supportsLocalStorage, userNotAvailableProxy, validateExp, validatePKCEFlowId, } from './lib/helpers';
6
6
  import { memoryLocalStorageAdapter } from './lib/local-storage';
7
7
  import { LockAcquireTimeoutError } from './lib/locks';
8
8
  import { polyfillGlobalThis } from './lib/polyfills';
@@ -714,6 +714,7 @@ class GoTrueClient {
714
714
  */
715
715
  async signUp(credentials) {
716
716
  var _a, _b, _c;
717
+ let flowId = null;
717
718
  try {
718
719
  let res;
719
720
  if ('email' in credentials) {
@@ -722,11 +723,11 @@ class GoTrueClient {
722
723
  let codeChallengeMethod = null;
723
724
  if (this.flowType === 'pkce') {
724
725
  ;
725
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
726
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
726
727
  }
727
728
  res = await _request(this.fetch, 'POST', `${this.url}/signup`, {
728
729
  headers: this.headers,
729
- redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
730
+ redirectTo: this._maybeAppendFlowIdToRedirect(options === null || options === void 0 ? void 0 : options.emailRedirectTo, flowId),
730
731
  body: {
731
732
  email,
732
733
  password,
@@ -757,7 +758,7 @@ class GoTrueClient {
757
758
  }
758
759
  const { data, error } = res;
759
760
  if (error || !data) {
760
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
761
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
761
762
  return this._returnResult({ data: { user: null, session: null }, error: error });
762
763
  }
763
764
  const session = data.session;
@@ -769,7 +770,7 @@ class GoTrueClient {
769
770
  return this._returnResult({ data: { user, session }, error: null });
770
771
  }
771
772
  catch (error) {
772
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
773
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
773
774
  if (isAuthError(error)) {
774
775
  return this._returnResult({ data: { user: null, session: null }, error });
775
776
  }
@@ -984,7 +985,8 @@ class GoTrueClient {
984
985
  * {
985
986
  * data: {
986
987
  * provider: 'github',
987
- * url: <PROVIDER_URL_TO_REDIRECT_TO>
988
+ * url: <PROVIDER_URL_TO_REDIRECT_TO>,
989
+ * flowId: <PKCE_FLOW_ID_OR_NULL>
988
990
  * },
989
991
  * error: null
990
992
  * }
@@ -1057,12 +1059,29 @@ class GoTrueClient {
1057
1059
  *
1058
1060
  * @remarks
1059
1061
  * - Used when `flowType` is set to `pkce` in client options.
1062
+ * - When several PKCE flows are in flight at once, pass `options.flowId` so
1063
+ * the code is exchanged with the verifier created by that specific flow.
1064
+ * The flow id is returned by `signInWithOAuth`, and with
1065
+ * `experimental.appendPkceFlowIdToRedirects` enabled it also arrives on
1066
+ * your callback URL as the reserved `sb_flow_id` query parameter (read
1067
+ * automatically in a browser).
1068
+ * - When a flow id is present but its stored verifier is gone (evicted,
1069
+ * already used, or from another device), the call fails with a verifier
1070
+ * missing error instead of trying another flow's verifier — a mismatched
1071
+ * verifier would consume the single-use code. Without any flow id the
1072
+ * most recently stored verifier is used, as before.
1060
1073
  *
1061
1074
  * @example Exchange Auth Code
1062
1075
  * ```js
1063
1076
  * supabase.auth.exchangeCodeForSession('34e770dd-9ff9-416c-87fa-43b31d7ef225')
1064
1077
  * ```
1065
1078
  *
1079
+ * @example Exchange Auth Code for a specific flow (e.g. in a server-side callback handler)
1080
+ * ```js
1081
+ * const flowId = requestUrl.searchParams.get('sb_flow_id')
1082
+ * supabase.auth.exchangeCodeForSession(code, flowId ? { flowId } : undefined)
1083
+ * ```
1084
+ *
1066
1085
  * @exampleResponse Exchange Auth Code
1067
1086
  * ```json
1068
1087
  * {
@@ -1220,15 +1239,15 @@ class GoTrueClient {
1220
1239
  * }
1221
1240
  * ```
1222
1241
  */
1223
- async exchangeCodeForSession(authCode) {
1242
+ async exchangeCodeForSession(authCode, options) {
1224
1243
  await this.initializePromise;
1225
1244
  if (this.lock != null) {
1226
1245
  // TODO(v3): remove legacy lock path
1227
1246
  return this._acquireLock(this.lockAcquireTimeout, async () => {
1228
- return this._exchangeCodeForSession(authCode);
1247
+ return this._exchangeCodeForSession(authCode, options);
1229
1248
  });
1230
1249
  }
1231
- return this._exchangeCodeForSession(authCode);
1250
+ return this._exchangeCodeForSession(authCode, options);
1232
1251
  }
1233
1252
  /**
1234
1253
  * Signs in a user by verifying a message signed by the user's private key.
@@ -1570,8 +1589,23 @@ class GoTrueClient {
1570
1589
  throw error;
1571
1590
  }
1572
1591
  }
1573
- async _exchangeCodeForSession(authCode) {
1574
- const storageItem = await getItemAsync(this.storage, `${this.storageKey}-code-verifier`);
1592
+ async _exchangeCodeForSession(authCode, options) {
1593
+ const hasExplicitFlowId = (options === null || options === void 0 ? void 0 : options.flowId) != null;
1594
+ const requestedFlowId = hasExplicitFlowId
1595
+ ? validatePKCEFlowId(options === null || options === void 0 ? void 0 : options.flowId)
1596
+ : isBrowser()
1597
+ ? validatePKCEFlowId(parseParametersFromURL(window.location.href)[PKCE_FLOW_ID_PARAM])
1598
+ : null;
1599
+ if (hasExplicitFlowId && !requestedFlowId) {
1600
+ this._debug('#_exchangeCodeForSession()', 'provided flowId is not a valid flow id', options === null || options === void 0 ? void 0 : options.flowId);
1601
+ }
1602
+ // With a flow id (explicit or from the callback URL) the lookup is
1603
+ // slot-only and a miss fails fast — see retrievePKCEVerifier. An invalid
1604
+ // explicit flow id also fails fast rather than borrowing another flow's
1605
+ // verifier.
1606
+ const { verifier: storageItem, flowId } = hasExplicitFlowId && !requestedFlowId
1607
+ ? { verifier: null, flowId: null }
1608
+ : await retrievePKCEVerifier(this.storage, this.storageKey, requestedFlowId);
1575
1609
  const [codeVerifier, redirectType] = (storageItem !== null && storageItem !== void 0 ? storageItem : '').split('/');
1576
1610
  try {
1577
1611
  if (!codeVerifier && this.flowType === 'pkce') {
@@ -1585,7 +1619,7 @@ class GoTrueClient {
1585
1619
  },
1586
1620
  xform: _sessionResponse,
1587
1621
  });
1588
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
1622
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
1589
1623
  if (error) {
1590
1624
  throw error;
1591
1625
  }
@@ -1603,7 +1637,7 @@ class GoTrueClient {
1603
1637
  return this._returnResult({ data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error });
1604
1638
  }
1605
1639
  catch (error) {
1606
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
1640
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
1607
1641
  if (isAuthError(error)) {
1608
1642
  return this._returnResult({
1609
1643
  data: { user: null, session: null, redirectType: null },
@@ -1802,6 +1836,7 @@ class GoTrueClient {
1802
1836
  */
1803
1837
  async signInWithOtp(credentials) {
1804
1838
  var _a, _b, _c, _d, _f;
1839
+ let flowId = null;
1805
1840
  try {
1806
1841
  if ('email' in credentials) {
1807
1842
  const { email, options } = credentials;
@@ -1809,7 +1844,7 @@ class GoTrueClient {
1809
1844
  let codeChallengeMethod = null;
1810
1845
  if (this.flowType === 'pkce') {
1811
1846
  ;
1812
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
1847
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
1813
1848
  }
1814
1849
  const { error } = await _request(this.fetch, 'POST', `${this.url}/otp`, {
1815
1850
  headers: this.headers,
@@ -1821,7 +1856,7 @@ class GoTrueClient {
1821
1856
  code_challenge: codeChallenge,
1822
1857
  code_challenge_method: codeChallengeMethod,
1823
1858
  },
1824
- redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
1859
+ redirectTo: this._maybeAppendFlowIdToRedirect(options === null || options === void 0 ? void 0 : options.emailRedirectTo, flowId),
1825
1860
  });
1826
1861
  return this._returnResult({ data: { user: null, session: null }, error });
1827
1862
  }
@@ -1845,7 +1880,7 @@ class GoTrueClient {
1845
1880
  throw new AuthInvalidCredentialsError('You must provide either an email or phone number.');
1846
1881
  }
1847
1882
  catch (error) {
1848
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
1883
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
1849
1884
  if (isAuthError(error)) {
1850
1885
  return this._returnResult({ data: { user: null, session: null }, error });
1851
1886
  }
@@ -2080,29 +2115,30 @@ class GoTrueClient {
2080
2115
  * ```
2081
2116
  */
2082
2117
  async signInWithSSO(params) {
2083
- var _a, _b, _c, _d, _f;
2118
+ var _a, _b, _c, _d;
2119
+ let flowId = null;
2084
2120
  try {
2085
2121
  let codeChallenge = null;
2086
2122
  let codeChallengeMethod = null;
2087
2123
  if (this.flowType === 'pkce') {
2088
2124
  ;
2089
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
2125
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
2090
2126
  }
2091
2127
  const result = await _request(this.fetch, 'POST', `${this.url}/sso`, {
2092
- body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ('providerId' in params ? { provider_id: params.providerId } : null)), ('domain' in params ? { domain: params.domain } : null)), { redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : undefined }), (((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken)
2128
+ body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ('providerId' in params ? { provider_id: params.providerId } : null)), ('domain' in params ? { domain: params.domain } : null)), { redirect_to: this._maybeAppendFlowIdToRedirect((_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo, flowId) }), (((_b = params === null || params === void 0 ? void 0 : params.options) === null || _b === void 0 ? void 0 : _b.captchaToken)
2093
2129
  ? { gotrue_meta_security: { captcha_token: params.options.captchaToken } }
2094
2130
  : null)), { skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),
2095
2131
  headers: this.headers,
2096
2132
  xform: _ssoResponse,
2097
2133
  });
2098
2134
  // Automatically redirect in browser unless skipBrowserRedirect is true
2099
- if (((_d = result.data) === null || _d === void 0 ? void 0 : _d.url) && isBrowser() && !((_f = params.options) === null || _f === void 0 ? void 0 : _f.skipBrowserRedirect)) {
2135
+ if (((_c = result.data) === null || _c === void 0 ? void 0 : _c.url) && isBrowser() && !((_d = params.options) === null || _d === void 0 ? void 0 : _d.skipBrowserRedirect)) {
2100
2136
  window.location.assign(result.data.url);
2101
2137
  }
2102
2138
  return this._returnResult(result);
2103
2139
  }
2104
2140
  catch (error) {
2105
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
2141
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
2106
2142
  if (isAuthError(error)) {
2107
2143
  return this._returnResult({ data: null, error });
2108
2144
  }
@@ -2222,6 +2258,7 @@ class GoTrueClient {
2222
2258
  * ```
2223
2259
  */
2224
2260
  async resend(credentials) {
2261
+ let flowId = null;
2225
2262
  try {
2226
2263
  const endpoint = `${this.url}/resend`;
2227
2264
  if ('email' in credentials) {
@@ -2230,7 +2267,7 @@ class GoTrueClient {
2230
2267
  let codeChallengeMethod = null;
2231
2268
  if (this.flowType === 'pkce') {
2232
2269
  ;
2233
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
2270
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
2234
2271
  }
2235
2272
  const { error } = await _request(this.fetch, 'POST', endpoint, {
2236
2273
  headers: this.headers,
@@ -2241,10 +2278,10 @@ class GoTrueClient {
2241
2278
  code_challenge: codeChallenge,
2242
2279
  code_challenge_method: codeChallengeMethod,
2243
2280
  },
2244
- redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
2281
+ redirectTo: this._maybeAppendFlowIdToRedirect(options === null || options === void 0 ? void 0 : options.emailRedirectTo, flowId),
2245
2282
  });
2246
2283
  if (error) {
2247
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
2284
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
2248
2285
  }
2249
2286
  return this._returnResult({ data: { user: null, session: null }, error });
2250
2287
  }
@@ -2266,7 +2303,7 @@ class GoTrueClient {
2266
2303
  throw new AuthInvalidCredentialsError('You must provide either an email or phone number and a type');
2267
2304
  }
2268
2305
  catch (error) {
2269
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
2306
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
2270
2307
  if (isAuthError(error)) {
2271
2308
  return this._returnResult({ data: { user: null, session: null }, error });
2272
2309
  }
@@ -2668,7 +2705,6 @@ class GoTrueClient {
2668
2705
  // JWT contains a `session_id` which does not correspond to an active
2669
2706
  // session in the database, indicating the user is signed out.
2670
2707
  await this._removeSession();
2671
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
2672
2708
  }
2673
2709
  return this._returnResult({ data: { user: null }, error });
2674
2710
  }
@@ -2800,6 +2836,7 @@ class GoTrueClient {
2800
2836
  return await this._updateUser(attributes, options);
2801
2837
  }
2802
2838
  async _updateUser(attributes, options = {}) {
2839
+ let flowId = null;
2803
2840
  try {
2804
2841
  return await this._useSession(async (result) => {
2805
2842
  const { data: sessionData, error: sessionError } = result;
@@ -2814,11 +2851,11 @@ class GoTrueClient {
2814
2851
  let codeChallengeMethod = null;
2815
2852
  if (this.flowType === 'pkce' && attributes.email != null) {
2816
2853
  ;
2817
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
2854
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
2818
2855
  }
2819
2856
  const { data, error: userError } = await _request(this.fetch, 'PUT', `${this.url}/user`, {
2820
2857
  headers: this.headers,
2821
- redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
2858
+ redirectTo: this._maybeAppendFlowIdToRedirect(options === null || options === void 0 ? void 0 : options.emailRedirectTo, flowId),
2822
2859
  body: Object.assign(Object.assign({}, attributes), { code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),
2823
2860
  jwt: session.access_token,
2824
2861
  xform: _userResponse,
@@ -2833,7 +2870,7 @@ class GoTrueClient {
2833
2870
  });
2834
2871
  }
2835
2872
  catch (error) {
2836
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
2873
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
2837
2874
  if (isAuthError(error)) {
2838
2875
  return this._returnResult({ data: { user: null }, error });
2839
2876
  }
@@ -3226,11 +3263,14 @@ class GoTrueClient {
3226
3263
  this._debug('#_initialize()', 'begin', 'is PKCE flow', true);
3227
3264
  if (!params.code)
3228
3265
  throw new AuthPKCEGrantCodeExchangeError('No code detected.');
3229
- const { data, error } = await this._exchangeCodeForSession(params.code);
3266
+ const { data, error } = await this._exchangeCodeForSession(params.code, {
3267
+ flowId: params[PKCE_FLOW_ID_PARAM],
3268
+ });
3230
3269
  if (error)
3231
3270
  throw error;
3232
3271
  const url = new URL(window.location.href);
3233
3272
  url.searchParams.delete('code');
3273
+ url.searchParams.delete(PKCE_FLOW_ID_PARAM);
3234
3274
  window.history.replaceState(window.history.state, '', url.toString());
3235
3275
  return {
3236
3276
  data: { session: data.session, redirectType: (_a = data.redirectType) !== null && _a !== void 0 ? _a : null },
@@ -3300,8 +3340,16 @@ class GoTrueClient {
3300
3340
  * Checks if the current URL and backing storage contain parameters given by a PKCE flow
3301
3341
  */
3302
3342
  async _isPKCECallback(params) {
3343
+ if (!params.code) {
3344
+ return false;
3345
+ }
3346
+ const flowId = validatePKCEFlowId(params[PKCE_FLOW_ID_PARAM]);
3347
+ if (flowId &&
3348
+ (await getItemAsync(this.storage, pkceVerifierSlotKey(this.storageKey, flowId)))) {
3349
+ return true;
3350
+ }
3303
3351
  const currentStorageContent = await getItemAsync(this.storage, `${this.storageKey}-code-verifier`);
3304
- return !!(params.code && currentStorageContent);
3352
+ return !!currentStorageContent;
3305
3353
  }
3306
3354
  /**
3307
3355
  * Inside a browser context, `signOut()` will remove the logged in user from the browser session and log them out - removing all items from localstorage and then trigger a `"SIGNED_OUT"` event.
@@ -3359,7 +3407,6 @@ class GoTrueClient {
3359
3407
  var _a;
3360
3408
  const removeCurrentSession = async () => {
3361
3409
  await this._removeSession();
3362
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
3363
3410
  };
3364
3411
  const { data, error: sessionError } = result;
3365
3412
  if (sessionError && !isAuthSessionMissingError(sessionError)) {
@@ -3691,9 +3738,10 @@ class GoTrueClient {
3691
3738
  async resetPasswordForEmail(email, options = {}) {
3692
3739
  let codeChallenge = null;
3693
3740
  let codeChallengeMethod = null;
3741
+ let flowId = null;
3694
3742
  if (this.flowType === 'pkce') {
3695
3743
  ;
3696
- [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey, true // isPasswordRecovery
3744
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod(true // isPasswordRecovery
3697
3745
  );
3698
3746
  }
3699
3747
  try {
@@ -3705,11 +3753,11 @@ class GoTrueClient {
3705
3753
  gotrue_meta_security: { captcha_token: options.captchaToken },
3706
3754
  },
3707
3755
  headers: this.headers,
3708
- redirectTo: options.redirectTo,
3756
+ redirectTo: this._maybeAppendFlowIdToRedirect(options.redirectTo, flowId),
3709
3757
  });
3710
3758
  }
3711
3759
  catch (error) {
3712
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
3760
+ await removePKCEVerifier(this.storage, this.storageKey, flowId);
3713
3761
  if (isAuthError(error)) {
3714
3762
  return this._returnResult({ data: null, error });
3715
3763
  }
@@ -3792,7 +3840,8 @@ class GoTrueClient {
3792
3840
  * {
3793
3841
  * data: {
3794
3842
  * provider: 'github',
3795
- * url: <PROVIDER_URL_TO_REDIRECT_TO>
3843
+ * url: <PROVIDER_URL_TO_REDIRECT_TO>,
3844
+ * flowId: <PKCE_FLOW_ID_OR_NULL>
3796
3845
  * },
3797
3846
  * error: null
3798
3847
  * }
@@ -3806,18 +3855,20 @@ class GoTrueClient {
3806
3855
  }
3807
3856
  async linkIdentityOAuth(credentials) {
3808
3857
  var _a;
3858
+ let flowId = null;
3809
3859
  try {
3810
3860
  const { data, error } = await this._useSession(async (result) => {
3811
3861
  var _a, _b, _c, _d, _f;
3812
3862
  const { data, error } = result;
3813
3863
  if (error)
3814
3864
  throw error;
3815
- const url = await this._getUrlForProvider(`${this.url}/user/identities/authorize`, credentials.provider, {
3865
+ const { url, flowId: urlFlowId } = await this._getUrlForProvider(`${this.url}/user/identities/authorize`, credentials.provider, {
3816
3866
  redirectTo: (_a = credentials.options) === null || _a === void 0 ? void 0 : _a.redirectTo,
3817
3867
  scopes: (_b = credentials.options) === null || _b === void 0 ? void 0 : _b.scopes,
3818
3868
  queryParams: (_c = credentials.options) === null || _c === void 0 ? void 0 : _c.queryParams,
3819
3869
  skipBrowserRedirect: true,
3820
3870
  });
3871
+ flowId = urlFlowId;
3821
3872
  return await _request(this.fetch, 'GET', url, {
3822
3873
  headers: this.headers,
3823
3874
  jwt: (_f = (_d = data.session) === null || _d === void 0 ? void 0 : _d.access_token) !== null && _f !== void 0 ? _f : undefined,
@@ -3829,13 +3880,16 @@ class GoTrueClient {
3829
3880
  window.location.assign(data === null || data === void 0 ? void 0 : data.url);
3830
3881
  }
3831
3882
  return this._returnResult({
3832
- data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url },
3883
+ data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url, flowId },
3833
3884
  error: null,
3834
3885
  });
3835
3886
  }
3836
3887
  catch (error) {
3837
3888
  if (isAuthError(error)) {
3838
- return this._returnResult({ data: { provider: credentials.provider, url: null }, error });
3889
+ return this._returnResult({
3890
+ data: { provider: credentials.provider, url: null, flowId },
3891
+ error,
3892
+ });
3839
3893
  }
3840
3894
  throw error;
3841
3895
  }
@@ -3878,7 +3932,7 @@ class GoTrueClient {
3878
3932
  return this._returnResult({ data, error });
3879
3933
  }
3880
3934
  catch (error) {
3881
- await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
3935
+ await removePKCEVerifier(this.storage, this.storageKey, null);
3882
3936
  if (isAuthError(error)) {
3883
3937
  return this._returnResult({ data: { user: null, session: null }, error });
3884
3938
  }
@@ -3983,7 +4037,7 @@ class GoTrueClient {
3983
4037
  return isValidSession;
3984
4038
  }
3985
4039
  async _handleProviderSignIn(provider, options) {
3986
- const url = await this._getUrlForProvider(`${this.url}/authorize`, provider, {
4040
+ const { url, flowId } = await this._getUrlForProvider(`${this.url}/authorize`, provider, {
3987
4041
  redirectTo: options.redirectTo,
3988
4042
  scopes: options.scopes,
3989
4043
  queryParams: options.queryParams,
@@ -3993,7 +4047,7 @@ class GoTrueClient {
3993
4047
  if (isBrowser() && !options.skipBrowserRedirect) {
3994
4048
  window.location.assign(url);
3995
4049
  }
3996
- return { data: { provider, url }, error: null };
4050
+ return { data: { provider, url, flowId }, error: null };
3997
4051
  }
3998
4052
  /**
3999
4053
  * Recovers the session from LocalStorage and refreshes the token
@@ -4341,7 +4395,7 @@ class GoTrueClient {
4341
4395
  this.lastRefreshFailure = null;
4342
4396
  this.suppressGetSessionWarning = false;
4343
4397
  await removeItemAsync(this.storage, this.storageKey);
4344
- await removeItemAsync(this.storage, this.storageKey + '-code-verifier');
4398
+ await removeAllPKCEVerifiers(this.storage, this.storageKey);
4345
4399
  await removeItemAsync(this.storage, this.storageKey + '-user');
4346
4400
  if (this.userStorage) {
4347
4401
  await removeItemAsync(this.userStorage, this.storageKey + '-user');
@@ -4707,15 +4761,23 @@ class GoTrueClient {
4707
4761
  * @param options.queryParams An object of key-value pairs containing query parameters granted to the OAuth application.
4708
4762
  */
4709
4763
  async _getUrlForProvider(url, provider, options) {
4764
+ let redirectTo = options === null || options === void 0 ? void 0 : options.redirectTo;
4765
+ let codeChallenge = null;
4766
+ let codeChallengeMethod = null;
4767
+ let flowId = null;
4768
+ if (this.flowType === 'pkce') {
4769
+ ;
4770
+ [codeChallenge, codeChallengeMethod, flowId] = await this._getCodeChallengeAndMethod();
4771
+ redirectTo = this._maybeAppendFlowIdToRedirect(redirectTo, flowId);
4772
+ }
4710
4773
  const urlParams = [`provider=${encodeURIComponent(provider)}`];
4711
- if (options === null || options === void 0 ? void 0 : options.redirectTo) {
4712
- urlParams.push(`redirect_to=${encodeURIComponent(options.redirectTo)}`);
4774
+ if (redirectTo) {
4775
+ urlParams.push(`redirect_to=${encodeURIComponent(redirectTo)}`);
4713
4776
  }
4714
4777
  if (options === null || options === void 0 ? void 0 : options.scopes) {
4715
4778
  urlParams.push(`scopes=${encodeURIComponent(options.scopes)}`);
4716
4779
  }
4717
- if (this.flowType === 'pkce') {
4718
- const [codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
4780
+ if (codeChallenge != null && codeChallengeMethod != null) {
4719
4781
  const flowParams = new URLSearchParams({
4720
4782
  code_challenge: `${encodeURIComponent(codeChallenge)}`,
4721
4783
  code_challenge_method: `${encodeURIComponent(codeChallengeMethod)}`,
@@ -4729,7 +4791,27 @@ class GoTrueClient {
4729
4791
  if (options === null || options === void 0 ? void 0 : options.skipBrowserRedirect) {
4730
4792
  urlParams.push(`skip_http_redirect=${options.skipBrowserRedirect}`);
4731
4793
  }
4732
- return `${url}?${urlParams.join('&')}`;
4794
+ return { url: `${url}?${urlParams.join('&')}`, flowId };
4795
+ }
4796
+ /**
4797
+ * Appends the reserved flow id parameter to a redirect URL so the callback
4798
+ * can be matched to the verifier stored for its flow. Opt-in via
4799
+ * `experimental.appendPkceFlowIdToRedirects`: redirect URLs are validated
4800
+ * against the project's allow list including the query string, so an extra
4801
+ * parameter can stop exact (non-wildcard) entries from matching.
4802
+ */
4803
+ _maybeAppendFlowIdToRedirect(redirectTo, flowId) {
4804
+ if (!redirectTo || !flowId || !this.experimental.appendPkceFlowIdToRedirects) {
4805
+ return redirectTo !== null && redirectTo !== void 0 ? redirectTo : undefined;
4806
+ }
4807
+ return appendFlowIdToRedirectTo(redirectTo, flowId);
4808
+ }
4809
+ /**
4810
+ * Generates and stores a PKCE challenge/verifier pair for a new flow,
4811
+ * logging any pending verifier the bounded slot ring evicts.
4812
+ */
4813
+ async _getCodeChallengeAndMethod(isPasswordRecovery = false) {
4814
+ return getCodeChallengeAndMethod(this.storage, this.storageKey, isPasswordRecovery, (evictedFlowId) => this._debug('#_getCodeChallengeAndMethod()', 'evicted oldest pending PKCE verifier slot', evictedFlowId));
4733
4815
  }
4734
4816
  async _unenroll(params) {
4735
4817
  try {