base-idp 1.0.0 → 1.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAWlE,wEAAwE;AACxE,MAAM,oBAAoB,GAAG,MAAM,CAAC;AA2BpC,MAAM,OAAO,oBAAqB,SAAQ,aAAa;IAOxB;IANZ,cAAc,CAAU;IACxB,MAAM,CAAS;IACxB,OAAO,GAA2B,IAAI,CAAC;IAC9B,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;IAC3D,YAAY,GAAyC,IAAI,CAAC;IAElE,YAA6B,UAAgC;QAC3D,KAAK,CAAC,UAAU,CAAC,CAAC;QADS,eAAU,GAAV,UAAU,CAAsB;QAE3D,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,KAAK,CAAC;QACzD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC;QAErD,6DAA6D;QAC7D,IAAI,UAAU,CAAC,WAAW;YAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1E,IAAI,UAAU,CAAC,QAAQ;YAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E;;;OAGG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAoC,EAAE;QAC5D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAE3B,kEAAkE;QAClE,qEAAqE;QACrE,6EAA6E;QAC7E,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,QAAQ,CACZ,gCAAgC,EAChC,wEAAwE;gBACtE,8CAA8C;gBAC9C,gFAAgF;gBAChF,gFAAgF,CACnF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;QAEhE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,QAAQ,CACZ,gBAAgB,EAChB,uFAAuF,CACxF,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,GAAuB;YAC7B,KAAK;YACL,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,WAAW;YACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,cAAc,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,QAAQ,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QAE1E,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;YAC5B,KAAK;YACL,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,SAAS;YAC7B,mBAAmB,EAAE,MAAM;YAC3B,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;YACzC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,8EAA8E;IAE9E;;;;;;;;;;OAUG;IACH,KAAK,CAAC,sBAAsB,CAAC,GAAY;QACvC,MAAM,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,YAAY,CAAC,CAAC;QAEjD,sEAAsE;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,UAAU,CAAC;YAC3D,MAAM,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,CAAC,cAAc,EAAE,iDAAiD,CAAC,CAAC;QACpF,CAAC;QAED,mDAAmD;QACnD,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,QAAQ,KAAK,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,CACZ,eAAe,EACf,oFAAoF,CACrF,CAAC;QACJ,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAuB,CAAC;QACnD,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEjC,6CAA6C;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;YACrC,IAAI;YACJ,YAAY,EAAE,EAAE,CAAC,YAAY;YAC7B,WAAW,EAAE,EAAE,CAAC,WAAW;SAC5B,CAAC,CAAC;QAEH,iEAAiE;QACjE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAErE,MAAM,QAAQ,GAAoB;YAChC,SAAS;YACT,WAAW,EAAE,MAAM,CAAC,YAAY;YAChC,YAAY,EAAE,MAAM,CAAC,aAAa;YAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;YAChD,gBAAgB,EAAE,MAAM,CAAC,wBAAwB;SAClD,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC;IAED,8EAA8E;IAE9E;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YACrC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACtE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc,CAAC,UAA2D,EAAE;QAChF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,QAAQ,CAAC,mBAAmB,EAAE,oDAAoD,CAAC,CAAC;QAC5F,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,EAAE,CAAC;YAC/D,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,QAAQ,CAAC,iBAAiB,EAAE,0DAA0D,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,OAAO,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC5F,MAAM,QAAQ,CACZ,oBAAoB,EACpB,mBAAmB,OAAO,CAAC,aAAa,iCAAiC,CAC1E,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;YAChC,MAAM,QAAQ,CAAC,mBAAmB,EAAE,4BAA4B,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAErE,MAAM,QAAQ,GAAoB;gBAChC,SAAS;gBACT,WAAW,EAAE,MAAM,CAAC,YAAY;gBAChC,YAAY,EAAE,MAAM,CAAC,aAAa;gBAClC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI;gBAChD,gBAAgB,EAAE,MAAM,CAAC,wBAAwB;aAClD,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,UAAU,EAAG,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,MAAM,QAAQ,CAAC,gBAAgB,EAAE,gDAAgD,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E;;OAEG;IACH,MAAM,CAAC,UAAiC,EAAE;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,8EAA8E;IAE9E;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,QAA+B;QAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAEtE,KAAK,CAAC,kBAAkB,CAAC,KAAa;QAC5C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE;YAChD,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM;YACvB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAClB,QAAyB,EACzB,YAAwC,WAAW;QAEnD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;QAExB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,YAAY,CAAC,OAAO,CAClB,GAAG,IAAI,CAAC,MAAM,UAAU,EACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CACzB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,yEAAyE;YAC3E,CAAC;QACH,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBACH,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;YACpD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,UAAU,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;YAClD,iEAAiE;YACjE,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAClF,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,oBAAoB,CAAC,CAAC;QAEhE,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAEO,eAAe,CAAC,QAAyB;QAC/C,OAAO;YACL,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC;IACJ,CAAC;IAEO,IAAI,CAAC,KAAyB;QACpC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,QAAQ,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,mDAAmD;YACrD,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAA4B;IACnE,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,8EAA8E;AAE9E,SAAS,cAAc,CAAC,KAAa;IACnC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  export { BaseIdPClient, BaseIdPClient as BaseIdpClient } from "./client.js";
2
2
  export { BaseIdPError, BaseIdPError as BaseIdpError, idpError } from "./errors.js";
