bcrypt-ts 5.0.3 → 6.0.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/README.md +74 -41
- package/dist/browser.cjs +1 -1
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +8 -1
- package/dist/browser.d.mts +8 -1
- package/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +1 -1
- package/dist/browser.umd.js +2 -0
- package/dist/browser.umd.js.map +1 -0
- package/dist/node.cjs +1 -1
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.cts +8 -1
- package/dist/node.d.mts +8 -1
- package/dist/node.mjs +1 -1
- package/dist/node.mjs.map +1 -1
- package/package.json +25 -25
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.umd.js","sources":["../src/constant.ts","../src/base64.ts","../src/utils.ts","../src/crypt.ts","../src/random/browser.ts","../src/salt.ts","../src/uft8.ts","../src/hash.ts","../src/compare.ts","../src/helpers.ts"],"sourcesContent":["export const BCRYPT_SALT_LEN = 16;\n\nexport const GENERATE_SALT_DEFAULT_LOG2_ROUNDS = 10;\n\nexport const BLOWFISH_NUM_ROUNDS = 16;\n\nexport const MAX_EXECUTION_TIME = 100;\n\nexport const BASE64_CODE =\n \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\");\n\nconst naturalNumber = Array.from({ length: 64 }, (_, i) => i);\nconst fillNegative1 = (length: number): number[] =>\n Array<number>(length).fill(-1);\n\nexport const BASE64_INDEX = [\n ...fillNegative1(46),\n 0,\n 1,\n ...naturalNumber.slice(54, 64),\n ...fillNegative1(7),\n ...naturalNumber.slice(2, 28),\n ...fillNegative1(6),\n ...naturalNumber.slice(28, 54),\n ...fillNegative1(5),\n];\n\nexport const P_ORIG = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n];\n\nexport const S_ORIG = [\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,\n 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,\n 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,\n 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,\n 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,\n 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,\n 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,\n 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,\n 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,\n 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,\n 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,\n 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,\n 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,\n 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,\n 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,\n 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,\n 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,\n 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,\n 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,\n 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,\n 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,\n 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,\n 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,\n 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,\n 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,\n 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,\n 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,\n 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,\n 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,\n 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,\n 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,\n 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,\n 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,\n 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,\n 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n];\n\nexport const C_ORIG = [\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,\n];\n","import { BASE64_CODE, BASE64_INDEX } from \"./constant.js\";\n\n/**\n * Encodes a byte array to base64 with up to length bytes of input, using the custom bcrypt alphabet.\n *\n * @param byteArray Byte array\n * @param length Maximum input length\n */\nexport const encodeBase64 = (\n byteArray: number[] | Buffer,\n length: number,\n): string => {\n if (length <= 0 || length > byteArray.length)\n throw Error(`Illegal length: ${length}`);\n\n let off = 0;\n let c1: number;\n let c2: number;\n const result: string[] = [];\n\n while (off < length) {\n c1 = byteArray[off++] & 0xff;\n result.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\n c1 = (c1 & 0x03) << 4;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 4) & 0x0f;\n result.push(BASE64_CODE[c1 & 0x3f]);\n c1 = (c2 & 0x0f) << 2;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 6) & 0x03;\n result.push(BASE64_CODE[c1 & 0x3f]);\n result.push(BASE64_CODE[c2 & 0x3f]);\n }\n\n return result.join(\"\");\n};\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\n *\n * @param contentString String to decode\n * @param length Maximum output length\n */\nexport const decodeBase64 = (\n contentString: string,\n length: number,\n): number[] => {\n if (length <= 0) throw Error(`Illegal length: ${length}`);\n\n const stringLength = contentString.length;\n let off = 0;\n let olen = 0;\n let c1: number;\n let c2: number;\n let c3: number;\n let c4: number;\n let o: number;\n let code: number;\n const result: string[] = [];\n\n while (off < stringLength - 1 && olen < length) {\n code = contentString.charCodeAt(off++);\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n code = contentString.charCodeAt(off++);\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n\n if (c1 == -1 || c2 == -1) break;\n\n o = (c1 << 2) >>> 0;\n o |= (c2 & 0x30) >> 4;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n if (c3 == -1) break;\n o = ((c2 & 0x0f) << 4) >>> 0;\n o |= (c3 & 0x3c) >> 2;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n o = ((c3 & 0x03) << 6) >>> 0;\n o |= c4;\n result.push(String.fromCharCode(o));\n\n ++olen;\n }\n\n return result.map((item) => item.charCodeAt(0));\n};\n","/**\n * @private\n *\n * Continues with the callback on the next tick.\n */\nexport const nextTick =\n typeof process === \"object\" && process.env.NEXT_RUNTIME === \"edge\"\n ? setTimeout\n : typeof setImmediate === \"function\"\n ? setImmediate\n : typeof process === \"object\" && typeof process.nextTick === \"function\"\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n process.nextTick\n : setTimeout;\n\nexport const getIllegalArgumentsTypeError = (...args: unknown[]): Error =>\n new Error(`Illegal arguments: ${args.map((arg) => typeof arg).join(\", \")}`);\n","import {\n BCRYPT_SALT_LEN,\n BLOWFISH_NUM_ROUNDS,\n C_ORIG,\n MAX_EXECUTION_TIME,\n P_ORIG,\n S_ORIG,\n} from \"./constant.js\";\nimport { nextTick } from \"./utils.js\";\n\n// A base64 implementation for the bcrypt algorithm. This is partly non-standard.\n\nconst encipher = (\n lr: Int32Array<ArrayBuffer>,\n off: number,\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): Int32Array<ArrayBuffer> => {\n // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\n let n: number;\n let l = lr[off];\n let r = lr[off + 1];\n\n l ^= P[0];\n\n //The following is an unrolled version of the above loop.\n //Iteration 0\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[1];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[2];\n //Iteration 1\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[3];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[4];\n //Iteration 2\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[5];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[6];\n //Iteration 3\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[7];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[8];\n //Iteration 4\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[9];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[10];\n //Iteration 5\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[11];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[12];\n //Iteration 6\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[13];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[14];\n //Iteration 7\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[15];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[16];\n\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n lr[off + 1] = l;\n\n return lr;\n};\n\nconst streamToWord = (\n data: number[],\n offp: number,\n): { key: number; offp: number } => {\n let word = 0;\n\n for (let i = 0; i < 4; ++i) {\n word = (word << 8) | (data[offp] & 0xff);\n offp = (offp + 1) % data.length;\n }\n\n return { key: word, offp };\n};\n\nconst key = (\n key: number[],\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = new Int32Array([0, 0]);\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n for (let i = 0; i < pLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Expensive key schedule Blowfish.\n */\nconst expensiveKeyScheduleBlowFish = (\n data: number[],\n key: number[],\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = new Int32Array([0, 0]);\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n offp = 0;\n\n for (let i = 0; i < pLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Internally crypts a string.\n *\n * @param bytes Bytes to crypt\n * @param salt Salt bytes to use\n * @param rounds Number of rounds\n * @param progressCallback Callback called with the current progress\n */\nexport const crypt = (\n bytes: number[],\n salt: number[],\n rounds: number,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<number[]> | number[] => {\n const cdata = new Int32Array(C_ORIG);\n const cLength = cdata.length;\n\n // Validate\n if (rounds < 4 || rounds > 31) {\n const err = new Error(`Illegal number of rounds (4-31): ${rounds}`);\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.length !== BCRYPT_SALT_LEN) {\n const err = new Error(\n `Illegal salt length: ${salt.length} != ${BCRYPT_SALT_LEN}`,\n );\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n rounds = (1 << rounds) >>> 0;\n\n const P = new Int32Array(P_ORIG);\n const S = new Int32Array(S_ORIG);\n\n expensiveKeyScheduleBlowFish(salt, bytes, P, S);\n\n let round = 0;\n\n /**\n * Calculates the next round.\n */\n const next = (): Promise<number[] | void> | number[] | void => {\n if (progressCallback) progressCallback(round / rounds);\n\n if (round < rounds) {\n const start = Date.now();\n\n while (round < rounds) {\n round += 1;\n key(bytes, P, S);\n key(salt, P, S);\n if (Date.now() - start > MAX_EXECUTION_TIME) break;\n }\n } else {\n for (let i = 0; i < 64; i++)\n for (let j = 0; j < cLength >> 1; j++) encipher(cdata, j << 1, P, S);\n const result: number[] = [];\n\n for (let i = 0; i < cLength; i++) {\n result.push(((cdata[i] >> 24) & 0xff) >>> 0);\n result.push(((cdata[i] >> 16) & 0xff) >>> 0);\n result.push(((cdata[i] >> 8) & 0xff) >>> 0);\n result.push((cdata[i] & 0xff) >>> 0);\n }\n\n if (!sync) return Promise.resolve(result);\n\n return result;\n }\n\n if (!sync)\n return new Promise((resolve) =>\n nextTick(() => {\n void (next() as Promise<number[] | undefined>).then(resolve);\n }),\n );\n };\n\n if (!sync) return next() as Promise<number[]>;\n\n let result;\n\n do {\n result = next() as number[] | undefined;\n } while (!result);\n\n return result;\n};\n","/**\n * @private\n *\n * Generates cryptographically secure random bytes.\n *\n * @param length Bytes length\n * @returns Random bytes\n * @throws {Error} If no random implementation is available\n */\nexport const random = (length: number): number[] => {\n try {\n const crypto =\n typeof window !== \"undefined\" ? window.crypto : globalThis.crypto;\n\n const array = new Uint32Array(length);\n\n crypto.getRandomValues(array);\n\n return Array.from(array);\n } catch {\n throw Error(\"WebCryptoAPI is not available\");\n }\n};\n","// eslint-disable-next-line import-x/no-unresolved\nimport { random } from \"random\";\n\nimport { encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { getIllegalArgumentsTypeError, nextTick } from \"./utils.js\";\n\n/**\n * Synchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n * @returns Resulting salt\n * @throws {Error} If a random fallback is required but not set\n */\nexport const genSaltSync = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof rounds !== \"number\") throw getIllegalArgumentsTypeError(rounds);\n\n if (rounds < 4) rounds = 4;\n else if (rounds > 31) rounds = 31;\n\n const salt = [];\n\n salt.push(\"$2b$\");\n if (rounds < 10) salt.push(\"0\");\n salt.push(rounds.toString());\n salt.push(\"$\");\n salt.push(encodeBase64(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\n\n return salt.join(\"\");\n};\n\n/**\n * Asynchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n */\nexport const genSalt = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): Promise<string> => {\n if (typeof rounds !== \"number\") throw getIllegalArgumentsTypeError(rounds);\n\n return new Promise((resolve, reject) =>\n nextTick(() => {\n // Pretty thin, but salting is fast enough\n try {\n resolve(genSaltSync(rounds));\n } catch (err) {\n reject(err as Error);\n }\n }),\n );\n};\n","/** Calculates the byte length of a string encoded as UTF8. */\nexport const getUTF8ByteLength = (content: string): number => {\n let length = 0,\n charCodePoint = 0;\n\n for (let i = 0; i < content.length; ++i) {\n charCodePoint = content.charCodeAt(i);\n if (charCodePoint < 128) length += 1;\n else if (charCodePoint < 2048) length += 2;\n else if (\n (charCodePoint & 0xfc00) === 0xd800 &&\n (content.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n i++;\n length += 4;\n } else length += 3;\n }\n\n return length;\n};\n\n/** Converts a string to an array of UTF8 bytes. */\nexport const convertToUFT8Bytes = (content: string): number[] => {\n let offset = 0,\n c1,\n c2;\n const buffer = new Array<number>(getUTF8ByteLength(content));\n\n for (let i = 0, k = content.length; i < k; ++i) {\n c1 = content.charCodeAt(i);\n if (c1 < 128) {\n buffer[offset++] = c1;\n } else if (c1 < 2048) {\n buffer[offset++] = (c1 >> 6) | 192;\n buffer[offset++] = (c1 & 63) | 128;\n } else if (\n (c1 & 0xfc00) === 0xd800 &&\n ((c2 = content.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n ) {\n c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);\n ++i;\n buffer[offset++] = (c1 >> 18) | 240;\n buffer[offset++] = ((c1 >> 12) & 63) | 128;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n } else {\n buffer[offset++] = (c1 >> 12) | 224;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n }\n }\n\n return buffer;\n};\n","import { decodeBase64, encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n C_ORIG,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { crypt } from \"./crypt.js\";\nimport { genSalt, genSaltSync } from \"./salt.js\";\nimport { convertToUFT8Bytes } from \"./uft8.js\";\n\n/**\n * Internally hashes a string.\n *\n * @private\n * @param content String to hash\n * @param salt Salt to use, actually never null\n * @param progressCallback Callback called with the current progress\n */\nconst _hash = (\n content: string,\n salt: string,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<string> | string => {\n if (typeof content !== \"string\" || typeof salt !== \"string\") {\n const err = new Error(\"Invalid content / salt: Not a string\");\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n // Validate the salt\n let minor: string;\n let offset: number;\n\n if (salt.charAt(0) !== \"$\" || salt.charAt(1) !== \"2\") {\n const err = new Error(\"Invalid salt version: \" + salt.substring(0, 2));\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.charAt(2) === \"$\") {\n minor = String.fromCharCode(0);\n offset = 3;\n } else {\n minor = salt.charAt(2);\n if (\n (minor !== \"a\" && minor !== \"b\" && minor !== \"y\") ||\n salt.charAt(3) !== \"$\"\n ) {\n const err = Error(\"Invalid salt revision: \" + salt.substring(2, 4));\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n offset = 4;\n }\n\n // Extract number of rounds\n if (salt.charAt(offset + 2) > \"$\") {\n const err = new Error(\"Missing salt rounds\");\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n const r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\n rounds = r1 + r2,\n realSalt = salt.substring(offset + 3, offset + 25);\n\n content += minor >= \"a\" ? \"\\x00\" : \"\";\n\n const passwordBytes = convertToUFT8Bytes(content),\n saltBytes = decodeBase64(realSalt, BCRYPT_SALT_LEN);\n\n /**\n * Finishes hashing.\n * @param bytes Byte array\n */\n const finish = (bytes: number[]): string => {\n const res = [];\n\n res.push(\"$2\");\n if (minor >= \"a\") res.push(minor);\n res.push(\"$\");\n if (rounds < 10) res.push(\"0\");\n res.push(rounds.toString());\n res.push(\"$\");\n res.push(encodeBase64(saltBytes, saltBytes.length));\n res.push(encodeBase64(bytes, C_ORIG.length * 4 - 1));\n\n return res.join(\"\");\n };\n\n // Sync\n if (!sync)\n return (\n crypt(\n passwordBytes,\n saltBytes,\n rounds,\n false,\n progressCallback,\n ) as Promise<number[]>\n ).then((bytes) => finish(bytes));\n\n return finish(\n crypt(passwordBytes, saltBytes, rounds, true, progressCallback) as number[],\n );\n};\n\n/**\n * Synchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use, default to 10\n * @returns Resulting hash\n */\nexport const hashSync = (\n contentString: string,\n salt: string | number = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof salt === \"number\") salt = genSaltSync(salt);\n if (typeof contentString !== \"string\" || typeof salt !== \"string\")\n throw Error(\n \"Illegal arguments: \" + typeof contentString + \", \" + typeof salt,\n );\n\n return _hash(contentString, salt, true) as string;\n};\n\n/**\n * Asynchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const hash = function (\n contentString: string,\n salt: number | string,\n progressCallback?: (progress: number) => void,\n): Promise<string> {\n if (typeof contentString === \"string\" && typeof salt === \"number\")\n return genSalt(salt).then(\n (salt) =>\n _hash(contentString, salt, false, progressCallback) as Promise<string>,\n );\n\n if (typeof contentString === \"string\" && typeof salt === \"string\")\n return _hash(\n contentString,\n salt,\n false,\n progressCallback,\n ) as Promise<string>;\n\n return Promise.reject(\n new Error(`Illegal arguments: ${typeof contentString}, ${typeof salt}`),\n );\n};\n","import { hash as hashAsync, hashSync } from \"./hash.js\";\nimport { getIllegalArgumentsTypeError, nextTick } from \"./utils.js\";\n\n/**\n * Synchronously tests a string against a hash.\n *\n * @param content String to compare\n * @param hash Hash to test against\n */\nexport const compareSync = (content: string, hash: string): boolean => {\n if (typeof content !== \"string\" || typeof hash !== \"string\")\n throw getIllegalArgumentsTypeError(content, hash);\n\n if (hash.length !== 60) return false;\n\n return hashSync(content, hash.substring(0, hash.length - 31)) === hash;\n};\n\n/**\n * Asynchronously compares the given data against the given hash.\n *\n * @param content Data to compare\n * @param hash Data to be compared to\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const compare = (\n content: string,\n hash: string,\n progressCallback?: (percent: number) => void,\n): Promise<boolean> =>\n new Promise((resolve, reject) => {\n if (typeof content !== \"string\" || typeof hash !== \"string\") {\n nextTick(() =>\n reject(\n new Error(`Illegal arguments: ${typeof content}, ${typeof hash}`),\n ),\n );\n\n return;\n }\n\n if (hash.length !== 60) {\n nextTick(() => resolve(false));\n\n return;\n }\n\n hashAsync(content, hash.substring(0, 29), progressCallback)\n .then((comp) => resolve(comp === hash))\n .catch((err: unknown) => reject(err as Error));\n });\n","import { getUTF8ByteLength } from \"./uft8.js\";\nimport { getIllegalArgumentsTypeError } from \"./utils.js\";\n\n/**\n * Gets the number of rounds used to encrypt the specified hash.\n *\n * @param hash Hash to extract the used number of rounds from\n * @returns Number of rounds used\n * @throws {Error} If `hash` is not a string\n */\nexport const getRounds = (hash: string): number => {\n if (typeof hash !== \"string\") throw getIllegalArgumentsTypeError(hash);\n\n return parseInt(hash.split(\"$\")[2], 10);\n};\n\n/**\n * Gets the salt portion from a hash. Does not validate the hash.\n *\n * @param hash Hash to extract the salt from\n * @returns Extracted salt part\n * @throws {Error} If `hash` is not a string or otherwise invalid\n */\nexport const getSalt = (hash: string): string => {\n if (typeof hash !== \"string\") throw getIllegalArgumentsTypeError(hash);\n\n if (hash.length !== 60)\n throw new Error(`Illegal hash length: ${hash.length} != 60`);\n\n return hash.substring(0, 29);\n};\n\n/**\n * Tests if a content will be truncated when hashed, that is its length is\n * greater than 72 bytes when converted to UTF-8.\n * @param content The content to test\n * @returns `true` if truncated, otherwise `false`\n */\nexport const truncates = (content: string): boolean => {\n if (typeof content !== \"string\") throw getIllegalArgumentsTypeError(content);\n\n return getUTF8ByteLength(content) > 72;\n};\n"],"names":["BASE64_CODE","naturalNumber","_","i","fillNegative1","length","BASE64_INDEX","P_ORIG","S_ORIG","C_ORIG","encodeBase64","byteArray","off","c1","c2","result","decodeBase64","contentString","stringLength","olen","c3","c4","o","code","item","nextTick","getIllegalArgumentsTypeError","args","arg","encipher","lr","P","S","n","l","r","BLOWFISH_NUM_ROUNDS","streamToWord","data","offp","word","key","pLength","sLength","sw","expensiveKeyScheduleBlowFish","crypt","bytes","salt","rounds","sync","progressCallback","cdata","cLength","err","BCRYPT_SALT_LEN","round","next","start","MAX_EXECUTION_TIME","j","resolve","random","crypto","array","genSaltSync","GENERATE_SALT_DEFAULT_LOG2_ROUNDS","genSalt","reject","getUTF8ByteLength","content","charCodePoint","convertToUFT8Bytes","offset","buffer","k","_hash","minor","r1","r2","realSalt","passwordBytes","saltBytes","finish","res","hashSync","hash","compareSync","compare","hashAsync","comp","getRounds","getSalt","truncates"],"mappings":"8NAAO,MAQMA,EACX,mEAAmE,MAAM,EAAE,EAEvEC,EAAgB,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAMA,CAAC,EACtDC,EAAiBC,GACrB,MAAcA,CAAM,EAAE,KAAK,EAAE,EAElBC,EAAe,CAC1B,GAAGF,EAAc,EAAE,EACnB,EACA,EACA,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,EAAG,EAAE,EAC5B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,CACpB,EAEaG,EAAS,CACpB,UAAY,WAAY,UAAY,SAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC9D,EAEaC,EAAS,CACpB,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,QAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,SAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,SAAY,WAAY,SAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,UAAY,SAC5D,WAAY,WAAY,WAAY,UAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,QAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,SAAY,WAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,W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"}
|
package/dist/node.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var v=require("node:crypto");const I=16,A=10,x=16,B=100,w="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=Array.from({length:64},(n,r)=>r),d=n=>Array(n).fill(-1),f=[...d(46),0,1,...b.slice(54,64),...d(7),...b.slice(2,28),...d(6),...b.slice(28,54),...d(5)],C=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],P=[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],j=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],$=(n,r)=>{if(r<=0||r>n.length)throw Error(`Illegal len: ${r}`);let o=0,t,e;const s=[];for(;o<r;){if(t=n[o++]&255,s.push(w[t>>2&63]),t=(t&3)<<4,o>=r){s.push(w[t&63]);break}if(e=n[o++]&255,t|=e>>4&15,s.push(w[t&63]),t=(e&15)<<2,o>=r){s.push(w[t&63]);break}e=n[o++]&255,t|=e>>6&3,s.push(w[t&63]),s.push(w[e&63])}return s.join("")},D=(n,r)=>{const o=n.length;let t=0,e=0,s,l,c,h,u,a;const p=[];for(;t<o-1&&e<r&&(a=n.charCodeAt(t++),s=a<f.length?f[a]:-1,a=n.charCodeAt(t++),l=a<f.length?f[a]:-1,!(s==-1||l==-1||(u=s<<2>>>0,u|=(l&48)>>4,p.push(String.fromCharCode(u)),++e>=r||t>=o)||(a=n.charCodeAt(t++),c=a<f.length?f[a]:-1,c==-1)||(u=(l&15)<<4>>>0,u|=(c&60)>>2,p.push(String.fromCharCode(u)),++e>=r||t>=o)));)a=n.charCodeAt(t++),h=a<f.length?f[a]:-1,u=(c&3)<<6>>>0,u|=h,p.push(String.fromCharCode(u)),++e;return p.map(i=>i.charCodeAt(0))},F=(n,r)=>{let o=null;for(typeof n=="number"&&(o=n,n=()=>null);o!==null||(o=n())!==null;)o<128?r(o&127):o<2048?(r(o>>6&31|192),r(o&63|128)):o<65536?(r(o>>12&15|224),r(o>>6&63|128),r(o&63|128)):(r(o>>18&7|240),r(o>>12&63|128),r(o>>6&63|128),r(o&63|128)),o=null},L=(n,r)=>{let o,t=null;for(;(o=t!==null?t:n())!==null;){if(o>=55296&&o<=57343&&(t=n())!==null&&t>=56320&&t<=57343){r((o-55296)*1024+t-56320+65536),t=null;continue}r(o)}t!==null&&r(t)},G=(n,r)=>L(n,o=>{F(o,r)}),S=typeof process=="object"&&process.env.NEXT_RUNTIME==="edge"?setTimeout:typeof setImmediate=="function"?setImmediate:typeof process=="object"&&typeof process.nextTick=="function"?process.nextTick:setTimeout,M=n=>{let r=0;const o=[];return G(()=>r<n.length?n.charCodeAt(r++):null,t=>{o.push(t)}),o},m=(n,r,o,t)=>{let e,s=n[r],l=n[r+1];return s^=o[0],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[1],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[2],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[3],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[4],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[5],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[6],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[7],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[8],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[9],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[10],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[11],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[12],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[13],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[14],e=t[s>>>24],e+=t[256|s>>16&255],e^=t[512|s>>8&255],e+=t[768|s&255],l^=e^o[15],e=t[l>>>24],e+=t[256|l>>16&255],e^=t[512|l>>8&255],e+=t[768|l&255],s^=e^o[16],n[r]=l^o[x+1],n[r+1]=s,n},E=(n,r)=>{let o=0;for(let t=0;t<4;++t)o=o<<8|n[r]&255,r=(r+1)%n.length;return{key:o,offp:r}},k=(n,r,o)=>{const t=r.length,e=o.length;let s=0,l=[0,0],c;for(let h=0;h<t;h++)c=E(n,s),s=c.offp,r[h]=r[h]^c.key;for(let h=0;h<t;h+=2)l=m(l,0,r,o),r[h]=l[0],r[h+1]=l[1];for(let h=0;h<e;h+=2)l=m(l,0,r,o),o[h]=l[0],o[h+1]=l[1]},X=(n,r,o,t)=>{const e=o.length,s=t.length;let l=0,c=[0,0],h;for(let u=0;u<e;u++)h=E(r,l),l=h.offp,o[u]=o[u]^h.key;l=0;for(let u=0;u<e;u+=2)h=E(n,l),l=h.offp,c[0]^=h.key,h=E(n,l),l=h.offp,c[1]^=h.key,c=m(c,0,o,t),o[u]=c[0],o[u+1]=c[1];for(let u=0;u<s;u+=2)h=E(n,l),l=h.offp,c[0]^=h.key,h=E(n,l),l=h.offp,c[1]^=h.key,c=m(c,0,o,t),t[u]=c[0],t[u+1]=c[1]},U=(n,r,o,t,e)=>{const s=j.slice(),l=s.length;if(o<4||o>31){const i=new Error(`Illegal number of rounds (4-31): ${o}`);if(t===!1)return Promise.reject(i);throw i}if(r.length!==I){const i=new Error(`Illegal salt length: ${r.length} != ${I}`);if(t===!1)return Promise.reject(i);throw i}o=1<<o>>>0;let c,h,u=0,a;Int32Array?(c=new Int32Array(C),h=new Int32Array(P)):(c=C.slice(),h=P.slice()),X(r,n,c,h);const p=()=>{if(e&&e(u/o),u<o){const i=Date.now();for(;u<o&&(u=u+1,k(n,c,h),k(r,c,h),!(Date.now()-i>B)););}else{for(u=0;u<64;u++)for(a=0;a<l>>1;a++)m(s,a<<1,c,h);const i=[];for(u=0;u<l;u++)i.push((s[u]>>24&255)>>>0),i.push((s[u]>>16&255)>>>0),i.push((s[u]>>8&255)>>>0),i.push((s[u]&255)>>>0);return t===!1?Promise.resolve(i):i}if(t===!1)return new Promise(i=>S(()=>{p().then(i)}))};if(t===!1)return p();{let i;for(;;)if(typeof(i=p())<"u")return i||[]}},q=n=>v.randomBytes(n),T=(n=A)=>{if(typeof n!="number")throw Error("Illegal arguments: "+typeof n);n<4?n=4:n>31&&(n=31);const r=[];return r.push("$2a$"),n<10&&r.push("0"),r.push(n.toString()),r.push("$"),r.push($(q(I),I)),r.join("")},N=(n=A)=>{if(typeof n!="number")throw Error("illegal arguments: "+typeof n);return new Promise((r,o)=>S(()=>{try{r(T(n))}catch(t){o(t)}}))};function _(n,r,o,t){if(typeof n!="string"||typeof r!="string"){const g=new Error("Invalid string / salt: Not a string");if(o===!1)return Promise.reject(g);throw g}let e,s;if(r.charAt(0)!=="$"||r.charAt(1)!=="2"){const g=new Error("Invalid salt version: "+r.substring(0,2));if(o===!1)return Promise.reject(g);throw g}if(r.charAt(2)==="$")e="\0",s=3;else{if(e=r.charAt(2),e!=="a"&&e!=="b"&&e!=="y"||r.charAt(3)!=="$"){const g=Error("Invalid salt revision: "+r.substring(2,4));if(o===!1)return Promise.reject(g);throw g}s=4}if(r.charAt(s+2)>"$"){const g=new Error("Missing salt rounds");if(o===!1)return Promise.reject(g);throw g}const l=parseInt(r.substring(s,s+1),10)*10,c=parseInt(r.substring(s+1,s+2),10),h=l+c,u=r.substring(s+3,s+25);n+=e>="a"?"\0":"";const a=M(n),p=D(u,I),i=g=>{const y=[];return y.push("$2"),e>="a"&&y.push(e),y.push("$"),h<10&&y.push("0"),y.push(h.toString()),y.push("$"),y.push($(p,p.length)),y.push($(g,j.length*4-1)),y.join("")};return o===!1?U(a,p,h,!1,t).then(g=>i(g)):i(U(a,p,h,!0,t))}const R=(n,r=A)=>{if(typeof r=="number"&&(r=T(r)),typeof n!="string"||typeof r!="string")throw Error("Illegal arguments: "+typeof n+", "+typeof r);return _(n,r,!0)},O=function(n,r,o){return typeof n=="string"&&typeof r=="number"?N(r).then(t=>_(n,t,!1,o)):typeof n=="string"&&typeof r=="string"?_(n,r,!1,o):Promise.reject(new Error(`Illegal arguments: ${typeof n}, ${typeof r}`))},H=(n,r)=>{if(typeof n!="string"||typeof r!="string")throw Error("Illegal arguments: "+typeof n+", "+typeof r);return r.length!==60?!1:R(n,r.substring(0,r.length-31))===r},W=(n,r,o)=>new Promise((t,e)=>{if(typeof n!="string"||typeof r!="string"){S(()=>e(new Error(`Illegal arguments: ${typeof n}, ${typeof r}`)));return}if(r.length!==60){S(()=>e(new Error("Illegal hash: hash length should be 60")));return}O(n,r.substring(0,29),o).then(s=>t(s===r)).catch(s=>e(s))}),Y=n=>{if(typeof n!="string")throw new Error(`Illegal arguments: ${typeof n}`);return parseInt(n.split("$")[2],10)},z=n=>{if(typeof n!="string")throw new Error(`Illegal arguments: ${typeof n}`);if(n.length!==60)throw new Error(`Illegal hash length: ${n.length} != 60`);return n.substring(0,29)};exports.compare=W,exports.compareSync=H,exports.genSalt=N,exports.genSaltSync=T,exports.getRounds=Y,exports.getSalt=z,exports.hash=O,exports.hashSync=R;
|
|
1
|
+
"use strict";var B=require("node:crypto");const d=16,b=10,O=16,U=100,m="./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),$=Array.from({length:64},(n,e)=>e),E=n=>Array(n).fill(-1),y=[...E(46),0,1,...$.slice(54,64),...E(7),...$.slice(2,28),...E(6),...$.slice(28,54),...E(5)],D=[608135816,2242054355,320440878,57701188,2752067618,698298832,137296536,3964562569,1160258022,953160567,3193202383,887688300,3232508343,3380367581,1065670069,3041331479,2450970073,2306472731],L=[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],j=[1332899944,1700884034,1701343084,1684370003,1668446532,1869963892],C=(n,e)=>{if(e<=0||e>n.length)throw Error(`Illegal length: ${e}`);let o=0,r,t;const s=[];for(;o<e;){if(r=n[o++]&255,s.push(m[r>>2&63]),r=(r&3)<<4,o>=e){s.push(m[r&63]);break}if(t=n[o++]&255,r|=t>>4&15,s.push(m[r&63]),r=(t&15)<<2,o>=e){s.push(m[r&63]);break}t=n[o++]&255,r|=t>>6&3,s.push(m[r&63]),s.push(m[t&63])}return s.join("")},G=(n,e)=>{const o=n.length;let r=0,t=0,s,h,c,f,l,u;const p=[];for(;r<o-1&&t<e&&(u=n.charCodeAt(r++),s=u<y.length?y[u]:-1,u=n.charCodeAt(r++),h=u<y.length?y[u]:-1,!(s==-1||h==-1||(l=s<<2>>>0,l|=(h&48)>>4,p.push(String.fromCharCode(l)),++t>=e||r>=o)||(u=n.charCodeAt(r++),c=u<y.length?y[u]:-1,c==-1)||(l=(h&15)<<4>>>0,l|=(c&60)>>2,p.push(String.fromCharCode(l)),++t>=e||r>=o)));)u=n.charCodeAt(r++),f=u<y.length?y[u]:-1,l=(c&3)<<6>>>0,l|=f,p.push(String.fromCharCode(l)),++t;return p.map(a=>a.charCodeAt(0))},S=typeof process=="object"&&process.env.NEXT_RUNTIME==="edge"?setTimeout:typeof setImmediate=="function"?setImmediate:typeof process=="object"&&typeof process.nextTick=="function"?process.nextTick:setTimeout,w=(...n)=>new Error(`Illegal arguments: ${n.map(e=>typeof e).join(", ")}`),I=(n,e,o,r)=>{let t,s=n[e],h=n[e+1];return s^=o[0],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[1],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[2],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[3],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[4],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[5],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[6],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[7],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[8],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[9],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[10],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[11],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[12],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[13],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[14],t=r[s>>>24],t+=r[256|s>>16&255],t^=r[512|s>>8&255],t+=r[768|s&255],h^=t^o[15],t=r[h>>>24],t+=r[256|h>>16&255],t^=r[512|h>>8&255],t+=r[768|h&255],s^=t^o[16],n[e]=h^o[O+1],n[e+1]=s,n},A=(n,e)=>{let o=0;for(let r=0;r<4;++r)o=o<<8|n[e]&255,e=(e+1)%n.length;return{key:o,offp:e}},P=(n,e,o)=>{const r=e.length,t=o.length;let s=0,h=new Int32Array([0,0]),c;for(let f=0;f<r;f++)c=A(n,s),s=c.offp,e[f]=e[f]^c.key;for(let f=0;f<r;f+=2)h=I(h,0,e,o),e[f]=h[0],e[f+1]=h[1];for(let f=0;f<t;f+=2)h=I(h,0,e,o),o[f]=h[0],o[f+1]=h[1]},M=(n,e,o,r)=>{const t=o.length,s=r.length;let h=0,c=new Int32Array([0,0]),f;for(let l=0;l<t;l++)f=A(e,h),h=f.offp,o[l]=o[l]^f.key;h=0;for(let l=0;l<t;l+=2)f=A(n,h),h=f.offp,c[0]^=f.key,f=A(n,h),h=f.offp,c[1]^=f.key,c=I(c,0,o,r),o[l]=c[0],o[l+1]=c[1];for(let l=0;l<s;l+=2)f=A(n,h),h=f.offp,c[0]^=f.key,f=A(n,h),h=f.offp,c[1]^=f.key,c=I(c,0,o,r),r[l]=c[0],r[l+1]=c[1]},k=(n,e,o,r,t)=>{const s=new Int32Array(j),h=s.length;if(o<4||o>31){const a=new Error(`Illegal number of rounds (4-31): ${o}`);if(!r)return Promise.reject(a);throw a}if(e.length!==d){const a=new Error(`Illegal salt length: ${e.length} != ${d}`);if(!r)return Promise.reject(a);throw a}o=1<<o>>>0;const c=new Int32Array(D),f=new Int32Array(L);M(e,n,c,f);let l=0;const u=()=>{if(t&&t(l/o),l<o){const a=Date.now();for(;l<o&&(l+=1,P(n,c,f),P(e,c,f),!(Date.now()-a>U)););}else{for(let i=0;i<64;i++)for(let g=0;g<h>>1;g++)I(s,g<<1,c,f);const a=[];for(let i=0;i<h;i++)a.push((s[i]>>24&255)>>>0),a.push((s[i]>>16&255)>>>0),a.push((s[i]>>8&255)>>>0),a.push((s[i]&255)>>>0);return r?a:Promise.resolve(a)}if(!r)return new Promise(a=>S(()=>{u().then(a)}))};if(!r)return u();let p;do p=u();while(!p);return p},F=n=>typeof crypto>"u"?B.randomBytes(n):crypto.getRandomValues(new Uint8Array(n)),T=(n=b)=>{if(typeof n!="number")throw w(n);n<4?n=4:n>31&&(n=31);const e=[];return e.push("$2b$"),n<10&&e.push("0"),e.push(n.toString()),e.push("$"),e.push(C(F(d),d)),e.join("")},R=(n=b)=>{if(typeof n!="number")throw w(n);return new Promise((e,o)=>S(()=>{try{e(T(n))}catch(r){o(r)}}))},v=n=>{let e=0,o=0;for(let r=0;r<n.length;++r)o=n.charCodeAt(r),o<128?e+=1:o<2048?e+=2:(o&64512)===55296&&(n.charCodeAt(r+1)&64512)===56320?(r++,e+=4):e+=3;return e},X=n=>{let e=0,o,r;const t=new Array(v(n));for(let s=0,h=n.length;s<h;++s)o=n.charCodeAt(s),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((r=n.charCodeAt(s+1))&64512)===56320?(o=65536+((o&1023)<<10)+(r&1023),++s,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return t},_=(n,e,o,r)=>{if(typeof n!="string"||typeof e!="string"){const i=new Error("Invalid content / salt: Not a string");if(!o)return Promise.reject(i);throw i}let t,s;if(e.charAt(0)!=="$"||e.charAt(1)!=="2"){const i=new Error("Invalid salt version: "+e.substring(0,2));if(!o)return Promise.reject(i);throw i}if(e.charAt(2)==="$")t="\0",s=3;else{if(t=e.charAt(2),t!=="a"&&t!=="b"&&t!=="y"||e.charAt(3)!=="$"){const i=Error("Invalid salt revision: "+e.substring(2,4));if(!o)return Promise.reject(i);throw i}s=4}if(e.charAt(s+2)>"$"){const i=new Error("Missing salt rounds");if(!o)return Promise.reject(i);throw i}const h=parseInt(e.substring(s,s+1),10)*10,c=parseInt(e.substring(s+1,s+2),10),f=h+c,l=e.substring(s+3,s+25);n+=t>="a"?"\0":"";const u=X(n),p=G(l,d),a=i=>{const g=[];return g.push("$2"),t>="a"&&g.push(t),g.push("$"),f<10&&g.push("0"),g.push(f.toString()),g.push("$"),g.push(C(p,p.length)),g.push(C(i,j.length*4-1)),g.join("")};return o?a(k(u,p,f,!0,r)):k(u,p,f,!1,r).then(i=>a(i))},N=(n,e=b)=>{if(typeof e=="number"&&(e=T(e)),typeof n!="string"||typeof e!="string")throw Error("Illegal arguments: "+typeof n+", "+typeof e);return _(n,e,!0)},x=function(n,e,o){return typeof n=="string"&&typeof e=="number"?R(e).then(r=>_(n,r,!1,o)):typeof n=="string"&&typeof e=="string"?_(n,e,!1,o):Promise.reject(new Error(`Illegal arguments: ${typeof n}, ${typeof e}`))},q=(n,e)=>{if(typeof n!="string"||typeof e!="string")throw w(n,e);return e.length!==60?!1:N(n,e.substring(0,e.length-31))===e},H=(n,e,o)=>new Promise((r,t)=>{if(typeof n!="string"||typeof e!="string"){S(()=>t(new Error(`Illegal arguments: ${typeof n}, ${typeof e}`)));return}if(e.length!==60){S(()=>r(!1));return}x(n,e.substring(0,29),o).then(s=>r(s===e)).catch(s=>t(s))}),V=n=>{if(typeof n!="string")throw w(n);return parseInt(n.split("$")[2],10)},W=n=>{if(typeof n!="string")throw w(n);if(n.length!==60)throw new Error(`Illegal hash length: ${n.length} != 60`);return n.substring(0,29)},Y=n=>{if(typeof n!="string")throw w(n);return v(n)>72};exports.compare=H,exports.compareSync=q,exports.genSalt=R,exports.genSaltSync=T,exports.getRounds=V,exports.getSalt=W,exports.hash=x,exports.hashSync=N,exports.truncates=Y;
|
|
2
2
|
//# sourceMappingURL=node.cjs.map
|
package/dist/node.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.cjs","sources":["../src/constant.ts","../src/base64.ts","../src/utfx.ts","../src/utils.ts","../src/crypt.ts","../src/random/node.ts","../src/salt.ts","../src/hash.ts","../src/compare.ts","../src/helpers.ts"],"sourcesContent":["export const BCRYPT_SALT_LEN = 16;\n\nexport const GENERATE_SALT_DEFAULT_LOG2_ROUNDS = 10;\n\nexport const BLOWFISH_NUM_ROUNDS = 16;\n\nexport const MAX_EXECUTION_TIME = 100;\n\nexport const BASE64_CODE =\n \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\");\n\nconst naturalNumber = Array.from({ length: 64 }, (_, i) => i);\nconst fillNegative1 = (length: number): number[] =>\n Array<number>(length).fill(-1);\n\nexport const BASE64_INDEX = [\n ...fillNegative1(46),\n 0,\n 1,\n ...naturalNumber.slice(54, 64),\n ...fillNegative1(7),\n ...naturalNumber.slice(2, 28),\n ...fillNegative1(6),\n ...naturalNumber.slice(28, 54),\n ...fillNegative1(5),\n];\n\nexport const P_ORIG = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n];\n\nexport const S_ORIG = [\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,\n 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,\n 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,\n 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,\n 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,\n 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,\n 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,\n 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,\n 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,\n 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,\n 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,\n 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,\n 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,\n 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,\n 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,\n 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,\n 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,\n 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,\n 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,\n 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,\n 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,\n 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,\n 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,\n 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,\n 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,\n 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,\n 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,\n 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,\n 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,\n 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,\n 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,\n 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,\n 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,\n 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,\n 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n];\n\nexport const C_ORIG = [\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,\n];\n","import { BASE64_CODE, BASE64_INDEX } from \"./constant.js\";\n\n/**\n * Encodes a byte array to base64 with up to length bytes of input, using the custom bcrypt alphabet.\n *\n * @param byteArray Byte array\n * @param length Maximum input length\n */\nexport const encodeBase64 = (\n byteArray: number[] | Buffer,\n length: number,\n): string => {\n if (length <= 0 || length > byteArray.length)\n throw Error(`Illegal len: ${length}`);\n\n let off = 0;\n let c1: number;\n let c2: number;\n const result: string[] = [];\n\n while (off < length) {\n c1 = byteArray[off++] & 0xff;\n result.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\n c1 = (c1 & 0x03) << 4;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 4) & 0x0f;\n result.push(BASE64_CODE[c1 & 0x3f]);\n c1 = (c2 & 0x0f) << 2;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 6) & 0x03;\n result.push(BASE64_CODE[c1 & 0x3f]);\n result.push(BASE64_CODE[c2 & 0x3f]);\n }\n\n return result.join(\"\");\n};\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\n *\n * @param contentString String to decode\n * @param length Maximum output length\n */\nexport const decodeBase64 = (\n contentString: string,\n length: number,\n): number[] => {\n if (length <= 0) throw Error(`Illegal len: ${length}`);\n\n const stringLength = contentString.length;\n let off = 0;\n let olen = 0;\n let c1: number;\n let c2: number;\n let c3: number;\n let c4: number;\n let o: number;\n let code: number;\n const result: string[] = [];\n\n while (off < stringLength - 1 && olen < length) {\n code = contentString.charCodeAt(off++);\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n code = contentString.charCodeAt(off++);\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n\n if (c1 == -1 || c2 == -1) break;\n\n o = (c1 << 2) >>> 0;\n o |= (c2 & 0x30) >> 4;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n if (c3 == -1) break;\n o = ((c2 & 0x0f) << 4) >>> 0;\n o |= (c3 & 0x3c) >> 2;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n o = ((c3 & 0x03) << 6) >>> 0;\n o |= c4;\n result.push(String.fromCharCode(o));\n\n ++olen;\n }\n\n return result.map((item) => item.charCodeAt(0));\n};\n","/**\n * utfx-embeddable (c) 2014 Daniel Wirtz <dcode@dcode.io>\n * Released under the Apache License, Version 2.0\n * see: https://github.com/dcodeIO/utfx for details\n */\n\nexport const MAX_CODEPOINT = 0x10ffff;\n\n/**\n * Encodes UTF8 code points to UTF8 bytes.\n * @param nextByte Code points source, either as a function returning the next code point\n * respectively `null` if there are no more code points left or a single numeric code point.\n * @param destination Bytes destination as a function successively called with the next byte\n */\nexport const encodeUTF8 = (\n nextByte: number | (() => number | null),\n destination: (byte: number) => void,\n): void => {\n let cp = null;\n\n if (typeof nextByte === \"number\") {\n cp = nextByte;\n nextByte = (): null => null;\n }\n\n while (cp !== null || (cp = nextByte()) !== null) {\n if (cp < 0x80) destination(cp & 0x7f);\n else if (cp < 0x800) {\n destination(((cp >> 6) & 0x1f) | 0xc0);\n destination((cp & 0x3f) | 0x80);\n } else if (cp < 0x10000) {\n destination(((cp >> 12) & 0x0f) | 0xe0);\n destination(((cp >> 6) & 0x3f) | 0x80);\n destination((cp & 0x3f) | 0x80);\n } else {\n destination(((cp >> 18) & 0x07) | 0xf0);\n destination(((cp >> 12) & 0x3f) | 0x80);\n destination(((cp >> 6) & 0x3f) | 0x80);\n destination((cp & 0x3f) | 0x80);\n }\n cp = null;\n }\n};\n\nexport class TruncatedError extends Error {\n bytes: number[];\n constructor(...args: number[]) {\n super(args.toString());\n this.bytes = args;\n this.name = \"TruncatedError\";\n }\n}\n\n/**\n * Decodes UTF8 bytes to UTF8 code points.\n *\n * @param nextByte Bytes source as a function returning the next byte respectively `null` if there\n * are no more bytes left.\n * @param destination Code points destination as a function successively called with each decoded code point.\n * @throws {RangeError} If a starting byte is invalid in UTF8\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the\n * remaining bytes.\n */\nexport const decodeUTF8 = (\n nextByte: () => number | null,\n destination: (byte: number) => void,\n): void => {\n let firstByte = nextByte();\n let secondByte: number | null;\n let thirdByte: number | null;\n let fourthByte: number | null;\n\n while (firstByte !== null) {\n if ((firstByte & 0x80) === 0) {\n destination(firstByte);\n } else if ((firstByte & 0xe0) === 0xc0) {\n secondByte = nextByte();\n if (secondByte === null) throw new TruncatedError(firstByte);\n destination(((firstByte & 0x1f) << 6) | (secondByte & 0x3f));\n } else if ((firstByte & 0xf0) === 0xe0) {\n secondByte = nextByte();\n if (secondByte === null) throw new TruncatedError(firstByte);\n thirdByte = nextByte();\n if (thirdByte === null) throw new TruncatedError(firstByte, secondByte);\n destination(\n ((firstByte & 0x0f) << 12) |\n ((secondByte & 0x3f) << 6) |\n (thirdByte & 0x3f),\n );\n } else if ((firstByte & 0xf8) === 0xf0) {\n secondByte = nextByte();\n if (secondByte === null) throw new TruncatedError(firstByte);\n thirdByte = nextByte();\n if (thirdByte === null) throw new TruncatedError(firstByte, secondByte);\n fourthByte = nextByte();\n if (fourthByte === null)\n throw new TruncatedError(firstByte, secondByte, thirdByte);\n destination(\n ((firstByte & 0x07) << 18) |\n ((secondByte & 0x3f) << 12) |\n ((thirdByte & 0x3f) << 6) |\n (fourthByte & 0x3f),\n );\n } else throw RangeError(`Illegal starting byte: ${firstByte}`);\n\n firstByte = nextByte();\n }\n};\n\n/**\n * Converts UTF16 characters to UTF8 code points.\n * @param nextByte Characters source as a function returning the next char code respectively\n * `null` if there are no more characters left.\n * @param destination Code points destination as a function successively called with each converted code\n * point.\n */\nexport const UTF16toUTF8 = (\n nextByte: () => number | null,\n destination: (byte: number) => void,\n): void => {\n let c1: number | null;\n let c2 = null;\n\n while (true) {\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n if ((c1 = c2 !== null ? c2 : nextByte()) === null) break;\n if (c1 >= 0xd800 && c1 <= 0xdfff) {\n if ((c2 = nextByte()) !== null) {\n if (c2 >= 0xdc00 && c2 <= 0xdfff) {\n destination((c1 - 0xd800) * 0x400 + c2 - 0xdc00 + 0x10000);\n c2 = null;\n continue;\n }\n }\n }\n destination(c1);\n }\n if (c2 !== null) destination(c2);\n};\n\n/**\n * Converts UTF8 code points to UTF16 characters.\n *\n * @param nextByte Code points source, either as a function returning the next code point\n * respectively `null` if there are no more code points left or a single numeric code point.\n * @param destination Characters destination as a function successively called with each converted char code.\n * @throws {RangeError} If a code point is out of range\n */\nexport const UTF8toUTF16 = (\n nextByte: (() => number | null) | number,\n destination: (byte: number) => void,\n): void => {\n let codePoint = null;\n\n if (typeof nextByte === \"number\") {\n codePoint = nextByte;\n nextByte = (): null => null;\n }\n\n while (codePoint !== null || (codePoint = nextByte()) !== null) {\n if (codePoint <= 0xffff) destination(codePoint);\n else {\n codePoint -= 0x10000;\n destination((codePoint >> 10) + 0xd800);\n destination((codePoint % 0x400) + 0xdc00);\n }\n codePoint = null;\n }\n};\n\n/**\n * Converts and encodes UTF16 characters to UTF8 bytes.\n * @param nextByte Characters source as a function returning the next char code respectively `null`\n * if there are no more characters left.\n * @param destination Bytes destination as a function successively called with the next byte.\n */\nexport const encodeUTF16toUTF8 = (\n nextByte: () => number | null,\n destination: (byte: number) => void,\n): void =>\n UTF16toUTF8(nextByte, (codePoint) => {\n encodeUTF8(codePoint, destination);\n });\n\n/**\n * Decodes and converts UTF8 bytes to UTF16 characters.\n * @param nextByte Bytes source as a function returning the next byte respectively `null` if there\n * are no more bytes left.\n * @param destination Characters destination as a function successively called with each converted char code.\n * @throws {RangeError} If a starting byte is invalid in UTF8\n * @throws {Error} If the last sequence is truncated. Has an array property `bytes` holding the remaining bytes.\n */\nexport const decodeUTF8toUTF16 = (\n nextByte: () => number | null,\n destination: (byte: number) => void,\n): void =>\n decodeUTF8(nextByte, (codePoint) => {\n UTF8toUTF16(codePoint, destination);\n });\n\n/**\n * Calculates the byte length of an UTF8 code point.\n *\n * @param codePoint UTF8 code point\n * @returns Byte length\n */\nexport const calculateCodePoint = (codePoint: number): number =>\n codePoint < 0x80 ? 1 : codePoint < 0x800 ? 2 : codePoint < 0x10000 ? 3 : 4;\n\n/**\n * Calculates the number of UTF8 bytes required to store UTF8 code points.\n * @param src Code points source as a function returning the next code point respectively\n * `null` if there are no more code points left.\n * @returns The number of UTF8 bytes required\n */\nexport const calculateUTF8 = (src: () => number | null): number => {\n let codePoint: number | null;\n let length = 0;\n\n while ((codePoint = src()) !== null) length += calculateCodePoint(codePoint);\n\n return length;\n};\n\n/**\n * Calculates the number of UTF8 code points respectively UTF8 bytes required to store UTF16 char codes.\n * @param nextCharCode Characters source as a function returning the next char code respectively\n * `null` if there are no more characters left.\n * @returns The number of UTF8 code points at index 0 and the number of UTF8 bytes required at index 1.\n */\nexport const calculateUTF16asUTF8 = (\n nextCharCode: () => number | null,\n): number[] => {\n let charIndexStart = 0,\n charIndexEnd = 0;\n\n UTF16toUTF8(nextCharCode, (codePoint) => {\n ++charIndexStart;\n charIndexEnd += calculateCodePoint(codePoint);\n });\n\n return [charIndexStart, charIndexEnd];\n};\n","import { encodeUTF16toUTF8 } from \"./utfx.js\";\n\n/**\n * @private\n *\n * Continues with the callback on the next tick.\n */\nexport const nextTick =\n typeof process === \"object\" && process.env.NEXT_RUNTIME === \"edge\"\n ? setTimeout\n : typeof setImmediate === \"function\"\n ? setImmediate\n : typeof process === \"object\" && typeof process.nextTick === \"function\"\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n process.nextTick\n : setTimeout;\n\n/**\n * @private\n *\n * Converts a JavaScript string to UTF8 bytes.\n *\n * @param str String\n * @returns UTF8 bytes\n */\nexport const stringToBytes = (str: string): number[] => {\n let index = 0;\n const bytes: number[] = [];\n\n encodeUTF16toUTF8(\n () => (index < str.length ? str.charCodeAt(index++) : null),\n (byte) => {\n bytes.push(byte);\n },\n );\n\n return bytes;\n};\n","import {\n BCRYPT_SALT_LEN,\n BLOWFISH_NUM_ROUNDS,\n C_ORIG,\n MAX_EXECUTION_TIME,\n P_ORIG,\n S_ORIG,\n} from \"./constant.js\";\nimport { nextTick } from \"./utils.js\";\n\n// A base64 implementation for the bcrypt algorithm. This is partly non-standard.\n\nconst encipher = (\n lr: number[],\n off: number,\n P: Int32Array | number[],\n S: Int32Array | number[],\n): number[] => {\n // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\n let n: number;\n let l = lr[off];\n let r = lr[off + 1];\n\n l ^= P[0];\n\n //The following is an unrolled version of the above loop.\n //Iteration 0\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[1];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[2];\n //Iteration 1\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[3];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[4];\n //Iteration 2\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[5];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[6];\n //Iteration 3\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[7];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[8];\n //Iteration 4\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[9];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[10];\n //Iteration 5\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[11];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[12];\n //Iteration 6\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[13];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[14];\n //Iteration 7\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[15];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[16];\n\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n lr[off + 1] = l;\n\n return lr;\n};\n\nconst streamToWord = (\n data: number[],\n offp: number,\n): { key: number; offp: number } => {\n let word = 0;\n\n for (let i = 0; i < 4; ++i) {\n word = (word << 8) | (data[offp] & 0xff);\n offp = (offp + 1) % data.length;\n }\n\n return { key: word, offp };\n};\n\nconst key = (\n key: number[],\n P: Int32Array | number[],\n S: Int32Array | number[],\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = [0, 0];\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n for (let i = 0; i < pLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Expensive key schedule Blowfish.\n */\nconst expensiveKeyScheduleBlowFish = (\n data: number[],\n key: number[],\n P: Int32Array | number[],\n S: Int32Array | number[],\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = [0, 0];\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n offp = 0;\n\n for (let i = 0; i < pLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Internally crypts a string.\n *\n * @param bytes Bytes to crypt\n * @param salt Salt bytes to use\n * @param rounds Number of rounds\n * @param progressCallback Callback called with the current progress\n */\nexport const crypt = (\n bytes: number[],\n salt: number[],\n rounds: number,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<number[]> | number[] => {\n const cdata = C_ORIG.slice();\n const cLength = cdata.length;\n\n // Validate\n if (rounds < 4 || rounds > 31) {\n const err = new Error(`Illegal number of rounds (4-31): ${rounds}`);\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.length !== BCRYPT_SALT_LEN) {\n const err = new Error(\n `Illegal salt length: ${salt.length} != ${BCRYPT_SALT_LEN}`,\n );\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n rounds = (1 << rounds) >>> 0;\n\n let P: Int32Array | number[];\n let S: Int32Array | number[];\n let i = 0;\n let j: number;\n\n //Use typed arrays when available - huge speedup!\n if (Int32Array) {\n P = new Int32Array(P_ORIG);\n S = new Int32Array(S_ORIG);\n } else {\n P = P_ORIG.slice();\n S = S_ORIG.slice();\n }\n\n expensiveKeyScheduleBlowFish(salt, bytes, P, S);\n\n /**\n * Calculates the next round.\n */\n const next = (): Promise<number[] | undefined> | number[] | void => {\n if (progressCallback) progressCallback(i / rounds);\n\n if (i < rounds) {\n const start = Date.now();\n\n for (; i < rounds; ) {\n i = i + 1;\n key(bytes, P, S);\n key(salt, P, S);\n if (Date.now() - start > MAX_EXECUTION_TIME) break;\n }\n } else {\n for (i = 0; i < 64; i++)\n for (j = 0; j < cLength >> 1; j++) encipher(cdata, j << 1, P, S);\n const result: number[] = [];\n\n for (i = 0; i < cLength; i++) {\n result.push(((cdata[i] >> 24) & 0xff) >>> 0);\n result.push(((cdata[i] >> 16) & 0xff) >>> 0);\n result.push(((cdata[i] >> 8) & 0xff) >>> 0);\n result.push((cdata[i] & 0xff) >>> 0);\n }\n\n if (sync === false) return Promise.resolve(result);\n\n return result;\n }\n\n if (sync === false)\n return new Promise((resolve) =>\n nextTick(() => {\n void (next() as Promise<number[] | undefined>).then(resolve);\n }),\n );\n };\n\n if (sync === false) return next() as Promise<number[]>;\n else {\n let res;\n\n while (true)\n if (typeof (res = next()) !== \"undefined\") return (res as number[]) || [];\n }\n};\n","import { randomBytes } from \"node:crypto\";\n\n/**\n * @private\n *\n * Generates cryptographically secure random bytes.\n *\n * @param length Bytes length\n * @returns Random bytes\n * @throws {Error} If no random implementation is available\n */\nexport const random = (length: number): Buffer => randomBytes(length);\n","// eslint-disable-next-line import-x/no-unresolved\nimport { random } from \"random\";\n\nimport { encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { nextTick } from \"./utils.js\";\n\n/**\n * Synchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n * @returns Resulting salt\n * @throws {Error} If a random fallback is required but not set\n */\nexport const genSaltSync = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof rounds !== \"number\")\n throw Error(\"Illegal arguments: \" + typeof rounds);\n if (rounds < 4) rounds = 4;\n else if (rounds > 31) rounds = 31;\n\n const salt = [];\n\n salt.push(\"$2a$\");\n if (rounds < 10) salt.push(\"0\");\n salt.push(rounds.toString());\n salt.push(\"$\");\n salt.push(encodeBase64(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\n\n return salt.join(\"\");\n};\n\n/**\n * Asynchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n */\nexport const genSalt = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): Promise<string> => {\n if (typeof rounds !== \"number\")\n throw Error(\"illegal arguments: \" + typeof rounds);\n\n return new Promise((resolve, reject) =>\n nextTick(() => {\n // Pretty thin, but salting is fast enough\n try {\n resolve(genSaltSync(rounds));\n } catch (err) {\n reject(err as Error);\n }\n }),\n );\n};\n","import { decodeBase64, encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n C_ORIG,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { crypt } from \"./crypt.js\";\nimport { genSalt, genSaltSync } from \"./salt.js\";\nimport { stringToBytes } from \"./utils.js\";\n\n/**\n * Internally hashes a string.\n *\n * @private\n * @param contentString String to hash\n * @param salt Salt to use, actually never null\n * @param progressCallback Callback called with the current progress\n */\nfunction _hash(\n contentString: string,\n salt: string,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<string> | string {\n if (typeof contentString !== \"string\" || typeof salt !== \"string\") {\n const err = new Error(\"Invalid string / salt: Not a string\");\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n // Validate the salt\n let minor: string;\n let offset: number;\n\n if (salt.charAt(0) !== \"$\" || salt.charAt(1) !== \"2\") {\n const err = new Error(\"Invalid salt version: \" + salt.substring(0, 2));\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.charAt(2) === \"$\") {\n minor = String.fromCharCode(0);\n offset = 3;\n } else {\n minor = salt.charAt(2);\n if (\n (minor !== \"a\" && minor !== \"b\" && minor !== \"y\") ||\n salt.charAt(3) !== \"$\"\n ) {\n const err = Error(\"Invalid salt revision: \" + salt.substring(2, 4));\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n offset = 4;\n }\n\n // Extract number of rounds\n if (salt.charAt(offset + 2) > \"$\") {\n const err = new Error(\"Missing salt rounds\");\n\n if (sync === false) return Promise.reject(err);\n\n throw err;\n }\n\n const r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\n rounds = r1 + r2,\n realSalt = salt.substring(offset + 3, offset + 25);\n\n contentString += minor >= \"a\" ? \"\\x00\" : \"\";\n\n const passwordBytes = stringToBytes(contentString),\n saltBytes = decodeBase64(realSalt, BCRYPT_SALT_LEN);\n\n /**\n * Finishes hashing.\n * @param bytes Byte array\n */\n const finish = (bytes: number[]): string => {\n const res = [];\n\n res.push(\"$2\");\n if (minor >= \"a\") res.push(minor);\n res.push(\"$\");\n if (rounds < 10) res.push(\"0\");\n res.push(rounds.toString());\n res.push(\"$\");\n res.push(encodeBase64(saltBytes, saltBytes.length));\n res.push(encodeBase64(bytes, C_ORIG.length * 4 - 1));\n\n return res.join(\"\");\n };\n\n // Sync\n if (sync === false)\n return (\n crypt(\n passwordBytes,\n saltBytes,\n rounds,\n false,\n progressCallback,\n ) as Promise<number[]>\n ).then((bytes) => finish(bytes));\n\n return finish(\n crypt(passwordBytes, saltBytes, rounds, true, progressCallback) as number[],\n );\n}\n\n/**\n * Synchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use, default to 10\n * @returns Resulting hash\n */\nexport const hashSync = (\n contentString: string,\n salt: string | number = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof salt === \"number\") salt = genSaltSync(salt);\n if (typeof contentString !== \"string\" || typeof salt !== \"string\")\n throw Error(\n \"Illegal arguments: \" + typeof contentString + \", \" + typeof salt,\n );\n\n return _hash(contentString, salt, true) as string;\n};\n\n/**\n * Asynchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const hash = function (\n contentString: string,\n salt: number | string,\n progressCallback?: (progress: number) => void,\n): Promise<string> {\n if (typeof contentString === \"string\" && typeof salt === \"number\")\n return genSalt(salt).then(\n (salt) =>\n _hash(contentString, salt, false, progressCallback) as Promise<string>,\n );\n\n if (typeof contentString === \"string\" && typeof salt === \"string\")\n return _hash(\n contentString,\n salt,\n false,\n progressCallback,\n ) as Promise<string>;\n\n return Promise.reject(\n new Error(`Illegal arguments: ${typeof contentString}, ${typeof salt}`),\n );\n};\n","import { hash as hashAsync, hashSync } from \"./hash.js\";\nimport { nextTick } from \"./utils.js\";\n\n/**\n * Synchronously tests a string against a hash.\n *\n * @param content String to compare\n * @param hash Hash to test against\n */\nexport const compareSync = (content: string, hash: string): boolean => {\n if (typeof content !== \"string\" || typeof hash !== \"string\")\n throw Error(\"Illegal arguments: \" + typeof content + \", \" + typeof hash);\n if (hash.length !== 60) return false;\n\n return hashSync(content, hash.substring(0, hash.length - 31)) === hash;\n};\n\n/**\n * Asynchronously compares the given data against the given hash.\n *\n * @param content Data to compare\n * @param hash Data to be compared to\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const compare = (\n content: string,\n hash: string,\n progressCallback?: (percent: number) => void,\n): Promise<boolean> =>\n new Promise((resolve, reject) => {\n if (typeof content !== \"string\" || typeof hash !== \"string\") {\n nextTick(() =>\n reject(\n new Error(`Illegal arguments: ${typeof content}, ${typeof hash}`),\n ),\n );\n\n return;\n }\n\n if (hash.length !== 60) {\n nextTick(() =>\n reject(new Error(\"Illegal hash: hash length should be 60\")),\n );\n\n return;\n }\n\n hashAsync(content, hash.substring(0, 29), progressCallback)\n .then((comp) => resolve(comp === hash))\n .catch((err: Error) => reject(err));\n });\n","/**\n * Gets the number of rounds used to encrypt the specified hash.\n *\n * @param hash Hash to extract the used number of rounds from\n * @returns Number of rounds used\n * @throws {Error} If `hash` is not a string\n */\nexport const getRounds = (hash: string): number => {\n if (typeof hash !== \"string\")\n throw new Error(`Illegal arguments: ${typeof hash}`);\n\n return parseInt(hash.split(\"$\")[2], 10);\n};\n\n/**\n * Gets the salt portion from a hash. Does not validate the hash.\n *\n * @param hash Hash to extract the salt from\n * @returns Extracted salt part\n * @throws {Error} If `hash` is not a string or otherwise invalid\n */\nexport const getSalt = (hash: string): string => {\n if (typeof hash !== \"string\")\n throw new Error(`Illegal arguments: ${typeof hash}`);\n\n if (hash.length !== 60)\n throw new Error(`Illegal hash length: ${hash.length} != 60`);\n\n return hash.substring(0, 29);\n};\n"],"names":["BCRYPT_SALT_LEN","GENERATE_SALT_DEFAULT_LOG2_ROUNDS","BLOWFISH_NUM_ROUNDS","MAX_EXECUTION_TIME","BASE64_CODE","naturalNumber","_","i","fillNegative1","length","BASE64_INDEX","P_ORIG","S_ORIG","C_ORIG","encodeBase64","byteArray","off","c1","c2","result","decodeBase64","contentString","stringLength","olen","c3","c4","o","code","item","encodeUTF8","nextByte","destination","cp","UTF16toUTF8","encodeUTF16toUTF8","codePoint","nextTick","stringToBytes","str","index","bytes","byte","encipher","lr","P","S","n","l","r","streamToWord","data","offp","word","key","pLength","sLength","sw","expensiveKeyScheduleBlowFish","crypt","salt","rounds","sync","progressCallback","cdata","cLength","err","j","next","start","resolve","res","random","randomBytes","genSaltSync","genSalt","reject","_hash","minor","offset","r1","r2","realSalt","passwordBytes","saltBytes","finish","hashSync","hash","compareSync","content","compare","hashAsync","comp","getRounds","getSalt"],"mappings":"0CAAO,MAAMA,EAAkB,GAElBC,EAAoC,GAEpCC,EAAsB,GAEtBC,EAAqB,IAErBC,EACX,mEAAmE,MAAM,EAAE,EAEvEC,EAAgB,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAMA,CAAC,EACtDC,EAAiBC,GACrB,MAAcA,CAAM,EAAE,KAAK,EAAE,EAElBC,EAAe,CAC1B,GAAGF,EAAc,EAAE,EACnB,EACA,EACA,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,EAAG,EAAE,EAC5B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,CACpB,EAEaG,EAAS,CACpB,UAAY,WAAY,UAAY,SAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC9D,EAEaC,EAAS,CACpB,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,QAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,SAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,SAAY,WAAY,SAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,UAAY,SAC5D,WAAY,WAAY,WAAY,UAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,QAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,SAAY,WAAY,S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"}
|
|
1
|
+
{"version":3,"file":"node.cjs","sources":["../src/constant.ts","../src/base64.ts","../src/utils.ts","../src/crypt.ts","../src/random/node.ts","../src/salt.ts","../src/uft8.ts","../src/hash.ts","../src/compare.ts","../src/helpers.ts"],"sourcesContent":["export const BCRYPT_SALT_LEN = 16;\n\nexport const GENERATE_SALT_DEFAULT_LOG2_ROUNDS = 10;\n\nexport const BLOWFISH_NUM_ROUNDS = 16;\n\nexport const MAX_EXECUTION_TIME = 100;\n\nexport const BASE64_CODE =\n \"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\".split(\"\");\n\nconst naturalNumber = Array.from({ length: 64 }, (_, i) => i);\nconst fillNegative1 = (length: number): number[] =>\n Array<number>(length).fill(-1);\n\nexport const BASE64_INDEX = [\n ...fillNegative1(46),\n 0,\n 1,\n ...naturalNumber.slice(54, 64),\n ...fillNegative1(7),\n ...naturalNumber.slice(2, 28),\n ...fillNegative1(6),\n ...naturalNumber.slice(28, 54),\n ...fillNegative1(5),\n];\n\nexport const P_ORIG = [\n 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n];\n\nexport const S_ORIG = [\n 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a, 0x4b7a70e9, 0xb5b32944,\n 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,\n 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29,\n 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,\n 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, 0x4cdd2086, 0x8470eb26,\n 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,\n 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c,\n 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,\n 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, 0xd19113f9, 0x7ca92ff6,\n 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,\n 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f,\n 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,\n 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, 0xde9a771f, 0xd9930810,\n 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,\n 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa,\n 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,\n 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, 0x71dff89e, 0x10314e55,\n 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,\n 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1,\n 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,\n 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, 0xc6150eba, 0x94e2ea78,\n 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,\n 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883,\n 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,\n 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, 0x1521b628, 0x29076170,\n 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,\n 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7,\n 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,\n 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, 0x9b540b19, 0x875fa099,\n 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,\n 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263,\n 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,\n 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73, 0x5d4a14d9, 0xe864b7e3,\n 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,\n 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105, 0xd81e799e, 0x86854dc7,\n 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,\n 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285, 0x095bbf00, 0xad19489d,\n 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,\n 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb, 0x7cde3759, 0xcbee7460,\n 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,\n 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc, 0x9e447a2e, 0xc3453484,\n 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,\n 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20, 0x153e21e7, 0x8fb03d4a,\n 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,\n 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a,\n 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,\n 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785,\n 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,\n 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900,\n 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,\n 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9,\n 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,\n 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397,\n 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,\n 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9,\n 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,\n 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f,\n 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,\n 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e,\n 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,\n 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd,\n 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,\n 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8,\n 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,\n 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c,\n 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,\n 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b,\n 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,\n 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386,\n 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,\n 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0,\n 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,\n 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2,\n 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,\n 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770,\n 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,\n 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c,\n 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,\n 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa,\n 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,\n 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63,\n 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,\n 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9,\n 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,\n 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4,\n 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n];\n\nexport const C_ORIG = [\n 0x4f727068, 0x65616e42, 0x65686f6c, 0x64657253, 0x63727944, 0x6f756274,\n];\n","import { BASE64_CODE, BASE64_INDEX } from \"./constant.js\";\n\n/**\n * Encodes a byte array to base64 with up to length bytes of input, using the custom bcrypt alphabet.\n *\n * @param byteArray Byte array\n * @param length Maximum input length\n */\nexport const encodeBase64 = (\n byteArray: number[] | Buffer,\n length: number,\n): string => {\n if (length <= 0 || length > byteArray.length)\n throw Error(`Illegal length: ${length}`);\n\n let off = 0;\n let c1: number;\n let c2: number;\n const result: string[] = [];\n\n while (off < length) {\n c1 = byteArray[off++] & 0xff;\n result.push(BASE64_CODE[(c1 >> 2) & 0x3f]);\n c1 = (c1 & 0x03) << 4;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 4) & 0x0f;\n result.push(BASE64_CODE[c1 & 0x3f]);\n c1 = (c2 & 0x0f) << 2;\n if (off >= length) {\n result.push(BASE64_CODE[c1 & 0x3f]);\n break;\n }\n c2 = byteArray[off++] & 0xff;\n c1 |= (c2 >> 6) & 0x03;\n result.push(BASE64_CODE[c1 & 0x3f]);\n result.push(BASE64_CODE[c2 & 0x3f]);\n }\n\n return result.join(\"\");\n};\n\n/**\n * Decodes a base64 encoded string to up to len bytes of output, using the custom bcrypt alphabet.\n *\n * @param contentString String to decode\n * @param length Maximum output length\n */\nexport const decodeBase64 = (\n contentString: string,\n length: number,\n): number[] => {\n if (length <= 0) throw Error(`Illegal length: ${length}`);\n\n const stringLength = contentString.length;\n let off = 0;\n let olen = 0;\n let c1: number;\n let c2: number;\n let c3: number;\n let c4: number;\n let o: number;\n let code: number;\n const result: string[] = [];\n\n while (off < stringLength - 1 && olen < length) {\n code = contentString.charCodeAt(off++);\n c1 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n code = contentString.charCodeAt(off++);\n c2 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n\n if (c1 == -1 || c2 == -1) break;\n\n o = (c1 << 2) >>> 0;\n o |= (c2 & 0x30) >> 4;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c3 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n if (c3 == -1) break;\n o = ((c2 & 0x0f) << 4) >>> 0;\n o |= (c3 & 0x3c) >> 2;\n result.push(String.fromCharCode(o));\n\n if (++olen >= length || off >= stringLength) break;\n\n code = contentString.charCodeAt(off++);\n c4 = code < BASE64_INDEX.length ? BASE64_INDEX[code] : -1;\n o = ((c3 & 0x03) << 6) >>> 0;\n o |= c4;\n result.push(String.fromCharCode(o));\n\n ++olen;\n }\n\n return result.map((item) => item.charCodeAt(0));\n};\n","/**\n * @private\n *\n * Continues with the callback on the next tick.\n */\nexport const nextTick =\n typeof process === \"object\" && process.env.NEXT_RUNTIME === \"edge\"\n ? setTimeout\n : typeof setImmediate === \"function\"\n ? setImmediate\n : typeof process === \"object\" && typeof process.nextTick === \"function\"\n ? // eslint-disable-next-line @typescript-eslint/unbound-method\n process.nextTick\n : setTimeout;\n\nexport const getIllegalArgumentsTypeError = (...args: unknown[]): Error =>\n new Error(`Illegal arguments: ${args.map((arg) => typeof arg).join(\", \")}`);\n","import {\n BCRYPT_SALT_LEN,\n BLOWFISH_NUM_ROUNDS,\n C_ORIG,\n MAX_EXECUTION_TIME,\n P_ORIG,\n S_ORIG,\n} from \"./constant.js\";\nimport { nextTick } from \"./utils.js\";\n\n// A base64 implementation for the bcrypt algorithm. This is partly non-standard.\n\nconst encipher = (\n lr: Int32Array<ArrayBuffer>,\n off: number,\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): Int32Array<ArrayBuffer> => {\n // This is our bottleneck: 1714/1905 ticks / 90% - see profile.txt\n let n: number;\n let l = lr[off];\n let r = lr[off + 1];\n\n l ^= P[0];\n\n //The following is an unrolled version of the above loop.\n //Iteration 0\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[1];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[2];\n //Iteration 1\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[3];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[4];\n //Iteration 2\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[5];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[6];\n //Iteration 3\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[7];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[8];\n //Iteration 4\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[9];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[10];\n //Iteration 5\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[11];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[12];\n //Iteration 6\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[13];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[14];\n //Iteration 7\n n = S[l >>> 24];\n n += S[0x100 | ((l >> 16) & 0xff)];\n n ^= S[0x200 | ((l >> 8) & 0xff)];\n n += S[0x300 | (l & 0xff)];\n r ^= n ^ P[15];\n n = S[r >>> 24];\n n += S[0x100 | ((r >> 16) & 0xff)];\n n ^= S[0x200 | ((r >> 8) & 0xff)];\n n += S[0x300 | (r & 0xff)];\n l ^= n ^ P[16];\n\n lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n lr[off + 1] = l;\n\n return lr;\n};\n\nconst streamToWord = (\n data: number[],\n offp: number,\n): { key: number; offp: number } => {\n let word = 0;\n\n for (let i = 0; i < 4; ++i) {\n word = (word << 8) | (data[offp] & 0xff);\n offp = (offp + 1) % data.length;\n }\n\n return { key: word, offp };\n};\n\nconst key = (\n key: number[],\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = new Int32Array([0, 0]);\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n for (let i = 0; i < pLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Expensive key schedule Blowfish.\n */\nconst expensiveKeyScheduleBlowFish = (\n data: number[],\n key: number[],\n P: Int32Array<ArrayBuffer>,\n S: Int32Array<ArrayBuffer>,\n): void => {\n const pLength = P.length;\n const sLength = S.length;\n let offp = 0;\n let lr = new Int32Array([0, 0]);\n let sw: {\n key: number;\n offp: number;\n };\n\n for (let i = 0; i < pLength; i++) {\n sw = streamToWord(key, offp);\n offp = sw.offp;\n P[i] = P[i] ^ sw.key;\n }\n\n offp = 0;\n\n for (let i = 0; i < pLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n P[i] = lr[0];\n P[i + 1] = lr[1];\n }\n\n for (let i = 0; i < sLength; i += 2) {\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[0] ^= sw.key;\n sw = streamToWord(data, offp);\n offp = sw.offp;\n lr[1] ^= sw.key;\n lr = encipher(lr, 0, P, S);\n S[i] = lr[0];\n S[i + 1] = lr[1];\n }\n};\n\n/**\n * Internally crypts a string.\n *\n * @param bytes Bytes to crypt\n * @param salt Salt bytes to use\n * @param rounds Number of rounds\n * @param progressCallback Callback called with the current progress\n */\nexport const crypt = (\n bytes: number[],\n salt: number[],\n rounds: number,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<number[]> | number[] => {\n const cdata = new Int32Array(C_ORIG);\n const cLength = cdata.length;\n\n // Validate\n if (rounds < 4 || rounds > 31) {\n const err = new Error(`Illegal number of rounds (4-31): ${rounds}`);\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.length !== BCRYPT_SALT_LEN) {\n const err = new Error(\n `Illegal salt length: ${salt.length} != ${BCRYPT_SALT_LEN}`,\n );\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n rounds = (1 << rounds) >>> 0;\n\n const P = new Int32Array(P_ORIG);\n const S = new Int32Array(S_ORIG);\n\n expensiveKeyScheduleBlowFish(salt, bytes, P, S);\n\n let round = 0;\n\n /**\n * Calculates the next round.\n */\n const next = (): Promise<number[] | void> | number[] | void => {\n if (progressCallback) progressCallback(round / rounds);\n\n if (round < rounds) {\n const start = Date.now();\n\n while (round < rounds) {\n round += 1;\n key(bytes, P, S);\n key(salt, P, S);\n if (Date.now() - start > MAX_EXECUTION_TIME) break;\n }\n } else {\n for (let i = 0; i < 64; i++)\n for (let j = 0; j < cLength >> 1; j++) encipher(cdata, j << 1, P, S);\n const result: number[] = [];\n\n for (let i = 0; i < cLength; i++) {\n result.push(((cdata[i] >> 24) & 0xff) >>> 0);\n result.push(((cdata[i] >> 16) & 0xff) >>> 0);\n result.push(((cdata[i] >> 8) & 0xff) >>> 0);\n result.push((cdata[i] & 0xff) >>> 0);\n }\n\n if (!sync) return Promise.resolve(result);\n\n return result;\n }\n\n if (!sync)\n return new Promise((resolve) =>\n nextTick(() => {\n void (next() as Promise<number[] | undefined>).then(resolve);\n }),\n );\n };\n\n if (!sync) return next() as Promise<number[]>;\n\n let result;\n\n do {\n result = next() as number[] | undefined;\n } while (!result);\n\n return result;\n};\n","import { randomBytes } from \"node:crypto\";\n\n/**\n * @private\n *\n * Generates cryptographically secure random bytes.\n *\n * @param length Bytes length\n * @returns Random bytes\n * @throws {Error} If no random implementation is available\n */\nexport const random = (length: number): Buffer | Uint8Array<ArrayBuffer> =>\n typeof crypto === \"undefined\"\n ? randomBytes(length)\n : crypto.getRandomValues(new Uint8Array(length));\n","// eslint-disable-next-line import-x/no-unresolved\nimport { random } from \"random\";\n\nimport { encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { getIllegalArgumentsTypeError, nextTick } from \"./utils.js\";\n\n/**\n * Synchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n * @returns Resulting salt\n * @throws {Error} If a random fallback is required but not set\n */\nexport const genSaltSync = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof rounds !== \"number\") throw getIllegalArgumentsTypeError(rounds);\n\n if (rounds < 4) rounds = 4;\n else if (rounds > 31) rounds = 31;\n\n const salt = [];\n\n salt.push(\"$2b$\");\n if (rounds < 10) salt.push(\"0\");\n salt.push(rounds.toString());\n salt.push(\"$\");\n salt.push(encodeBase64(random(BCRYPT_SALT_LEN), BCRYPT_SALT_LEN)); // May throw\n\n return salt.join(\"\");\n};\n\n/**\n * Asynchronously generates a salt.\n *\n * @param rounds Number of rounds to use, defaults to 10 if omitted\n */\nexport const genSalt = (\n rounds = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): Promise<string> => {\n if (typeof rounds !== \"number\") throw getIllegalArgumentsTypeError(rounds);\n\n return new Promise((resolve, reject) =>\n nextTick(() => {\n // Pretty thin, but salting is fast enough\n try {\n resolve(genSaltSync(rounds));\n } catch (err) {\n reject(err as Error);\n }\n }),\n );\n};\n","/** Calculates the byte length of a string encoded as UTF8. */\nexport const getUTF8ByteLength = (content: string): number => {\n let length = 0,\n charCodePoint = 0;\n\n for (let i = 0; i < content.length; ++i) {\n charCodePoint = content.charCodeAt(i);\n if (charCodePoint < 128) length += 1;\n else if (charCodePoint < 2048) length += 2;\n else if (\n (charCodePoint & 0xfc00) === 0xd800 &&\n (content.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n i++;\n length += 4;\n } else length += 3;\n }\n\n return length;\n};\n\n/** Converts a string to an array of UTF8 bytes. */\nexport const convertToUFT8Bytes = (content: string): number[] => {\n let offset = 0,\n c1,\n c2;\n const buffer = new Array<number>(getUTF8ByteLength(content));\n\n for (let i = 0, k = content.length; i < k; ++i) {\n c1 = content.charCodeAt(i);\n if (c1 < 128) {\n buffer[offset++] = c1;\n } else if (c1 < 2048) {\n buffer[offset++] = (c1 >> 6) | 192;\n buffer[offset++] = (c1 & 63) | 128;\n } else if (\n (c1 & 0xfc00) === 0xd800 &&\n ((c2 = content.charCodeAt(i + 1)) & 0xfc00) === 0xdc00\n ) {\n c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff);\n ++i;\n buffer[offset++] = (c1 >> 18) | 240;\n buffer[offset++] = ((c1 >> 12) & 63) | 128;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n } else {\n buffer[offset++] = (c1 >> 12) | 224;\n buffer[offset++] = ((c1 >> 6) & 63) | 128;\n buffer[offset++] = (c1 & 63) | 128;\n }\n }\n\n return buffer;\n};\n","import { decodeBase64, encodeBase64 } from \"./base64.js\";\nimport {\n BCRYPT_SALT_LEN,\n C_ORIG,\n GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n} from \"./constant.js\";\nimport { crypt } from \"./crypt.js\";\nimport { genSalt, genSaltSync } from \"./salt.js\";\nimport { convertToUFT8Bytes } from \"./uft8.js\";\n\n/**\n * Internally hashes a string.\n *\n * @private\n * @param content String to hash\n * @param salt Salt to use, actually never null\n * @param progressCallback Callback called with the current progress\n */\nconst _hash = (\n content: string,\n salt: string,\n sync: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<string> | string => {\n if (typeof content !== \"string\" || typeof salt !== \"string\") {\n const err = new Error(\"Invalid content / salt: Not a string\");\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n // Validate the salt\n let minor: string;\n let offset: number;\n\n if (salt.charAt(0) !== \"$\" || salt.charAt(1) !== \"2\") {\n const err = new Error(\"Invalid salt version: \" + salt.substring(0, 2));\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n if (salt.charAt(2) === \"$\") {\n minor = String.fromCharCode(0);\n offset = 3;\n } else {\n minor = salt.charAt(2);\n if (\n (minor !== \"a\" && minor !== \"b\" && minor !== \"y\") ||\n salt.charAt(3) !== \"$\"\n ) {\n const err = Error(\"Invalid salt revision: \" + salt.substring(2, 4));\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n offset = 4;\n }\n\n // Extract number of rounds\n if (salt.charAt(offset + 2) > \"$\") {\n const err = new Error(\"Missing salt rounds\");\n\n if (!sync) return Promise.reject(err);\n\n throw err;\n }\n\n const r1 = parseInt(salt.substring(offset, offset + 1), 10) * 10,\n r2 = parseInt(salt.substring(offset + 1, offset + 2), 10),\n rounds = r1 + r2,\n realSalt = salt.substring(offset + 3, offset + 25);\n\n content += minor >= \"a\" ? \"\\x00\" : \"\";\n\n const passwordBytes = convertToUFT8Bytes(content),\n saltBytes = decodeBase64(realSalt, BCRYPT_SALT_LEN);\n\n /**\n * Finishes hashing.\n * @param bytes Byte array\n */\n const finish = (bytes: number[]): string => {\n const res = [];\n\n res.push(\"$2\");\n if (minor >= \"a\") res.push(minor);\n res.push(\"$\");\n if (rounds < 10) res.push(\"0\");\n res.push(rounds.toString());\n res.push(\"$\");\n res.push(encodeBase64(saltBytes, saltBytes.length));\n res.push(encodeBase64(bytes, C_ORIG.length * 4 - 1));\n\n return res.join(\"\");\n };\n\n // Sync\n if (!sync)\n return (\n crypt(\n passwordBytes,\n saltBytes,\n rounds,\n false,\n progressCallback,\n ) as Promise<number[]>\n ).then((bytes) => finish(bytes));\n\n return finish(\n crypt(passwordBytes, saltBytes, rounds, true, progressCallback) as number[],\n );\n};\n\n/**\n * Synchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use, default to 10\n * @returns Resulting hash\n */\nexport const hashSync = (\n contentString: string,\n salt: string | number = GENERATE_SALT_DEFAULT_LOG2_ROUNDS,\n): string => {\n if (typeof salt === \"number\") salt = genSaltSync(salt);\n if (typeof contentString !== \"string\" || typeof salt !== \"string\")\n throw Error(\n \"Illegal arguments: \" + typeof contentString + \", \" + typeof salt,\n );\n\n return _hash(contentString, salt, true) as string;\n};\n\n/**\n * Asynchronously generates a hash for the given string.\n *\n * @param contentString String to hash\n * @param salt Salt length to generate or salt to use\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const hash = function (\n contentString: string,\n salt: number | string,\n progressCallback?: (progress: number) => void,\n): Promise<string> {\n if (typeof contentString === \"string\" && typeof salt === \"number\")\n return genSalt(salt).then(\n (salt) =>\n _hash(contentString, salt, false, progressCallback) as Promise<string>,\n );\n\n if (typeof contentString === \"string\" && typeof salt === \"string\")\n return _hash(\n contentString,\n salt,\n false,\n progressCallback,\n ) as Promise<string>;\n\n return Promise.reject(\n new Error(`Illegal arguments: ${typeof contentString}, ${typeof salt}`),\n );\n};\n","import { hash as hashAsync, hashSync } from \"./hash.js\";\nimport { getIllegalArgumentsTypeError, nextTick } from \"./utils.js\";\n\n/**\n * Synchronously tests a string against a hash.\n *\n * @param content String to compare\n * @param hash Hash to test against\n */\nexport const compareSync = (content: string, hash: string): boolean => {\n if (typeof content !== \"string\" || typeof hash !== \"string\")\n throw getIllegalArgumentsTypeError(content, hash);\n\n if (hash.length !== 60) return false;\n\n return hashSync(content, hash.substring(0, hash.length - 31)) === hash;\n};\n\n/**\n * Asynchronously compares the given data against the given hash.\n *\n * @param content Data to compare\n * @param hash Data to be compared to\n * @param progressCallback Callback successively called with the percentage of rounds completed\n * (0.0 - 1.0), maximally once per `MAX_EXECUTION_TIME = 100` ms.\n */\nexport const compare = (\n content: string,\n hash: string,\n progressCallback?: (percent: number) => void,\n): Promise<boolean> =>\n new Promise((resolve, reject) => {\n if (typeof content !== \"string\" || typeof hash !== \"string\") {\n nextTick(() =>\n reject(\n new Error(`Illegal arguments: ${typeof content}, ${typeof hash}`),\n ),\n );\n\n return;\n }\n\n if (hash.length !== 60) {\n nextTick(() => resolve(false));\n\n return;\n }\n\n hashAsync(content, hash.substring(0, 29), progressCallback)\n .then((comp) => resolve(comp === hash))\n .catch((err: unknown) => reject(err as Error));\n });\n","import { getUTF8ByteLength } from \"./uft8.js\";\nimport { getIllegalArgumentsTypeError } from \"./utils.js\";\n\n/**\n * Gets the number of rounds used to encrypt the specified hash.\n *\n * @param hash Hash to extract the used number of rounds from\n * @returns Number of rounds used\n * @throws {Error} If `hash` is not a string\n */\nexport const getRounds = (hash: string): number => {\n if (typeof hash !== \"string\") throw getIllegalArgumentsTypeError(hash);\n\n return parseInt(hash.split(\"$\")[2], 10);\n};\n\n/**\n * Gets the salt portion from a hash. Does not validate the hash.\n *\n * @param hash Hash to extract the salt from\n * @returns Extracted salt part\n * @throws {Error} If `hash` is not a string or otherwise invalid\n */\nexport const getSalt = (hash: string): string => {\n if (typeof hash !== \"string\") throw getIllegalArgumentsTypeError(hash);\n\n if (hash.length !== 60)\n throw new Error(`Illegal hash length: ${hash.length} != 60`);\n\n return hash.substring(0, 29);\n};\n\n/**\n * Tests if a content will be truncated when hashed, that is its length is\n * greater than 72 bytes when converted to UTF-8.\n * @param content The content to test\n * @returns `true` if truncated, otherwise `false`\n */\nexport const truncates = (content: string): boolean => {\n if (typeof content !== \"string\") throw getIllegalArgumentsTypeError(content);\n\n return getUTF8ByteLength(content) > 72;\n};\n"],"names":["BCRYPT_SALT_LEN","GENERATE_SALT_DEFAULT_LOG2_ROUNDS","BLOWFISH_NUM_ROUNDS","MAX_EXECUTION_TIME","BASE64_CODE","naturalNumber","_","i","fillNegative1","length","BASE64_INDEX","P_ORIG","S_ORIG","C_ORIG","encodeBase64","byteArray","off","c1","c2","result","decodeBase64","contentString","stringLength","olen","c3","c4","o","code","item","nextTick","getIllegalArgumentsTypeError","args","arg","encipher","lr","P","S","n","l","r","streamToWord","data","offp","word","key","pLength","sLength","sw","expensiveKeyScheduleBlowFish","crypt","bytes","salt","rounds","sync","progressCallback","cdata","cLength","err","round","next","start","j","resolve","random","randomBytes","genSaltSync","genSalt","reject","getUTF8ByteLength","content","charCodePoint","convertToUFT8Bytes","offset","buffer","k","_hash","minor","r1","r2","realSalt","passwordBytes","saltBytes","finish","res","hashSync","hash","compareSync","compare","hashAsync","comp","getRounds","getSalt","truncates"],"mappings":"0CAAO,MAAMA,EAAkB,GAElBC,EAAoC,GAEpCC,EAAsB,GAEtBC,EAAqB,IAErBC,EACX,mEAAmE,MAAM,EAAE,EAEvEC,EAAgB,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAAMA,CAAC,EACtDC,EAAiBC,GACrB,MAAcA,CAAM,EAAE,KAAK,EAAE,EAElBC,EAAe,CAC1B,GAAGF,EAAc,EAAE,EACnB,EACA,EACA,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,EAAG,EAAE,EAC5B,GAAGG,EAAc,CAAC,EAClB,GAAGH,EAAc,MAAM,GAAI,EAAE,EAC7B,GAAGG,EAAc,CAAC,CACpB,EAEaG,EAAS,CACpB,UAAY,WAAY,UAAY,SAAY,WAAY,UAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC9D,EAEaC,EAAS,CACpB,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,QAAY,UAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,SAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,UAC5D,UAAY,UAAY,WAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,SAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,SAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,SAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,UAAY,UAAY,UAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,UAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,SAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,UAAY,UAAY,WAAY,UAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,SAAY,WAAY,SAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,UAAY,SAC5D,WAAY,WAAY,WAAY,UAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,UAAY,UAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,UAC5D,WAAY,UAAY,UAAY,UAAY,WAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,QAAY,UAAY,UAAY,UAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,UAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,UAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,UAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,UAAY,WAC5D,WAAY,WAAY,WAAY,WAAY,WAAY,WAC5D,WAAY,WAAY,WAAY,UAAY,WAAY,WAC5D,UAAY,SAAY,WAAY,S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"}
|
package/dist/node.d.cts
CHANGED
|
@@ -49,6 +49,13 @@ declare const getRounds: (hash: string) => number;
|
|
|
49
49
|
* @throws {Error} If `hash` is not a string or otherwise invalid
|
|
50
50
|
*/
|
|
51
51
|
declare const getSalt: (hash: string) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Tests if a content will be truncated when hashed, that is its length is
|
|
54
|
+
* greater than 72 bytes when converted to UTF-8.
|
|
55
|
+
* @param content The content to test
|
|
56
|
+
* @returns `true` if truncated, otherwise `false`
|
|
57
|
+
*/
|
|
58
|
+
declare const truncates: (content: string) => boolean;
|
|
52
59
|
|
|
53
60
|
/**
|
|
54
61
|
* Synchronously generates a salt.
|
|
@@ -65,4 +72,4 @@ declare const genSaltSync: (rounds?: number) => string;
|
|
|
65
72
|
*/
|
|
66
73
|
declare const genSalt: (rounds?: number) => Promise<string>;
|
|
67
74
|
|
|
68
|
-
export { compare, compareSync, genSalt, genSaltSync, getRounds, getSalt, hash, hashSync };
|
|
75
|
+
export { compare, compareSync, genSalt, genSaltSync, getRounds, getSalt, hash, hashSync, truncates };
|
package/dist/node.d.mts
CHANGED
|
@@ -49,6 +49,13 @@ declare const getRounds: (hash: string) => number;
|
|
|
49
49
|
* @throws {Error} If `hash` is not a string or otherwise invalid
|
|
50
50
|
*/
|
|
51
51
|
declare const getSalt: (hash: string) => string;
|
|
52
|
+
/**
|
|
53
|
+
* Tests if a content will be truncated when hashed, that is its length is
|
|
54
|
+
* greater than 72 bytes when converted to UTF-8.
|
|
55
|
+
* @param content The content to test
|
|
56
|
+
* @returns `true` if truncated, otherwise `false`
|
|
57
|
+
*/
|
|
58
|
+
declare const truncates: (content: string) => boolean;
|
|
52
59
|
|
|
53
60
|
/**
|
|
54
61
|
* Synchronously generates a salt.
|
|
@@ -65,4 +72,4 @@ declare const genSaltSync: (rounds?: number) => string;
|
|
|
65
72
|
*/
|
|
66
73
|
declare const genSalt: (rounds?: number) => Promise<string>;
|
|
67
74
|
|
|
68
|
-
export { compare, compareSync, genSalt, genSaltSync, getRounds, getSalt, hash, hashSync };
|
|
75
|
+
export { compare, compareSync, genSalt, genSaltSync, getRounds, getSalt, hash, hashSync, truncates };
|