clefbase 2.0.2 → 2.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":";;;AAEA,oCAAyC;AAUzC,MAAM,YAAY;IAAlB;QACU,YAAO,GAA4B,IAAI,CAAC;QAC/B,QAAG,GAAG,aAAa,CAAC;IAiCvC,CAAC;IA/BC,IAAY,EAAE;QACZ,IAAI,CAAC;YAAC,OAAO,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAAC,CAAC;QACzE,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,CAAmB;QACtB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACtD,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IACtC,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAC;gBACnD,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAAE,CAAC;oBAC5C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;oBACtB,OAAO,IAAI,CAAC,OAAO,CAAC;gBACtB,CAAC;gBACD,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC;YAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;CACF;AAgCD,MAAa,IAAI;IASf,YACmB,IAAgB,EACjC,UAAkB,EAClB,SAAiB,EACjB,OAAqB;QAHJ,SAAI,GAAJ,IAAI,CAAY;QATlB,UAAK,GAAG,IAAI,YAAY,EAAE,CAAC;QACpC,cAAS,GAAwB,EAAE,CAAC;QAGpC,kBAAa,GAAwB,IAAI,CAAC;QAUhD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,GAAI,SAAS,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,SAAiB;QACvC,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;YACJ,CAAC;YACD,mEAAmE;YACnE,OAAO,UAAU,SAAS,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6EAA6E;IAErE,MAAM,CAAC,IAAqB;QAClC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,wCAAwC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAkB;QACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,KAAK,EAAM,MAAM,CAAC,KAAK;YACvB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;YACnC,IAAI,EAAO,MAAM,CAAC,IAAI;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gFAAgF;IAChF,cAAc;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,CAAC;IAED,6EAA6E;IAE7E,IAAI,WAAW,KAAsB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,YAAY,KAAqB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;IAE/E,6EAA6E;IAE7E,KAAK,CAAC,MAAM,CACV,KAAa,EACb,QAAgB,EAChB,OAAyF;QAEzF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,QAAgB;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,UAA6B,EAAE;QACxC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,qBAAa,CAAC,8CAA8C,EAAE,yBAAyB,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,EAAE,IAAI,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;QAEtE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACxC,MAAM,SAAS,GAAI,WAAW,IAAI,UAAU,CAAC;QAE7C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;YACjC,OAAO,EAAG,IAAI,CAAC,SAAS;YACxB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAK,OAAO;SAClB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,UAAU,UAAU,MAAM,EAAE,CAAC;QAErD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,2EAA2E;QAE3E,qBAAqB;QACrB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,EAAE,GAAG,kBAAkB,CAAC;YAC9B,KAAK,CAAC,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BnB,CAAC;YACF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,iBAAiB;QACjB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,EAAE,GAAG,kBAAkB,CAAC;QAEhC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,GAAG,eAAe,CAAC;QAE1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,EAAE,GAAG,gBAAgB,CAAC;QAC/B,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC;QAChC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,OAAO,CAAC;QACrB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;QAEzD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEnC,sBAAsB;QACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAClD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAExC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;YAC5C,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC;QAEF,MAAM,cAAc,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE;YAC/C,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc;gBAAE,OAAO;YAElF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAyC,CAAC;YAC7E,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,OAAO,EAAE,CAAC;YAEV,mEAAmE;YACnE,sEAAsE;YACtE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAChE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE;oBAChG,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;iBAC9C,CAAC,CAAC;gBACH,MAAM,IAAI,GAAa,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAc,CAAC,CAAC,CAAC,OAAO,CAAC;gBACvE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChF,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;gBAC1E,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,wDAAwD;gBACxD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChF,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;gBACnF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC1B,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACtC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;gBAAC,SAAS,EAAE,EAAE,CAAC;YAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEnD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAED,qDAAqD;IACrD,WAAW;QACT,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;IACzB,CAAC;IAED,6EAA6E;IAE7E;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAkB,EAClB,OAA8B;QAE9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,qBAAa,CAAC,qDAAqD,EAAE,yBAAyB,CAAC,CAAC;QAC5G,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjE,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,WAAW,MAAM,EAAE,CAAC;QAC7D,OAAO,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,wBAAwB;QACtB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAChD,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,qBAAqB;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,YAAY;QACZ,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC7B,MAAM,CAAC,OAAO,CAAC,YAAY,CACzB,EAAE,EACF,EAAE,EACF,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACnE,CAAC;QAEF,8DAA8D;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,GAAG,GAAI,MAAM,KAAK,CACtB,GAAG,SAAS,wBAAwB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EACxE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,CAClD,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAc,CAAC;YAC1C,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAChF,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,qBAAa,CACrB,4BAA6B,GAAa,CAAC,OAAO,EAAE,EACpD,wBAAwB,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAE7E,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;YACxF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAInB;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAW,KAAK,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;QACnG,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,eAAuB,EAAE,WAAmB;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IACnH,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,KAAa;QACxC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,UAAkB,EAAE,WAAmB;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,kBAAkB,CAAC,QAA2B;QAC5C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,CAAC;YAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;CACF;AA3XD,oBA2XC"}
@@ -85,21 +85,31 @@ async function runInit(cwd = process.cwd()) {
85
85
  hosting: services.includes("hosting"),
86
86
  functions: services.includes("functions"),
87
87
  };