3
3
  export { generatePKCE } from "./pkce.js";
4
- export type { AccessClaims, AccountContext, AuthorizeUrlOptions, BaseIdPConfig, BaseIdPConfig as BaseIdpConfig, ClientConfigResponse, PKCEPair, RefreshOptions, ResolvedConfig, BaseIdpIdentityMetadata, BaseIdpPublicKey, BaseIdpPublicKeySet, TokenExchangeOptions, TokenPair, VerifiedPrincipal, VerifyAccessTokenOptions, } from "./types.js";
5
- export { createReactBaseIdpAuth, } from "./react.js";
6
- export { createNextBaseIdpAuth, } from "./next.js";
4
+ export { BrowserBaseIdpClient, createBrowserBaseIdpAuth, } from "./browser.js";
5
+ export type { HandleCallbackResult } from "./browser.js";
6
+ export { createReactBaseIdpAuth, BaseIdpProvider, useBaseIdpAuth, useUser, useSession, } from "./react.js";
7
+ export type { ReactBaseIdpAuth, BaseIdpProviderProps } from "./react.js";
8
+ export { createNextBaseIdpAuth } from "./next.js";
7
9
  export { baseIdpConfigFromNodeEnv, createNodeBaseIdpAuth, createExpressMiddleware, createNestBaseIdpGuard, } from "./node.js";
8
10
  export { createViteBaseIdpAuth, baseIdpConfigFromViteEnv, } from "./vite.js";
9
- export { createSvelteKitBaseIdpAuth, } from "./sveltekit.js";
11
+ export { createSvelteKitBaseIdpAuth } from "./sveltekit.js";
12
+ export type { BaseIdPConfig, BaseIdPConfig as BaseIdpConfig, BrowserBaseIdpConfig, ResolvedConfig, FetchLike, AuthorizeUrlOptions, TokenExchangeOptions, RefreshOptions, TokenPair, PKCEPair, AccessClaims, AccountContext, VerifiedPrincipal, VerifyAccessTokenOptions, AuthSession, LoginWithRedirectOptions, SessionChangeEvent, SessionChangeListener, UpsertUserData, UserRepository, MergedUser, ClientConfigResponse, BaseIdpIdentityMetadata, BaseIdpPublicKey, BaseIdpPublicKeySet, } from "./types.js";
10
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,YAAY,EACV,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,IAAI,aAAa,EAC9B,oBAAoB,EACpB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAGzC,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAGzD,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGlD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAG5D,YAAY,EAEV,aAAa,EACb,aAAa,IAAI,aAAa,EAC9B,oBAAoB,EACpB,cAAc,EACd,SAAS,EAET,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,QAAQ,EAER,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EAExB,WAAW,EACX,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EAErB,cAAc,EACd,cAAc,EACd,UAAU,EAEV,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,17 @@
1
+ // ── Core client (browser + Node compatible) ──────────────────────────────────
1
2
  export { BaseIdPClient, BaseIdPClient as BaseIdpClient } from "./client.js";
2
3
  export { BaseIdPError, BaseIdPError as BaseIdpError, idpError } from "./errors.js";
3
4
  export { generatePKCE } from "./pkce.js";
