authhero 0.260.0 → 0.261.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/authhero.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
  * @license bcrypt.js (c) 2013 Daniel Wirtz <dcode@dcode.io>
3
3
  * Released under the Apache License, Version 2.0
4
4
  * see: https://github.com/dcodeIO/bcrypt.js for details
5
- */(function(e,n){typeof iv=="function"&&t&&t.exports?t.exports=n():(e.dcodeIO=e.dcodeIO||{}).bcrypt=n()})(Al,function(){var e={},n=null;function r(N){if(t&&t.exports)try{return av.randomBytes(N)}catch{}try{var C;return(self.crypto||self.msCrypto).getRandomValues(C=new Uint32Array(N)),Array.prototype.slice.call(C)}catch{}if(!n)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return n(N)}var i=!1;try{r(1),i=!0}catch{}n=null,e.setRandomFallback=function(N){n=N},e.genSaltSync=function(N,C){if(N=N||v,typeof N!="number")throw Error("Illegal arguments: "+typeof N+", "+typeof C);N<4?N=4:N>31&&(N=31);var z=[];return z.push("$2a$"),N<10&&z.push("0"),z.push(N.toString()),z.push("$"),z.push(f(r(y),y)),z.join("")},e.genSalt=function(N,C,z){if(typeof C=="function"&&(z=C,C=void 0),typeof N=="function"&&(z=N,N=void 0),typeof N>"u")N=v;else if(typeof N!="number")throw Error("illegal arguments: "+typeof N);function k($){a(function(){try{$(null,e.genSaltSync(N))}catch(I){$(I)}})}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);k(z)}else return new Promise(function($,I){k(function(L,q){if(L){I(L);return}$(q)})})},e.hashSync=function(N,C){if(typeof C>"u"&&(C=v),typeof C=="number"&&(C=e.genSaltSync(C)),typeof N!="string"||typeof C!="string")throw Error("Illegal arguments: "+typeof N+", "+typeof C);return de(N,C)},e.hash=function(N,C,z,k){function $(I){typeof N=="string"&&typeof C=="number"?e.genSalt(C,function(L,q){de(N,q,I,k)}):typeof N=="string"&&typeof C=="string"?de(N,C,I,k):a(I.bind(this,Error("Illegal arguments: "+typeof N+", "+typeof C)))}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);$(z)}else return new Promise(function(I,L){$(function(q,F){if(q){L(q);return}I(F)})})};function s(N,C){for(var z=0,k=0,$=0,I=N.length;$<I;++$)N.charCodeAt($)===C.charCodeAt($)?++z:++k;return z<0?!1:k===0}e.compareSync=function(N,C){if(typeof N!="string"||typeof C!="string")throw Error("Illegal arguments: "+typeof N+", "+typeof C);return C.length!==60?!1:s(e.hashSync(N,C.substr(0,C.length-31)),C)},e.compare=function(N,C,z,k){function $(I){if(typeof N!="string"||typeof C!="string"){a(I.bind(this,Error("Illegal arguments: "+typeof N+", "+typeof C)));return}if(C.length!==60){a(I.bind(this,null,!1));return}e.hash(N,C.substr(0,29),function(L,q){L?I(L):I(null,s(q,C))},k)}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);$(z)}else return new Promise(function(I,L){$(function(q,F){if(q){L(q);return}I(F)})})},e.getRounds=function(N){if(typeof N!="string")throw Error("Illegal arguments: "+typeof N);return parseInt(N.split("$")[2],10)},e.getSalt=function(N){if(typeof N!="string")throw Error("Illegal arguments: "+typeof N);if(N.length!==60)throw Error("Illegal hash length: "+N.length+" != 60");return N.substring(0,29)};var a=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function c(N){var C=[],z=0;return m.encodeUTF16toUTF8(function(){return z>=N.length?null:N.charCodeAt(z++)},function(k){C.push(k)}),C}var l="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),d=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],u=String.fromCharCode;function f(N,C){var z=0,k=[],$,I;if(C<=0||C>N.length)throw Error("Illegal len: "+C);for(;z<C;){if($=N[z++]&255,k.push(l[$>>2&63]),$=($&3)<<4,z>=C){k.push(l[$&63]);break}if(I=N[z++]&255,$|=I>>4&15,k.push(l[$&63]),$=(I&15)<<2,z>=C){k.push(l[$&63]);break}I=N[z++]&255,$|=I>>6&3,k.push(l[$&63]),k.push(l[I&63])}return k.join("")}function h(N,C){var z=0,k=N.length,$=0,I=[],L,q,F,Z,se,D;if(C<=0)throw Error("Illegal len: "+C);for(;z<k-1&&$<C&&(D=N.charCodeAt(z++),L=D<d.length?d[D]:-1,D=N.charCodeAt(z++),q=D<d.length?d[D]:-1,!(L==-1||q==-1||(se=L<<2>>>0,se|=(q&48)>>4,I.push(u(se)),++$>=C||z>=k)||(D=N.charCodeAt(z++),F=D<d.length?d[D]:-1,F==-1)||(se=(q&15)<<4>>>0,se|=(F&60)>>2,I.push(u(se)),++$>=C||z>=k)));)D=N.charCodeAt(z++),Z=D<d.length?d[D]:-1,se=(F&3)<<6>>>0,se|=Z,I.push(u(se)),++$;var fe=[];for(z=0;z<$;z++)fe.push(I[z].charCodeAt(0));return fe}var m=function(){var N={};return N.MAX_CODEPOINT=1114111,N.encodeUTF8=function(C,z){var k=null;for(typeof C=="number"&&(k=C,C=function(){return null});k!==null||(k=C())!==null;)k<128?z(k&127):k<2048?(z(k>>6&31|192),z(k&63|128)):k<65536?(z(k>>12&15|224),z(k>>6&63|128),z(k&63|128)):(z(k>>18&7|240),z(k>>12&63|128),z(k>>6&63|128),z(k&63|128)),k=null},N.decodeUTF8=function(C,z){for(var k,$,I,L,q=function(F){F=F.slice(0,F.indexOf(null));var Z=Error(F.toString());throw Z.name="TruncatedError",Z.bytes=F,Z};(k=C())!==null;)if(!(k&128))z(k);else if((k&224)===192)($=C())===null&&q([k,$]),z((k&31)<<6|$&63);else if((k&240)===224)(($=C())===null||(I=C())===null)&&q([k,$,I]),z((k&15)<<12|($&63)<<6|I&63);else if((k&248)===240)(($=C())===null||(I=C())===null||(L=C())===null)&&q([k,$,I,L]),z((k&7)<<18|($&63)<<12|(I&63)<<6|L&63);else throw RangeError("Illegal starting byte: "+k)},N.UTF16toUTF8=function(C,z){for(var k,$=null;(k=$!==null?$:C())!==null;){if(k>=55296&&k<=57343&&($=C())!==null&&$>=56320&&$<=57343){z((k-55296)*1024+$-56320+65536),$=null;continue}z(k)}$!==null&&z($)},N.UTF8toUTF16=function(C,z){var k=null;for(typeof C=="number"&&(k=C,C=function(){return null});k!==null||(k=C())!==null;)k<=65535?z(k):(k-=65536,z((k>>10)+55296),z(k%1024+56320)),k=null},N.encodeUTF16toUTF8=function(C,z){N.UTF16toUTF8(C,function(k){N.encodeUTF8(k,z)})},N.decodeUTF8toUTF16=function(C,z){N.decodeUTF8(C,function(k){N.UTF8toUTF16(k,z)})},N.calculateCodePoint=function(C){return C<128?1:C<2048?2:C<65536?3:4},N.calculateUTF8=function(C){for(var z,k=0;(z=C())!==null;)k+=N.calculateCodePoint(z);return k},N.calculateUTF16asUTF8=function(C){var z=0,k=0;return N.UTF16toUTF8(C,function($){++z,k+=N.calculateCodePoint($)}),[z,k]},N}();Date.now=Date.now||function(){return+new Date};var y=16,v=10,b=16,A=100,O=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],U=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],T=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function R(N,C,z,k){var $,I=N[C],L=N[C+1];return I^=z[0],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[1],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[2],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[3],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[4],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[5],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[6],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[7],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[8],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[9],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[10],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[11],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[12],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[13],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[14],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[15],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[16],N[C]=L^z[b+1],N[C+1]=I,N}function W(N,C){for(var z=0,k=0;z<4;++z)k=k<<8|N[C]&255,C=(C+1)%N.length;return{key:k,offp:C}}function ne(N,C,z){for(var k=0,$=[0,0],I=C.length,L=z.length,q,F=0;F<I;F++)q=W(N,k),k=q.offp,C[F]=C[F]^q.key;for(F=0;F<I;F+=2)$=R($,0,C,z),C[F]=$[0],C[F+1]=$[1];for(F=0;F<L;F+=2)$=R($,0,C,z),z[F]=$[0],z[F+1]=$[1]}function Q(N,C,z,k){for(var $=0,I=[0,0],L=z.length,q=k.length,F,Z=0;Z<L;Z++)F=W(C,$),$=F.offp,z[Z]=z[Z]^F.key;for($=0,Z=0;Z<L;Z+=2)F=W(N,$),$=F.offp,I[0]^=F.key,F=W(N,$),$=F.offp,I[1]^=F.key,I=R(I,0,z,k),z[Z]=I[0],z[Z+1]=I[1];for(Z=0;Z<q;Z+=2)F=W(N,$),$=F.offp,I[0]^=F.key,F=W(N,$),$=F.offp,I[1]^=F.key,I=R(I,0,z,k),k[Z]=I[0],k[Z+1]=I[1]}function K(N,C,z,k,$){var I=T.slice(),L=I.length,q;if(z<4||z>31)if(q=Error("Illegal number of rounds (4-31): "+z),k){a(k.bind(this,q));return}else throw q;if(C.length!==y)if(q=Error("Illegal salt length: "+C.length+" != "+y),k){a(k.bind(this,q));return}else throw q;z=1<<z>>>0;var F,Z,se=0,D;Int32Array?(F=new Int32Array(O),Z=new Int32Array(U)):(F=O.slice(),Z=U.slice()),Q(C,N,F,Z);function fe(){if($&&$(se/z),se<z)for(var ce=Date.now();se<z&&(se=se+1,ne(N,F,Z),ne(C,F,Z),!(Date.now()-ce>A)););else{for(se=0;se<64;se++)for(D=0;D<L>>1;D++)R(I,D<<1,F,Z);var ue=[];for(se=0;se<L;se++)ue.push((I[se]>>24&255)>>>0),ue.push((I[se]>>16&255)>>>0),ue.push((I[se]>>8&255)>>>0),ue.push((I[se]&255)>>>0);if(k){k(null,ue);return}else return ue}k&&a(fe)}if(typeof k<"u")fe();else for(var $e;;)if(typeof($e=fe())<"u")return $e||[]}function de(N,C,z,k){var $;if(typeof N!="string"||typeof C!="string")if($=Error("Invalid string / salt: Not a string"),z){a(z.bind(this,$));return}else throw $;var I,L;if(C.charAt(0)!=="$"||C.charAt(1)!=="2")if($=Error("Invalid salt version: "+C.substring(0,2)),z){a(z.bind(this,$));return}else throw $;if(C.charAt(2)==="$")I="\0",L=3;else{if(I=C.charAt(2),I!=="a"&&I!=="b"&&I!=="y"||C.charAt(3)!=="$")if($=Error("Invalid salt revision: "+C.substring(2,4)),z){a(z.bind(this,$));return}else throw $;L=4}if(C.charAt(L+2)>"$")if($=Error("Missing salt rounds"),z){a(z.bind(this,$));return}else throw $;var q=parseInt(C.substring(L,L+1),10)*10,F=parseInt(C.substring(L+1,L+2),10),Z=q+F,se=C.substring(L+3,L+25);N+=I>="a"?"\0":"";var D=c(N),fe=h(se,y);function $e(ce){var ue=[];return ue.push("$2"),I>="a"&&ue.push(I),ue.push("$"),Z<10&&ue.push("0"),ue.push(Z.toString()),ue.push("$"),ue.push(f(fe,fe.length)),ue.push(f(ce,T.length*4-1)),ue.join("")}if(typeof z>"u")return $e(K(D,fe,Z));K(D,fe,Z,function(ce,ue){ce?z(ce,null):z(null,$e(ue))},k)}return e.encodeBase64=f,e.decodeBase64=h,e})})(gm);var cv=gm.exports;const ti=hm(cv),lv="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let dv=t=>crypto.getRandomValues(new Uint8Array(t)),uv=(t,e,n)=>{let r=(2<<Math.log2(t.length-1))-1,i=-~(1.6*r*e/t.length);return(s=e)=>{let a="";for(;;){let c=n(i),l=i;for(;l--;)if(a+=t[c[l]&r]||"",a.length===s)return a}}},mm=(t,e=21)=>uv(t,e,dv),Ne=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t));for(;t--;)e+=lv[n[t]&63];return e};const pv=24;function La(){return mm("0123456789abcdef",pv)()}function ns(t){if(!t.includes("|"))return console.error("Invalid user_id format"),t;const[,e]=t.split("|");return e}function fv(t){return async(e,n)=>{if(!n.email||!n.email_verified)return t.users.create(e,n);const r=await Cu({userAdapter:t.users,tenant_id:e,email:n.email});return r?(await t.users.create(e,{...n,linked_to:r.user_id}),r):t.users.create(e,n)}}function be(t,e){return{type:e.type,description:e.description||"",ip:t.var.ip,user_agent:t.var.useragent||"",auth0_client:t.var.auth0_client,date:new Date().toISOString(),details:{request:{method:t.req.method,path:t.req.path,qs:t.req.queries(),body:e.body||t.var.body||""}},isMobile:!1,client_id:t.var.client_id,client_name:"",user_id:e.userId||t.var.user_id||"",hostname:t.req.header("host")||"",user_name:t.var.username||"",connection_id:"",connection:e.connection||t.var.connection||"",strategy:e.strategy||"",strategy_type:e.strategy_type||"",audience:e.audience||"",scope:e.scope?e.scope.split(" "):[]}}class qs{constructor(e,n){ae(this,"value");ae(this,"unit");this.value=e,this.unit=n}milliseconds(){return this.unit==="ms"?this.value:this.unit==="s"?this.value*1e3:this.unit==="m"?this.value*1e3*60:this.unit==="h"?this.value*1e3*60*60:this.unit==="d"?this.value*1e3*60*60*24:this.value*1e3*60*60*24*7}seconds(){return this.milliseconds()/1e3}transform(e){return new qs(Math.round(this.milliseconds()*e),"ms")}}class hv{constructor(e){ae(this,"hash");this.hash=e}async verify(e,n,r){const i=await crypto.subtle.importKey("spki",e,{name:"RSASSA-PKCS1-v1_5",hash:this.hash},!1,["verify"]);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",i,n,r)}async sign(e,n){const r=await crypto.subtle.importKey("pkcs8",e,{name:"RSASSA-PKCS1-v1_5",hash:this.hash},!1,["sign"]);return await crypto.subtle.sign("RSASSA-PKCS1-v1_5",r,n)}async generateKeyPair(e){const n=await crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",hash:this.hash,modulusLength:e??2048,publicExponent:new Uint8Array([1,0,1])},!0,["sign"]),r=await crypto.subtle.exportKey("pkcs8",n.privateKey),i=await crypto.subtle.exportKey("spki",n.publicKey);return{privateKey:r,publicKey:i}}}async function _m(t){return await crypto.subtle.digest("SHA-256",t)}const af="0123456789abcdef";function El(t){const e=new Uint8Array(t);let n="";for(let r=0;r<e.length;r++){const i=e[r]>>4;n+=af[i];const s=e[r]&15;n+=af[s]}return n}class ym{constructor(e,n){ae(this,"alphabet");ae(this,"padding");ae(this,"decodeMap",new Map);if(e.length!==32)throw new Error("Invalid alphabet");if(this.alphabet=e,this.padding=(n==null?void 0:n.padding)??"=",this.alphabet.includes(this.padding)||this.padding.length!==1)throw new Error("Invalid padding");for(let r=0;r<e.length;r++)this.decodeMap.set(e[r],r)}encode(e,n){let r="",i=0,s=0;for(let c=0;c<e.length;c++)for(i=i<<8|e[c],s+=8;s>=5;)s-=5,r+=this.alphabet[i>>s&31];if(s>0&&(r+=this.alphabet[i<<5-s&31]),(n==null?void 0:n.includePadding)??!0){const c=(8-r.length%8)%8;for(let l=0;l<c;l++)r+="="}return r}decode(e,n){const r=(n==null?void 0:n.strict)??!0,i=Math.ceil(e.length/8),s=[];for(let a=0;a<i;a++){let c=0;const l=[];for(let u=0;u<8;u++){const f=e[a*8+u];if(f==="="){if(a+1!==i)throw new Error(`Invalid character: ${f}`);c+=1;continue}if(f===void 0){if(r)throw new Error("Invalid data");c+=1;continue}const h=this.decodeMap.get(f)??null;if(h===null)throw new Error(`Invalid character: ${f}`);l.push(h)}if(c===8||c===7||c===5||c===2)throw new Error("Invalid padding");const d=(l[0]<<3)+(l[1]>>2);if(s.push(d),c<6){const u=((l[1]&3)<<6)+(l[2]<<1)+(l[3]>>4);s.push(u)}if(c<4){const u=((l[3]&255)<<4)+(l[4]>>1);s.push(u)}if(c<3){const u=((l[4]&1)<<7)+(l[5]<<2)+(l[6]>>3);s.push(u)}if(c<1){const u=((l[6]&7)<<5)+l[7];s.push(u)}}return Uint8Array.from(s)}}new ym("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");new ym("0123456789ABCDEFGHIJKLMNOPQRSTUV");class wm{constructor(e,n){ae(this,"alphabet");ae(this,"padding");ae(this,"decodeMap",new Map);if(e.length!==64)throw new Error("Invalid alphabet");if(this.alphabet=e,this.padding=(n==null?void 0:n.padding)??"=",this.alphabet.includes(this.padding)||this.padding.length!==1)throw new Error("Invalid padding");for(let r=0;r<e.length;r++)this.decodeMap.set(e[r],r)}encode(e,n){let r="",i=0,s=0;for(let c=0;c<e.length;c++)for(i=i<<8|e[c],s+=8;s>=6;)s+=-6,r+=this.alphabet[i>>s&63];if(s>0&&(r+=this.alphabet[i<<6-s&63]),(n==null?void 0:n.includePadding)??!0){const c=(4-r.length%4)%4;for(let l=0;l<c;l++)r+="="}return r}decode(e,n){const r=(n==null?void 0:n.strict)??!0,i=Math.ceil(e.length/4),s=[];for(let a=0;a<i;a++){let c=0,l=0;for(let d=0;d<4;d++){const u=e[a*4+d];if(u==="="){if(a+1!==i)throw new Error(`Invalid character: ${u}`);c+=1;continue}if(u===void 0){if(r)throw new Error("Invalid data");c+=1;continue}const f=this.decodeMap.get(u)??null;if(f===null)throw new Error(`Invalid character: ${u}`);l+=f<<6*(3-d)}s.push(l>>16&255),c<2&&s.push(l>>8&255),c<1&&s.push(l&255)}return Uint8Array.from(s)}}const gv=new wm("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),fr=new wm("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_");async function cf(t,e,n,r){const i={alg:t,typ:"JWT",...r==null?void 0:r.headers},s={...n};(r==null?void 0:r.audiences)!==void 0&&(s.aud=r.audiences),(r==null?void 0:r.subject)!==void 0&&(s.sub=r.subject),(r==null?void 0:r.issuer)!==void 0&&(s.iss=r.issuer),(r==null?void 0:r.jwtId)!==void 0&&(s.jti=r.jwtId),(r==null?void 0:r.expiresIn)!==void 0&&(s.exp=Math.floor(Date.now()/1e3)+r.expiresIn.seconds()),(r==null?void 0:r.notBefore)!==void 0&&(s.nbf=Math.floor(r.notBefore.getTime()/1e3)),s.iat=Math.floor(Date.now()/1e3);const a=new TextEncoder,c=fr.encode(a.encode(JSON.stringify(i)),{includePadding:!1}),l=fr.encode(a.encode(JSON.stringify(s)),{includePadding:!1}),d=a.encode([c,l].join(".")),u=await _v(t).sign(e,d),f=fr.encode(new Uint8Array(u),{includePadding:!1});return[c,l,f].join(".")}function mv(t){const e=t.split(".");return e.length!==3?null:e}function Ua(t){const e=mv(t);if(!e)return null;const n=new TextDecoder,r=fr.decode(e[0],{strict:!1}),i=fr.decode(e[1],{strict:!1}),s=JSON.parse(n.decode(r));if(typeof s!="object"||s===null||!("alg"in s)||!yv(s.alg)||"typ"in s&&s.typ!=="JWT")return null;const a=JSON.parse(n.decode(i));if(typeof a!="object"||a===null)return null;const c={algorithm:s.alg,expiresAt:null,subject:null,issuedAt:null,issuer:null,jwtId:null,audiences:null,notBefore:null};if("exp"in a){if(typeof a.exp!="number")return null;c.expiresAt=new Date(a.exp*1e3)}if("iss"in a){if(typeof a.iss!="string")return null;c.issuer=a.iss}if("sub"in a){if(typeof a.sub!="string")return null;c.subject=a.sub}if("aud"in a)if(Array.isArray(a.aud)){for(const l of a.aud)if(typeof l!="string")return null;c.audiences=a.aud}else{if(typeof a.aud!="string")return null;c.audiences=[a.aud]}if("nbf"in a){if(typeof a.nbf!="number")return null;c.notBefore=new Date(a.nbf*1e3)}if("iat"in a){if(typeof a.iat!="number")return null;c.issuedAt=new Date(a.iat*1e3)}if("jti"in a){if(typeof a.jti!="string")return null;c.jwtId=a.jti}return{value:t,header:{...s,typ:"JWT",alg:s.alg},payload:{...a},parts:e,...c}}function _v(t){return new hv(wv[t])}function yv(t){return typeof t!="string"?!1:["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512","PS256","PS384","PS512"].includes(t)}const wv={RS256:"SHA-256",RS384:"SHA-384",RS512:"SHA-512"};function vv(){const t=new Uint8Array(32);return crypto.getRandomValues(t),fr.encode(t,{includePadding:!1})}function bv(t){try{const n=/-----BEGIN (?:RSA )?(?:PRIVATE|PUBLIC) KEY-----([^-]*)-----END (?:RSA )?(?:PRIVATE|PUBLIC) KEY-----/.exec(t);if(!n||!n[1])throw new Error("Invalid PEM format");return Uint8Array.from(atob(n[1].replace(/\s/g,"")),r=>r.charCodeAt(0)).buffer}finally{t=t.replace(/./g,"\0")}}async function $v(t,e){if(e==="plain")return t;const n=new TextEncoder().encode(t),r=await _m(n);return fr.encode(new Uint8Array(r),{includePadding:!1})}const rs=60*5,Da=30*24*60*60,_r=24*60*60,kv="auth-token",hs=30*60*1e3,Cl=7*24*60*60*1e3,xv=5*60,Sv=5*60,zv=30*60*1e3,Av=30*60*1e3,Ev=24*60*60*1e3;function vm(t,e,n){const r=[];return r.push([encodeURIComponent(t),encodeURIComponent(e)]),(n==null?void 0:n.domain)!==void 0&&r.push(["Domain",n.domain]),(n==null?void 0:n.expires)!==void 0&&r.push(["Expires",n.expires.toUTCString()]),n!=null&&n.httpOnly&&r.push(["HttpOnly"]),(n==null?void 0:n.maxAge)!==void 0&&r.push(["Max-Age",n.maxAge.toString()]),(n==null?void 0:n.path)!==void 0&&r.push(["Path",n.path]),(n==null?void 0:n.sameSite)==="lax"&&r.push(["SameSite","Lax"]),(n==null?void 0:n.sameSite)==="none"&&r.push(["SameSite","None"]),(n==null?void 0:n.sameSite)==="strict"&&r.push(["SameSite","Strict"]),n!=null&&n.secure&&r.push(["Secure"]),r.map(i=>i.join("=")).join("; ")}function Cv(t){const e=new Map,n=t.split("; ");for(const r of n){const i=r.split("="),s=i[0],a=i[1]??"";s&&e.set(decodeURIComponent(s),decodeURIComponent(a))}return e}function ku(t){return`${t}-${kv}`}function bm(t){if(!t)return;const[e]=t.split(":");if(!e||e==="localhost"||/^(\d{1,3}\.){3}\d{1,3}$/.test(e))return;const n=e.split(".");return n.length>2?`.${n.slice(-2).join(".")}`:`.${e}`}function ni(t,e){return e?Cv(e).get(ku(t)):void 0}function Nv(t,e){return vm(ku(t),"",{path:"/",httpOnly:!0,secure:!0,maxAge:0,sameSite:"none",domain:e?bm(e):void 0})}function Hs(t,e,n){return vm(ku(t),e,{path:"/",httpOnly:!0,secure:!0,maxAge:Da,sameSite:"none",domain:n?bm(n):void 0})}class ee extends S{constructor(e,n){super(e,{message:JSON.stringify(n),res:new Response(JSON.stringify(n),{status:e,headers:{"Content-Type":"application/json"}})})}}var Iv=Object.defineProperty,jv=(t,e,n)=>e in t?Iv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Jr=(t,e,n)=>jv(t,typeof e!="symbol"?e+"":e,n);const ut=o.z.object({"#text":o.z.string()}),Ov=o.z.object({"#text":o.z.string(),"@_xmlns:saml":o.z.string().optional()});o.z.object({"samlp:AuthnRequest":o.z.object({"saml:Issuer":Ov,"@_xmlns:samlp":o.z.string(),"@_xmlns:saml":o.z.string().optional(),"@_ForceAuthn":o.z.string().transform(t=>t.toLowerCase()==="true").optional(),"@_ID":o.z.string(),"@_IssueInstant":o.z.string().datetime(),"@_Destination":o.z.string().url(),"@_AssertionConsumerServiceURL":o.z.string().url().optional(),"@_ProtocolBinding":o.z.string().optional(),"@_Version":o.z.string()})});o.z.array(o.z.object({":@":o.z.object({"@_xmlns":o.z.string(),"@_entityID":o.z.string()}),EntityDescriptor:o.z.array(o.z.object({":@":o.z.object({"@_protocolSupportEnumeration":o.z.string()}),IDPSSODescriptor:o.z.array(o.z.union([o.z.object({KeyDescriptor:o.z.array(o.z.object({KeyInfo:o.z.array(o.z.object({X509Data:o.z.array(o.z.object({X509Certificate:o.z.array(ut)}))})),":@":o.z.object({"@_xmlns":o.z.string()})})),":@":o.z.object({"@_use":o.z.string()})}),o.z.object({SingleLogoutService:o.z.array(o.z.object({})),":@":o.z.object({"@_Binding":o.z.string(),"@_Location":o.z.string()})}),o.z.object({NameIDFormat:o.z.array(ut)}),o.z.object({SingleSignOnService:o.z.array(o.z.object({})),":@":o.z.object({"@_Binding":o.z.string(),"@_Location":o.z.string()})}),o.z.object({Attribute:o.z.array(o.z.object({})),":@":o.z.object({"@_Name":o.z.string(),"@_NameFormat":o.z.string(),"@_FriendlyName":o.z.string(),"@_xmlns":o.z.string()})})]))}))}));const Tv=o.z.object({"saml:Attribute":o.z.array(o.z.object({"saml:AttributeValue":o.z.array(o.z.object({"#text":o.z.string()})),":@":o.z.object({"@_xmlns:xs":o.z.string().optional(),"@_xmlns:xsi":o.z.string(),"@_xsi:type":o.z.string()}).optional()})),":@":o.z.object({"@_Name":o.z.string(),"@_NameFormat":o.z.string(),"@_FriendlyName":o.z.string().optional()})}),Pv=o.z.object({"ds:Transform":o.z.array(o.z.any()),":@":o.z.object({"@_Algorithm":o.z.string()})}),lf=o.z.object({"ds:Signature":o.z.array(o.z.union([o.z.object({"ds:SignedInfo":o.z.array(o.z.union([o.z.object({"ds:CanonicalizationMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:SignatureMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:Reference":o.z.array(o.z.union([o.z.object({"ds:Transforms":o.z.array(Pv)}),o.z.object({"ds:DigestMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:DigestValue":o.z.array(ut)})])),":@":o.z.object({"@_URI":o.z.string().optional()}).optional()})]))}),o.z.object({"ds:SignatureValue":o.z.array(ut)}),o.z.object({"ds:KeyInfo":o.z.array(o.z.union([o.z.object({"ds:KeyValue":o.z.array(o.z.object({"ds:RSAKeyValue":o.z.array(o.z.union([o.z.object({"ds:Modulus":o.z.array(ut)}),o.z.object({"ds:Exponent":o.z.array(ut)})]))}))}),o.z.object({"ds:X509Data":o.z.array(o.z.object({"ds:X509Certificate":o.z.array(ut)}))}),o.z.object({"ds:KeyValue":o.z.array(o.z.object({"ds:RSAKeyValue":o.z.array(o.z.union([o.z.object({"ds:Modulus":o.z.array(ut)}),o.z.object({"ds:Exponent":o.z.array(ut)})]))})),"ds:X509Data":o.z.array(o.z.object({"ds:X509Certificate":o.z.array(ut)}))})]))})])),":@":o.z.object({"@_xmlns:ds":o.z.string().optional()}).optional()});o.z.array(o.z.object({"samlp:Response":o.z.array(o.z.union([o.z.object({"saml:Issuer":o.z.array(ut)}),lf,o.z.object({"samlp:Status":o.z.array(o.z.object({"samlp:StatusCode":o.z.array(ut),":@":o.z.object({"@_Value":o.z.string()})}))}),o.z.object({"saml:Assertion":o.z.array(o.z.union([o.z.object({"saml:Issuer":o.z.array(ut)}),lf,o.z.object({"saml:Subject":o.z.array(o.z.union([o.z.object({"saml:NameID":o.z.array(ut),":@":o.z.object({"@_Format":o.z.string()})}),o.z.object({"saml:SubjectConfirmation":o.z.array(o.z.object({"saml:SubjectConfirmationData":o.z.array(o.z.any()),":@":o.z.object({"@_InResponseTo":o.z.string(),"@_NotOnOrAfter":o.z.string(),"@_Recipient":o.z.string()})})),":@":o.z.object({"@_Method":o.z.string()})})]))}),o.z.object({"saml:Conditions":o.z.array(o.z.object({"saml:AudienceRestriction":o.z.array(o.z.object({"saml:Audience":o.z.array(ut)}))})),":@":o.z.object({"@_NotBefore":o.z.string(),"@_NotOnOrAfter":o.z.string()})}),o.z.object({"saml:AuthnStatement":o.z.array(o.z.object({"saml:AuthnContext":o.z.array(o.z.object({"saml:AuthnContextClassRef":o.z.array(ut)}))})),":@":o.z.object({"@_AuthnInstant":o.z.string(),"@_SessionIndex":o.z.string(),"@_SessionNotOnOrAfter":o.z.string()})}),o.z.object({"saml:AttributeStatement":o.z.array(Tv)})])),":@":o.z.object({"@_xmlns":o.z.string(),"@_ID":o.z.string(),"@_IssueInstant":o.z.string(),"@_Version":o.z.string()})})])),":@":o.z.object({"@_xmlns:samlp":o.z.string(),"@_xmlns:saml":o.z.string(),"@_Destination":o.z.string(),"@_ID":o.z.string(),"@_InResponseTo":o.z.string(),"@_IssueInstant":o.z.string(),"@_Version":o.z.string()})}));var xu={},Ma={};(function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",r="["+e+"]["+n+"]*",i=new RegExp("^"+r+"$"),s=function(c,l){const d=[];let u=l.exec(c);for(;u;){const f=[];f.startIndex=l.lastIndex-u[0].length;const h=u.length;for(let m=0;m<h;m++)f.push(u[m]);d.push(f),u=l.exec(c)}return d},a=function(c){const l=i.exec(c);return!(l===null||typeof l>"u")};t.isExist=function(c){return typeof c<"u"},t.isEmptyObject=function(c){return Object.keys(c).length===0},t.merge=function(c,l,d){if(l){const u=Object.keys(l),f=u.length;for(let h=0;h<f;h++)d==="strict"?c[u[h]]=[l[u[h]]]:c[u[h]]=l[u[h]]}},t.getValue=function(c){return t.isExist(c)?c:""},t.isName=a,t.getAllMatches=s,t.nameRegexp=r})(Ma);const Su=Ma,Rv={allowBooleanAttributes:!1,unpairedTags:[]};xu.validate=function(t,e){e=Object.assign({},Rv,e);const n=[];let r=!1,i=!1;t[0]==="\uFEFF"&&(t=t.substr(1));for(let s=0;s<t.length;s++)if(t[s]==="<"&&t[s+1]==="?"){if(s+=2,s=uf(t,s),s.err)return s}else if(t[s]==="<"){let a=s;if(s++,t[s]==="!"){s=pf(t,s);continue}else{let c=!1;t[s]==="/"&&(c=!0,s++);let l="";for(;s<t.length&&t[s]!==">"&&t[s]!==" "&&t[s]!==" "&&t[s]!==`
5
+ */(function(e,n){typeof iv=="function"&&t&&t.exports?t.exports=n():(e.dcodeIO=e.dcodeIO||{}).bcrypt=n()})(Al,function(){var e={},n=null;function r(N){if(t&&t.exports)try{return av.randomBytes(N)}catch{}try{var C;return(self.crypto||self.msCrypto).getRandomValues(C=new Uint32Array(N)),Array.prototype.slice.call(C)}catch{}if(!n)throw Error("Neither WebCryptoAPI nor a crypto module is available. Use bcrypt.setRandomFallback to set an alternative");return n(N)}var i=!1;try{r(1),i=!0}catch{}n=null,e.setRandomFallback=function(N){n=N},e.genSaltSync=function(N,C){if(N=N||v,typeof N!="number")throw Error("Illegal arguments: "+typeof N+", "+typeof C);N<4?N=4:N>31&&(N=31);var z=[];return z.push("$2a$"),N<10&&z.push("0"),z.push(N.toString()),z.push("$"),z.push(f(r(y),y)),z.join("")},e.genSalt=function(N,C,z){if(typeof C=="function"&&(z=C,C=void 0),typeof N=="function"&&(z=N,N=void 0),typeof N>"u")N=v;else if(typeof N!="number")throw Error("illegal arguments: "+typeof N);function k($){a(function(){try{$(null,e.genSaltSync(N))}catch(I){$(I)}})}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);k(z)}else return new Promise(function($,I){k(function(L,q){if(L){I(L);return}$(q)})})},e.hashSync=function(N,C){if(typeof C>"u"&&(C=v),typeof C=="number"&&(C=e.genSaltSync(C)),typeof N!="string"||typeof C!="string")throw Error("Illegal arguments: "+typeof N+", "+typeof C);return de(N,C)},e.hash=function(N,C,z,k){function $(I){typeof N=="string"&&typeof C=="number"?e.genSalt(C,function(L,q){de(N,q,I,k)}):typeof N=="string"&&typeof C=="string"?de(N,C,I,k):a(I.bind(this,Error("Illegal arguments: "+typeof N+", "+typeof C)))}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);$(z)}else return new Promise(function(I,L){$(function(q,F){if(q){L(q);return}I(F)})})};function s(N,C){for(var z=0,k=0,$=0,I=N.length;$<I;++$)N.charCodeAt($)===C.charCodeAt($)?++z:++k;return z<0?!1:k===0}e.compareSync=function(N,C){if(typeof N!="string"||typeof C!="string")throw Error("Illegal arguments: "+typeof N+", "+typeof C);return C.length!==60?!1:s(e.hashSync(N,C.substr(0,C.length-31)),C)},e.compare=function(N,C,z,k){function $(I){if(typeof N!="string"||typeof C!="string"){a(I.bind(this,Error("Illegal arguments: "+typeof N+", "+typeof C)));return}if(C.length!==60){a(I.bind(this,null,!1));return}e.hash(N,C.substr(0,29),function(L,q){L?I(L):I(null,s(q,C))},k)}if(z){if(typeof z!="function")throw Error("Illegal callback: "+typeof z);$(z)}else return new Promise(function(I,L){$(function(q,F){if(q){L(q);return}I(F)})})},e.getRounds=function(N){if(typeof N!="string")throw Error("Illegal arguments: "+typeof N);return parseInt(N.split("$")[2],10)},e.getSalt=function(N){if(typeof N!="string")throw Error("Illegal arguments: "+typeof N);if(N.length!==60)throw Error("Illegal hash length: "+N.length+" != 60");return N.substring(0,29)};var a=typeof process<"u"&&process&&typeof process.nextTick=="function"?typeof setImmediate=="function"?setImmediate:process.nextTick:setTimeout;function c(N){var C=[],z=0;return m.encodeUTF16toUTF8(function(){return z>=N.length?null:N.charCodeAt(z++)},function(k){C.push(k)}),C}var l="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),d=[-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,54,55,56,57,58,59,60,61,62,63,-1,-1,-1,-1,-1,-1,-1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,-1,-1,-1,-1,-1,-1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,-1,-1,-1,-1,-1],u=String.fromCharCode;function f(N,C){var z=0,k=[],$,I;if(C<=0||C>N.length)throw Error("Illegal len: "+C);for(;z<C;){if($=N[z++]&255,k.push(l[$>>2&63]),$=($&3)<<4,z>=C){k.push(l[$&63]);break}if(I=N[z++]&255,$|=I>>4&15,k.push(l[$&63]),$=(I&15)<<2,z>=C){k.push(l[$&63]);break}I=N[z++]&255,$|=I>>6&3,k.push(l[$&63]),k.push(l[I&63])}return k.join("")}function h(N,C){var z=0,k=N.length,$=0,I=[],L,q,F,Z,se,D;if(C<=0)throw Error("Illegal len: "+C);for(;z<k-1&&$<C&&(D=N.charCodeAt(z++),L=D<d.length?d[D]:-1,D=N.charCodeAt(z++),q=D<d.length?d[D]:-1,!(L==-1||q==-1||(se=L<<2>>>0,se|=(q&48)>>4,I.push(u(se)),++$>=C||z>=k)||(D=N.charCodeAt(z++),F=D<d.length?d[D]:-1,F==-1)||(se=(q&15)<<4>>>0,se|=(F&60)>>2,I.push(u(se)),++$>=C||z>=k)));)D=N.charCodeAt(z++),Z=D<d.length?d[D]:-1,se=(F&3)<<6>>>0,se|=Z,I.push(u(se)),++$;var fe=[];for(z=0;z<$;z++)fe.push(I[z].charCodeAt(0));return fe}var m=function(){var N={};return N.MAX_CODEPOINT=1114111,N.encodeUTF8=function(C,z){var k=null;for(typeof C=="number"&&(k=C,C=function(){return null});k!==null||(k=C())!==null;)k<128?z(k&127):k<2048?(z(k>>6&31|192),z(k&63|128)):k<65536?(z(k>>12&15|224),z(k>>6&63|128),z(k&63|128)):(z(k>>18&7|240),z(k>>12&63|128),z(k>>6&63|128),z(k&63|128)),k=null},N.decodeUTF8=function(C,z){for(var k,$,I,L,q=function(F){F=F.slice(0,F.indexOf(null));var Z=Error(F.toString());throw Z.name="TruncatedError",Z.bytes=F,Z};(k=C())!==null;)if(!(k&128))z(k);else if((k&224)===192)($=C())===null&&q([k,$]),z((k&31)<<6|$&63);else if((k&240)===224)(($=C())===null||(I=C())===null)&&q([k,$,I]),z((k&15)<<12|($&63)<<6|I&63);else if((k&248)===240)(($=C())===null||(I=C())===null||(L=C())===null)&&q([k,$,I,L]),z((k&7)<<18|($&63)<<12|(I&63)<<6|L&63);else throw RangeError("Illegal starting byte: "+k)},N.UTF16toUTF8=function(C,z){for(var k,$=null;(k=$!==null?$:C())!==null;){if(k>=55296&&k<=57343&&($=C())!==null&&$>=56320&&$<=57343){z((k-55296)*1024+$-56320+65536),$=null;continue}z(k)}$!==null&&z($)},N.UTF8toUTF16=function(C,z){var k=null;for(typeof C=="number"&&(k=C,C=function(){return null});k!==null||(k=C())!==null;)k<=65535?z(k):(k-=65536,z((k>>10)+55296),z(k%1024+56320)),k=null},N.encodeUTF16toUTF8=function(C,z){N.UTF16toUTF8(C,function(k){N.encodeUTF8(k,z)})},N.decodeUTF8toUTF16=function(C,z){N.decodeUTF8(C,function(k){N.UTF8toUTF16(k,z)})},N.calculateCodePoint=function(C){return C<128?1:C<2048?2:C<65536?3:4},N.calculateUTF8=function(C){for(var z,k=0;(z=C())!==null;)k+=N.calculateCodePoint(z);return k},N.calculateUTF16asUTF8=function(C){var z=0,k=0;return N.UTF16toUTF8(C,function($){++z,k+=N.calculateCodePoint($)}),[z,k]},N}();Date.now=Date.now||function(){return+new Date};var y=16,v=10,b=16,A=100,O=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],U=[3509652390,2564797868,805139163,3491422135,3101798381,1780907670,3128725573,4046225305,614570311,3012652279,134345442,2240740374,1667834072,1901547113,2757295779,4103290238,227898511,1921955416,1904987480,2182433518,2069144605,3260701109,2620446009,720527379,3318853667,677414384,3393288472,3101374703,2390351024,1614419982,1822297739,2954791486,3608508353,3174124327,2024746970,1432378464,3864339955,2857741204,1464375394,1676153920,1439316330,715854006,3033291828,289532110,2706671279,2087905683,3018724369,1668267050,732546397,1947742710,3462151702,2609353502,2950085171,1814351708,2050118529,680887927,999245976,1800124847,3300911131,1713906067,1641548236,4213287313,1216130144,1575780402,4018429277,3917837745,3693486850,3949271944,596196993,3549867205,258830323,2213823033,772490370,2760122372,1774776394,2652871518,566650946,4142492826,1728879713,2882767088,1783734482,3629395816,2517608232,2874225571,1861159788,326777828,3124490320,2130389656,2716951837,967770486,1724537150,2185432712,2364442137,1164943284,2105845187,998989502,3765401048,2244026483,1075463327,1455516326,1322494562,910128902,469688178,1117454909,936433444,3490320968,3675253459,1240580251,122909385,2157517691,634681816,4142456567,3825094682,3061402683,2540495037,79693498,3249098678,1084186820,1583128258,426386531,1761308591,1047286709,322548459,995290223,1845252383,2603652396,3431023940,2942221577,3202600964,3727903485,1712269319,422464435,3234572375,1170764815,3523960633,3117677531,1434042557,442511882,3600875718,1076654713,1738483198,4213154764,2393238008,3677496056,1014306527,4251020053,793779912,2902807211,842905082,4246964064,1395751752,1040244610,2656851899,3396308128,445077038,3742853595,3577915638,679411651,2892444358,2354009459,1767581616,3150600392,3791627101,3102740896,284835224,4246832056,1258075500,768725851,2589189241,3069724005,3532540348,1274779536,3789419226,2764799539,1660621633,3471099624,4011903706,913787905,3497959166,737222580,2514213453,2928710040,3937242737,1804850592,3499020752,2949064160,2386320175,2390070455,2415321851,4061277028,2290661394,2416832540,1336762016,1754252060,3520065937,3014181293,791618072,3188594551,3933548030,2332172193,3852520463,3043980520,413987798,3465142937,3030929376,4245938359,2093235073,3534596313,375366246,2157278981,2479649556,555357303,3870105701,2008414854,3344188149,4221384143,3956125452,2067696032,3594591187,2921233993,2428461,544322398,577241275,1471733935,610547355,4027169054,1432588573,1507829418,2025931657,3646575487,545086370,48609733,2200306550,1653985193,298326376,1316178497,3007786442,2064951626,458293330,2589141269,3591329599,3164325604,727753846,2179363840,146436021,1461446943,4069977195,705550613,3059967265,3887724982,4281599278,3313849956,1404054877,2845806497,146425753,1854211946,1266315497,3048417604,3681880366,3289982499,290971e4,1235738493,2632868024,2414719590,3970600049,1771706367,1449415276,3266420449,422970021,1963543593,2690192192,3826793022,1062508698,1531092325,1804592342,2583117782,2714934279,4024971509,1294809318,4028980673,1289560198,2221992742,1669523910,35572830,157838143,1052438473,1016535060,1802137761,1753167236,1386275462,3080475397,2857371447,1040679964,2145300060,2390574316,1461121720,2956646967,4031777805,4028374788,33600511,2920084762,1018524850,629373528,3691585981,3515945977,2091462646,2486323059,586499841,988145025,935516892,3367335476,2599673255,2839830854,265290510,3972581182,2759138881,3795373465,1005194799,847297441,406762289,1314163512,1332590856,1866599683,4127851711,750260880,613907577,1450815602,3165620655,3734664991,3650291728,3012275730,3704569646,1427272223,778793252,1343938022,2676280711,2052605720,1946737175,3164576444,3914038668,3967478842,3682934266,1661551462,3294938066,4011595847,840292616,3712170807,616741398,312560963,711312465,1351876610,322626781,1910503582,271666773,2175563734,1594956187,70604529,3617834859,1007753275,1495573769,4069517037,2549218298,2663038764,504708206,2263041392,3941167025,2249088522,1514023603,1998579484,1312622330,694541497,2582060303,2151582166,1382467621,776784248,2618340202,3323268794,2497899128,2784771155,503983604,4076293799,907881277,423175695,432175456,1378068232,4145222326,3954048622,3938656102,3820766613,2793130115,2977904593,26017576,3274890735,3194772133,1700274565,1756076034,4006520079,3677328699,720338349,1533947780,354530856,688349552,3973924725,1637815568,332179504,3949051286,53804574,2852348879,3044236432,1282449977,3583942155,3416972820,4006381244,1617046695,2628476075,3002303598,1686838959,431878346,2686675385,1700445008,1080580658,1009431731,832498133,3223435511,2605976345,2271191193,2516031870,1648197032,4164389018,2548247927,300782431,375919233,238389289,3353747414,2531188641,2019080857,1475708069,455242339,2609103871,448939670,3451063019,1395535956,2413381860,1841049896,1491858159,885456874,4264095073,4001119347,1565136089,3898914787,1108368660,540939232,1173283510,2745871338,3681308437,4207628240,3343053890,4016749493,1699691293,1103962373,3625875870,2256883143,3830138730,1031889488,3479347698,1535977030,4236805024,3251091107,2132092099,1774941330,1199868427,1452454533,157007616,2904115357,342012276,595725824,1480756522,206960106,497939518,591360097,863170706,2375253569,3596610801,1814182875,2094937945,3421402208,1082520231,3463918190,2785509508,435703966,3908032597,1641649973,2842273706,3305899714,1510255612,2148256476,2655287854,3276092548,4258621189,236887753,3681803219,274041037,1734335097,3815195456,3317970021,1899903192,1026095262,4050517792,356393447,2410691914,3873677099,3682840055,3913112168,2491498743,4132185628,2489919796,1091903735,1979897079,3170134830,3567386728,3557303409,857797738,1136121015,1342202287,507115054,2535736646,337727348,3213592640,1301675037,2528481711,1895095763,1721773893,3216771564,62756741,2142006736,835421444,2531993523,1442658625,3659876326,2882144922,676362277,1392781812,170690266,3921047035,1759253602,3611846912,1745797284,664899054,1329594018,3901205900,3045908486,2062866102,2865634940,3543621612,3464012697,1080764994,553557557,3656615353,3996768171,991055499,499776247,1265440854,648242737,3940784050,980351604,3713745714,1749149687,3396870395,4211799374,3640570775,1161844396,3125318951,1431517754,545492359,4268468663,3499529547,1437099964,2702547544,3433638243,2581715763,2787789398,1060185593,1593081372,2418618748,4260947970,69676912,2159744348,86519011,2512459080,3838209314,1220612927,3339683548,133810670,1090789135,1078426020,1569222167,845107691,3583754449,4072456591,1091646820,628848692,1613405280,3757631651,526609435,236106946,48312990,2942717905,3402727701,1797494240,859738849,992217954,4005476642,2243076622,3870952857,3732016268,765654824,3490871365,2511836413,1685915746,3888969200,1414112111,2273134842,3281911079,4080962846,172450625,2569994100,980381355,4109958455,2819808352,2716589560,2568741196,3681446669,3329971472,1835478071,660984891,3704678404,4045999559,3422617507,3040415634,1762651403,1719377915,3470491036,2693910283,3642056355,3138596744,1364962596,2073328063,1983633131,926494387,3423689081,2150032023,4096667949,1749200295,3328846651,309677260,2016342300,1779581495,3079819751,111262694,1274766160,443224088,298511866,1025883608,3806446537,1145181785,168956806,3641502830,3584813610,1689216846,3666258015,3200248200,1692713982,2646376535,4042768518,1618508792,1610833997,3523052358,4130873264,2001055236,3610705100,2202168115,4028541809,2961195399,1006657119,2006996926,3186142756,1430667929,3210227297,1314452623,4074634658,4101304120,2273951170,1399257539,3367210612,3027628629,1190975929,2062231137,2333990788,2221543033,2438960610,1181637006,548689776,2362791313,3372408396,3104550113,3145860560,296247880,1970579870,3078560182,3769228297,1714227617,3291629107,3898220290,166772364,1251581989,493813264,448347421,195405023,2709975567,677966185,3703036547,1463355134,2715995803,1338867538,1343315457,2802222074,2684532164,233230375,2599980071,2000651841,3277868038,1638401717,4028070440,3237316320,6314154,819756386,300326615,590932579,1405279636,3267499572,3150704214,2428286686,3959192993,3461946742,1862657033,1266418056,963775037,2089974820,2263052895,1917689273,448879540,3550394620,3981727096,150775221,3627908307,1303187396,508620638,2975983352,2726630617,1817252668,1876281319,1457606340,908771278,3720792119,3617206836,2455994898,1729034894,1080033504,976866871,3556439503,2881648439,1522871579,1555064734,1336096578,3548522304,2579274686,3574697629,3205460757,3593280638,3338716283,3079412587,564236357,2993598910,1781952180,1464380207,3163844217,3332601554,1699332808,1393555694,1183702653,3581086237,1288719814,691649499,2847557200,2895455976,3193889540,2717570544,1781354906,1676643554,2592534050,3230253752,1126444790,2770207658,2633158820,2210423226,2615765581,2414155088,3127139286,673620729,2805611233,1269405062,4015350505,3341807571,4149409754,1057255273,2012875353,2162469141,2276492801,2601117357,993977747,3918593370,2654263191,753973209,36408145,2530585658,25011837,3520020182,2088578344,530523599,2918365339,1524020338,1518925132,3760827505,3759777254,1202760957,3985898139,3906192525,674977740,4174734889,2031300136,2019492241,3983892565,4153806404,3822280332,352677332,2297720250,60907813,90501309,3286998549,1016092578,2535922412,2839152426,457141659,509813237,4120667899,652014361,1966332200,2975202805,55981186,2327461051,676427537,3255491064,2882294119,3433927263,1307055953,942726286,933058658,2468411793,3933900994,4215176142,1361170020,2001714738,2830558078,3274259782,1222529897,1679025792,2729314320,3714953764,1770335741,151462246,3013232138,1682292957,1483529935,471910574,1539241949,458788160,3436315007,1807016891,3718408830,978976581,1043663428,3165965781,1927990952,4200891579,2372276910,3208408903,3533431907,1412390302,2931980059,4132332400,1947078029,3881505623,4168226417,2941484381,1077988104,1320477388,886195818,18198404,3786409e3,2509781533,112762804,3463356488,1866414978,891333506,18488651,661792760,1628790961,3885187036,3141171499,876946877,2693282273,1372485963,791857591,2686433993,3759982718,3167212022,3472953795,2716379847,445679433,3561995674,3504004811,3574258232,54117162,3331405415,2381918588,3769707343,4154350007,1140177722,4074052095,668550556,3214352940,367459370,261225585,2610173221,4209349473,3468074219,3265815641,314222801,3066103646,3808782860,282218597,3406013506,3773591054,379116347,1285071038,846784868,2669647154,3771962079,3550491691,2305946142,453669953,1268987020,3317592352,3279303384,3744833421,2610507566,3859509063,266596637,3847019092,517658769,3462560207,3443424879,370717030,4247526661,2224018117,4143653529,4112773975,2788324899,2477274417,1456262402,2901442914,1517677493,1846949527,2295493580,3734397586,2176403920,1280348187,1908823572,3871786941,846861322,1172426758,3287448474,3383383037,1655181056,3139813346,901632758,1897031941,2986607138,3066810236,3447102507,1393639104,373351379,950779232,625454576,3124240540,4148612726,2007998917,544563296,2244738638,2330496472,2058025392,1291430526,424198748,50039436,29584100,3605783033,2429876329,2791104160,1057563949,3255363231,3075367218,3463963227,1469046755,985887462],T=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892];function R(N,C,z,k){var $,I=N[C],L=N[C+1];return I^=z[0],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[1],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[2],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[3],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[4],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[5],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[6],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[7],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[8],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[9],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[10],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[11],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[12],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[13],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[14],$=k[I>>>24],$+=k[256|I>>16&255],$^=k[512|I>>8&255],$+=k[768|I&255],L^=$^z[15],$=k[L>>>24],$+=k[256|L>>16&255],$^=k[512|L>>8&255],$+=k[768|L&255],I^=$^z[16],N[C]=L^z[b+1],N[C+1]=I,N}function W(N,C){for(var z=0,k=0;z<4;++z)k=k<<8|N[C]&255,C=(C+1)%N.length;return{key:k,offp:C}}function ne(N,C,z){for(var k=0,$=[0,0],I=C.length,L=z.length,q,F=0;F<I;F++)q=W(N,k),k=q.offp,C[F]=C[F]^q.key;for(F=0;F<I;F+=2)$=R($,0,C,z),C[F]=$[0],C[F+1]=$[1];for(F=0;F<L;F+=2)$=R($,0,C,z),z[F]=$[0],z[F+1]=$[1]}function Q(N,C,z,k){for(var $=0,I=[0,0],L=z.length,q=k.length,F,Z=0;Z<L;Z++)F=W(C,$),$=F.offp,z[Z]=z[Z]^F.key;for($=0,Z=0;Z<L;Z+=2)F=W(N,$),$=F.offp,I[0]^=F.key,F=W(N,$),$=F.offp,I[1]^=F.key,I=R(I,0,z,k),z[Z]=I[0],z[Z+1]=I[1];for(Z=0;Z<q;Z+=2)F=W(N,$),$=F.offp,I[0]^=F.key,F=W(N,$),$=F.offp,I[1]^=F.key,I=R(I,0,z,k),k[Z]=I[0],k[Z+1]=I[1]}function K(N,C,z,k,$){var I=T.slice(),L=I.length,q;if(z<4||z>31)if(q=Error("Illegal number of rounds (4-31): "+z),k){a(k.bind(this,q));return}else throw q;if(C.length!==y)if(q=Error("Illegal salt length: "+C.length+" != "+y),k){a(k.bind(this,q));return}else throw q;z=1<<z>>>0;var F,Z,se=0,D;Int32Array?(F=new Int32Array(O),Z=new Int32Array(U)):(F=O.slice(),Z=U.slice()),Q(C,N,F,Z);function fe(){if($&&$(se/z),se<z)for(var ce=Date.now();se<z&&(se=se+1,ne(N,F,Z),ne(C,F,Z),!(Date.now()-ce>A)););else{for(se=0;se<64;se++)for(D=0;D<L>>1;D++)R(I,D<<1,F,Z);var ue=[];for(se=0;se<L;se++)ue.push((I[se]>>24&255)>>>0),ue.push((I[se]>>16&255)>>>0),ue.push((I[se]>>8&255)>>>0),ue.push((I[se]&255)>>>0);if(k){k(null,ue);return}else return ue}k&&a(fe)}if(typeof k<"u")fe();else for(var $e;;)if(typeof($e=fe())<"u")return $e||[]}function de(N,C,z,k){var $;if(typeof N!="string"||typeof C!="string")if($=Error("Invalid string / salt: Not a string"),z){a(z.bind(this,$));return}else throw $;var I,L;if(C.charAt(0)!=="$"||C.charAt(1)!=="2")if($=Error("Invalid salt version: "+C.substring(0,2)),z){a(z.bind(this,$));return}else throw $;if(C.charAt(2)==="$")I="\0",L=3;else{if(I=C.charAt(2),I!=="a"&&I!=="b"&&I!=="y"||C.charAt(3)!=="$")if($=Error("Invalid salt revision: "+C.substring(2,4)),z){a(z.bind(this,$));return}else throw $;L=4}if(C.charAt(L+2)>"$")if($=Error("Missing salt rounds"),z){a(z.bind(this,$));return}else throw $;var q=parseInt(C.substring(L,L+1),10)*10,F=parseInt(C.substring(L+1,L+2),10),Z=q+F,se=C.substring(L+3,L+25);N+=I>="a"?"\0":"";var D=c(N),fe=h(se,y);function $e(ce){var ue=[];return ue.push("$2"),I>="a"&&ue.push(I),ue.push("$"),Z<10&&ue.push("0"),ue.push(Z.toString()),ue.push("$"),ue.push(f(fe,fe.length)),ue.push(f(ce,T.length*4-1)),ue.join("")}if(typeof z>"u")return $e(K(D,fe,Z));K(D,fe,Z,function(ce,ue){ce?z(ce,null):z(null,$e(ue))},k)}return e.encodeBase64=f,e.decodeBase64=h,e})})(gm);var cv=gm.exports;const ti=hm(cv),lv="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let dv=t=>crypto.getRandomValues(new Uint8Array(t)),uv=(t,e,n)=>{let r=(2<<Math.log2(t.length-1))-1,i=-~(1.6*r*e/t.length);return(s=e)=>{let a="";for(;;){let c=n(i),l=i;for(;l--;)if(a+=t[c[l]&r]||"",a.length===s)return a}}},mm=(t,e=21)=>uv(t,e,dv),Ne=(t=21)=>{let e="",n=crypto.getRandomValues(new Uint8Array(t));for(;t--;)e+=lv[n[t]&63];return e};const pv=24;function La(){return mm("0123456789abcdef",pv)()}function ns(t){if(!t.includes("|"))return console.error("Invalid user_id format"),t;const[,e]=t.split("|");return e}function fv(t){return async(e,n)=>{if(!n.email||!n.email_verified)return t.users.create(e,n);const r=await Cu({userAdapter:t.users,tenant_id:e,email:n.email});if(!r)return t.users.create(e,n);await t.users.create(e,{...n,linked_to:r.user_id});const i=await t.users.get(e,r.user_id);if(!i)throw new Error("Failed to fetch primary user after linking");return i}}function be(t,e){return{type:e.type,description:e.description||"",ip:t.var.ip,user_agent:t.var.useragent||"",auth0_client:t.var.auth0_client,date:new Date().toISOString(),details:{request:{method:t.req.method,path:t.req.path,qs:t.req.queries(),body:e.body||t.var.body||""}},isMobile:!1,client_id:t.var.client_id,client_name:"",user_id:e.userId||t.var.user_id||"",hostname:t.req.header("host")||"",user_name:t.var.username||"",connection_id:"",connection:e.connection||t.var.connection||"",strategy:e.strategy||"",strategy_type:e.strategy_type||"",audience:e.audience||"",scope:e.scope?e.scope.split(" "):[]}}class qs{constructor(e,n){ae(this,"value");ae(this,"unit");this.value=e,this.unit=n}milliseconds(){return this.unit==="ms"?this.value:this.unit==="s"?this.value*1e3:this.unit==="m"?this.value*1e3*60:this.unit==="h"?this.value*1e3*60*60:this.unit==="d"?this.value*1e3*60*60*24:this.value*1e3*60*60*24*7}seconds(){return this.milliseconds()/1e3}transform(e){return new qs(Math.round(this.milliseconds()*e),"ms")}}class hv{constructor(e){ae(this,"hash");this.hash=e}async verify(e,n,r){const i=await crypto.subtle.importKey("spki",e,{name:"RSASSA-PKCS1-v1_5",hash:this.hash},!1,["verify"]);return await crypto.subtle.verify("RSASSA-PKCS1-v1_5",i,n,r)}async sign(e,n){const r=await crypto.subtle.importKey("pkcs8",e,{name:"RSASSA-PKCS1-v1_5",hash:this.hash},!1,["sign"]);return await crypto.subtle.sign("RSASSA-PKCS1-v1_5",r,n)}async generateKeyPair(e){const n=await crypto.subtle.generateKey({name:"RSASSA-PKCS1-v1_5",hash:this.hash,modulusLength:e??2048,publicExponent:new Uint8Array([1,0,1])},!0,["sign"]),r=await crypto.subtle.exportKey("pkcs8",n.privateKey),i=await crypto.subtle.exportKey("spki",n.publicKey);return{privateKey:r,publicKey:i}}}async function _m(t){return await crypto.subtle.digest("SHA-256",t)}const af="0123456789abcdef";function El(t){const e=new Uint8Array(t);let n="";for(let r=0;r<e.length;r++){const i=e[r]>>4;n+=af[i];const s=e[r]&15;n+=af[s]}return n}class ym{constructor(e,n){ae(this,"alphabet");ae(this,"padding");ae(this,"decodeMap",new Map);if(e.length!==32)throw new Error("Invalid alphabet");if(this.alphabet=e,this.padding=(n==null?void 0:n.padding)??"=",this.alphabet.includes(this.padding)||this.padding.length!==1)throw new Error("Invalid padding");for(let r=0;r<e.length;r++)this.decodeMap.set(e[r],r)}encode(e,n){let r="",i=0,s=0;for(let c=0;c<e.length;c++)for(i=i<<8|e[c],s+=8;s>=5;)s-=5,r+=this.alphabet[i>>s&31];if(s>0&&(r+=this.alphabet[i<<5-s&31]),(n==null?void 0:n.includePadding)??!0){const c=(8-r.length%8)%8;for(let l=0;l<c;l++)r+="="}return r}decode(e,n){const r=(n==null?void 0:n.strict)??!0,i=Math.ceil(e.length/8),s=[];for(let a=0;a<i;a++){let c=0;const l=[];for(let u=0;u<8;u++){const f=e[a*8+u];if(f==="="){if(a+1!==i)throw new Error(`Invalid character: ${f}`);c+=1;continue}if(f===void 0){if(r)throw new Error("Invalid data");c+=1;continue}const h=this.decodeMap.get(f)??null;if(h===null)throw new Error(`Invalid character: ${f}`);l.push(h)}if(c===8||c===7||c===5||c===2)throw new Error("Invalid padding");const d=(l[0]<<3)+(l[1]>>2);if(s.push(d),c<6){const u=((l[1]&3)<<6)+(l[2]<<1)+(l[3]>>4);s.push(u)}if(c<4){const u=((l[3]&255)<<4)+(l[4]>>1);s.push(u)}if(c<3){const u=((l[4]&1)<<7)+(l[5]<<2)+(l[6]>>3);s.push(u)}if(c<1){const u=((l[6]&7)<<5)+l[7];s.push(u)}}return Uint8Array.from(s)}}new ym("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567");new ym("0123456789ABCDEFGHIJKLMNOPQRSTUV");class wm{constructor(e,n){ae(this,"alphabet");ae(this,"padding");ae(this,"decodeMap",new Map);if(e.length!==64)throw new Error("Invalid alphabet");if(this.alphabet=e,this.padding=(n==null?void 0:n.padding)??"=",this.alphabet.includes(this.padding)||this.padding.length!==1)throw new Error("Invalid padding");for(let r=0;r<e.length;r++)this.decodeMap.set(e[r],r)}encode(e,n){let r="",i=0,s=0;for(let c=0;c<e.length;c++)for(i=i<<8|e[c],s+=8;s>=6;)s+=-6,r+=this.alphabet[i>>s&63];if(s>0&&(r+=this.alphabet[i<<6-s&63]),(n==null?void 0:n.includePadding)??!0){const c=(4-r.length%4)%4;for(let l=0;l<c;l++)r+="="}return r}decode(e,n){const r=(n==null?void 0:n.strict)??!0,i=Math.ceil(e.length/4),s=[];for(let a=0;a<i;a++){let c=0,l=0;for(let d=0;d<4;d++){const u=e[a*4+d];if(u==="="){if(a+1!==i)throw new Error(`Invalid character: ${u}`);c+=1;continue}if(u===void 0){if(r)throw new Error("Invalid data");c+=1;continue}const f=this.decodeMap.get(u)??null;if(f===null)throw new Error(`Invalid character: ${u}`);l+=f<<6*(3-d)}s.push(l>>16&255),c<2&&s.push(l>>8&255),c<1&&s.push(l&255)}return Uint8Array.from(s)}}const gv=new wm("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"),fr=new wm("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_");async function cf(t,e,n,r){const i={alg:t,typ:"JWT",...r==null?void 0:r.headers},s={...n};(r==null?void 0:r.audiences)!==void 0&&(s.aud=r.audiences),(r==null?void 0:r.subject)!==void 0&&(s.sub=r.subject),(r==null?void 0:r.issuer)!==void 0&&(s.iss=r.issuer),(r==null?void 0:r.jwtId)!==void 0&&(s.jti=r.jwtId),(r==null?void 0:r.expiresIn)!==void 0&&(s.exp=Math.floor(Date.now()/1e3)+r.expiresIn.seconds()),(r==null?void 0:r.notBefore)!==void 0&&(s.nbf=Math.floor(r.notBefore.getTime()/1e3)),s.iat=Math.floor(Date.now()/1e3);const a=new TextEncoder,c=fr.encode(a.encode(JSON.stringify(i)),{includePadding:!1}),l=fr.encode(a.encode(JSON.stringify(s)),{includePadding:!1}),d=a.encode([c,l].join(".")),u=await _v(t).sign(e,d),f=fr.encode(new Uint8Array(u),{includePadding:!1});return[c,l,f].join(".")}function mv(t){const e=t.split(".");return e.length!==3?null:e}function Ua(t){const e=mv(t);if(!e)return null;const n=new TextDecoder,r=fr.decode(e[0],{strict:!1}),i=fr.decode(e[1],{strict:!1}),s=JSON.parse(n.decode(r));if(typeof s!="object"||s===null||!("alg"in s)||!yv(s.alg)||"typ"in s&&s.typ!=="JWT")return null;const a=JSON.parse(n.decode(i));if(typeof a!="object"||a===null)return null;const c={algorithm:s.alg,expiresAt:null,subject:null,issuedAt:null,issuer:null,jwtId:null,audiences:null,notBefore:null};if("exp"in a){if(typeof a.exp!="number")return null;c.expiresAt=new Date(a.exp*1e3)}if("iss"in a){if(typeof a.iss!="string")return null;c.issuer=a.iss}if("sub"in a){if(typeof a.sub!="string")return null;c.subject=a.sub}if("aud"in a)if(Array.isArray(a.aud)){for(const l of a.aud)if(typeof l!="string")return null;c.audiences=a.aud}else{if(typeof a.aud!="string")return null;c.audiences=[a.aud]}if("nbf"in a){if(typeof a.nbf!="number")return null;c.notBefore=new Date(a.nbf*1e3)}if("iat"in a){if(typeof a.iat!="number")return null;c.issuedAt=new Date(a.iat*1e3)}if("jti"in a){if(typeof a.jti!="string")return null;c.jwtId=a.jti}return{value:t,header:{...s,typ:"JWT",alg:s.alg},payload:{...a},parts:e,...c}}function _v(t){return new hv(wv[t])}function yv(t){return typeof t!="string"?!1:["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512","PS256","PS384","PS512"].includes(t)}const wv={RS256:"SHA-256",RS384:"SHA-384",RS512:"SHA-512"};function vv(){const t=new Uint8Array(32);return crypto.getRandomValues(t),fr.encode(t,{includePadding:!1})}function bv(t){try{const n=/-----BEGIN (?:RSA )?(?:PRIVATE|PUBLIC) KEY-----([^-]*)-----END (?:RSA )?(?:PRIVATE|PUBLIC) KEY-----/.exec(t);if(!n||!n[1])throw new Error("Invalid PEM format");return Uint8Array.from(atob(n[1].replace(/\s/g,"")),r=>r.charCodeAt(0)).buffer}finally{t=t.replace(/./g,"\0")}}async function $v(t,e){if(e==="plain")return t;const n=new TextEncoder().encode(t),r=await _m(n);return fr.encode(new Uint8Array(r),{includePadding:!1})}const rs=60*5,Da=30*24*60*60,_r=24*60*60,kv="auth-token",hs=30*60*1e3,Cl=7*24*60*60*1e3,xv=5*60,Sv=5*60,zv=30*60*1e3,Av=30*60*1e3,Ev=24*60*60*1e3;function vm(t,e,n){const r=[];return r.push([encodeURIComponent(t),encodeURIComponent(e)]),(n==null?void 0:n.domain)!==void 0&&r.push(["Domain",n.domain]),(n==null?void 0:n.expires)!==void 0&&r.push(["Expires",n.expires.toUTCString()]),n!=null&&n.httpOnly&&r.push(["HttpOnly"]),(n==null?void 0:n.maxAge)!==void 0&&r.push(["Max-Age",n.maxAge.toString()]),(n==null?void 0:n.path)!==void 0&&r.push(["Path",n.path]),(n==null?void 0:n.sameSite)==="lax"&&r.push(["SameSite","Lax"]),(n==null?void 0:n.sameSite)==="none"&&r.push(["SameSite","None"]),(n==null?void 0:n.sameSite)==="strict"&&r.push(["SameSite","Strict"]),n!=null&&n.secure&&r.push(["Secure"]),r.map(i=>i.join("=")).join("; ")}function Cv(t){const e=new Map,n=t.split("; ");for(const r of n){const i=r.split("="),s=i[0],a=i[1]??"";s&&e.set(decodeURIComponent(s),decodeURIComponent(a))}return e}function ku(t){return`${t}-${kv}`}function bm(t){if(!t)return;const[e]=t.split(":");if(!e||e==="localhost"||/^(\d{1,3}\.){3}\d{1,3}$/.test(e))return;const n=e.split(".");return n.length>2?`.${n.slice(-2).join(".")}`:`.${e}`}function ni(t,e){return e?Cv(e).get(ku(t)):void 0}function Nv(t,e){return vm(ku(t),"",{path:"/",httpOnly:!0,secure:!0,maxAge:0,sameSite:"none",domain:e?bm(e):void 0})}function Hs(t,e,n){return vm(ku(t),e,{path:"/",httpOnly:!0,secure:!0,maxAge:Da,sameSite:"none",domain:n?bm(n):void 0})}class ee extends S{constructor(e,n){super(e,{message:JSON.stringify(n),res:new Response(JSON.stringify(n),{status:e,headers:{"Content-Type":"application/json"}})})}}var Iv=Object.defineProperty,jv=(t,e,n)=>e in t?Iv(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,Jr=(t,e,n)=>jv(t,typeof e!="symbol"?e+"":e,n);const ut=o.z.object({"#text":o.z.string()}),Ov=o.z.object({"#text":o.z.string(),"@_xmlns:saml":o.z.string().optional()});o.z.object({"samlp:AuthnRequest":o.z.object({"saml:Issuer":Ov,"@_xmlns:samlp":o.z.string(),"@_xmlns:saml":o.z.string().optional(),"@_ForceAuthn":o.z.string().transform(t=>t.toLowerCase()==="true").optional(),"@_ID":o.z.string(),"@_IssueInstant":o.z.string().datetime(),"@_Destination":o.z.string().url(),"@_AssertionConsumerServiceURL":o.z.string().url().optional(),"@_ProtocolBinding":o.z.string().optional(),"@_Version":o.z.string()})});o.z.array(o.z.object({":@":o.z.object({"@_xmlns":o.z.string(),"@_entityID":o.z.string()}),EntityDescriptor:o.z.array(o.z.object({":@":o.z.object({"@_protocolSupportEnumeration":o.z.string()}),IDPSSODescriptor:o.z.array(o.z.union([o.z.object({KeyDescriptor:o.z.array(o.z.object({KeyInfo:o.z.array(o.z.object({X509Data:o.z.array(o.z.object({X509Certificate:o.z.array(ut)}))})),":@":o.z.object({"@_xmlns":o.z.string()})})),":@":o.z.object({"@_use":o.z.string()})}),o.z.object({SingleLogoutService:o.z.array(o.z.object({})),":@":o.z.object({"@_Binding":o.z.string(),"@_Location":o.z.string()})}),o.z.object({NameIDFormat:o.z.array(ut)}),o.z.object({SingleSignOnService:o.z.array(o.z.object({})),":@":o.z.object({"@_Binding":o.z.string(),"@_Location":o.z.string()})}),o.z.object({Attribute:o.z.array(o.z.object({})),":@":o.z.object({"@_Name":o.z.string(),"@_NameFormat":o.z.string(),"@_FriendlyName":o.z.string(),"@_xmlns":o.z.string()})})]))}))}));const Tv=o.z.object({"saml:Attribute":o.z.array(o.z.object({"saml:AttributeValue":o.z.array(o.z.object({"#text":o.z.string()})),":@":o.z.object({"@_xmlns:xs":o.z.string().optional(),"@_xmlns:xsi":o.z.string(),"@_xsi:type":o.z.string()}).optional()})),":@":o.z.object({"@_Name":o.z.string(),"@_NameFormat":o.z.string(),"@_FriendlyName":o.z.string().optional()})}),Pv=o.z.object({"ds:Transform":o.z.array(o.z.any()),":@":o.z.object({"@_Algorithm":o.z.string()})}),lf=o.z.object({"ds:Signature":o.z.array(o.z.union([o.z.object({"ds:SignedInfo":o.z.array(o.z.union([o.z.object({"ds:CanonicalizationMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:SignatureMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:Reference":o.z.array(o.z.union([o.z.object({"ds:Transforms":o.z.array(Pv)}),o.z.object({"ds:DigestMethod":o.z.array(o.z.object({":@":o.z.object({"@_Algorithm":o.z.string()})}))}),o.z.object({"ds:DigestValue":o.z.array(ut)})])),":@":o.z.object({"@_URI":o.z.string().optional()}).optional()})]))}),o.z.object({"ds:SignatureValue":o.z.array(ut)}),o.z.object({"ds:KeyInfo":o.z.array(o.z.union([o.z.object({"ds:KeyValue":o.z.array(o.z.object({"ds:RSAKeyValue":o.z.array(o.z.union([o.z.object({"ds:Modulus":o.z.array(ut)}),o.z.object({"ds:Exponent":o.z.array(ut)})]))}))}),o.z.object({"ds:X509Data":o.z.array(o.z.object({"ds:X509Certificate":o.z.array(ut)}))}),o.z.object({"ds:KeyValue":o.z.array(o.z.object({"ds:RSAKeyValue":o.z.array(o.z.union([o.z.object({"ds:Modulus":o.z.array(ut)}),o.z.object({"ds:Exponent":o.z.array(ut)})]))})),"ds:X509Data":o.z.array(o.z.object({"ds:X509Certificate":o.z.array(ut)}))})]))})])),":@":o.z.object({"@_xmlns:ds":o.z.string().optional()}).optional()});o.z.array(o.z.object({"samlp:Response":o.z.array(o.z.union([o.z.object({"saml:Issuer":o.z.array(ut)}),lf,o.z.object({"samlp:Status":o.z.array(o.z.object({"samlp:StatusCode":o.z.array(ut),":@":o.z.object({"@_Value":o.z.string()})}))}),o.z.object({"saml:Assertion":o.z.array(o.z.union([o.z.object({"saml:Issuer":o.z.array(ut)}),lf,o.z.object({"saml:Subject":o.z.array(o.z.union([o.z.object({"saml:NameID":o.z.array(ut),":@":o.z.object({"@_Format":o.z.string()})}),o.z.object({"saml:SubjectConfirmation":o.z.array(o.z.object({"saml:SubjectConfirmationData":o.z.array(o.z.any()),":@":o.z.object({"@_InResponseTo":o.z.string(),"@_NotOnOrAfter":o.z.string(),"@_Recipient":o.z.string()})})),":@":o.z.object({"@_Method":o.z.string()})})]))}),o.z.object({"saml:Conditions":o.z.array(o.z.object({"saml:AudienceRestriction":o.z.array(o.z.object({"saml:Audience":o.z.array(ut)}))})),":@":o.z.object({"@_NotBefore":o.z.string(),"@_NotOnOrAfter":o.z.string()})}),o.z.object({"saml:AuthnStatement":o.z.array(o.z.object({"saml:AuthnContext":o.z.array(o.z.object({"saml:AuthnContextClassRef":o.z.array(ut)}))})),":@":o.z.object({"@_AuthnInstant":o.z.string(),"@_SessionIndex":o.z.string(),"@_SessionNotOnOrAfter":o.z.string()})}),o.z.object({"saml:AttributeStatement":o.z.array(Tv)})])),":@":o.z.object({"@_xmlns":o.z.string(),"@_ID":o.z.string(),"@_IssueInstant":o.z.string(),"@_Version":o.z.string()})})])),":@":o.z.object({"@_xmlns:samlp":o.z.string(),"@_xmlns:saml":o.z.string(),"@_Destination":o.z.string(),"@_ID":o.z.string(),"@_InResponseTo":o.z.string(),"@_IssueInstant":o.z.string(),"@_Version":o.z.string()})}));var xu={},Ma={};(function(t){const e=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",n=e+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",r="["+e+"]["+n+"]*",i=new RegExp("^"+r+"$"),s=function(c,l){const d=[];let u=l.exec(c);for(;u;){const f=[];f.startIndex=l.lastIndex-u[0].length;const h=u.length;for(let m=0;m<h;m++)f.push(u[m]);d.push(f),u=l.exec(c)}return d},a=function(c){const l=i.exec(c);return!(l===null||typeof l>"u")};t.isExist=function(c){return typeof c<"u"},t.isEmptyObject=function(c){return Object.keys(c).length===0},t.merge=function(c,l,d){if(l){const u=Object.keys(l),f=u.length;for(let h=0;h<f;h++)d==="strict"?c[u[h]]=[l[u[h]]]:c[u[h]]=l[u[h]]}},t.getValue=function(c){return t.isExist(c)?c:""},t.isName=a,t.getAllMatches=s,t.nameRegexp=r})(Ma);const Su=Ma,Rv={allowBooleanAttributes:!1,unpairedTags:[]};xu.validate=function(t,e){e=Object.assign({},Rv,e);const n=[];let r=!1,i=!1;t[0]==="\uFEFF"&&(t=t.substr(1));for(let s=0;s<t.length;s++)if(t[s]==="<"&&t[s+1]==="?"){if(s+=2,s=uf(t,s),s.err)return s}else if(t[s]==="<"){let a=s;if(s++,t[s]==="!"){s=pf(t,s);continue}else{let c=!1;t[s]==="/"&&(c=!0,s++);let l="";for(;s<t.length&&t[s]!==">"&&t[s]!==" "&&t[s]!==" "&&t[s]!==`
6
6
  `&&t[s]!=="\r";s++)l+=t[s];if(l=l.trim(),l[l.length-1]==="/"&&(l=l.substring(0,l.length-1),s--),!Hv(l)){let f;return l.trim().length===0?f="Invalid space after '<'.":f="Tag '"+l+"' is an invalid name.",Fe("InvalidTag",f,mt(t,s))}const d=Uv(t,s);if(d===!1)return Fe("InvalidAttr","Attributes for '"+l+"' have open quote.",mt(t,s));let u=d.value;if(s=d.index,u[u.length-1]==="/"){const f=s-u.length;u=u.substring(0,u.length-1);const h=ff(u,e);if(h===!0)r=!0;else return Fe(h.err.code,h.err.msg,mt(t,f+h.err.line))}else if(c)if(d.tagClosed){if(u.trim().length>0)return Fe("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",mt(t,a));if(n.length===0)return Fe("InvalidTag","Closing tag '"+l+"' has not been opened.",mt(t,a));{const f=n.pop();if(l!==f.tagName){let h=mt(t,f.tagStartPos);return Fe("InvalidTag","Expected closing tag '"+f.tagName+"' (opened in line "+h.line+", col "+h.col+") instead of closing tag '"+l+"'.",mt(t,a))}n.length==0&&(i=!0)}}else return Fe("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",mt(t,s));else{const f=ff(u,e);if(f!==!0)return Fe(f.err.code,f.err.msg,mt(t,s-u.length+f.err.line));if(i===!0)return Fe("InvalidXml","Multiple possible root nodes found.",mt(t,s));e.unpairedTags.indexOf(l)!==-1||n.push({tagName:l,tagStartPos:a}),r=!0}for(s++;s<t.length;s++)if(t[s]==="<")if(t[s+1]==="!"){s++,s=pf(t,s);continue}else if(t[s+1]==="?"){if(s=uf(t,++s),s.err)return s}else break;else if(t[s]==="&"){const f=Fv(t,s);if(f==-1)return Fe("InvalidChar","char '&' is not expected.",mt(t,s));s=f}else if(i===!0&&!df(t[s]))return Fe("InvalidXml","Extra text at the end",mt(t,s));t[s]==="<"&&s--}}else{if(df(t[s]))continue;return Fe("InvalidChar","char '"+t[s]+"' is not expected.",mt(t,s))}if(r){if(n.length==1)return Fe("InvalidTag","Unclosed tag '"+n[0].tagName+"'.",mt(t,n[0].tagStartPos));if(n.length>0)return Fe("InvalidXml","Invalid '"+JSON.stringify(n.map(s=>s.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return Fe("InvalidXml","Start tag expected.",1);return!0};function df(t){return t===" "||t===" "||t===`
7
7
  `||t==="\r"}function uf(t,e){const n=e;for(;e<t.length;e++)if(t[e]=="?"||t[e]==" "){const r=t.substr(n,e-n);if(e>5&&r==="xml")return Fe("InvalidXml","XML declaration allowed only at the start of the document.",mt(t,e));if(t[e]=="?"&&t[e+1]==">"){e++;break}else continue}return e}function pf(t,e){if(t.length>e+5&&t[e+1]==="-"&&t[e+2]==="-"){for(e+=3;e<t.length;e++)if(t[e]==="-"&&t[e+1]==="-"&&t[e+2]===">"){e+=2;break}}else if(t.length>e+8&&t[e+1]==="D"&&t[e+2]==="O"&&t[e+3]==="C"&&t[e+4]==="T"&&t[e+5]==="Y"&&t[e+6]==="P"&&t[e+7]==="E"){let n=1;for(e+=8;e<t.length;e++)if(t[e]==="<")n++;else if(t[e]===">"&&(n--,n===0))break}else if(t.length>e+9&&t[e+1]==="["&&t[e+2]==="C"&&t[e+3]==="D"&&t[e+4]==="A"&&t[e+5]==="T"&&t[e+6]==="A"&&t[e+7]==="["){for(e+=8;e<t.length;e++)if(t[e]==="]"&&t[e+1]==="]"&&t[e+2]===">"){e+=2;break}}return e}const Bv='"',Lv="'";function Uv(t,e){let n="",r="",i=!1;for(;e<t.length;e++){if(t[e]===Bv||t[e]===Lv)r===""?r=t[e]:r!==t[e]||(r="");else if(t[e]===">"&&r===""){i=!0;break}n+=t[e]}return r!==""?!1:{value:n,index:e,tagClosed:i}}const Dv=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function ff(t,e){const n=Su.getAllMatches(t,Dv),r={};for(let i=0;i<n.length;i++){if(n[i][1].length===0)return Fe("InvalidAttr","Attribute '"+n[i][2]+"' has no space in starting.",Ri(n[i]));if(n[i][3]!==void 0&&n[i][4]===void 0)return Fe("InvalidAttr","Attribute '"+n[i][2]+"' is without value.",Ri(n[i]));if(n[i][3]===void 0&&!e.allowBooleanAttributes)return Fe("InvalidAttr","boolean attribute '"+n[i][2]+"' is not allowed.",Ri(n[i]));const s=n[i][2];if(!qv(s))return Fe("InvalidAttr","Attribute '"+s+"' is an invalid name.",Ri(n[i]));if(!r.hasOwnProperty(s))r[s]=1;else return Fe("InvalidAttr","Attribute '"+s+"' is repeated.",Ri(n[i]))}return!0}function Mv(t,e){let n=/\d/;for(t[e]==="x"&&(e++,n=/[\da-fA-F]/);e<t.length;e++){if(t[e]===";")return e;if(!t[e].match(n))break}return-1}function Fv(t,e){if(e++,t[e]===";")return-1;if(t[e]==="#")return e++,Mv(t,e);let n=0;for(;e<t.length;e++,n++)if(!(t[e].match(/\w/)&&n<20)){if(t[e]===";")break;return-1}return e}function Fe(t,e,n){return{err:{code:t,msg:e,line:n.line||n,col:n.col}}}function qv(t){return Su.isName(t)}function Hv(t){return Su.isName(t)}function mt(t,e){const n=t.substring(0,e).split(/\r?\n/);return{line:n.length,col:n[n.length-1].length+1}}function Ri(t){return t.startIndex+t[1].length}var zu={};const $m={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,n){return t}},Vv=function(t){return Object.assign({},$m,t)};zu.buildOptions=Vv;zu.defaultOptions=$m;let Kv=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,n){e==="__proto__"&&(e="#__proto__"),this.child.push({[e]:n})}addChild(e){e.tagname==="__proto__"&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}};var Gv=Kv;const Wv=Ma;function Jv(t,e){const n={};if(t[e+3]==="O"&&t[e+4]==="C"&&t[e+5]==="T"&&t[e+6]==="Y"&&t[e+7]==="P"&&t[e+8]==="E"){e=e+9;let r=1,i=!1,s=!1,a="";for(;e<t.length;e++)if(t[e]==="<"&&!s){if(i&&Yv(t,e)){e+=7;let c,l;[c,l,e]=Xv(t,e+1),l.indexOf("&")===-1&&(n[n2(c)]={regx:RegExp(`&${c};`,"g"),val:l})}else if(i&&Qv(t,e))e+=8;else if(i&&e2(t,e))e+=8;else if(i&&t2(t,e))e+=9;else if(Zv)s=!0;else throw new Error("Invalid DOCTYPE");r++,a=""}else if(t[e]===">"){if(s?t[e-1]==="-"&&t[e-2]==="-"&&(s=!1,r--):r--,r===0)break}else t[e]==="["?i=!0:a+=t[e];if(r!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities:n,i:e}}function Xv(t,e){let n="";for(;e<t.length&&t[e]!=="'"&&t[e]!=='"';e++)n+=t[e];if(n=n.trim(),n.indexOf(" ")!==-1)throw new Error("External entites are not supported");const r=t[e++];let i="";for(;e<t.length&&t[e]!==r;e++)i+=t[e];return[n,i,e]}function Zv(t,e){return t[e+1]==="!"&&t[e+2]==="-"&&t[e+3]==="-"}function Yv(t,e){return t[e+1]==="!"&&t[e+2]==="E"&&t[e+3]==="N"&&t[e+4]==="T"&&t[e+5]==="I"&&t[e+6]==="T"&&t[e+7]==="Y"}function Qv(t,e){return t[e+1]==="!"&&t[e+2]==="E"&&t[e+3]==="L"&&t[e+4]==="E"&&t[e+5]==="M"&&t[e+6]==="E"&&t[e+7]==="N"&&t[e+8]==="T"}function e2(t,e){return t[e+1]==="!"&&t[e+2]==="A"&&t[e+3]==="T"&&t[e+4]==="T"&&t[e+5]==="L"&&t[e+6]==="I"&&t[e+7]==="S"&&t[e+8]==="T"}function t2(t,e){return t[e+1]==="!"&&t[e+2]==="N"&&t[e+3]==="O"&&t[e+4]==="T"&&t[e+5]==="A"&&t[e+6]==="T"&&t[e+7]==="I"&&t[e+8]==="O"&&t[e+9]==="N"}function n2(t){if(Wv.isName(t))return t;throw new Error(`Invalid entity name ${t}`)}var r2=Jv;const i2=/^[-+]?0x[a-fA-F0-9]+$/,o2=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt);!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const s2={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function a2(t,e={}){if(e=Object.assign({},s2,e),!t||typeof t!="string")return t;let n=t.trim();if(e.skipLike!==void 0&&e.skipLike.test(n))return t;if(e.hex&&i2.test(n))return Number.parseInt(n,16);{const r=o2.exec(n);if(r){const i=r[1],s=r[2];let a=c2(r[3]);const c=r[4]||r[6];if(!e.leadingZeros&&s.length>0&&i&&n[2]!=="."||!e.leadingZeros&&s.length>0&&!i&&n[1]!==".")return t;{const l=Number(n),d=""+l;return d.search(/[eE]/)!==-1||c?e.eNotation?l:t:n.indexOf(".")!==-1?d==="0"&&a===""||d===a||i&&d==="-"+a?l:t:s?a===d||i+a===d?l:t:n===d||n===i+d?l:t}}else return t}}function c2(t){return t&&t.indexOf(".")!==-1&&(t=t.replace(/0+$/,""),t==="."?t="0":t[0]==="."?t="0"+t:t[t.length-1]==="."&&(t=t.substr(0,t.length-1))),t}var l2=a2;function d2(t){return typeof t=="function"?t:Array.isArray(t)?e=>{for(const n of t)if(typeof n=="string"&&e===n||n instanceof RegExp&&n.test(e))return!0}:()=>!1}var km=d2;const xm=Ma,Bi=Gv,u2=r2,p2=l2,f2=km;let h2=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(n,r)=>String.fromCharCode(Number.parseInt(r,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(n,r)=>String.fromCharCode(Number.parseInt(r,16))}},this.addExternalEntities=g2,this.parseXml=v2,this.parseTextData=m2,this.resolveNameSpace=_2,this.buildAttributesMap=w2,this.isItStopNode=x2,this.replaceEntitiesValue=$2,this.readStopNodeData=z2,this.saveTextToParentTag=k2,this.addChild=b2,this.ignoreAttributesFn=f2(this.options.ignoreAttributes)}};function g2(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];this.lastEntities[r]={regex:new RegExp("&"+r+";","g"),val:t[r]}}}function m2(t,e,n,r,i,s,a){if(t!==void 0&&(this.options.trimValues&&!r&&(t=t.trim()),t.length>0)){a||(t=this.replaceEntitiesValue(t));const c=this.options.tagValueProcessor(e,t,n,i,s);return c==null?t:typeof c!=typeof t||c!==t?c:this.options.trimValues?Il(t,this.options.parseTagValue,this.options.numberParseOptions):t.trim()===t?Il(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function _2(t){if(this.options.removeNSPrefix){const e=t.split(":"),n=t.charAt(0)==="/"?"/":"";if(e[0]==="xmlns")return"";e.length===2&&(t=n+e[1])}return t}const y2=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function w2(t,e,n){if(this.options.ignoreAttributes!==!0&&typeof t=="string"){const r=xm.getAllMatches(t,y2),i=r.length,s={};for(let a=0;a<i;a++){const c=this.resolveNameSpace(r[a][1]);if(this.ignoreAttributesFn(c,e))continue;let l=r[a][4],d=this.options.attributeNamePrefix+c;if(c.length)if(this.options.transformAttributeName&&(d=this.options.transformAttributeName(d)),d==="__proto__"&&(d="#__proto__"),l!==void 0){this.options.trimValues&&(l=l.trim()),l=this.replaceEntitiesValue(l);const u=this.options.attributeValueProcessor(c,l,e);u==null?s[d]=l:typeof u!=typeof l||u!==l?s[d]=u:s[d]=Il(l,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(s[d]=!0)}if(!Object.keys(s).length)return;if(this.options.attributesGroupName){const a={};return a[this.options.attributesGroupName]=s,a}return s}}const v2=function(t){t=t.replace(/\r\n?/g,`
8
8
  `);const e=new Bi("!xml");let n=e,r="",i="";for(let s=0;s<t.length;s++)if(t[s]==="<")if(t[s+1]==="/"){const a=dr(t,">",s,"Closing Tag is not closed.");let c=t.substring(s+2,a).trim();if(this.options.removeNSPrefix){const u=c.indexOf(":");u!==-1&&(c=c.substr(u+1))}this.options.transformTagName&&(c=this.options.transformTagName(c)),n&&(r=this.saveTextToParentTag(r,n,i));const l=i.substring(i.lastIndexOf(".")+1);if(c&&this.options.unpairedTags.indexOf(c)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: </${c}>`);let d=0;l&&this.options.unpairedTags.indexOf(l)!==-1?(d=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):d=i.lastIndexOf("."),i=i.substring(0,d),n=this.tagsNodeStack.pop(),r="",s=a}else if(t[s+1]==="?"){let a=Nl(t,s,!1,"?>");if(!a)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,i),!(this.options.ignoreDeclaration&&a.tagName==="?xml"||this.options.ignorePiTags)){const c=new Bi(a.tagName);c.add(this.options.textNodeName,""),a.tagName!==a.tagExp&&a.attrExpPresent&&(c[":@"]=this.buildAttributesMap(a.tagExp,i,a.tagName)),this.addChild(n,c,i)}s=a.closeIndex+1}else if(t.substr(s+1,3)==="!--"){const a=dr(t,"-->",s+4,"Comment is not closed.");if(this.options.commentPropName){const c=t.substring(s+4,a-2);r=this.saveTextToParentTag(r,n,i),n.add(this.options.commentPropName,[{[this.options.textNodeName]:c}])}s=a}else if(t.substr(s+1,2)==="!D"){const a=u2(t,s);this.docTypeEntities=a.entities,s=a.i}else if(t.substr(s+1,2)==="!["){const a=dr(t,"]]>",s,"CDATA is not closed.")-2,c=t.substring(s+9,a);r=this.saveTextToParentTag(r,n,i);let l=this.parseTextData(c,n.tagname,i,!0,!1,!0,!0);l==null&&(l=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:c}]):n.add(this.options.textNodeName,l),s=a+2}else{let a=Nl(t,s,this.options.removeNSPrefix),c=a.tagName;const l=a.rawTagName;let d=a.tagExp,u=a.attrExpPresent,f=a.closeIndex;this.options.transformTagName&&(c=this.options.transformTagName(c)),n&&r&&n.tagname!=="!xml"&&(r=this.saveTextToParentTag(r,n,i,!1));const h=n;if(h&&this.options.unpairedTags.indexOf(h.tagname)!==-1&&(n=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),c!==e.tagname&&(i+=i?"."+c:c),this.isItStopNode(this.options.stopNodes,i,c)){let m="";if(d.length>0&&d.lastIndexOf("/")===d.length-1)c[c.length-1]==="/"?(c=c.substr(0,c.length-1),i=i.substr(0,i.length-1),d=c):d=d.substr(0,d.length-1),s=a.closeIndex;else if(this.options.unpairedTags.indexOf(c)!==-1)s=a.closeIndex;else{const v=this.readStopNodeData(t,l,f+1);if(!v)throw new Error(`Unexpected end of ${l}`);s=v.i,m=v.tagContent}const y=new Bi(c);c!==d&&u&&(y[":@"]=this.buildAttributesMap(d,i,c)),m&&(m=this.parseTextData(m,c,i,!0,u,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),y.add(this.options.textNodeName,m),this.addChild(n,y,i)}else{if(d.length>0&&d.lastIndexOf("/")===d.length-1){c[c.length-1]==="/"?(c=c.substr(0,c.length-1),i=i.substr(0,i.length-1),d=c):d=d.substr(0,d.length-1),this.options.transformTagName&&(c=this.options.transformTagName(c));const m=new Bi(c);c!==d&&u&&(m[":@"]=this.buildAttributesMap(d,i,c)),this.addChild(n,m,i),i=i.substr(0,i.lastIndexOf("."))}else{const m=new Bi(c);this.tagsNodeStack.push(n),c!==d&&u&&(m[":@"]=this.buildAttributesMap(d,i,c)),this.addChild(n,m,i),n=m}r="",s=f}}else r+=t[s];return e.child};function b2(t,e,n){const r=this.options.updateTag(e.tagname,n,e[":@"]);r===!1||(typeof r=="string"&&(e.tagname=r),t.addChild(e))}const $2=function(t){if(this.options.processEntities){for(let e in this.docTypeEntities){const n=this.docTypeEntities[e];t=t.replace(n.regx,n.val)}for(let e in this.lastEntities){const n=this.lastEntities[e];t=t.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let e in this.htmlEntities){const n=this.htmlEntities[e];t=t.replace(n.regex,n.val)}t=t.replace(this.ampEntity.regex,this.ampEntity.val)}return t};function k2(t,e,n,r){return t&&(r===void 0&&(r=Object.keys(e.child).length===0),t=this.parseTextData(t,e.tagname,n,!1,e[":@"]?Object.keys(e[":@"]).length!==0:!1,r),t!==void 0&&t!==""&&e.add(this.options.textNodeName,t),t=""),t}function x2(t,e,n){const r="*."+n;for(const i in t){const s=t[i];if(r===s||e===s)return!0}return!1}function S2(t,e,n=">"){let r,i="";for(let s=e;s<t.length;s++){let a=t[s];if(r)a===r&&(r="");else if(a==='"'||a==="'")r=a;else if(a===n[0])if(n[1]){if(t[s+1]===n[1])return{data:i,index:s}}else return{data:i,index:s};else a===" "&&(a=" ");i+=a}}function dr(t,e,n,r){const i=t.indexOf(e,n);if(i===-1)throw new Error(r);return i+e.length-1}function Nl(t,e,n,r=">"){const i=S2(t,e+1,r);if(!i)return;let s=i.data;const a=i.index,c=s.search(/\s/);let l=s,d=!0;c!==-1&&(l=s.substring(0,c),s=s.substring(c+1).trimStart());const u=l;if(n){const f=l.indexOf(":");f!==-1&&(l=l.substr(f+1),d=l!==i.data.substr(f+1))}return{tagName:l,tagExp:s,closeIndex:a,attrExpPresent:d,rawTagName:u}}function z2(t,e,n){const r=n;let i=1;for(;n<t.length;n++)if(t[n]==="<")if(t[n+1]==="/"){const s=dr(t,">",n,`${e} is not closed`);if(t.substring(n+2,s).trim()===e&&(i--,i===0))return{tagContent:t.substring(r,n),i:s};n=s}else if(t[n+1]==="?")n=dr(t,"?>",n+1,"StopNode is not closed.");else if(t.substr(n+1,3)==="!--")n=dr(t,"-->",n+3,"StopNode is not closed.");else if(t.substr(n+1,2)==="![")n=dr(t,"]]>",n,"StopNode is not closed.")-2;else{const s=Nl(t,n,">");s&&((s&&s.tagName)===e&&s.tagExp[s.tagExp.length-1]!=="/"&&i++,n=s.closeIndex)}}function Il(t,e,n){if(e&&typeof t=="string"){const r=t.trim();return r==="true"?!0:r==="false"?!1:p2(t,n)}else return xm.isExist(t)?t:""}var A2=h2,Sm={};function E2(t,e){return zm(t,e)}function zm(t,e,n){let r;const i={};for(let s=0;s<t.length;s++){const a=t[s],c=C2(a);let l="";if(n===void 0?l=c:l=n+"."+c,c===e.textNodeName)r===void 0?r=a[c]:r+=""+a[c];else{if(c===void 0)continue;if(a[c]){let d=zm(a[c],e,l);const u=I2(d,e);a[":@"]?N2(d,a[":@"],l,e):Object.keys(d).length===1&&d[e.textNodeName]!==void 0&&!e.alwaysCreateTextNode?d=d[e.textNodeName]:Object.keys(d).length===0&&(e.alwaysCreateTextNode?d[e.textNodeName]="":d=""),i[c]!==void 0&&i.hasOwnProperty(c)?(Array.isArray(i[c])||(i[c]=[i[c]]),i[c].push(d)):e.isArray(c,l,u)?i[c]=[d]:i[c]=d}}}return typeof r=="string"?r.length>0&&(i[e.textNodeName]=r):r!==void 0&&(i[e.textNodeName]=r),i}function C2(t){const e=Object.keys(t);for(let n=0;n<e.length;n++){const r=e[n];if(r!==":@")return r}}function N2(t,e,n,r){if(e){const i=Object.keys(e),s=i.length;for(let a=0;a<s;a++){const c=i[a];r.isArray(c,n+"."+c,!0,!0)?t[c]=[e[c]]:t[c]=e[c]}}}function I2(t,e){const{textNodeName:n}=e,r=Object.keys(t).length;return!!(r===0||r===1&&(t[n]||typeof t[n]=="boolean"||t[n]===0))}Sm.prettify=E2;const{buildOptions:j2}=zu,O2=A2,{prettify:T2}=Sm,P2=xu;let R2=class{constructor(e){this.externalEntities={},this.options=j2(e)}parse(e,n){if(typeof e!="string")if(e.toString)e=e.toString();else throw new Error("XML data is accepted in String or Bytes[] form.");if(n){n===!0&&(n={});const s=P2.validate(e,n);if(s!==!0)throw Error(`${s.err.msg}:${s.err.line}:${s.err.col}`)}const r=new O2(this.options);r.addExternalEntities(this.externalEntities);const i=r.parseXml(e);return this.options.preserveOrder||i===void 0?i:T2(i,this.options)}addEntity(e,n){if(n.indexOf("&")!==-1)throw new Error("Entity value can't have '&'");if(e.indexOf("&")!==-1||e.indexOf(";")!==-1)throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if(n==="&")throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=n}};var B2=R2;const L2=`
@@ -69,7 +69,7 @@
69
69
  <\/script>
70
70
  </body>
71
71
 
72
- </html>`}const jm=["openid","profile","email","address","phone"];async function ib(t,e){var O,U;const{tenantId:n,clientId:r,audience:i,requestedScopes:s}=e,a=s.filter(T=>jm.includes(T)),l=(await t.env.data.resourceServers.list(n)).resource_servers.filter(T=>T.identifier===i);if(l.length===0)return{scopes:a,permissions:[]};const d=l[0];if(!d)return{scopes:a,permissions:[]};const u=((O=d.options)==null?void 0:O.enforce_policies)===!0,f=((U=d.options)==null?void 0:U.token_dialect)||"access_token",m=(await t.env.data.clientGrants.list(n,{q:`client_id:"${r}"`})).client_grants.find(T=>T.audience===i);if(!m)return{scopes:a,permissions:[]};const y=m.scope||[],v=(d.scopes||[]).map(T=>T.value);if(!u){let T;return s.length===0?T=y.filter(W=>v.includes(W)):T=s.filter(W=>v.includes(W)&&y.includes(W)),{scopes:[...new Set([...a,...T])],permissions:[]}}if(f==="access_token_authz"){const T=y.filter(R=>v.includes(R));return{scopes:a,permissions:T}}let b;return s.length===0?b=y.filter(T=>v.includes(T)):b=s.filter(T=>v.includes(T)&&y.includes(T)),{scopes:[...new Set([...a,...b])],permissions:[]}}async function Vs(t,e){var ne,Q;if(e.grantType===Vt.ClientCredential)return await ib(t,{tenantId:e.tenantId,clientId:e.clientId,audience:e.audience,requestedScopes:e.requestedScopes});const{tenantId:n,userId:r,audience:i,requestedScopes:s,organizationId:a}=e;if(a&&!(await t.env.data.userOrganizations.list(n,{q:`user_id:${r}`,per_page:1e3})).userOrganizations.some(N=>N.organization_id===a))throw new ee(403,{error:"access_denied",error_description:"User is not a member of the specified organization"});const c=s.filter(K=>jm.includes(K)),d=(await t.env.data.resourceServers.list(n)).resource_servers.filter(K=>K.identifier===i);if(d.length===0)return{scopes:c,permissions:[]};const u=d[0];if(!u)return{scopes:c,permissions:[]};const f=(u.scopes||[]).map(K=>K.value),h=((ne=u.options)==null?void 0:ne.enforce_policies)===!0,m=((Q=u.options)==null?void 0:Q.token_dialect)||"access_token";if(!h){const K=s.filter(N=>f.includes(N));return{scopes:[...new Set([...c,...K])],permissions:[]}}const y=await t.env.data.userPermissions.list(n,r,void 0,a),v=await t.env.data.userRoles.list(n,r,void 0,""),b=a?await t.env.data.userRoles.list(n,r,void 0,a):[],A=[...v,...b],O=[];for(const K of A)(await t.env.data.rolePermissions.list(n,K.id)).forEach(N=>{N.resource_server_identifier===i&&O.push(N.permission_name)});const U=new Set;y.forEach(K=>{K.resource_server_identifier===i&&U.add(K.permission_name)}),O.forEach(K=>{U.add(K)});const T=Array.from(U);if(m==="access_token_authz"){const K=T.filter(de=>f.includes(de));return{scopes:c,permissions:K}}const R=s.filter(K=>f.includes(K)&&T.includes(K));return{scopes:[...new Set([...c,...R])],permissions:[]}}const mf=["sub","iss","aud","exp","nbf","iat","jti"];async function Fa(t,e){var U,T;const{authParams:n,user:r,client:i,session_id:s,organization:a,permissions:c,impersonatingUser:l}=e,{signingKeys:d}=await t.env.data.keys.list({q:"type:jwt_signing"}),u=d.filter(R=>!R.revoked_at||new Date(R.revoked_at)>new Date),f=u[u.length-1];if(!(f!=null&&f.pkcs7))throw new ee(500,{message:"No signing key available"});const h=bv(f.pkcs7),m=t.var.custom_domain?`https://${t.var.custom_domain}/`:t.env.ISSUER,y={aud:n.audience||"default",scope:n.scope||"",sub:(r==null?void 0:r.user_id)||n.client_id,iss:m,tenant_id:t.var.tenant_id,sid:s,act:l?{sub:l.user_id}:void 0,org_id:a?a.id:void 0,permissions:c},v=r&&((U=n.scope)!=null&&U.split(" ").includes("openid"))?{aud:n.client_id,sub:r.user_id,iss:m,sid:s,nonce:n.nonce,given_name:r.given_name,family_name:r.family_name,nickname:r.nickname,picture:r.picture,locale:r.locale,name:r.name,email:r.email,email_verified:r.email_verified,act:l?{sub:l.user_id}:void 0,org_id:a==null?void 0:a.id,org_name:a==null?void 0:a.name}:void 0;(T=t.env.hooks)!=null&&T.onExecuteCredentialsExchange&&await t.env.hooks.onExecuteCredentialsExchange({ctx:t,client:i,user:r,request:{ip:t.var.ip||"",user_agent:t.var.useragent||"",method:t.req.method,url:t.req.url},scope:n.scope||"",grant_type:""},{accessToken:{setCustomClaim:(R,W)=>{if(mf.includes(R))throw new Error(`Cannot overwrite reserved claim '${R}'`);y[R]=W}},idToken:{setCustomClaim:(R,W)=>{if(mf.includes(R))throw new Error(`Cannot overwrite reserved claim '${R}'`);v&&(v[R]=W)}},access:{deny:R=>{throw new ee(400,{message:`Access denied: ${R}`})}},token:{createServiceToken:async R=>{const{createServiceToken:W}=await Promise.resolve().then(()=>sb);return(await W(t,t.var.tenant_id,R.scope,R.expiresInSeconds)).access_token}}});const b={includeIssuedTimestamp:!0,expiresIn:l?new qs(1,"h"):new qs(1,"d"),headers:{kid:f.kid}},A=await cf("RS256",h,y,b),O=v?await cf("RS256",h,v,b):void 0;return{access_token:A,refresh_token:e.refresh_token,id_token:O,token_type:"Bearer",expires_in:l?3600:86400}}async function Om(t,e){return{code:(await t.env.data.codes.create(e.client.tenant.id,{code_id:Ne(),user_id:e.user.user_id,code_type:"authorization_code",login_id:e.login_id,expires_at:new Date(Date.now()+xv*1e3).toISOString(),code_challenge:e.authParams.code_challenge,code_challenge_method:e.authParams.code_challenge_method,redirect_uri:e.authParams.redirect_uri,state:e.authParams.state,nonce:e.authParams.nonce})).code_id,state:e.authParams.state}}async function Tm(t,e){const{client:n,scope:r,audience:i=n.tenant.audience,session_id:s}=e;return await t.env.data.refreshTokens.create(n.tenant.id,{id:Ne(),session_id:s,client_id:n.client_id,idle_expires_at:new Date(Date.now()+Da*1e3).toISOString(),user_id:e.user.user_id,device:{last_ip:t.var.ip,initial_ip:t.var.ip,last_user_agent:t.var.useragent||"",initial_user_agent:t.var.useragent||"",initial_asn:"",last_asn:""},resource_servers:[{audience:i,scopes:r}],rotating:!1})}async function Pm(t,{user:e,client:n,loginSession:r}){const i=await t.env.data.sessions.create(n.tenant.id,{id:Ne(),user_id:e.user_id,login_session_id:r.id,idle_expires_at:new Date(Date.now()+Da*1e3).toISOString(),device:{last_ip:t.var.ip||"",initial_ip:t.var.ip||"",last_user_agent:t.var.useragent||"",initial_user_agent:t.var.useragent||"",initial_asn:"",last_asn:""},clients:[n.client_id]});return await t.env.data.loginSessions.update(n.tenant.id,r.id,{session_id:i.id}),i}async function un(t,e){var m,y;const{authParams:n,client:r,ticketAuth:i}=e;let{user:s}=e;const a=n.response_type||Bt.CODE,c=n.response_mode||ln.QUERY;if(i){if(!e.loginSession)throw new ee(500,{message:"Login session not found for ticket auth."});const v=vv(),b=Ne(12),A=await t.env.data.codes.create(r.tenant.id,{code_id:Ne(),code_type:"ticket",login_id:e.loginSession.id,expires_at:new Date(Date.now()+zv).toISOString(),code_verifier:[b,v].join("|"),redirect_uri:n.redirect_uri,state:n.state,nonce:n.nonce});return t.json({login_ticket:A.code_id,co_verifier:v,co_id:b})}let l=e.refreshToken,d=e.sessionId;if(!d&&((m=e.loginSession)!=null&&m.session_id)){d=e.loginSession.session_id;const v=await t.env.data.sessions.get(r.tenant.id,d);v&&!v.clients.includes(r.client_id)&&await t.env.data.sessions.update(r.tenant.id,d,{clients:[...v.clients,r.client_id]})}else if(!d){if(!e.loginSession)throw new ee(500,{message:"Login session not found for creating a new session."});d=(await Pm(t,{user:s,client:r,loginSession:e.loginSession})).id}if(!l&&((y=n.scope)!=null&&y.split(" ").includes("offline_access"))&&![Bt.TOKEN,Bt.CODE].includes(a)&&!e.impersonatingUser&&(l=(await Tm(t,{user:s,client:r,session_id:d,scope:n.scope,audience:n.audience})).id),c===ln.SAML_POST){if(!d)throw new S(500,{message:"Session ID not available for SAML response"});return rb(t,e.client,e.authParams,s,d)}const u=await ob(t,{authParams:n,user:s,client:r,session_id:d,refresh_token:l,strategy:e.strategy,loginSession:e.loginSession,responseType:a,skipHooks:e.skipHooks,organization:e.organization,impersonatingUser:e.impersonatingUser});if(u instanceof Response)return u;if(c===ln.WEB_MESSAGE){if(!n.redirect_uri)throw new ee(400,{message:"Redirect URI not allowed for WEB_MESSAGE response mode."});const v=new Headers;if(d){const O=Hs(r.tenant.id,d,t.var.host||"");O&&v.set("set-cookie",O)}else console.warn("Session ID not available for WEB_MESSAGE, cookie will not be set.");const b=new URL(n.redirect_uri),A=`${b.protocol}//${b.host}`;return t.html(jl(A,JSON.stringify({...u,state:n.state})),{headers:v})}if(!n.redirect_uri)throw new ee(400,{message:"Redirect uri not found for this response mode."});const f=new Headers;if(d){const v=Hs(r.tenant.id,d,t.var.custom_domain||t.req.header("host")||"");v&&f.set("set-cookie",v)}const h=new URL(n.redirect_uri);if("code"in u)h.searchParams.set("code",u.code),u.state&&h.searchParams.set("state",u.state);else if("access_token"in u)h.hash=new URLSearchParams({access_token:u.access_token,...u.id_token&&{id_token:u.id_token},token_type:u.token_type,expires_in:u.expires_in.toString(),...n.state&&{state:n.state},...n.scope&&{scope:n.scope}}).toString();else throw new ee(500,{message:"Invalid token response for implicit flow."});return f.set("location",h.toString()),new Response("Redirecting",{status:302,headers:f})}async function ob(t,e){var c,l,d,u,f,h;let{user:n}=e;const r=e.responseType||Bt.TOKEN;if(n&&e.organization&&!(await t.env.data.userOrganizations.list(e.client.tenant.id,{q:`user_id:${n.user_id}`,per_page:1e3})).userOrganizations.some(v=>v.organization_id===e.organization.id))throw new ee(403,{error:"access_denied",error_description:"User is not a member of the specified organization"});let i=e.authParams.scope||"",s=[];if(e.authParams.audience)try{let m;if(e.grantType===Vt.ClientCredential||!n&&!e.user)m=await Vs(t,{grantType:Vt.ClientCredential,tenantId:e.client.tenant.id,clientId:e.client.client_id,audience:e.authParams.audience,requestedScopes:((c=e.authParams.scope)==null?void 0:c.split(" "))||[],organizationId:(l=e.organization)==null?void 0:l.id});else{const y=(n==null?void 0:n.user_id)||((d=e.user)==null?void 0:d.user_id);if(!y)throw new ee(400,{error:"invalid_request",error_description:"User ID is required for user-based grants"});m=await Vs(t,{grantType:e.grantType,tenantId:e.client.tenant.id,userId:y,clientId:e.client.client_id,audience:e.authParams.audience,requestedScopes:((u=e.authParams.scope)==null?void 0:u.split(" "))||[],organizationId:(f=e.organization)==null?void 0:f.id})}i=m.scopes.join(" "),s=m.permissions}catch(m){if(m instanceof S)throw m}const a={...e.authParams,scope:i};if(e.loginSession&&n&&!e.skipHooks){e.strategy&&((h=n.app_metadata)==null?void 0:h.strategy)!==e.strategy&&(n.app_metadata={...n.app_metadata,strategy:e.strategy},await t.env.data.users.update(e.client.tenant.id,n.user_id,{app_metadata:{...n.app_metadata||{},strategy:e.strategy}}));const m=await Um(t,t.env.data,e.client.tenant.id,n,e.loginSession,{client:e.client,authParams:a,authStrategy:e.strategy?{strategy:e.strategy,strategy_type:"social"}:void 0});if(m instanceof Response)return m;n=m}if(r===Bt.CODE){if(!n||!e.loginSession)throw new ee(500,{message:"User and loginSession is required for code flow"});return await Om(t,{user:n,client:e.client,authParams:a,login_id:e.loginSession.id})}else return Fa(t,{...e,user:n,authParams:a,permissions:s})}const _f="auth-service";async function Au(t,e,n,r){const i=await t.env.data.tenants.get(e);if(!i)throw new Error(`Tenant not found: ${e}`);const s={client_id:_f,tenant:i,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),name:"Auth Service",global:!1,is_first_party:!0,oidc_conformant:!1,sso:!1,sso_disabled:!1,cross_origin_authentication:!1,custom_login_page_on:!1,require_pushed_authorization_requests:!1,require_proof_of_possession:!1,client_metadata:{disable_sign_ups:"false",email_validation:"disabled"},disable_sign_ups:!1,email_validation:"disabled",connections:[]},a=await Fa(t,{client:s,authParams:{client_id:_f,response_type:Bt.TOKEN,scope:n}});return{access_token:a.access_token,token_type:a.token_type,expires_in:r||3600}}const sb=Object.freeze(Object.defineProperty({__proto__:null,createServiceToken:Au},Symbol.toStringTag,{value:"Module"}));var ab={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},Rm=()=>{var n,r;const t=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(const[i,s]of Object.entries(ab))if(cb(s))return i}return typeof(t==null?void 0:t.EdgeRuntime)=="string"?"edge-light":(t==null?void 0:t.fastly)!==void 0?"fastly":((r=(n=t==null?void 0:t.process)==null?void 0:n.release)==null?void 0:r.name)==="node"?"node":"other"},cb=t=>navigator.userAgent.startsWith(t);function ve(t,e){Rm()==="workerd"&&t.executionCtx.waitUntil(e)}async function Bm(t,e,n){const r=await Au(t,n.tenant_id,"webhook");for await(const i of e.filter(s=>"url"in s))if(!(await fetch(i.url,{method:"POST",headers:{Authorization:`Bearer ${r.access_token}`,"Content-Type":"application/json"},body:JSON.stringify(n)})).ok){const a=be(t,{type:_e.FAILED_HOOK,description:`Failed to invoke hook ${i.hook_id}`});ve(t,t.env.data.logs.create(n.tenant_id,a))}}function lb(t){return async(e,n)=>{const{hooks:r}=await t.env.data.hooks.list(e);return await Bm(t,r,{tenant_id:e,user:n,trigger_id:"post-user-registration"}),n}}function db(t){return async(e,n)=>{const{hooks:r}=await t.env.data.hooks.list(e,{q:"trigger_id:pre-user-signup",page:0,per_page:100,include_totals:!1});await Bm(t,r,{tenant_id:e,email:n,trigger_id:"pre-user-signup"})}}function yf(t){return typeof t.form_id=="string"}async function ub(t,e,n){var l;const r=t.env.data,i=t.var.tenant_id||t.req.header("tenant-id");if(!i)throw new S(400,{message:"Missing tenant_id in context"});const s=await r.forms.get(i,e);if(!s)throw new S(404,{message:"Form not found for post-user-login hook"});let a=(l=s.start)==null?void 0:l.next_node;if(!a&&s.nodes&&s.nodes.length>0){const d=s.nodes.find(u=>u.type==="STEP");a=d==null?void 0:d.id}if(!a)throw new S(400,{message:"No start node found in form"});let c=`/u/forms/${s.id}/nodes/${a}?state=${encodeURIComponent(n.id)}`;return new Response(null,{status:302,headers:{location:c}})}function wf(t){return typeof t.page_id=="string"&&typeof t.enabled=="boolean"}async function pb(t,e,n,r,i){const s=t.env.data,a=t.var.tenant_id||t.req.header("tenant-id");if(!a)throw new S(400,{message:"Missing tenant_id in context"});if(i&&!(await s.userPermissions.list(a,r.user_id)).some(u=>u.permission_name===i))return r;let c=`/u/${e}?state=${encodeURIComponent(n.id)}`;return new Response(null,{status:302,headers:{location:c}})}function ri(t,e){return{createServiceToken:async n=>(await Au(t,e,n.scope,n.expiresInSeconds)).access_token}}function vf(t){return typeof t.url=="string"}function fb(t,e){return async(n,r)=>{var a,c,l;if(t.var.client_id){const d=await e.legacyClients.get(t.var.client_id);if(!d)throw new ee(400,{message:"Client not found"});r.email&&await Lm(t,d,e,r.email)}const i={method:t.req.method,ip:t.req.query("x-real-ip")||"",user_agent:t.req.query("user-agent"),url:((a=t.var.loginSession)==null?void 0:a.authorization_url)||t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserRegistration)try{await t.env.hooks.onExecutePreUserRegistration({ctx:t,user:r,request:i},{user:{setUserMetadata:async(d,u)=>{r[d]=u}},token:ri(t,n)})}catch{const u=be(t,{type:_e.FAILED_SIGNUP,description:"Pre user registration hook failed"});ve(t,e.logs.create(n,u))}let s=await fv(e)(n,r);if((l=t.env.hooks)!=null&&l.onExecutePostUserRegistration)try{await t.env.hooks.onExecutePostUserRegistration({ctx:t,user:r,request:i},{user:{},token:ri(t,n)})}catch{const u=be(t,{type:_e.FAILED_SIGNUP,description:"Post user registration hook failed"});ve(t,t.env.data.logs.create(n,u))}return await lb(t)(n,s),s}}function hb(t,e){return async(n,r,i)=>{var c;if(Object.keys(i).length===1&&"linked_to"in i)return e.users.update(n,r,i);const s=await e.users.get(n,r);if(!s)throw new ee(404,{message:"User not found"});const a={method:t.req.method,ip:t.var.ip||t.get("ip")||"",user_agent:t.var.useragent||t.get("useragent")||"",url:t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserUpdate)try{await t.env.hooks.onExecutePreUserUpdate({ctx:t,tenant:{id:n},user_id:r,user:s,updates:i,request:a},{user:{setUserMetadata:async(l,d)=>{i[l]=d}},cancel:()=>{throw new ee(400,{message:"User update cancelled by pre-update hook"})},token:ri(t,n)})}catch{throw new ee(400,{message:"Pre user update hook failed"})}if(await e.users.update(n,r,i),i.email||i.email_verified){const l=await e.users.get(n,r);if(l&&l.email&&l.email_verified){const{users:d}=await e.users.list(n,{page:0,per_page:10,include_totals:!1,q:`email:${l.email}`}),u=d.filter(f=>f.email_verified&&f.user_id!==r&&!f.linked_to);u.length>0&&await e.users.update(n,r,{linked_to:u[0].user_id})}}if(i.email){const l=be(t,{type:_e.SUCCESS_CHANGE_EMAIL,description:`Email updated to ${i.email}`,userId:r});ve(t,e.logs.create(n,l))}return!0}}async function gb(t,e,n,r){var i,s;if(((i=e.client_metadata)==null?void 0:i.disable_sign_ups)==="true"){const a=(s=t.var.loginSession)==null?void 0:s.authorization_url;if(a&&new URL(a).searchParams.get("screen_hint")==="signup")return{allowed:!0};if(!await Cu({userAdapter:n.users,tenant_id:e.tenant.id,email:r}))return{allowed:!1,reason:"Public signup is disabled for this client"}}return{allowed:!0}}async function Lm(t,e,n,r){const i=await gb(t,e,n,r);if(!i.allowed){const s=be(t,{type:_e.FAILED_SIGNUP,description:i.reason||"Signup not allowed"});throw ve(t,n.logs.create(e.tenant.id,s)),new ee(400,{message:i.reason||"Signups are disabled for this client"})}await db(t)(e.tenant.id,r)}function mb(t,e){return async(n,r)=>{var c,l;const i=await e.users.get(n,r);if(!i)return!1;const s={method:t.req.method,ip:t.var.ip||t.get("ip")||"",user_agent:t.var.useragent||t.get("useragent")||"",url:t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserDeletion)try{await t.env.hooks.onExecutePreUserDeletion({ctx:t,user:i,user_id:r,request:s,tenant:{id:n}},{cancel:()=>{throw new ee(400,{message:"User deletion cancelled by pre-deletion hook"})},token:ri(t,n)})}catch(d){if(d instanceof S)throw d;const u=be(t,{type:_e.FAILED_HOOK,description:`Pre user deletion hook failed: ${d instanceof Error?d.message:String(d)}`});throw ve(t,e.logs.create(n,u)),new ee(400,{message:"Pre user deletion hook failed"})}const a=await e.users.remove(n,r);if(a){const d=be(t,{type:_e.SUCCESS_USER_DELETION,description:`user_id: ${r}`,strategy:i.provider||"auth0",strategy_type:i.is_social?"social":"database"});d.connection=i.connection||"",d.connection_id="",d.details={...d.details,body:{tenant:n,connection:i.connection||""}},ve(t,e.logs.create(n,d))}if(a&&((l=t.env.hooks)!=null&&l.onExecutePostUserDeletion))try{await t.env.hooks.onExecutePostUserDeletion({ctx:t,user:i,user_id:r,request:s,tenant:{id:n}},{token:ri(t,n)})}catch(d){const u=be(t,{type:_e.FAILED_HOOK,description:`Post user deletion hook failed: ${d instanceof Error?d.message:String(d)}`});ve(t,e.logs.create(n,u))}return a}}function xo(t,e){const n=e;return{...e,users:{...e.users,create:fb(t,n),update:hb(t,n),remove:mb(t,n)}}}async function _b(t,e,n,r,i,s){var u,f,h,m,y,v,b,A,O,U,T,R,W,ne;let a=[];try{a=(await e.userRoles.list(n,r.user_id,void 0,"")).map(de=>de.name||de.id)}catch(Q){console.error("Error fetching user roles:",Q)}let c={};if(r.connection)try{const K=(await e.connections.list(n,{page:0,per_page:100,include_totals:!1})).connections.find(de=>de.name===r.connection);K&&(c={id:K.id,name:K.name,strategy:K.strategy||r.provider,metadata:K.options||{}})}catch(Q){console.error("Error fetching connection info:",Q)}let l;try{if((u=i.authParams)!=null&&u.organization){const Q=await e.organizations.get(n,i.authParams.organization);Q&&(l={id:Q.id,name:Q.name,display_name:Q.display_name||Q.name,metadata:Q.metadata||{}})}}catch(Q){console.error("Error fetching organization info:",Q)}const d=t.get("countryCode");return{ctx:t,client:s.client,user:r,request:{asn:void 0,ip:t.get("ip")||"",user_agent:t.get("useragent"),method:t.req.method,url:t.req.url,geoip:{cityName:void 0,continentCode:void 0,countryCode:d||void 0,countryName:void 0,latitude:void 0,longitude:void 0,timeZone:void 0}},transaction:{id:i.id,locale:((f=i.authParams)==null?void 0:f.ui_locales)||"en",login_hint:void 0,prompt:(h=i.authParams)==null?void 0:h.prompt,redirect_uri:(m=i.authParams)==null?void 0:m.redirect_uri,requested_scopes:((v=(y=i.authParams)==null?void 0:y.scope)==null?void 0:v.split(" "))||[],response_mode:(b=i.authParams)==null?void 0:b.response_mode,response_type:(A=i.authParams)==null?void 0:A.response_type,state:(O=i.authParams)==null?void 0:O.state,ui_locales:(U=i.authParams)==null?void 0:U.ui_locales},scope:((T=s.authParams)==null?void 0:T.scope)||"",grant_type:((R=s.authParams)==null?void 0:R.grant_type)||"",audience:(W=s.authParams)==null?void 0:W.audience,authentication:{methods:[{name:r.is_social?"federated":"pwd",timestamp:new Date().toISOString()}]},authorization:{roles:a},connection:Object.keys(c).length>0?c:{id:r.connection||"Username-Password-Authentication",name:r.connection||"Username-Password-Authentication",strategy:r.provider||"auth0"},organization:l,resource_server:(ne=s.authParams)!=null&&ne.audience?{identifier:s.authParams.audience}:void 0,stats:{logins_count:r.login_count||0},tenant:{id:n},session:{id:i.id,created_at:i.created_at,authenticated_at:new Date().toISOString(),clients:[{client_id:s.client.client_id}],device:{initial_ip:t.get("ip"),initial_user_agent:t.get("useragent"),last_ip:r.last_ip||t.get("ip"),last_user_agent:t.get("useragent")}}}}async function Um(t,e,n,r,i,s){var f,h,m,y,v;const a=(f=s==null?void 0:s.authStrategy)!=null&&f.strategy_type?s.authStrategy.strategy_type:r.is_social?"social":"database",c=((h=s==null?void 0:s.authStrategy)==null?void 0:h.strategy)||r.connection||"",l=be(t,{type:_e.SUCCESS_LOGIN,description:`Successful login for ${r.user_id}`,userId:r.user_id,strategy_type:a,strategy:c,connection:c,audience:(m=s==null?void 0:s.authParams)==null?void 0:m.audience,scope:(y=s==null?void 0:s.authParams)==null?void 0:y.scope});if(ve(t,e.logs.create(n,l)),await e.users.update(n,r.user_id,{last_login:new Date().toISOString(),last_ip:t.var.ip||"",login_count:r.login_count+1}),(v=t.env.hooks)!=null&&v.onExecutePostLogin&&(s!=null&&s.client)&&(s!=null&&s.authParams)&&i){let b=null;const A=await _b(t,e,n,r,i,{client:s.client,authParams:s.authParams});if(await t.env.hooks.onExecutePostLogin(A,{prompt:{render:O=>{}},redirect:{sendUserTo:(O,U)=>{const T=new URL(O,t.req.url);T.searchParams.set("state",i.id),U!=null&&U.query&&Object.entries(U.query).forEach(([R,W])=>{T.searchParams.set(R,W)}),b=T.toString()},encodeToken:O=>JSON.stringify({payload:O.payload,exp:Date.now()+(O.expiresInSeconds||900)*1e3}),validateToken:O=>null},token:ri(t,n)}),b)return new Response(null,{status:302,headers:{location:b}})}const{hooks:d}=await e.hooks.list(n,{q:"trigger_id:post-user-login",page:0,per_page:100,include_totals:!1});if(i){const b=d.find(O=>O.enabled&&yf(O));if(b&&yf(b))return ub(t,b.form_id,i);const A=d.find(O=>O.enabled&&wf(O));if(A&&wf(A))return pb(t,A.page_id,i,r,A.permission_required)}const u=d.filter(b=>b.enabled&&vf(b));for(const b of u)if(vf(b))try{await fetch(b.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tenant_id:n,user:r,trigger_id:"post-user-login"})})}catch{const O=be(t,{type:_e.FAILED_HOOK,description:`Failed to invoke post-user-login webhook: ${b.url}`});ve(t,e.logs.create(n,O))}return r}function yb(t){return xo(t,t.env.data)}async function Eu(t,e,n){return(await t.list(e,{page:0,per_page:10,include_totals:!1,q:`email:${n}`})).users}async function vi({userAdapter:t,tenant_id:e,username:n,provider:r}){const i=r==="sms"?`phone_number:${n}`:`email:${n}`,{users:s}=await t.list(e,{page:0,per_page:10,include_totals:!1,q:`${i} provider:${r}`});return s.length>1&&console.error("More than one user found for same email and provider"),s[0]||null}async function Cu({userAdapter:t,tenant_id:e,email:n}){var c;const{users:r}=await t.list(e,{page:0,per_page:10,include_totals:!1,q:`email:${n}`}),i=r.filter(l=>!(l.provider==="auth2"&&!l.email_verified));if(i.length===0)return;const s=i.filter(l=>!l.linked_to);if(s.length>0)return s.length>1&&console.error("More than one primary user found for same email"),s[0];const a=await t.get(e,(c=i[0])==null?void 0:c.linked_to);if(!a)throw new Error("Primary account not found");return a}async function io({userAdapter:t,tenant_id:e,username:n,provider:r}){const i=await vi({userAdapter:t,tenant_id:e,username:n,provider:r});return i?i.linked_to?t.get(e,i.linked_to):i:null}async function qa(t,e){const{username:n,provider:r,connection:i,client:s,userId:a,isSocial:c,profileData:l={},ip:d=""}=e;let u=await io({userAdapter:t.env.data.users,tenant_id:e.client.tenant.id,username:n,provider:r});if(!u){const f={user_id:`${r}|${a||La()}`,email:i!=="sms"?n:void 0,phone_number:i==="sms"?n:void 0,name:n,provider:r,connection:i,email_verified:!0,last_ip:d,is_social:c,last_login:new Date().toISOString(),profileData:JSON.stringify(l)};u=await yb(t).users.create(s.tenant.id,f),t.set("user_id",u.user_id)}return u}const Qe=o.z.object({page:o.z.string().min(0).optional().default("0").transform(t=>parseInt(t,10)).openapi({description:"The page number where 0 is the first page"}),per_page:o.z.string().min(1).optional().default("10").transform(t=>parseInt(t,10)).openapi({description:"The number of items per page"}),include_totals:o.z.string().optional().default("false").transform(t=>t==="true").openapi({description:"If the total number of items should be included in the response"}),sort:o.z.string().regex(/^.+:(-1|1)$/).optional().openapi({description:"A property that should have the format 'string:-1' or 'string:1'"}),q:o.z.string().optional().openapi({description:"A lucene query string used to filter the results"})});function ft(t){if(!t)return;const[e,n]=t.split(":"),r=n==="1"?"asc":"desc";if(!(!e||!r))return{sort_by:e,sort_order:r}}const bf=St.extend({users:o.z.array(an)}),wb=St.extend({sessions:o.z.array(Ba)}),vb=St.extend({organizations:o.z.array(Dn)}),bb=new o.OpenAPIHono().openapi(o.createRoute({tags:["users"],method:"get",path:"/",request:{query:Qe,headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([o.z.array(an),bf])}},description:"List of users"}}}),async t=>{const{page:e,per_page:n,include_totals:r,sort:i,q:s}=t.req.valid("query");if(s!=null&&s.includes("identities.profileData.email")){const d=s.split("=")[1],f=(await t.env.data.users.list(t.var.tenant_id,{page:e,per_page:n,include_totals:r,q:`email:${d}`})).users.filter(y=>y.linked_to),[h]=f;if(!h)return t.json([]);const m=await t.env.data.users.get(t.var.tenant_id,h.linked_to);if(!m)throw new S(500,{message:"Primary account not found"});return t.json([an.parse(m)])}const a=["-_exists_:linked_to"];s&&a.push(s);const c=await t.env.data.users.list(t.var.tenant_id,{page:e,per_page:n,include_totals:r,sort:ft(i),q:a.join(" ")}),l=c.users.filter(d=>!d.linked_to);return r?t.json(bf.parse({users:l,length:c.length,start:c.start,limit:c.limit})):t.json(o.z.array(an).parse(l))}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:an}},description:"List of users"}}}),async t=>{const{user_id:e}=t.req.valid("param"),n=await t.env.data.users.get(t.var.tenant_id,e);if(!n)throw new S(404);if(n.linked_to)throw new S(404,{message:"User is linked to another user"});return t.json(n)}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Status"}}}),async t=>{const{user_id:e}=t.req.valid("param");if(!await t.env.data.users.remove(t.var.tenant_id,e))throw new S(404);const r=be(t,{type:_e.SUCCESS_API_OPERATION,description:"Delete a User"});return r.details={...r.details,response:{statusCode:204,body:{}}},ve(t,t.env.data.logs.create(t.var.tenant_id,r)),t.text("OK")}).openapi(o.createRoute({tags:["users"],method:"post",path:"/",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({...Os.shape,password:o.z.string().optional()})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{content:{"application/json":{schema:an}},description:"Status"}}}),async t=>{const e=t.req.valid("json");t.set("body",e);const{email:n,phone_number:r,name:i,linked_to:s,email_verified:a,provider:c,connection:l,password:d}=e,u=e.user_id,f=u?ns(u):La(),h=`${e.provider}|${f}`;try{const m=await t.env.data.users.create(t.var.tenant_id,{email:n,user_id:h,name:i||n||r,phone_number:r,provider:c,connection:l,linked_to:s??void 0,email_verified:a||!1,last_ip:"",is_social:!1,last_login:new Date().toISOString()});if(d){const b={user_id:m.user_id,password:await ti.hash(d,10),algorithm:"bcrypt"};await t.env.data.passwords.create(t.var.tenant_id,b)}t.set("user_id",m.user_id);const y=be(t,{type:_e.SUCCESS_API_OPERATION,description:"User created"});ve(t,t.env.data.logs.create(t.var.tenant_id,y));const v={...m,identities:[{connection:m.connection,provider:m.provider,user_id:ns(m.user_id),isSocial:m.is_social}]};return t.json(an.parse(v),{status:201})}catch(m){throw m.message==="User already exists"?new S(409,{message:"User already exists"}):m}}).openapi(o.createRoute({tags:["users"],method:"patch",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({...Os.shape,verify_email:o.z.boolean(),password:o.z.string()}).partial()}}},params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Status"}}}),async t=>{var m;const{data:e}=t.env,n=t.req.valid("json"),{user_id:r}=t.req.valid("param"),{verify_email:i,password:s,connection:a,...c}=n,l=await e.users.get(t.var.tenant_id,r);if(!l)throw new S(404);if(l.linked_to)throw new S(404,{message:"User is linked to another user"});let d=r,u=l;if(a)if(l.connection===a)d=r,u=l;else{const v=(await e.users.list(t.var.tenant_id,{page:0,per_page:100,include_totals:!1,q:`linked_to:${r}`})).users.find(b=>b.connection===a);if(!v)throw new S(404,{message:`No identity found with connection: ${a}`});d=v.user_id,u=v}if(c.email&&c.email!==u.email){const y=await Eu(t.env.data.users,t.var.tenant_id,c.email);if(y.length&&y.some(v=>v.user_id!==d))throw new S(409,{message:"Another user with the same email address already exists."})}if(await t.env.data.users.update(t.var.tenant_id,d,c),s){let y;if(a)if(a==="Username-Password-Authentication")y={provider:u.provider,user_id:ns(d)};else throw new S(400,{message:`Cannot set password for connection: ${a}`});else if(y=(m=l.identities)==null?void 0:m.find(A=>A.connection==="Username-Password-Authentication"),!y)throw new S(400,{message:"User does not have a password identity"});const v={user_id:`${y.provider}|${y.user_id}`,password:await ti.hash(s,10),algorithm:"bcrypt"};await e.passwords.get(t.var.tenant_id,`${y.provider}|${y.user_id}`)?await e.passwords.update(t.var.tenant_id,v):await e.passwords.create(t.var.tenant_id,v)}const f=await t.env.data.users.get(t.var.tenant_id,r);if(!f)throw new S(500);const h=be(t,{type:_e.SUCCESS_API_OPERATION,description:"Update a User",body:n});return h.details={...h.details,response:{statusCode:200,body:f}},ve(t,t.env.data.logs.create(t.var.tenant_id,h)),t.json(f)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/identities",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.union([o.z.object({link_with:o.z.string()}),o.z.object({user_id:o.z.string(),provider:o.z.string(),connection:o.z.string().optional()})])}}},params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{201:{content:{"application/json":{schema:o.z.array(o.z.object({connection:o.z.string(),provider:o.z.string(),user_id:o.z.string(),isSocial:o.z.boolean()}))}},description:"Status"}}}),async t=>{const e=t.req.valid("json"),{user_id:n}=t.req.valid("param"),r="link_with"in e?e.link_with:e.user_id,i=await t.env.data.users.get(t.var.tenant_id,n);if(!i)throw new S(400,{message:"Linking an inexistent identity is not allowed."});await t.env.data.users.update(t.var.tenant_id,r,{linked_to:n});const s=await t.env.data.users.list(t.var.tenant_id,{page:0,per_page:10,include_totals:!1,q:`linked_to:${n}`}),a=[i,...s.users].map(c=>({connection:c.connection,provider:c.provider,user_id:ns(c.user_id),isSocial:c.is_social}));return t.json(a,{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/identities/{provider}/{linked_user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string(),provider:o.z.string(),linked_user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{content:{"application/json":{schema:o.z.array(an)}},description:"Status"}}}),async t=>{const{user_id:e,provider:n,linked_user_id:r}=t.req.valid("param");await t.env.data.users.unlink(t.var.tenant_id,e,n,r);const i=await t.env.data.users.get(t.var.tenant_id,e);if(!i)throw new S(404);return t.json([an.parse(i)])}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/sessions",request:{query:Qe,headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([o.z.array(Ba),wb])}},description:"List of sessions"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{include_totals:n,page:r,per_page:i}=t.req.valid("query"),s=await t.env.data.sessions.list(t.var.tenant_id,{page:r,per_page:i,include_totals:n,q:`user_id:${e}`});return n?t.json(s):t.json(s.sessions)}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),query:Qe},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:am}},description:"User permissions"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{page:n,per_page:r,sort:i,q:s}=t.req.valid("query");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const c=await t.env.data.userPermissions.list(t.var.tenant_id,e,{page:n,per_page:r,include_totals:!1,sort:ft(i),q:s});return t.json(c)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({permissions:o.z.array(o.z.object({permission_name:o.z.string(),resource_server_identifier:o.z.string()}))})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{description:"Permissions assigned to user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{permissions:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userPermissions.create(t.var.tenant_id,e,{user_id:e,resource_server_identifier:i.resource_server_identifier,permission_name:i.permission_name}))throw new S(500,{message:"Failed to assign permissions to user"});return t.json({message:"Permissions assigned successfully"},{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({permissions:o.z.array(o.z.object({permission_name:o.z.string(),resource_server_identifier:o.z.string()}))})}}}},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Permissions removed from user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{permissions:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userPermissions.remove(t.var.tenant_id,e,i))throw new S(500,{message:"Failed to remove permissions from user"});return t.json({message:"Permissions removed successfully"})}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:Ms}},description:"User roles"}}}),async t=>{const{user_id:e}=t.req.valid("param");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const r=await t.env.data.userRoles.list(t.var.tenant_id,e,void 0,"");return t.json(r)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({roles:o.z.array(o.z.string())})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{description:"Roles assigned to user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{roles:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userRoles.create(t.var.tenant_id,e,i,""))throw new S(500,{message:"Failed to assign roles to user"});return t.json({message:"Roles assigned successfully"},{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({roles:o.z.array(o.z.string())})}}}},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Roles removed from user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{roles:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userRoles.remove(t.var.tenant_id,e,i,""))throw new S(500,{message:"Failed to remove roles from user"});return t.json({message:"Roles removed successfully"})}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/organizations",request:{params:o.z.object({user_id:o.z.string()}),query:Qe,headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([vb,o.z.array(Dn)])}},description:"List of user organizations"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{page:n,per_page:r,include_totals:i,sort:s}=t.req.valid("query");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const c=await t.env.data.userOrganizations.listUserOrganizations(t.var.tenant_id,e,{page:n,per_page:r,sort:ft(s)});return i?t.json({organizations:c.organizations,start:c.start,limit:c.limit,length:c.length}):t.json(c.organizations)}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/organizations/{organization_id}",request:{params:o.z.object({user_id:o.z.string(),organization_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"User removed from organization successfully"}}}),async t=>{const{user_id:e,organization_id:n}=t.req.valid("param");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const s=(await t.env.data.userOrganizations.list(t.var.tenant_id,{q:`user_id:${e}`,per_page:100})).userOrganizations.find(a=>a.organization_id===n);if(!s)throw new S(404,{message:"User is not a member of this organization"});return await t.env.data.userOrganizations.remove(t.var.tenant_id,s.id),t.json({message:"User removed from organization successfully"})});/*! *****************************************************************************
72
+ </html>`}const jm=["openid","profile","email","address","phone"];async function ib(t,e){var O,U;const{tenantId:n,clientId:r,audience:i,requestedScopes:s}=e,a=s.filter(T=>jm.includes(T)),l=(await t.env.data.resourceServers.list(n)).resource_servers.filter(T=>T.identifier===i);if(l.length===0)return{scopes:a,permissions:[]};const d=l[0];if(!d)return{scopes:a,permissions:[]};const u=((O=d.options)==null?void 0:O.enforce_policies)===!0,f=((U=d.options)==null?void 0:U.token_dialect)||"access_token",m=(await t.env.data.clientGrants.list(n,{q:`client_id:"${r}"`})).client_grants.find(T=>T.audience===i);if(!m)return{scopes:a,permissions:[]};const y=m.scope||[],v=(d.scopes||[]).map(T=>T.value);if(!u){let T;return s.length===0?T=y.filter(W=>v.includes(W)):T=s.filter(W=>v.includes(W)&&y.includes(W)),{scopes:[...new Set([...a,...T])],permissions:[]}}if(f==="access_token_authz"){const T=y.filter(R=>v.includes(R));return{scopes:a,permissions:T}}let b;return s.length===0?b=y.filter(T=>v.includes(T)):b=s.filter(T=>v.includes(T)&&y.includes(T)),{scopes:[...new Set([...a,...b])],permissions:[]}}async function Vs(t,e){var ne,Q;if(e.grantType===Vt.ClientCredential)return await ib(t,{tenantId:e.tenantId,clientId:e.clientId,audience:e.audience,requestedScopes:e.requestedScopes});const{tenantId:n,userId:r,audience:i,requestedScopes:s,organizationId:a}=e;if(a&&!(await t.env.data.userOrganizations.list(n,{q:`user_id:${r}`,per_page:1e3})).userOrganizations.some(N=>N.organization_id===a))throw new ee(403,{error:"access_denied",error_description:"User is not a member of the specified organization"});const c=s.filter(K=>jm.includes(K)),d=(await t.env.data.resourceServers.list(n)).resource_servers.filter(K=>K.identifier===i);if(d.length===0)return{scopes:c,permissions:[]};const u=d[0];if(!u)return{scopes:c,permissions:[]};const f=(u.scopes||[]).map(K=>K.value),h=((ne=u.options)==null?void 0:ne.enforce_policies)===!0,m=((Q=u.options)==null?void 0:Q.token_dialect)||"access_token";if(!h){const K=s.filter(N=>f.includes(N));return{scopes:[...new Set([...c,...K])],permissions:[]}}const y=await t.env.data.userPermissions.list(n,r,void 0,a),v=await t.env.data.userRoles.list(n,r,void 0,""),b=a?await t.env.data.userRoles.list(n,r,void 0,a):[],A=[...v,...b],O=[];for(const K of A)(await t.env.data.rolePermissions.list(n,K.id)).forEach(N=>{N.resource_server_identifier===i&&O.push(N.permission_name)});const U=new Set;y.forEach(K=>{K.resource_server_identifier===i&&U.add(K.permission_name)}),O.forEach(K=>{U.add(K)});const T=Array.from(U);if(m==="access_token_authz"){const K=T.filter(de=>f.includes(de));return{scopes:c,permissions:K}}const R=s.filter(K=>f.includes(K)&&T.includes(K));return{scopes:[...new Set([...c,...R])],permissions:[]}}const mf=["sub","iss","aud","exp","nbf","iat","jti"];async function Fa(t,e){var U,T;const{authParams:n,user:r,client:i,session_id:s,organization:a,permissions:c,impersonatingUser:l}=e,{signingKeys:d}=await t.env.data.keys.list({q:"type:jwt_signing"}),u=d.filter(R=>!R.revoked_at||new Date(R.revoked_at)>new Date),f=u[u.length-1];if(!(f!=null&&f.pkcs7))throw new ee(500,{message:"No signing key available"});const h=bv(f.pkcs7),m=t.var.custom_domain?`https://${t.var.custom_domain}/`:t.env.ISSUER,y={aud:n.audience||"default",scope:n.scope||"",sub:(r==null?void 0:r.user_id)||n.client_id,iss:m,tenant_id:t.var.tenant_id,sid:s,act:l?{sub:l.user_id}:void 0,org_id:a?a.id:void 0,permissions:c},v=r&&((U=n.scope)!=null&&U.split(" ").includes("openid"))?{aud:n.client_id,sub:r.user_id,iss:m,sid:s,nonce:n.nonce,given_name:r.given_name,family_name:r.family_name,nickname:r.nickname,picture:r.picture,locale:r.locale,name:r.name,email:r.email,email_verified:r.email_verified,act:l?{sub:l.user_id}:void 0,org_id:a==null?void 0:a.id,org_name:a==null?void 0:a.name}:void 0;(T=t.env.hooks)!=null&&T.onExecuteCredentialsExchange&&await t.env.hooks.onExecuteCredentialsExchange({ctx:t,client:i,user:r,request:{ip:t.var.ip||"",user_agent:t.var.useragent||"",method:t.req.method,url:t.req.url},scope:n.scope||"",grant_type:""},{accessToken:{setCustomClaim:(R,W)=>{if(mf.includes(R))throw new Error(`Cannot overwrite reserved claim '${R}'`);y[R]=W}},idToken:{setCustomClaim:(R,W)=>{if(mf.includes(R))throw new Error(`Cannot overwrite reserved claim '${R}'`);v&&(v[R]=W)}},access:{deny:R=>{throw new ee(400,{message:`Access denied: ${R}`})}},token:{createServiceToken:async R=>{const{createServiceToken:W}=await Promise.resolve().then(()=>sb);return(await W(t,t.var.tenant_id,R.scope,R.expiresInSeconds)).access_token}}});const b={includeIssuedTimestamp:!0,expiresIn:l?new qs(1,"h"):new qs(1,"d"),headers:{kid:f.kid}},A=await cf("RS256",h,y,b),O=v?await cf("RS256",h,v,b):void 0;return{access_token:A,refresh_token:e.refresh_token,id_token:O,token_type:"Bearer",expires_in:l?3600:86400}}async function Om(t,e){return{code:(await t.env.data.codes.create(e.client.tenant.id,{code_id:Ne(),user_id:e.user.user_id,code_type:"authorization_code",login_id:e.login_id,expires_at:new Date(Date.now()+xv*1e3).toISOString(),code_challenge:e.authParams.code_challenge,code_challenge_method:e.authParams.code_challenge_method,redirect_uri:e.authParams.redirect_uri,state:e.authParams.state,nonce:e.authParams.nonce})).code_id,state:e.authParams.state}}async function Tm(t,e){const{client:n,scope:r,audience:i=n.tenant.audience,session_id:s}=e;return await t.env.data.refreshTokens.create(n.tenant.id,{id:Ne(),session_id:s,client_id:n.client_id,idle_expires_at:new Date(Date.now()+Da*1e3).toISOString(),user_id:e.user.user_id,device:{last_ip:t.var.ip,initial_ip:t.var.ip,last_user_agent:t.var.useragent||"",initial_user_agent:t.var.useragent||"",initial_asn:"",last_asn:""},resource_servers:[{audience:i,scopes:r}],rotating:!1})}async function Pm(t,{user:e,client:n,loginSession:r}){const i=await t.env.data.sessions.create(n.tenant.id,{id:Ne(),user_id:e.user_id,login_session_id:r.id,idle_expires_at:new Date(Date.now()+Da*1e3).toISOString(),device:{last_ip:t.var.ip||"",initial_ip:t.var.ip||"",last_user_agent:t.var.useragent||"",initial_user_agent:t.var.useragent||"",initial_asn:"",last_asn:""},clients:[n.client_id]});return await t.env.data.loginSessions.update(n.tenant.id,r.id,{session_id:i.id}),i}async function un(t,e){var m,y;const{authParams:n,client:r,ticketAuth:i}=e;let{user:s}=e;const a=n.response_type||Bt.CODE,c=n.response_mode||ln.QUERY;if(i){if(!e.loginSession)throw new ee(500,{message:"Login session not found for ticket auth."});const v=vv(),b=Ne(12),A=await t.env.data.codes.create(r.tenant.id,{code_id:Ne(),code_type:"ticket",login_id:e.loginSession.id,expires_at:new Date(Date.now()+zv).toISOString(),code_verifier:[b,v].join("|"),redirect_uri:n.redirect_uri,state:n.state,nonce:n.nonce});return t.json({login_ticket:A.code_id,co_verifier:v,co_id:b})}let l=e.refreshToken,d=e.sessionId;if(!d&&((m=e.loginSession)!=null&&m.session_id)){d=e.loginSession.session_id;const v=await t.env.data.sessions.get(r.tenant.id,d);v&&!v.clients.includes(r.client_id)&&await t.env.data.sessions.update(r.tenant.id,d,{clients:[...v.clients,r.client_id]})}else if(!d){if(!e.loginSession)throw new ee(500,{message:"Login session not found for creating a new session."});d=(await Pm(t,{user:s,client:r,loginSession:e.loginSession})).id}if(!l&&((y=n.scope)!=null&&y.split(" ").includes("offline_access"))&&![Bt.TOKEN,Bt.CODE].includes(a)&&!e.impersonatingUser&&(l=(await Tm(t,{user:s,client:r,session_id:d,scope:n.scope,audience:n.audience})).id),c===ln.SAML_POST){if(!d)throw new S(500,{message:"Session ID not available for SAML response"});return rb(t,e.client,e.authParams,s,d)}const u=await ob(t,{authParams:n,user:s,client:r,session_id:d,refresh_token:l,strategy:e.strategy,loginSession:e.loginSession,responseType:a,skipHooks:e.skipHooks,organization:e.organization,impersonatingUser:e.impersonatingUser});if(u instanceof Response)return u;if(c===ln.WEB_MESSAGE){if(!n.redirect_uri)throw new ee(400,{message:"Redirect URI not allowed for WEB_MESSAGE response mode."});const v=new Headers;if(d){const O=Hs(r.tenant.id,d,t.var.host||"");O&&v.set("set-cookie",O)}else console.warn("Session ID not available for WEB_MESSAGE, cookie will not be set.");const b=new URL(n.redirect_uri),A=`${b.protocol}//${b.host}`;return t.html(jl(A,JSON.stringify({...u,state:n.state})),{headers:v})}if(!n.redirect_uri)throw new ee(400,{message:"Redirect uri not found for this response mode."});const f=new Headers;if(d){const v=Hs(r.tenant.id,d,t.var.custom_domain||t.req.header("host")||"");v&&f.set("set-cookie",v)}const h=new URL(n.redirect_uri);if("code"in u)h.searchParams.set("code",u.code),u.state&&h.searchParams.set("state",u.state);else if("access_token"in u)h.hash=new URLSearchParams({access_token:u.access_token,...u.id_token&&{id_token:u.id_token},token_type:u.token_type,expires_in:u.expires_in.toString(),...n.state&&{state:n.state},...n.scope&&{scope:n.scope}}).toString();else throw new ee(500,{message:"Invalid token response for implicit flow."});return f.set("location",h.toString()),new Response("Redirecting",{status:302,headers:f})}async function ob(t,e){var c,l,d,u,f,h;let{user:n}=e;const r=e.responseType||Bt.TOKEN;if(n&&e.organization&&!(await t.env.data.userOrganizations.list(e.client.tenant.id,{q:`user_id:${n.user_id}`,per_page:1e3})).userOrganizations.some(v=>v.organization_id===e.organization.id))throw new ee(403,{error:"access_denied",error_description:"User is not a member of the specified organization"});let i=e.authParams.scope||"",s=[];if(e.authParams.audience)try{let m;if(e.grantType===Vt.ClientCredential||!n&&!e.user)m=await Vs(t,{grantType:Vt.ClientCredential,tenantId:e.client.tenant.id,clientId:e.client.client_id,audience:e.authParams.audience,requestedScopes:((c=e.authParams.scope)==null?void 0:c.split(" "))||[],organizationId:(l=e.organization)==null?void 0:l.id});else{const y=(n==null?void 0:n.user_id)||((d=e.user)==null?void 0:d.user_id);if(!y)throw new ee(400,{error:"invalid_request",error_description:"User ID is required for user-based grants"});m=await Vs(t,{grantType:e.grantType,tenantId:e.client.tenant.id,userId:y,clientId:e.client.client_id,audience:e.authParams.audience,requestedScopes:((u=e.authParams.scope)==null?void 0:u.split(" "))||[],organizationId:(f=e.organization)==null?void 0:f.id})}i=m.scopes.join(" "),s=m.permissions}catch(m){if(m instanceof S)throw m}const a={...e.authParams,scope:i};if(e.loginSession&&n&&!e.skipHooks){e.strategy&&((h=n.app_metadata)==null?void 0:h.strategy)!==e.strategy&&(n.app_metadata={...n.app_metadata,strategy:e.strategy},await t.env.data.users.update(e.client.tenant.id,n.user_id,{app_metadata:{...n.app_metadata||{},strategy:e.strategy}}));const m=await Um(t,t.env.data,e.client.tenant.id,n,e.loginSession,{client:e.client,authParams:a,authStrategy:e.strategy?{strategy:e.strategy,strategy_type:"social"}:void 0});if(m instanceof Response)return m;n=m}if(r===Bt.CODE){if(!n||!e.loginSession)throw new ee(500,{message:"User and loginSession is required for code flow"});return await Om(t,{user:n,client:e.client,authParams:a,login_id:e.loginSession.id})}else return Fa(t,{...e,user:n,authParams:a,permissions:s})}const _f="auth-service";async function Au(t,e,n,r){const i=await t.env.data.tenants.get(e);if(!i)throw new Error(`Tenant not found: ${e}`);const s={client_id:_f,tenant:i,created_at:new Date().toISOString(),updated_at:new Date().toISOString(),name:"Auth Service",global:!1,is_first_party:!0,oidc_conformant:!1,sso:!1,sso_disabled:!1,cross_origin_authentication:!1,custom_login_page_on:!1,require_pushed_authorization_requests:!1,require_proof_of_possession:!1,client_metadata:{disable_sign_ups:"false",email_validation:"disabled"},disable_sign_ups:!1,email_validation:"disabled",connections:[]},a=await Fa(t,{client:s,authParams:{client_id:_f,response_type:Bt.TOKEN,scope:n}});return{access_token:a.access_token,token_type:a.token_type,expires_in:r||3600}}const sb=Object.freeze(Object.defineProperty({__proto__:null,createServiceToken:Au},Symbol.toStringTag,{value:"Module"}));var ab={deno:"Deno",bun:"Bun",workerd:"Cloudflare-Workers",node:"Node.js"},Rm=()=>{var n,r;const t=globalThis;if(typeof navigator<"u"&&typeof navigator.userAgent=="string"){for(const[i,s]of Object.entries(ab))if(cb(s))return i}return typeof(t==null?void 0:t.EdgeRuntime)=="string"?"edge-light":(t==null?void 0:t.fastly)!==void 0?"fastly":((r=(n=t==null?void 0:t.process)==null?void 0:n.release)==null?void 0:r.name)==="node"?"node":"other"},cb=t=>navigator.userAgent.startsWith(t);function ve(t,e){Rm()==="workerd"&&t.executionCtx.waitUntil(e)}async function Bm(t,e,n){const r=await Au(t,n.tenant_id,"webhook");for await(const i of e.filter(s=>"url"in s))if(!(await fetch(i.url,{method:"POST",headers:{Authorization:`Bearer ${r.access_token}`,"Content-Type":"application/json"},body:JSON.stringify(n)})).ok){const a=be(t,{type:_e.FAILED_HOOK,description:`Failed to invoke hook ${i.hook_id}`});ve(t,t.env.data.logs.create(n.tenant_id,a))}}function lb(t){return async(e,n)=>{const{hooks:r}=await t.env.data.hooks.list(e);return await Bm(t,r,{tenant_id:e,user:n,trigger_id:"post-user-registration"}),n}}function db(t){return async(e,n)=>{const{hooks:r}=await t.env.data.hooks.list(e,{q:"trigger_id:pre-user-signup",page:0,per_page:100,include_totals:!1});await Bm(t,r,{tenant_id:e,email:n,trigger_id:"pre-user-signup"})}}function yf(t){return typeof t.form_id=="string"}async function ub(t,e,n){var l;const r=t.env.data,i=t.var.tenant_id||t.req.header("tenant-id");if(!i)throw new S(400,{message:"Missing tenant_id in context"});const s=await r.forms.get(i,e);if(!s)throw new S(404,{message:"Form not found for post-user-login hook"});let a=(l=s.start)==null?void 0:l.next_node;if(!a&&s.nodes&&s.nodes.length>0){const d=s.nodes.find(u=>u.type==="STEP");a=d==null?void 0:d.id}if(!a)throw new S(400,{message:"No start node found in form"});let c=`/u/forms/${s.id}/nodes/${a}?state=${encodeURIComponent(n.id)}`;return new Response(null,{status:302,headers:{location:c}})}function wf(t){return typeof t.page_id=="string"&&typeof t.enabled=="boolean"}async function pb(t,e,n,r,i){const s=t.env.data,a=t.var.tenant_id||t.req.header("tenant-id");if(!a)throw new S(400,{message:"Missing tenant_id in context"});if(i&&!(await s.userPermissions.list(a,r.user_id)).some(u=>u.permission_name===i))return r;let c=`/u/${e}?state=${encodeURIComponent(n.id)}`;return new Response(null,{status:302,headers:{location:c}})}function ri(t,e){return{createServiceToken:async n=>(await Au(t,e,n.scope,n.expiresInSeconds)).access_token}}function vf(t){return typeof t.url=="string"}function fb(t,e){return async(n,r)=>{var a,c,l;if(t.var.client_id){const d=await e.legacyClients.get(t.var.client_id);if(!d)throw new ee(400,{message:"Client not found"});r.email&&await Lm(t,d,e,r.email)}const i={method:t.req.method,ip:t.req.query("x-real-ip")||"",user_agent:t.req.query("user-agent"),url:((a=t.var.loginSession)==null?void 0:a.authorization_url)||t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserRegistration)try{await t.env.hooks.onExecutePreUserRegistration({ctx:t,user:r,request:i},{user:{setUserMetadata:async(d,u)=>{r[d]=u}},token:ri(t,n)})}catch{const u=be(t,{type:_e.FAILED_SIGNUP,description:"Pre user registration hook failed"});ve(t,e.logs.create(n,u))}let s=await fv(e)(n,r);if((l=t.env.hooks)!=null&&l.onExecutePostUserRegistration)try{await t.env.hooks.onExecutePostUserRegistration({ctx:t,user:r,request:i},{user:{},token:ri(t,n)})}catch{const u=be(t,{type:_e.FAILED_SIGNUP,description:"Post user registration hook failed"});ve(t,t.env.data.logs.create(n,u))}return await lb(t)(n,s),s}}function hb(t,e){return async(n,r,i)=>{var c;if(Object.keys(i).length===1&&"linked_to"in i)return e.users.update(n,r,i);const s=await e.users.get(n,r);if(!s)throw new ee(404,{message:"User not found"});const a={method:t.req.method,ip:t.var.ip||t.get("ip")||"",user_agent:t.var.useragent||t.get("useragent")||"",url:t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserUpdate)try{await t.env.hooks.onExecutePreUserUpdate({ctx:t,tenant:{id:n},user_id:r,user:s,updates:i,request:a},{user:{setUserMetadata:async(l,d)=>{i[l]=d}},cancel:()=>{throw new ee(400,{message:"User update cancelled by pre-update hook"})},token:ri(t,n)})}catch{throw new ee(400,{message:"Pre user update hook failed"})}if(await e.users.update(n,r,i),i.email||i.email_verified){const l=await e.users.get(n,r);if(l&&l.email&&l.email_verified){const{users:d}=await e.users.list(n,{page:0,per_page:10,include_totals:!1,q:`email:${l.email}`}),u=d.filter(f=>f.email_verified&&f.user_id!==r&&!f.linked_to);u.length>0&&await e.users.update(n,r,{linked_to:u[0].user_id})}}if(i.email){const l=be(t,{type:_e.SUCCESS_CHANGE_EMAIL,description:`Email updated to ${i.email}`,userId:r});ve(t,e.logs.create(n,l))}return!0}}async function gb(t,e,n,r){var i,s;if(((i=e.client_metadata)==null?void 0:i.disable_sign_ups)==="true"){const a=(s=t.var.loginSession)==null?void 0:s.authorization_url;if(a&&new URL(a).searchParams.get("screen_hint")==="signup")return{allowed:!0};if(!await Cu({userAdapter:n.users,tenant_id:e.tenant.id,email:r}))return{allowed:!1,reason:"Public signup is disabled for this client"}}return{allowed:!0}}async function Lm(t,e,n,r){const i=await gb(t,e,n,r);if(!i.allowed){const s=be(t,{type:_e.FAILED_SIGNUP,description:i.reason||"Signup not allowed"});throw ve(t,n.logs.create(e.tenant.id,s)),new ee(400,{message:i.reason||"Signups are disabled for this client"})}await db(t)(e.tenant.id,r)}function mb(t,e){return async(n,r)=>{var c,l;const i=await e.users.get(n,r);if(!i)return!1;const s={method:t.req.method,ip:t.var.ip||t.get("ip")||"",user_agent:t.var.useragent||t.get("useragent")||"",url:t.req.url};if((c=t.env.hooks)!=null&&c.onExecutePreUserDeletion)try{await t.env.hooks.onExecutePreUserDeletion({ctx:t,user:i,user_id:r,request:s,tenant:{id:n}},{cancel:()=>{throw new ee(400,{message:"User deletion cancelled by pre-deletion hook"})},token:ri(t,n)})}catch(d){if(d instanceof S)throw d;const u=be(t,{type:_e.FAILED_HOOK,description:`Pre user deletion hook failed: ${d instanceof Error?d.message:String(d)}`});throw ve(t,e.logs.create(n,u)),new ee(400,{message:"Pre user deletion hook failed"})}const a=await e.users.remove(n,r);if(a){const d=be(t,{type:_e.SUCCESS_USER_DELETION,description:`user_id: ${r}`,strategy:i.provider||"auth0",strategy_type:i.is_social?"social":"database"});d.connection=i.connection||"",d.connection_id="",d.details={...d.details,body:{tenant:n,connection:i.connection||""}},ve(t,e.logs.create(n,d))}if(a&&((l=t.env.hooks)!=null&&l.onExecutePostUserDeletion))try{await t.env.hooks.onExecutePostUserDeletion({ctx:t,user:i,user_id:r,request:s,tenant:{id:n}},{token:ri(t,n)})}catch(d){const u=be(t,{type:_e.FAILED_HOOK,description:`Post user deletion hook failed: ${d instanceof Error?d.message:String(d)}`});ve(t,e.logs.create(n,u))}return a}}function xo(t,e){const n=e;return{...e,users:{...e.users,create:fb(t,n),update:hb(t,n),remove:mb(t,n)}}}async function _b(t,e,n,r,i,s){var u,f,h,m,y,v,b,A,O,U,T,R,W,ne;let a=[];try{a=(await e.userRoles.list(n,r.user_id,void 0,"")).map(de=>de.name||de.id)}catch(Q){console.error("Error fetching user roles:",Q)}let c={};if(r.connection)try{const K=(await e.connections.list(n,{page:0,per_page:100,include_totals:!1})).connections.find(de=>de.name===r.connection);K&&(c={id:K.id,name:K.name,strategy:K.strategy||r.provider,metadata:K.options||{}})}catch(Q){console.error("Error fetching connection info:",Q)}let l;try{if((u=i.authParams)!=null&&u.organization){const Q=await e.organizations.get(n,i.authParams.organization);Q&&(l={id:Q.id,name:Q.name,display_name:Q.display_name||Q.name,metadata:Q.metadata||{}})}}catch(Q){console.error("Error fetching organization info:",Q)}const d=t.get("countryCode");return{ctx:t,client:s.client,user:r,request:{asn:void 0,ip:t.get("ip")||"",user_agent:t.get("useragent"),method:t.req.method,url:t.req.url,geoip:{cityName:void 0,continentCode:void 0,countryCode:d||void 0,countryName:void 0,latitude:void 0,longitude:void 0,timeZone:void 0}},transaction:{id:i.id,locale:((f=i.authParams)==null?void 0:f.ui_locales)||"en",login_hint:void 0,prompt:(h=i.authParams)==null?void 0:h.prompt,redirect_uri:(m=i.authParams)==null?void 0:m.redirect_uri,requested_scopes:((v=(y=i.authParams)==null?void 0:y.scope)==null?void 0:v.split(" "))||[],response_mode:(b=i.authParams)==null?void 0:b.response_mode,response_type:(A=i.authParams)==null?void 0:A.response_type,state:(O=i.authParams)==null?void 0:O.state,ui_locales:(U=i.authParams)==null?void 0:U.ui_locales},scope:((T=s.authParams)==null?void 0:T.scope)||"",grant_type:((R=s.authParams)==null?void 0:R.grant_type)||"",audience:(W=s.authParams)==null?void 0:W.audience,authentication:{methods:[{name:r.is_social?"federated":"pwd",timestamp:new Date().toISOString()}]},authorization:{roles:a},connection:Object.keys(c).length>0?c:{id:r.connection||"Username-Password-Authentication",name:r.connection||"Username-Password-Authentication",strategy:r.provider||"auth0"},organization:l,resource_server:(ne=s.authParams)!=null&&ne.audience?{identifier:s.authParams.audience}:void 0,stats:{logins_count:r.login_count||0},tenant:{id:n},session:{id:i.id,created_at:i.created_at,authenticated_at:new Date().toISOString(),clients:[{client_id:s.client.client_id}],device:{initial_ip:t.get("ip"),initial_user_agent:t.get("useragent"),last_ip:r.last_ip||t.get("ip"),last_user_agent:t.get("useragent")}}}}async function Um(t,e,n,r,i,s){var f,h,m,y,v;const a=(f=s==null?void 0:s.authStrategy)!=null&&f.strategy_type?s.authStrategy.strategy_type:r.is_social?"social":"database",c=((h=s==null?void 0:s.authStrategy)==null?void 0:h.strategy)||r.connection||"",l=be(t,{type:_e.SUCCESS_LOGIN,description:`Successful login for ${r.user_id}`,userId:r.user_id,strategy_type:a,strategy:c,connection:c,audience:(m=s==null?void 0:s.authParams)==null?void 0:m.audience,scope:(y=s==null?void 0:s.authParams)==null?void 0:y.scope});if(ve(t,e.logs.create(n,l)),await e.users.update(n,r.user_id,{last_login:new Date().toISOString(),last_ip:t.var.ip||"",login_count:r.login_count+1}),(v=t.env.hooks)!=null&&v.onExecutePostLogin&&(s!=null&&s.client)&&(s!=null&&s.authParams)&&i){let b=null;const A=await _b(t,e,n,r,i,{client:s.client,authParams:s.authParams});if(await t.env.hooks.onExecutePostLogin(A,{prompt:{render:O=>{}},redirect:{sendUserTo:(O,U)=>{const T=new URL(O,t.req.url);T.searchParams.set("state",i.id),U!=null&&U.query&&Object.entries(U.query).forEach(([R,W])=>{T.searchParams.set(R,W)}),b=T.toString()},encodeToken:O=>JSON.stringify({payload:O.payload,exp:Date.now()+(O.expiresInSeconds||900)*1e3}),validateToken:O=>null},token:ri(t,n)}),b)return new Response(null,{status:302,headers:{location:b}})}const{hooks:d}=await e.hooks.list(n,{q:"trigger_id:post-user-login",page:0,per_page:100,include_totals:!1});if(i){const b=d.find(O=>O.enabled&&yf(O));if(b&&yf(b))return ub(t,b.form_id,i);const A=d.find(O=>O.enabled&&wf(O));if(A&&wf(A))return pb(t,A.page_id,i,r,A.permission_required)}const u=d.filter(b=>b.enabled&&vf(b));for(const b of u)if(vf(b))try{await fetch(b.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tenant_id:n,user:r,trigger_id:"post-user-login"})})}catch{const O=be(t,{type:_e.FAILED_HOOK,description:`Failed to invoke post-user-login webhook: ${b.url}`});ve(t,e.logs.create(n,O))}return r}function yb(t){return xo(t,t.env.data)}async function Eu(t,e,n){return(await t.list(e,{page:0,per_page:10,include_totals:!1,q:`email:${n}`})).users}async function vi({userAdapter:t,tenant_id:e,username:n,provider:r}){const i=r==="sms"?`phone_number:${n}`:`email:${n}`,{users:s}=await t.list(e,{page:0,per_page:10,include_totals:!1,q:`${i} provider:${r}`});return s.length>1&&console.error("More than one user found for same email and provider"),s[0]||null}async function Cu({userAdapter:t,tenant_id:e,email:n}){var c;const{users:r}=await t.list(e,{page:0,per_page:10,include_totals:!1,q:`email:${n}`}),i=r.filter(l=>!(l.provider==="auth2"&&!l.email_verified));if(i.length===0)return;const s=i.filter(l=>!l.linked_to);if(s.length>0)return s.length>1&&console.error("More than one primary user found for same email"),s[0];const a=await t.get(e,(c=i[0])==null?void 0:c.linked_to);if(!a)throw new Error("Primary account not found");return a}async function io({userAdapter:t,tenant_id:e,username:n,provider:r}){const i=await vi({userAdapter:t,tenant_id:e,username:n,provider:r});return i?i.linked_to?t.get(e,i.linked_to):i:null}async function qa(t,e){const{username:n,provider:r,connection:i,client:s,userId:a,isSocial:c,profileData:l={},ip:d=""}=e;let u=await io({userAdapter:t.env.data.users,tenant_id:e.client.tenant.id,username:n,provider:r});if(!u){const f={user_id:`${r}|${a||La()}`,email:i!=="sms"?n:void 0,phone_number:i==="sms"?n:void 0,name:n,provider:r,connection:i,email_verified:!0,last_ip:d,is_social:c,last_login:new Date().toISOString(),profileData:JSON.stringify(l)};u=await yb(t).users.create(s.tenant.id,f),t.set("user_id",u.user_id)}return u}const Qe=o.z.object({page:o.z.string().min(0).optional().default("0").transform(t=>parseInt(t,10)).openapi({description:"The page number where 0 is the first page"}),per_page:o.z.string().min(1).optional().default("10").transform(t=>parseInt(t,10)).openapi({description:"The number of items per page"}),include_totals:o.z.string().optional().default("false").transform(t=>t==="true").openapi({description:"If the total number of items should be included in the response"}),sort:o.z.string().regex(/^.+:(-1|1)$/).optional().openapi({description:"A property that should have the format 'string:-1' or 'string:1'"}),q:o.z.string().optional().openapi({description:"A lucene query string used to filter the results"})});function ft(t){if(!t)return;const[e,n]=t.split(":"),r=n==="1"?"asc":"desc";if(!(!e||!r))return{sort_by:e,sort_order:r}}const bf=St.extend({users:o.z.array(an)}),wb=St.extend({sessions:o.z.array(Ba)}),vb=St.extend({organizations:o.z.array(Dn)}),bb=new o.OpenAPIHono().openapi(o.createRoute({tags:["users"],method:"get",path:"/",request:{query:Qe,headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([o.z.array(an),bf])}},description:"List of users"}}}),async t=>{const{page:e,per_page:n,include_totals:r,sort:i,q:s}=t.req.valid("query");if(s!=null&&s.includes("identities.profileData.email")){const d=s.split("=")[1],f=(await t.env.data.users.list(t.var.tenant_id,{page:e,per_page:n,include_totals:r,q:`email:${d}`})).users.filter(y=>y.linked_to),[h]=f;if(!h)return t.json([]);const m=await t.env.data.users.get(t.var.tenant_id,h.linked_to);if(!m)throw new S(500,{message:"Primary account not found"});return t.json([an.parse(m)])}const a=["-_exists_:linked_to"];s&&a.push(s);const c=await t.env.data.users.list(t.var.tenant_id,{page:e,per_page:n,include_totals:r,sort:ft(i),q:a.join(" ")}),l=c.users.filter(d=>!d.linked_to);return r?t.json(bf.parse({users:l,length:c.length,start:c.start,limit:c.limit})):t.json(o.z.array(an).parse(l))}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:an}},description:"List of users"}}}),async t=>{const{user_id:e}=t.req.valid("param"),n=await t.env.data.users.get(t.var.tenant_id,e);if(!n)throw new S(404);if(n.linked_to)throw new S(404,{message:"User is linked to another user"});return t.json(n)}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Status"}}}),async t=>{const{user_id:e}=t.req.valid("param");if(!await t.env.data.users.remove(t.var.tenant_id,e))throw new S(404);const r=be(t,{type:_e.SUCCESS_API_OPERATION,description:"Delete a User"});return r.details={...r.details,response:{statusCode:204,body:{}}},ve(t,t.env.data.logs.create(t.var.tenant_id,r)),t.text("OK")}).openapi(o.createRoute({tags:["users"],method:"post",path:"/",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({...Os.shape,password:o.z.string().optional()})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{content:{"application/json":{schema:an}},description:"Status"}}}),async t=>{const e=t.req.valid("json");t.set("body",e);const{email:n,phone_number:r,name:i,linked_to:s,email_verified:a,provider:c,connection:l,password:d}=e,u=e.user_id,f=u?ns(u):La(),h=`${e.provider}|${f}`;try{const m={email:n,user_id:h,name:i||n||r,phone_number:r,provider:c,connection:l,linked_to:s??void 0,email_verified:a||!1,last_ip:"",is_social:!1,last_login:new Date().toISOString()},y=await t.env.data.users.create(t.var.tenant_id,m);if(d){const A={user_id:h,password:await ti.hash(d,10),algorithm:"bcrypt"};await t.env.data.passwords.create(t.var.tenant_id,A)}t.set("user_id",y.user_id);const v=be(t,{type:_e.SUCCESS_API_OPERATION,description:"User created"});ve(t,t.env.data.logs.create(t.var.tenant_id,v));const b=y.identities?y:{...y,identities:[{connection:y.connection,provider:y.provider,user_id:ns(y.user_id),isSocial:y.is_social}]};return t.json(an.parse(b),{status:201})}catch(m){throw m.message==="User already exists"?new S(409,{message:"User already exists"}):m}}).openapi(o.createRoute({tags:["users"],method:"patch",path:"/{user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({...Os.shape,verify_email:o.z.boolean(),password:o.z.string()}).partial()}}},params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Status"}}}),async t=>{var m;const{data:e}=t.env,n=t.req.valid("json"),{user_id:r}=t.req.valid("param"),{verify_email:i,password:s,connection:a,...c}=n,l=await e.users.get(t.var.tenant_id,r);if(!l)throw new S(404);if(l.linked_to)throw new S(404,{message:"User is linked to another user"});let d=r,u=l;if(a)if(l.connection===a)d=r,u=l;else{const v=(await e.users.list(t.var.tenant_id,{page:0,per_page:100,include_totals:!1,q:`linked_to:${r}`})).users.find(b=>b.connection===a);if(!v)throw new S(404,{message:`No identity found with connection: ${a}`});d=v.user_id,u=v}if(c.email&&c.email!==u.email){const y=await Eu(t.env.data.users,t.var.tenant_id,c.email);if(y.length&&y.some(v=>v.user_id!==d))throw new S(409,{message:"Another user with the same email address already exists."})}if(await t.env.data.users.update(t.var.tenant_id,d,c),s){let y;if(a)if(a==="Username-Password-Authentication")y={provider:u.provider,user_id:ns(d)};else throw new S(400,{message:`Cannot set password for connection: ${a}`});else if(y=(m=l.identities)==null?void 0:m.find(A=>A.connection==="Username-Password-Authentication"),!y)throw new S(400,{message:"User does not have a password identity"});const v={user_id:`${y.provider}|${y.user_id}`,password:await ti.hash(s,10),algorithm:"bcrypt"};await e.passwords.get(t.var.tenant_id,`${y.provider}|${y.user_id}`)?await e.passwords.update(t.var.tenant_id,v):await e.passwords.create(t.var.tenant_id,v)}const f=await t.env.data.users.get(t.var.tenant_id,r);if(!f)throw new S(500);const h=be(t,{type:_e.SUCCESS_API_OPERATION,description:"Update a User",body:n});return h.details={...h.details,response:{statusCode:200,body:f}},ve(t,t.env.data.logs.create(t.var.tenant_id,h)),t.json(f)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/identities",request:{headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.union([o.z.object({link_with:o.z.string()}),o.z.object({user_id:o.z.string(),provider:o.z.string(),connection:o.z.string().optional()})])}}},params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{201:{content:{"application/json":{schema:o.z.array(o.z.object({connection:o.z.string(),provider:o.z.string(),user_id:o.z.string(),isSocial:o.z.boolean()}))}},description:"Status"}}}),async t=>{const e=t.req.valid("json"),{user_id:n}=t.req.valid("param"),r="link_with"in e?e.link_with:e.user_id,i=await t.env.data.users.get(t.var.tenant_id,n);if(!i)throw new S(400,{message:"Linking an inexistent identity is not allowed."});await t.env.data.users.update(t.var.tenant_id,r,{linked_to:n});const s=await t.env.data.users.list(t.var.tenant_id,{page:0,per_page:10,include_totals:!1,q:`linked_to:${n}`}),a=[i,...s.users].map(c=>({connection:c.connection,provider:c.provider,user_id:ns(c.user_id),isSocial:c.is_social}));return t.json(a,{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/identities/{provider}/{linked_user_id}",request:{headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string(),provider:o.z.string(),linked_user_id:o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{content:{"application/json":{schema:o.z.array(an)}},description:"Status"}}}),async t=>{const{user_id:e,provider:n,linked_user_id:r}=t.req.valid("param");await t.env.data.users.unlink(t.var.tenant_id,e,n,r);const i=await t.env.data.users.get(t.var.tenant_id,e);if(!i)throw new S(404);return t.json([an.parse(i)])}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/sessions",request:{query:Qe,headers:o.z.object({"tenant-id":o.z.string()}),params:o.z.object({user_id:o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([o.z.array(Ba),wb])}},description:"List of sessions"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{include_totals:n,page:r,per_page:i}=t.req.valid("query"),s=await t.env.data.sessions.list(t.var.tenant_id,{page:r,per_page:i,include_totals:n,q:`user_id:${e}`});return n?t.json(s):t.json(s.sessions)}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),query:Qe},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:am}},description:"User permissions"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{page:n,per_page:r,sort:i,q:s}=t.req.valid("query");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const c=await t.env.data.userPermissions.list(t.var.tenant_id,e,{page:n,per_page:r,include_totals:!1,sort:ft(i),q:s});return t.json(c)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({permissions:o.z.array(o.z.object({permission_name:o.z.string(),resource_server_identifier:o.z.string()}))})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{description:"Permissions assigned to user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{permissions:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userPermissions.create(t.var.tenant_id,e,{user_id:e,resource_server_identifier:i.resource_server_identifier,permission_name:i.permission_name}))throw new S(500,{message:"Failed to assign permissions to user"});return t.json({message:"Permissions assigned successfully"},{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/permissions",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({permissions:o.z.array(o.z.object({permission_name:o.z.string(),resource_server_identifier:o.z.string()}))})}}}},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Permissions removed from user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{permissions:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userPermissions.remove(t.var.tenant_id,e,i))throw new S(500,{message:"Failed to remove permissions from user"});return t.json({message:"Permissions removed successfully"})}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:Ms}},description:"User roles"}}}),async t=>{const{user_id:e}=t.req.valid("param");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const r=await t.env.data.userRoles.list(t.var.tenant_id,e,void 0,"");return t.json(r)}).openapi(o.createRoute({tags:["users"],method:"post",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({roles:o.z.array(o.z.string())})}}}},security:[{Bearer:["auth:write"]}],responses:{201:{description:"Roles assigned to user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{roles:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userRoles.create(t.var.tenant_id,e,i,""))throw new S(500,{message:"Failed to assign roles to user"});return t.json({message:"Roles assigned successfully"},{status:201})}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/roles",request:{params:o.z.object({user_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()}),body:{content:{"application/json":{schema:o.z.object({roles:o.z.array(o.z.string())})}}}},security:[{Bearer:["auth:write"]}],responses:{200:{description:"Roles removed from user"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{roles:n}=t.req.valid("json");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});for(const i of n)if(!await t.env.data.userRoles.remove(t.var.tenant_id,e,i,""))throw new S(500,{message:"Failed to remove roles from user"});return t.json({message:"Roles removed successfully"})}).openapi(o.createRoute({tags:["users"],method:"get",path:"/{user_id}/organizations",request:{params:o.z.object({user_id:o.z.string()}),query:Qe,headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:read"]}],responses:{200:{content:{"application/json":{schema:o.z.union([vb,o.z.array(Dn)])}},description:"List of user organizations"}}}),async t=>{const{user_id:e}=t.req.valid("param"),{page:n,per_page:r,include_totals:i,sort:s}=t.req.valid("query");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const c=await t.env.data.userOrganizations.listUserOrganizations(t.var.tenant_id,e,{page:n,per_page:r,sort:ft(s)});return i?t.json({organizations:c.organizations,start:c.start,limit:c.limit,length:c.length}):t.json(c.organizations)}).openapi(o.createRoute({tags:["users"],method:"delete",path:"/{user_id}/organizations/{organization_id}",request:{params:o.z.object({user_id:o.z.string(),organization_id:o.z.string()}),headers:o.z.object({"tenant-id":o.z.string()})},security:[{Bearer:["auth:write"]}],responses:{200:{description:"User removed from organization successfully"}}}),async t=>{const{user_id:e,organization_id:n}=t.req.valid("param");if(!await t.env.data.users.get(t.var.tenant_id,e))throw new S(404,{message:"User not found"});const s=(await t.env.data.userOrganizations.list(t.var.tenant_id,{q:`user_id:${e}`,per_page:100})).userOrganizations.find(a=>a.organization_id===n);if(!s)throw new S(404,{message:"User is not a member of this organization"});return await t.env.data.userOrganizations.remove(t.var.tenant_id,s.id),t.json({message:"User removed from organization successfully"})});/*! *****************************************************************************
73
73
  Copyright (C) Microsoft. All rights reserved.
74
74
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use
75
75
  this file except in compliance with the License. You may obtain a copy of the
package/dist/authhero.mjs CHANGED
@@ -4900,10 +4900,19 @@ function Uw(t) {
4900
4900
  tenant_id: e,
4901
4901
  email: n.email
4902
4902
  });
4903
- return r ? (await t.users.create(e, {
4903
+ if (!r)
4904
+ return t.users.create(e, n);
4905
+ await t.users.create(e, {
4904
4906
  ...n,
4905
4907
  linked_to: r.user_id
4906
- }), r) : t.users.create(e, n);
4908
+ });
4909
+ const i = await t.users.get(
4910
+ e,
4911
+ r.user_id
4912
+ );
4913
+ if (!i)
4914
+ throw new Error("Failed to fetch primary user after linking");
4915
+ return i;
4907
4916
  };
4908
4917
  }
4909
4918
  function $e(t, e) {
@@ -8834,7 +8843,7 @@ const ff = It.extend({
8834
8843
  password: d
8835
8844
  } = e, u = e.user_id, f = u ? es(u) : wa(), h = `${e.provider}|${f}`;
8836
8845
  try {
8837
- const m = await t.env.data.users.create(t.var.tenant_id, {
8846
+ const m = {
8838
8847
  email: n,
8839
8848
  user_id: h,
8840
8849
  name: i || n || r,
@@ -8846,36 +8855,40 @@ const ff = It.extend({
8846
8855
  last_ip: "",
8847
8856
  is_social: !1,
8848
8857
  last_login: (/* @__PURE__ */ new Date()).toISOString()
8849
- });
8858
+ }, y = await t.env.data.users.create(
8859
+ t.var.tenant_id,
8860
+ m
8861
+ );
8850
8862
  if (d) {
8851
- const b = {
8852
- user_id: m.user_id,
8863
+ const E = {
8864
+ user_id: h,
8865
+ // Use the original user_id, not result.user_id
8853
8866
  password: await Qr.hash(d, 10),
8854
8867
  algorithm: "bcrypt"
8855
8868
  };
8856
8869
  await t.env.data.passwords.create(
8857
8870
  t.var.tenant_id,
8858
- b
8871
+ E
8859
8872
  );
8860
8873
  }
8861
- t.set("user_id", m.user_id);
8862
- const y = $e(t, {
8874
+ t.set("user_id", y.user_id);
8875
+ const v = $e(t, {
8863
8876
  type: ve.SUCCESS_API_OPERATION,
8864
8877
  description: "User created"
8865
8878
  });
8866
- ke(t, t.env.data.logs.create(t.var.tenant_id, y));
8867
- const v = {
8868
- ...m,
8879
+ ke(t, t.env.data.logs.create(t.var.tenant_id, v));
8880
+ const b = y.identities ? y : {
8881
+ ...y,
8869
8882
  identities: [
8870
8883
  {
8871
- connection: m.connection,
8872
- provider: m.provider,
8873
- user_id: es(m.user_id),
8874
- isSocial: m.is_social
8884
+ connection: y.connection,
8885
+ provider: y.provider,
8886
+ user_id: es(y.user_id),
8887
+ isSocial: y.is_social
8875
8888
  }
8876
8889
  ]
8877
8890
  };
8878
- return t.json(mn.parse(v), {
8891
+ return t.json(mn.parse(b), {
8879
8892
  status: 201
8880
8893
  });
8881
8894
  } catch (m) {