88
- // ── Step 4: Hosting setup ─────────────────────────────────────────────────
88
+ // ── Step 4: Auth setup ────────────────────────────────────────────────────
89
+ let authSetup;
90
+ if (cfg.services.auth) {
91
+ authSetup = await setupAuth(cwd);
92
+ }
93
+ // ── Step 5: Hosting setup ─────────────────────────────────────────────────
89
94
  if (cfg.services.hosting) {
90
95
  await setupHosting(cfg, cwd);
91
96
  }
92
- // ── Step 5: Functions setup ───────────────────────────────────────────────
97
+ // ── Step 6: Functions setup ───────────────────────────────────────────────
93
98
  let functionsRuntime;
94
99
  if (cfg.services.functions) {
95
100
  functionsRuntime = await setupFunctions(cfg, cwd);
96
101
  }
97
- // ── Step 6: Write root config files ──────────────────────────────────────
102
+ // ── Step 7: Write root config files ──────────────────────────────────────
98
103
  const configPath = (0, config_1.saveConfig)(cfg, cwd);
99
104
  (0, config_1.ensureGitignore)(cwd);
100
105
  (0, config_1.writeEnvExample)(cfg, cwd);
101
- // ── Step 7: Scaffold src/lib ──────────────────────────────────────────────
106
+ // ── Step 8: Scaffold src/lib ──────────────────────────────────────────────
102
107
  const libResult = scaffoldLib(cfg, cwd);
108
+ // ── Step 9: Scaffold auth files ──────────────────────────────────────────
109
+ let authResult;
110
+ if (cfg.services.auth && authSetup) {
111
+ authResult = await scaffoldAuth(cwd, authSetup);
112
+ }
103
113
  // ── Done ──────────────────────────────────────────────────────────────────
104
114
  console.log();
105
115
  console.log(chalk_1.default.green.bold(" ✓ Project initialised!"));
@@ -111,12 +121,172 @@ async function runInit(cwd = process.cwd()) {
111
121
  console.log(chalk_1.default.dim(` Lib config: ${libResult.configCopy}`));
112
122
  console.log(chalk_1.default.dim(` Lib entry: ${libResult.libFile}`));
113
123
  }
124
+ if (authResult?.hasAuth) {
125
+ if (authResult.context)
126
+ console.log(chalk_1.default.dim(` Auth context: ${authResult.context}`));
127
+ if (authResult.modal)
128
+ console.log(chalk_1.default.dim(` Auth modal: ${authResult.modal}`));
129
+ if (authResult.protected)
130
+ console.log(chalk_1.default.dim(` Protected: ${authResult.protected}`));
131
+ }
114
132
  if (cfg.services.functions) {
115
133
  console.log(chalk_1.default.dim(` Functions: functions/ (${functionsRuntime ?? "node"})`));
116
134
  console.log(chalk_1.default.dim(` run: node functions/deploy.mjs`));
117
135
  }