4
- export { createReactBaseIdpAuth, } from "./react.js";
5
- export { createNextBaseIdpAuth, } from "./next.js";
5
+ // ── Browser Client SDK ───────────────────────────────────────────────────────
6
+ export { BrowserBaseIdpClient, createBrowserBaseIdpAuth, } from "./browser.js";
7
+ // ── React integration ────────────────────────────────────────────────────────
8
+ export { createReactBaseIdpAuth, BaseIdpProvider, useBaseIdpAuth, useUser, useSession, } from "./react.js";
9
+ // ── Next.js integration ───────────────────────────────────────────────────────
10
+ export { createNextBaseIdpAuth } from "./next.js";
11
+ // ── Node / Express / NestJS integration ──────────────────────────────────────
6
12
  export { baseIdpConfigFromNodeEnv, createNodeBaseIdpAuth, createExpressMiddleware, createNestBaseIdpGuard, } from "./node.js";
13
+ // ── Vite integration ──────────────────────────────────────────────────────────
7
14
  export { createViteBaseIdpAuth, baseIdpConfigFromViteEnv, } from "./vite.js";
8
- export { createSvelteKitBaseIdpAuth, } from "./sveltekit.js";
15
+ // ── SvelteKit integration ─────────────────────────────────────────────────────
16
+ export { createSvelteKitBaseIdpAuth } from "./sveltekit.js";
9
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAmBzC,OAAO,EACL,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,0BAA0B,GAC3B,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,YAAY,IAAI,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,gFAAgF;AAChF,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAGtB,gFAAgF;AAChF,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,iFAAiF;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD,gFAAgF;AAChF,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,WAAW,CAAC;AAEnB,iFAAiF;AACjF,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAEnB,iFAAiF;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/react.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import type { ReactNode } from "react";
1
2
  import { BaseIdPClient } from "./client.js";
2
- import type { AuthorizeUrlOptions, BaseIdPConfig } from "./types.js";
3
+ import { BrowserBaseIdpClient } from "./browser.js";
4
+ import type { AuthSession, AuthorizeUrlOptions, BaseIdPConfig, LoginWithRedirectOptions, VerifiedPrincipal } from "./types.js";
3
5
  export type ReactBaseIdpAuth = {
4
6
  loginHref(options?: AuthorizeUrlOptions): string;
5
7
  login(options?: AuthorizeUrlOptions): void;
@@ -8,5 +10,102 @@ export type ReactBaseIdpAuth = {
8
10
  onClick(): void;
9
11
  };
10
12
  };
13
+ /**
14
+ * Lightweight helper for React apps that only need a login button and don't
15
+ * require full session management.
16
+ *
17
+ * @example
18
+ * const auth = createReactBaseIdpAuth({ key: "...", issuer: "..." });
19
+ * <button {...auth.buttonProps()}>Sign in with Square</button>
20
+ */
11
21
  export declare function createReactBaseIdpAuth(config: BaseIdPConfig | BaseIdPClient): ReactBaseIdpAuth;
22
+ type BaseIdpAuthState = {
23
+ isLoading: boolean;
24
+ isAuthenticated: boolean;
25
+ principal: VerifiedPrincipal | null;
26
+ session: AuthSession | null;
27
+ error: Error | null;
28
+ };
29
+ type BaseIdpContextValue = BaseIdpAuthState & {
30
+ client: BrowserBaseIdpClient;
31
+ loginWithRedirect(options?: LoginWithRedirectOptions): Promise<void>;
32
+ logout(options?: {
33
+ returnTo?: string;
34
+ }): void;
35
+ getAccessToken(): Promise<string>;
36
+ refreshSession(): Promise<AuthSession>;
37
+ };
38
+ export type BaseIdpProviderProps = {
39
+ /** An initialised BrowserBaseIdpClient (from createBrowserBaseIdpAuth) */
40
+ client: BrowserBaseIdpClient;
41
+ children: ReactNode;
42
+ /**
43
+ * Called after handleRedirectCallback completes successfully.
44
+ * Use this to navigate the user to `returnTo` or a default destination.
45
+ *
46
+ * @example
47
+ * onRedirectCallback={(_, returnTo) => router.push(returnTo ?? "/dashboard")}
48
+ */
49
+ onRedirectCallback?: (principal: VerifiedPrincipal, returnTo?: string) => void;
50
+ };
51
+ /**
52
+ * Wrap your React app with this provider to enable auth hooks.
53
+ *
54
+ * On mount it will:
55
+ * 1. Call client.init() to discover config
56
+ * 2. If `?code=` is in the URL, call handleRedirectCallback() and clean the URL
57
+ * 3. Otherwise, restore any existing session from storage
58
+ *
59
+ * @example
60
+ * const auth = createBrowserBaseIdpAuth({ key, issuer, persistSession: true });
61
+ *
62
+ * function App() {
63
+ * return (
64
+ * <BaseIdpProvider
65
+ * client={auth}
66
+ * onRedirectCallback={(_, returnTo) => navigate(returnTo ?? "/")}
67
+ * >
68
+ * <Router />
69
+ * </BaseIdpProvider>
70
+ * );
71
+ * }
72
+ */
73
+ export declare function BaseIdpProvider({ client, children, onRedirectCallback, }: BaseIdpProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<BaseIdpContextValue | null>>;
74
+ /**
75
+ * Access the full auth context from any component inside <BaseIdpProvider>.
76
+ *
77
+ * @example
78
+ * const { isLoading, isAuthenticated, principal, loginWithRedirect, logout } =
79
+ * useBaseIdpAuth();
80
+ */
81
+ export declare function useBaseIdpAuth(): BaseIdpContextValue;
82
+ /**
83
+ * Quick access to the current user (VerifiedPrincipal).
84
+ * Returns { isLoaded, isSignedIn, user }.
85
+ *
86
+ * @example
87
+ * const { isLoaded, isSignedIn, user } = useUser();
88
+ * if (!isLoaded) return <Spinner />;
89
+ * if (!isSignedIn) return <LoginButton />;
90
+ * return <p>Hello, {user.name}</p>;
91
+ */
92
+ export declare function useUser(): {
93
+ isLoaded: boolean;
94
+ isSignedIn: boolean;
95
+ user: VerifiedPrincipal | null;
96
+ };
97
+ /**
98
+ * Access the raw session object (token + expiresAt + principal).
99
+ *
100
+ * @example
101
+ * const { isLoaded, session } = useSession();
102
+ * if (session) {
103
+ * console.log("token expires at", new Date(session.expiresAt));
104
+ * }
105
+ */
106
+ export declare function useSession(): {
107
+ isLoaded: boolean;
108
+ session: AuthSession | null;
109
+ };
110
+ export {};
12
111
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACjD,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG;QAC1C,IAAI,EAAE,QAAQ,CAAC;QACf,OAAO,IAAI,IAAI,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAkB9F"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EAExB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,CAAC;IACjD,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG;QAC1C,IAAI,EAAE,QAAQ,CAAC;QACf,OAAO,IAAI,IAAI,CAAC;KACjB,CAAC;CACH,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAkB9F;AAID,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,KAAK,mBAAmB,GAAG,gBAAgB,GAAG;IAC5C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,iBAAiB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACxC,CAAC;AAYF,MAAM,MAAM,oBAAoB,GAAG;IACjC,0EAA0E;IAC1E,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAChF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,QAAQ,EACR,kBAAkB,GACnB,EAAE,oBAAoB,uGA8GtB;AAID;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,mBAAmB,CASpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,IAAI;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAChC,CAOA;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,IAAI;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B,CAMA"}
package/dist/react.js CHANGED
@@ -1,4 +1,28 @@
1
+ /**
2
+ * React integration for the Base IDP SDK.
3
+ *
4
+ * Exports two tiers:
5
+ *
6
+ * ── Tier 1: Simple login helper (backward compat, no React dep needed) ──────
7
+ * createReactBaseIdpAuth() → { loginHref, login, buttonProps }
8
+ *
9
+ * ── Tier 2: Full React Provider + hooks (requires React ≥ 18) ───────────────
10
+ * <BaseIdpProvider client={auth}> — wraps your app
11
+ * useBaseIdpAuth() — full auth context
12
+ * useUser() — { isLoaded, isSignedIn, user }
13
+ * useSession() — { isLoaded, session }
14
+ */
15
+ import { createContext, useContext, useState, useEffect, useCallback, createElement, } from "react";
1
16
  import { BaseIdPClient } from "./client.js";