118
136
  console.log();
119
- printUsageHint(cfg);
137
+ printUsageHint(cfg, authSetup);
138
+ }
139
+ // ─── Auth scaffolding ────────────────────────────────────────────────────────
140
+ /**
141
+ * Interactively scaffold auth files (AuthContext, AuthModal, etc.).
142
+ */
143
+ async function setupAuth(cwd) {
144
+ console.log();
145
+ console.log(chalk_1.default.bold(" Auth Setup"));
146
+ console.log();
147
+ const { scaffoldContext } = await inquirer_1.default.prompt([{
148
+ type: "confirm",
149
+ name: "scaffoldContext",
150
+ message: "Scaffold React AuthContext?",
151
+ default: true,
152
+ }]);
153
+ const { scaffoldModal } = await inquirer_1.default.prompt([{
154
+ type: "confirm",
155
+ name: "scaffoldModal",
156
+ message: "Scaffold AuthModal component?",
157
+ default: true,
158
+ }]);
159
+ const { updateApp } = await inquirer_1.default.prompt([{
160
+ type: "confirm",
161
+ name: "updateApp",
162
+ message: "Update App.tsx to use AuthProvider?",
163
+ default: false,
164
+ }]);
165
+ return { scaffoldContext, scaffoldModal, updateApp };
166
+ }
167
+ /**
168
+ * Get the path to a template file within the clefbase CLI package.
169
+ */
170
+ function getTemplatePath(filename) {
171
+ // In compiled dist, __dirname will be dist-src/cli/commands
172
+ // We want to resolve to src/cli/templates/ in source
173
+ // Or in dist, it would be at ../templates/
174
+ let dir = __dirname;
175
+ // Check if we're in dist (compiled)
176
+ if (dir.includes("/dist-src/")) {
177
+ return path_1.default.join(dir, "../templates", filename);
178
+ }
179
+ // Otherwise we're in source
180
+ return path_1.default.join(dir, "../templates", filename);
181
+ }
182
+ /**
183
+ * Read a template file with fallback to embedded template.
184
+ */
185
+ function readTemplate(filename, fallback) {
186
+ try {
187
+ const templatePath = getTemplatePath(filename);
188
+ return fs_1.default.readFileSync(templatePath, "utf-8");
189
+ }
190
+ catch {
191
+ return fallback;
192
+ }
193
+ }
194
+ /**
195
+ * Scaffold auth-related files (AuthContext, AuthModal, ProtectedRoute).
196
+ */
197
+ async function scaffoldAuth(cwd, setup) {
198
+ const result = { hasAuth: false };
199
+ // Create context directory
200
+ const contextDir = path_1.default.join(cwd, "src", "context");
201
+ fs_1.default.mkdirSync(contextDir, { recursive: true });
202
+ if (setup.scaffoldContext) {
203
+ const contextFile = path_1.default.join(contextDir, "AuthContext.tsx");
204
+ try {
205
+ const content = readTemplate("AuthContext.tsx.template", AUTH_CONTEXT_FALLBACK);
206
+ fs_1.default.writeFileSync(contextFile, content);
207
+ result.context = path_1.default.relative(cwd, contextFile);
208
+ result.hasAuth = true;
209
+ }
210
+ catch (err) {
211
+ console.warn(chalk_1.default.yellow(` Warning: Could not scaffold AuthContext: ${err.message}`));
212
+ }
213
+ }
214
+ if (setup.scaffoldModal) {
215
+ const componentDir = path_1.default.join(cwd, "src", "components");
216
+ fs_1.default.mkdirSync(componentDir, { recursive: true });
217
+ const modalFile = path_1.default.join(componentDir, "AuthModal.tsx");
218
+ try {
219
+ const content = readTemplate("AuthModal.tsx.template", AUTH_MODAL_FALLBACK);
220
+ fs_1.default.writeFileSync(modalFile, content);
221
+ result.modal = path_1.default.relative(cwd, modalFile);
222
+ result.hasAuth = true;
223
+ }
224
+ catch (err) {
225
+ console.warn(chalk_1.default.yellow(` Warning: Could not scaffold AuthModal: ${err.message}`));
226
+ }
227
+ // Also scaffold ProtectedRoute
228
+ const protectedFile = path_1.default.join(componentDir, "ProtectedRoute.tsx");
229
+ try {
230
+ const content = readTemplate("ProtectedRoute.tsx.template", PROTECTED_ROUTE_FALLBACK);
231
+ fs_1.default.writeFileSync(protectedFile, content);
232
+ result.protected = path_1.default.relative(cwd, protectedFile);
233
+ }
234
+ catch (err) {
235
+ console.warn(chalk_1.default.yellow(` Warning: Could not scaffold ProtectedRoute: ${err.message}`));
236
+ }
237
+ }
238
+ // Update App.tsx if it exists and user wants it
239
+ if (setup.updateApp) {
240
+ const appPath = path_1.default.join(cwd, "src", "App.tsx");
241
+ if (fs_1.default.existsSync(appPath)) {
242
+ try {
243
+ updateAppWithAuth(appPath);
244
+ }
245
+ catch (err) {
246
+ console.warn(chalk_1.default.yellow(` Warning: Could not update App.tsx: ${err.message}`));
247
+ }
248
+ }
249
+ }
250
+ return result;
251
+ }
252
+ /**
253
+ * Update an existing App.tsx to wrap with AuthProvider.
254
+ */
255
+ function updateAppWithAuth(appPath) {
256
+ let content = fs_1.default.readFileSync(appPath, "utf-8");
257
+ // Check if already has AuthProvider
258
+ if (content.includes("AuthProvider")) {
259
+ return; // Already updated
260
+ }
261
+ // Add import if not present
262
+ if (!content.includes("import { AuthProvider, useAuth }")) {
263
+ const importLine = "import { AuthProvider, useAuth } from '@/context/AuthContext';\n";
264
+ content = importLine + content;
265
+ }
266
+ // Check if this is a functional component that exports a component
267
+ // Look for "export default function" or "export default"
268
+ const exportMatch = content.match(/export\s+default\s+(function\s+\w+\s*\(|const\s+\w+\s*=|\(\)|=>)/);
269
+ if (exportMatch) {
270
+ // Find the return statement and wrap the JSX with AuthProvider
271
+ // This is a simple approach - find the outermost return/JSX in export
272
+ const returnMatch = content.match(/export\s+default\s+(?:function\s+\w+\s*\([^)]*\)\s*\{|\(.*?\)\s*=>\s*)[\s\S]*?return\s+/);
273
+ if (returnMatch) {
274
+ // Insert AuthProvider wrapper
275
+ // This is complex, so we'll do a simpler approach:
276
+ // Just add the import and let users wrap manually
277
+ // Or check if it's a simple functional component
278
+ if (content.includes("return (") || content.includes("return <")) {
279
+ // Try to wrap the main rendered content
280
+ // Find the JSX being returned and wrap it
281
+ const beforeReturn = content.substring(0, content.lastIndexOf("return"));
282
+ const afterReturn = content.substring(content.lastIndexOf("return"));
283
+ const wrappedReturn = afterReturn
284
+ .replace(/return\s+(<[^>]+>[\s\S]*)/m, 'return (\n <AuthProvider>\n $1\n </AuthProvider>\n )');
285
+ content = beforeReturn + wrappedReturn;
286
+ }
287
+ }
288
+ }
289
+ fs_1.default.writeFileSync(appPath, content);
120
290
  }
121
291
  // ─── Functions scaffolding ────────────────────────────────────────────────────
122
292
  /**
@@ -941,7 +1111,7 @@ function guessDistDir(cwd) {
941
1111
  }
942
1112
  return "dist";
943
1113
  }
944
- function printUsageHint(cfg) {
1114
+ function printUsageHint(cfg, authSetup) {
945
1115
  const namedImports = [];
946
1116
  if (cfg.services.database)
947
1117
  namedImports.push("db");
@@ -965,9 +1135,23 @@ function printUsageHint(cfg) {
965
1135
  }
966
1136
  if (cfg.services.auth) {
967
1137
  console.log();
968
- console.log(chalk_1.default.cyan(` const { user } = await auth.signIn("email", "pass");`));
969
- console.log(chalk_1.default.cyan(` await auth.signInWithGateway("google"); // redirects to auth.cleforyx.com`));
970
- console.log(chalk_1.default.cyan(` await auth.handleGatewayCallback(); // call on every page load`));
1138
+ console.log(chalk_1.default.bold(" Auth:"));
1139
+ if (authSetup?.scaffoldContext) {
1140
+ console.log(chalk_1.default.dim(` Wrap app with <AuthProvider>`));
1141
+ console.log(chalk_1.default.cyan(` import { AuthProvider, useAuth } from "@/context/AuthContext";`));
1142
+ console.log(chalk_1.default.cyan(` const { user, signIn, signOut } = useAuth();`));
1143
+ }
1144
+ if (authSetup?.scaffoldModal) {
1145
+ console.log(chalk_1.default.cyan(` import AuthModal from "@/components/AuthModal";`));
1146
+ }
1147
+ if (authSetup?.scaffoldContext) {
1148
+ console.log(chalk_1.default.cyan(` import { EmailVerificationCard } from "clefbase/react";`));
1149
+ }
1150
+ if (!authSetup?.scaffoldContext) {
1151
+ console.log(chalk_1.default.cyan(` const { user } = await auth.signIn("email", "pass");`));
1152
+ console.log(chalk_1.default.cyan(` await auth.signInWithGateway("google"); // redirects to auth.cleforyx.com`));
1153
+ console.log(chalk_1.default.cyan(` await auth.handleGatewayCallback(); // call on every page load`));
1154
+ }
971
1155
  }
972
1156
  if (cfg.services.storage) {
973
1157
  console.log();
@@ -994,3 +1178,256 @@ function printUsageHint(cfg) {
994
1178
  }
995
1179
  console.log();
996
1180
  }
1181
+ // ─── Template Fallbacks ──────────────────────────────────────────────────
1182
+ const AUTH_CONTEXT_FALLBACK = `'use client';
1183
+ import React, { createContext, useContext, useEffect, useState } from 'react';
1184
+ import type { AuthUser } from 'clefbase';
1185
+ import { getAuth } from 'clefbase';
1186
+
1187
+ interface AuthContextType {
1188
+ user: AuthUser | null;
1189
+ token: string | null;
1190
+ loading: boolean;
1191
+ error: string | null;
1192
+ isAuthModalOpen: boolean;
1193
+ signIn: (email: string, password: string) => Promise<void>;
1194
+ signUp: (email: string, password: string, profile?: any) => Promise<void>;
1195
+ signOut: () => Promise<void>;
1196
+ updateProfile: (updates: any) => Promise<void>;
1197
+ verifyEmail: (code: string) => Promise<void>;
1198
+ sendPasswordResetEmail: (email: string) => Promise<void>;
1199
+ refreshUser: () => Promise<void>;
1200
+ openAuthModal: () => void;
1201
+ closeAuthModal: () => void;
1202
+ }
1203
+
1204
+ const AuthContext = createContext<AuthContextType | undefined>(undefined);
1205
+
1206
+ export function useAuth(): AuthContextType {
1207
+ const context = useContext(AuthContext);
1208
+ if (!context) throw new Error('useAuth() must be used within <AuthProvider>');
1209
+ return context;
1210
+ }
1211
+
1212
+ export function AuthProvider({ children }: { children: React.ReactNode }) {
1213
+ const [user, setUser] = useState<AuthUser | null>(null);
1214
+ const [token, setToken] = useState<string | null>(null);
1215
+ const [loading, setLoading] = useState(true);
1216
+ const [error, setError] = useState<string | null>(null);
1217
+ const [isAuthModalOpen, setIsAuthModalOpen] = useState(false);
1218
+ const auth = getAuth();
1219
+
1220
+ useEffect(() => {
1221
+ const initAuth = async () => {
1222
+ try {
1223
+ setLoading(true);
1224
+ const currentUser = auth.currentUser;
1225
+ const currentToken = auth.currentToken;
1226
+ setUser(currentUser);
1227
+ setToken(currentToken);
1228
+ const unsubscribe = auth.onAuthStateChanged((newUser) => {
1229
+ setUser(newUser);
1230
+ setToken(newUser ? auth.currentToken : null);
1231
+ });
1232
+ setLoading(false);
1233
+ return () => unsubscribe();
1234
+ } catch (err) {
1235
+ console.error('Auth init error:', err);
1236
+ setLoading(false);
1237
+ }
1238
+ };
1239
+ initAuth();
1240
+ }, [auth]);
1241
+
1242
+ const handleError = (err: unknown): string => {
1243
+ if (err instanceof Error) return err.message;
1244
+ if (typeof err === 'string') return err;
1245
+ return 'Unknown error';
1246
+ };
1247
+
1248
+ const signIn = async (email: string, password: string) => {
1249
+ try {
1250
+ setError(null);
1251
+ setLoading(true);
1252
+ await auth.signIn(email, password);
1253
+ } catch (err) {
1254
+ const message = handleError(err);
1255
+ setError(message);
1256
+ throw err;
1257
+ } finally {
1258
+ setLoading(false);
1259
+ }
1260
+ };
1261
+
1262
+ const signUp = async (email: string, password: string, profile?: any) => {
1263
+ try {
1264
+ setError(null);
1265
+ setLoading(true);
1266
+ await auth.signUp(email, password, profile);
1267
+ } catch (err) {
1268
+ const message = handleError(err);
1269
+ setError(message);
1270
+ throw err;
1271
+ } finally {
1272
+ setLoading(false);
1273
+ }
1274
+ };
1275
+
1276
+ const signOut = async () => {
1277
+ try {
1278
+ setError(null);
1279
+ setLoading(true);
1280
+ await auth.signOut();
1281
+ setUser(null);
1282
+ setToken(null);
1283
+ } catch (err) {
1284
+ const message = handleError(err);
1285
+ setError(message);
1286
+ throw err;
1287
+ } finally {
1288
+ setLoading(false);
1289
+ }
1290
+ };
1291
+
1292
+ const updateProfile = async (updates: any) => {
1293
+ try {
1294
+ setError(null);
1295
+ setLoading(true);
1296
+ await auth.updateProfile(updates);
1297
+ } catch (err) {
1298
+ const message = handleError(err);
1299
+ setError(message);
1300
+ throw err;
1301
+ } finally {
1302
+ setLoading(false);
1303
+ }
1304
+ };
1305
+
1306
+ const verifyEmail = async (code: string) => {
1307
+ try {
1308
+ setError(null);
1309
+ setLoading(true);
1310
+ const result = await auth.verifyEmail(code);
1311
+ setUser(result);
1312
+ } catch (err) {
1313
+ const message = handleError(err);
1314
+ setError(message);
1315
+ throw err;
1316
+ } finally {
1317
+ setLoading(false);
1318
+ }
1319
+ };
1320
+
1321
+ const sendPasswordResetEmail = async (email: string) => {
1322
+ try {
1323
+ setError(null);
1324
+ setLoading(true);
1325
+ await auth.sendPasswordResetEmail(email);
1326
+ } catch (err) {
1327
+ const message = handleError(err);
1328
+ setError(message);
1329
+ throw err;
1330
+ } finally {
1331
+ setLoading(false);
1332
+ }
1333
+ };
1334
+
1335
+ const refreshUser = async () => {
1336
+ try {
1337
+ setError(null);
1338
+ const updated = await auth.refreshCurrentUser();
1339
+ if (updated) setUser(updated);
1340
+ } catch (err) {
1341
+ const message = handleError(err);
1342
+ setError(message);
1343
+ throw err;
1344
+ }
1345
+ };
1346
+
1347
+ const openAuthModal = () => setIsAuthModalOpen(true);
1348
+ const closeAuthModal = () => setIsAuthModalOpen(false);
1349
+
1350
+ const value: AuthContextType = {
1351
+ user, token, loading, error, isAuthModalOpen,
1352
+ signIn, signUp, signOut, updateProfile, verifyEmail,
1353
+ sendPasswordResetEmail, refreshUser, openAuthModal, closeAuthModal,
1354
+ };
1355
+
1356
+ return (
1357
+ <AuthContext.Provider value={value}>
1358
+ {!loading && children}
1359
+ </AuthContext.Provider>
1360
+ );
1361
+ }`;
1362
+ const AUTH_MODAL_FALLBACK = `'use client';
1363
+ import React, { useEffect, CSSProperties } from 'react';
1364
+ import { useAuth } from './AuthContext';
1365
+
1366
+ export default function AuthModal({ isOpen, onClose, overlayStyle, cardStyle, showCloseButton = true, backdropDismiss = true }: any) {
1367
+ const { closeAuthModal } = useAuth();
1368
+ const projectId = typeof window !== 'undefined' && (window as any).__CLEFORYX_PROJECT_ID;
1369
+
1370
+ useEffect(() => {
1371
+ if (!isOpen) return;
1372
+ const handleMessage = (e: MessageEvent) => {
1373
+ if (e.data?.source === 'cleforyx-auth' && e.data?.type === 'auth_success') {
1374
+ closeAuthModal();
1375
+ onClose();
1376
+ }
1377
+ };
1378
+ window.addEventListener('message', handleMessage);
1379
+ return () => window.removeEventListener('message', handleMessage);
1380
+ }, [isOpen, closeAuthModal, onClose]);
1381
+
1382
+ if (!isOpen) return null;
1383
+
1384
+ const currentUrl = typeof window !== 'undefined' ? window.location.origin : '';
1385
+ const iframeUrl = \`https://auth.cleforyx.com/login?project=\${projectId}&redirect=\${encodeURIComponent(currentUrl)}&embed=popup\`;
1386
+
1387
+ const defaultOverlayStyle: CSSProperties = {
1388
+ position: 'fixed', inset: 0, backgroundColor: 'rgba(15, 23, 42, 0.6)',
1389
+ display: 'flex', alignItems: 'center', justifyContent: 'center',
1390
+ zIndex: 9999, backdropFilter: 'blur(4px)', padding: '16px', boxSizing: 'border-box',
1391
+ };
1392
+
1393
+ const defaultCardStyle: CSSProperties = {
1394
+ backgroundColor: 'white', borderRadius: '20px',
1395
+ boxShadow: '0 24px 64px rgba(0, 0, 0, 0.2)',
1396
+ overflow: 'hidden', width: '100%', maxWidth: '460px', position: 'relative',
1397
+ };
1398
+
1399
+ const handleBackdropClick = (e: React.MouseEvent) => {
1400
+ if (backdropDismiss && e.target === e.currentTarget) onClose();
1401
+ };
1402
+
1403
+ return (
1404
+ <div style={{ ...defaultOverlayStyle, ...overlayStyle }} onClick={handleBackdropClick}>
1405
+ <div style={{ ...defaultCardStyle, ...cardStyle }}>
1406
+ {showCloseButton && (
1407
+ <button style={{ position: 'absolute', top: '14px', right: '16px', background: 'rgba(0,0,0,0.06)', border: 'none', width: '28px', height: '28px', borderRadius: '50%', cursor: 'pointer', zIndex: 1 }} onClick={onClose} aria-label="Close">✕</button>
1408
+ )}
1409
+ <iframe src={iframeUrl} style={{ width: '100%', height: '560px', border: 'none', display: 'block' }} title="Sign in" allow="identity-credentials-get" />
1410
+ </div>
1411
+ </div>
1412
+ );
1413
+ }`;
1414
+ const PROTECTED_ROUTE_FALLBACK = `'use client';
1415
+ import React from 'react';
1416
+ import { useAuth } from './AuthContext';
1417
+
1418
+ export function ProtectedRoute({ children, LoadingComponent, onUnauthorized }: any) {
1419
+ const { user, loading, openAuthModal } = useAuth();
1420
+
1421
+ if (loading) {
1422
+ if (LoadingComponent) return <LoadingComponent />;
1423
+ return <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', height: '100vh' }}>Loading...</div>;
1424
+ }
1425
+
1426
+ if (!user) {
1427
+ onUnauthorized?.();
1428
+ openAuthModal();
1429
+ return null;
1430
+ }
1431
+
1432
+ return <>{children}</>;
1433
+ }`;