17
+ import { BrowserBaseIdpClient } from "./browser.js";
18
+ /**
19
+ * Lightweight helper for React apps that only need a login button and don't
20
+ * require full session management.
21
+ *
22
+ * @example
23
+ * const auth = createReactBaseIdpAuth({ key: "...", issuer: "..." });
24
+ * <button {...auth.buttonProps()}>Sign in with Square</button>
25
+ */
2
26
  export function createReactBaseIdpAuth(config) {
3
27
  const client = config instanceof BaseIdPClient ? config : new BaseIdPClient(config);
4
28
  return {
@@ -18,4 +42,180 @@ export function createReactBaseIdpAuth(config) {
18
42
  },
19
43
  };
20
44
  }
45
+ const BaseIdpContext = createContext(null);
46
+ const LOADING_STATE = {
47
+ isLoading: true,
48
+ isAuthenticated: false,
49
+ principal: null,
50
+ session: null,
51
+ error: null,
52
+ };
53
+ /**
54
+ * Wrap your React app with this provider to enable auth hooks.
55
+ *
56
+ * On mount it will:
57
+ * 1. Call client.init() to discover config
58
+ * 2. If `?code=` is in the URL, call handleRedirectCallback() and clean the URL
59
+ * 3. Otherwise, restore any existing session from storage
60
+ *
61
+ * @example
62
+ * const auth = createBrowserBaseIdpAuth({ key, issuer, persistSession: true });
63
+ *
64
+ * function App() {
65
+ * return (
66
+ * <BaseIdpProvider
67
+ * client={auth}
68
+ * onRedirectCallback={(_, returnTo) => navigate(returnTo ?? "/")}
69
+ * >
70
+ * <Router />
71
+ * </BaseIdpProvider>
72
+ * );
73
+ * }
74
+ */
75
+ export function BaseIdpProvider({ client, children, onRedirectCallback, }) {
76
+ const [state, setState] = useState(LOADING_STATE);
77
+ useEffect(() => {
78
+ let cancelled = false;
79
+ async function initialize() {
80
+ try {
81
+ await client.init();
82
+ // If the IDP just redirected back with a code, complete the exchange
83
+ if (window.location.search.includes("code=")) {
84
+ const { principal, returnTo } = await client.handleRedirectCallback();
85
+ // Strip OAuth params from browser history so the URL is clean
86
+ const clean = new URL(window.location.href);
87
+ clean.searchParams.delete("code");
88
+ clean.searchParams.delete("state");
89
+ clean.searchParams.delete("error");
90
+ clean.searchParams.delete("error_description");
91
+ window.history.replaceState({}, document.title, clean.toString());
92
+ if (!cancelled) {
93
+ setState({
94
+ isLoading: false,
95
+ isAuthenticated: true,
96
+ principal,
97
+ session: client.getSession(),
98
+ error: null,
99
+ });
100
+ onRedirectCallback?.(principal, returnTo);
101
+ }
102
+ return;
103
+ }
104
+ // No callback — restore session from storage
105
+ const existing = client.getSession();
106
+ if (!cancelled) {
107
+ setState({
108
+ isLoading: false,
109
+ isAuthenticated: client.isAuthenticated(),
110
+ principal: existing?.principal ?? null,
111
+ session: existing,
112
+ error: null,
113
+ });
114
+ }
115
+ }
116
+ catch (err) {
117
+ if (!cancelled) {
118
+ setState({
119
+ isLoading: false,
120
+ isAuthenticated: false,
121
+ principal: null,
122
+ session: null,
123
+ error: err instanceof Error ? err : new Error(String(err)),
124
+ });
125
+ }
126
+ }
127
+ }
128
+ void initialize();
129
+ // Keep React state in sync with BrowserBaseIdpClient session events
130
+ const unsubscribe = client.onSessionChange((event) => {
131
+ if (cancelled)
132
+ return;
133
+ if (event.type === "signed_out" || event.type === "expired") {
134
+ setState({
135
+ isLoading: false,
136
+ isAuthenticated: false,
137
+ principal: null,
138
+ session: null,
139
+ error: null,
140
+ });
141
+ }
142
+ else if (event.session) {
143
+ setState({
144
+ isLoading: false,
145
+ isAuthenticated: true,
146
+ principal: event.session.principal,
147
+ session: event.session,
148
+ error: null,
149
+ });
150
+ }
151
+ });
152
+ return () => {
153
+ cancelled = true;
154
+ unsubscribe();
155
+ };
156
+ }, [client, onRedirectCallback]);
157
+ const loginWithRedirect = useCallback((options) => client.loginWithRedirect(options), [client]);
158
+ const logout = useCallback((options) => client.logout(options), [client]);
159
+ const getAccessToken = useCallback(() => client.getAccessToken(), [client]);
160
+ const refreshSession = useCallback(() => client.refreshSession(), [client]);
161
+ const value = {
162
+ ...state,
163
+ client,
164
+ loginWithRedirect,
165
+ logout,
166
+ getAccessToken,
167
+ refreshSession,
168
+ };
169
+ return createElement(BaseIdpContext.Provider, { value }, children);
170
+ }
171
+ // ── Hooks ────────────────────────────────────────────────────────────────────
172
+ /**
173
+ * Access the full auth context from any component inside <BaseIdpProvider>.
174
+ *
175
+ * @example
176
+ * const { isLoading, isAuthenticated, principal, loginWithRedirect, logout } =
177
+ * useBaseIdpAuth();
178
+ */
179
+ export function useBaseIdpAuth() {
180
+ const ctx = useContext(BaseIdpContext);
181
+ if (!ctx) {
182
+ throw new Error("useBaseIdpAuth() must be called inside a <BaseIdpProvider>. " +
183
+ "Wrap your app root with <BaseIdpProvider client={auth}>.");
184
+ }
185
+ return ctx;
186
+ }
187
+ /**
188
+ * Quick access to the current user (VerifiedPrincipal).
189
+ * Returns { isLoaded, isSignedIn, user }.
190
+ *
191
+ * @example
192
+ * const { isLoaded, isSignedIn, user } = useUser();
193
+ * if (!isLoaded) return <Spinner />;
194
+ * if (!isSignedIn) return <LoginButton />;
195
+ * return <p>Hello, {user.name}</p>;
196
+ */
197
+ export function useUser() {
198
+ const { isLoading, isAuthenticated, principal } = useBaseIdpAuth();
199
+ return {
200
+ isLoaded: !isLoading,
201
+ isSignedIn: isAuthenticated,
202
+ user: principal,
203
+ };
204
+ }
205
+ /**
206
+ * Access the raw session object (token + expiresAt + principal).
207
+ *
208
+ * @example
209
+ * const { isLoaded, session } = useSession();
210
+ * if (session) {
211
+ * console.log("token expires at", new Date(session.expiresAt));
212
+ * }
213
+ */
214
+ export function useSession() {
215
+ const { isLoading, session } = useBaseIdpAuth();
216
+ return {
217
+ isLoaded: !isLoading,
218
+ session,
219
+ };
220
+ }
21
221
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY5C,MAAM,UAAU,sBAAsB,CAAC,MAAqC;IAC1E,MAAM,MAAM,GAAG,MAAM,YAAY,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACpF,OAAO;QACL,SAAS,CAAC,OAAO,GAAG,EAAE;YACpB,OAAO,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,OAAO,GAAG,EAAE;YAChB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,WAAW,CAAC,OAAO,GAAG,EAAE;YACtB,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO;oBACL,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvD,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -1,11 +1,46 @@
1
1
  import { BaseIdPClient } from "./client.js";
2
- import type { BaseIdPConfig, ResolvedConfig, VerifiedPrincipal, VerifyAccessTokenOptions } from "./types.js";
2
+ import type { BaseIdPConfig, MergedUser, ResolvedConfig, UserRepository, VerifiedPrincipal, VerifyAccessTokenOptions } from "./types.js";
3
3
  export declare class BaseIdPServerClient extends BaseIdPClient {
4
4
  private readonly serverConfig;
5
5
  private initialized;
6
6
  constructor(serverConfig: BaseIdPConfig);
7
7
  init(): Promise<ResolvedConfig>;
8
8
  verifyAccessToken(token: string, options?: VerifyAccessTokenOptions): Promise<VerifiedPrincipal>;
9
+ /**
10
+ * First-login upsert — the standard pattern for backends that maintain their
11
+ * own user table alongside Base IDP.
12
+ *
13
+ * Given a verified principal and a thin repository interface:
14
+ * 1. Calls `repository.findBySubject(principal.subject)` to check for an existing row
15
+ * 2. Calls `repository.upsert(data)` to create or update the row
16
+ * 3. Returns `{ principal, isNewUser, localUser }`
17
+ *
18
+ * Apps only need to implement two methods — everything else (token
19
+ * verification, claim extraction, audit fields) is handled by the SDK.
20
+ *
21
+ * Works with any data layer: TypeORM, Prisma, Drizzle, raw SQL, etc.
22
+ *
23
+ * @example — NestJS service
24
+ * ```ts
25
+ * async login(principal: VerifiedPrincipal) {
26
+ * const { isNewUser, localUser } = await this.baseIdp.mergeIdentity(
27
+ * principal,
28
+ * {
29
+ * findBySubject: (sub) => this.users.findOne({ where: { subject: sub } }),
30
+ * upsert: (data) => this.users.save(this.users.create({
31
+ * subject: data.subject,
32
+ * email: data.email,
33
+ * name: data.name,
34
+ * role: data.role,
35
+ * })),
36
+ * },
37
+ * );
38
+ * if (isNewUser) await this.sendWelcomeEmail(localUser);
39
+ * return localUser;
40
+ * }
41
+ * ```
42
+ */
43
+ mergeIdentity<T extends Record<string, unknown>>(principal: VerifiedPrincipal, repository: UserRepository<T>): Promise<MergedUser<T>>;
9
44
  }
10
45
  export { BaseIdPServerClient as BaseIdpServerClient };
11
46
  export { verifyPasetoV4Public, unsafeFooter, unsafeFooterKid } from "./paseto.js";
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE7G,qBAAa,mBAAoB,SAAQ,aAAa;IAGxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,OAAO,CAAC,WAAW,CAAS;gBAEC,YAAY,EAAE,aAAa;IAIlD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAO/B,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAK3G;AAED,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,cAAc,EAEd,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AAEpB,qBAAa,mBAAoB,SAAQ,aAAa;IAGxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,OAAO,CAAC,WAAW,CAAS;gBAEC,YAAY,EAAE,aAAa;IAIlD,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAO/B,iBAAiB,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnD,SAAS,EAAE,iBAAiB,EAC5B,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAoB1B;AAED,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
package/dist/server.js CHANGED
@@ -19,6 +19,57 @@ export class BaseIdPServerClient extends BaseIdPClient {
19
19
  const keySet = await this.publicKeys();
20
20
  return verifyPasetoV4Public(token, keySet, this.cfg, options);
21
21
  }
22
+ /**
23
+ * First-login upsert — the standard pattern for backends that maintain their
24
+ * own user table alongside Base IDP.
25
+ *
26
+ * Given a verified principal and a thin repository interface:
27
+ * 1. Calls `repository.findBySubject(principal.subject)` to check for an existing row
28
+ * 2. Calls `repository.upsert(data)` to create or update the row
29
+ * 3. Returns `{ principal, isNewUser, localUser }`
30
+ *
31
+ * Apps only need to implement two methods — everything else (token
32
+ * verification, claim extraction, audit fields) is handled by the SDK.
33
+ *
34
+ * Works with any data layer: TypeORM, Prisma, Drizzle, raw SQL, etc.
35
+ *
36
+ * @example — NestJS service
37
+ * ```ts
38
+ * async login(principal: VerifiedPrincipal) {
39
+ * const { isNewUser, localUser } = await this.baseIdp.mergeIdentity(
40
+ * principal,
41
+ * {
42
+ * findBySubject: (sub) => this.users.findOne({ where: { subject: sub } }),
43
+ * upsert: (data) => this.users.save(this.users.create({
44
+ * subject: data.subject,
45
+ * email: data.email,
46
+ * name: data.name,
47
+ * role: data.role,
48
+ * })),
49
+ * },
50
+ * );
51
+ * if (isNewUser) await this.sendWelcomeEmail(localUser);
52
+ * return localUser;
53
+ * }
54
+ * ```
55
+ */
56
+ async mergeIdentity(principal, repository) {
57
+ const existing = await repository.findBySubject(principal.subject);
58
+ const upsertData = {
59
+ subject: principal.subject,
60
+ email: principal.email,
61
+ name: principal.name,
62
+ role: principal.role,
63
+ accountContext: principal.accountContext,
64
+ claims: principal.claims,
65
+ };
66
+ const localUser = await repository.upsert(upsertData);
67
+ return {
68
+ principal,
69
+ isNewUser: existing === null,
70
+ localUser,
71
+ };
72
+ }
22
73
  }
23
74
  export { BaseIdPServerClient as BaseIdpServerClient };
24
75
  export { verifyPasetoV4Public, unsafeFooter, unsafeFooterKid } from "./paseto.js";
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAGvB;IAFrB,WAAW,GAAG,KAAK,CAAC;IAE5B,YAA6B,YAA2B;QACtD,KAAK,CAAC,YAAY,CAAC,CAAC;QADO,iBAAY,GAAZ,YAAY,CAAe;IAExD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,KAAa,EAAE,UAAoC,EAAE;QAC3E,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAED,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAWnD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAGvB;IAFrB,WAAW,GAAG,KAAK,CAAC;IAE5B,YAA6B,YAA2B;QACtD,KAAK,CAAC,YAAY,CAAC,CAAC;QADO,iBAAY,GAAZ,YAAY,CAAe;IAExD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,KAAa,EACb,UAAoC,EAAE;QAEtC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,KAAK,CAAC,aAAa,CACjB,SAA4B,EAC5B,UAA6B;QAE7B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEnE,MAAM,UAAU,GAAmB;YACjC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,MAAM,EAAE,SAAS,CAAC,MAAM;SACzB,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEtD,OAAO;YACL,SAAS;YACT,SAAS,EAAE,QAAQ,KAAK,IAAI;YAC5B,SAAS;SACV,CAAC;IACJ,CAAC;CACF;AAED,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
package/dist/types.d.ts CHANGED
@@ -135,4 +135,68 @@ export type PKCEPair = {
135
135
  challenge: string;
136
136
  method: "S256";
137
137
  };
138
+ export type LoginWithRedirectOptions = {
139
+ /** Where to send the user after successful login (stored in PKCE tx, passed to onRedirectCallback) */
140
+ returnTo?: string;
141
+ /** Explicit OAuth state — auto-generated if omitted */
142
+ state?: string;
143
+ /** Nonce to bind to the token — auto-generated if omitted */
144
+ nonce?: string;
145
+ /** Override the scopes for this login request */
146
+ scopes?: string | string[];
147
+ /** Override the redirect URI for this login request */
148
+ redirectUri?: string;
149
+ /** Extra OAuth parameters to forward to the authorization endpoint */
150
+ additionalParameters?: Record<string, string | undefined>;
151
+ };
152
+ export type AuthSession = {
153
+ /** Verified identity from Base IDP */
154
+ principal: VerifiedPrincipal;
155
+ /** Raw access token (PASETO v4.public) */
156
+ accessToken: string;
157
+ /** Unix timestamp (ms) when the access token expires */
158
+ expiresAt: number;
159
+ };
160
+ export type BrowserBaseIdpConfig = BaseIdPConfig & {
161
+ /** Exact callback URL — must be registered in Base IDP. Auto-discovered if omitted. */
162
+ redirectUri?: string;
163
+ /** Persist refresh token in localStorage so session survives page reload. Default: false */
164
+ persistSession?: boolean;
165
+ /** Prefix for sessionStorage / localStorage keys. Default: "base_idp" */
166
+ storagePrefix?: string;
167
+ /** Initial scopes — auto-discovered from client registration if omitted */
168
+ scopes?: string | string[];
169
+ /** Audience claim expected in the token. Default: "square-experience" */
170
+ audience?: string;
171
+ };
172
+ export type SessionChangeEvent = {
173
+ type: "signed_in" | "signed_out" | "refreshed" | "expired";
174
+ session: AuthSession | null;
175
+ };
176
+ export type SessionChangeListener = (event: SessionChangeEvent) => void;
177
+ export type UpsertUserData = {
178
+ /** Base IDP global subject ID */
179
+ subject: string;
180
+ email?: string;
181
+ name?: string;
182
+ role: string;
183
+ accountContext: AccountContext;
184
+ claims: AccessClaims;
185
+ };
186
+ /**
187
+ * Minimal repository interface the app must implement to use mergeIdentity.
188
+ * Works with any ORM or raw SQL — TypeORM, Prisma, Drizzle, etc.
189
+ */
190
+ export type UserRepository<T extends Record<string, unknown> = Record<string, unknown>> = {
191
+ findBySubject(subject: string): Promise<T | null>;
192
+ upsert(data: UpsertUserData): Promise<T>;
193
+ };
194
+ export type MergedUser<T extends Record<string, unknown> = Record<string, unknown>> = {
195
+ /** Verified Base IDP principal */
196
+ principal: VerifiedPrincipal;
197
+ /** true = first login; false = returning user */
198
+ isNewUser: boolean;
199
+ /** The app's own user row after upsert */
200
+ localUser: T;
201
+ };
138
202
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}